material-react-table 0.18.0 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. package/dist/MaterialReactTable.d.ts +169 -133
  2. package/dist/body/MRT_TableBody.d.ts +1 -1
  3. package/dist/body/MRT_TableBodyCell.d.ts +1 -1
  4. package/dist/body/MRT_TableBodyRow.d.ts +1 -1
  5. package/dist/body/MRT_TableDetailPanel.d.ts +1 -1
  6. package/dist/buttons/MRT_ColumnPinningButtons.d.ts +1 -1
  7. package/dist/buttons/MRT_CopyButton.d.ts +1 -1
  8. package/dist/buttons/MRT_EditActionButtons.d.ts +1 -1
  9. package/dist/buttons/MRT_ExpandAllButton.d.ts +1 -1
  10. package/dist/buttons/MRT_ExpandButton.d.ts +1 -1
  11. package/dist/buttons/MRT_FullScreenToggleButton.d.ts +1 -1
  12. package/dist/buttons/MRT_GrabHandleButton.d.ts +1 -1
  13. package/dist/buttons/MRT_ShowHideColumnsButton.d.ts +1 -1
  14. package/dist/buttons/MRT_ToggleDensePaddingButton.d.ts +1 -1
  15. package/dist/buttons/MRT_ToggleFiltersButton.d.ts +1 -1
  16. package/dist/buttons/MRT_ToggleGlobalFilterButton.d.ts +1 -1
  17. package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +1 -1
  18. package/dist/filtersFns.d.ts +31 -23
  19. package/dist/footer/MRT_TableFooter.d.ts +1 -1
  20. package/dist/footer/MRT_TableFooterCell.d.ts +1 -1
  21. package/dist/footer/MRT_TableFooterRow.d.ts +1 -1
  22. package/dist/head/MRT_DraggableTableHeadCell.d.ts +1 -1
  23. package/dist/head/MRT_TableHead.d.ts +1 -1
  24. package/dist/head/MRT_TableHeadCell.d.ts +1 -1
  25. package/dist/head/MRT_TableHeadCellColumnActionsButton.d.ts +1 -1
  26. package/dist/head/MRT_TableHeadCellFilterContainer.d.ts +1 -1
  27. package/dist/head/MRT_TableHeadCellFilterLabel.d.ts +1 -1
  28. package/dist/head/MRT_TableHeadCellResizeHandle.d.ts +1 -1
  29. package/dist/head/MRT_TableHeadCellSortLabel.d.ts +1 -1
  30. package/dist/head/MRT_TableHeadRow.d.ts +1 -1
  31. package/dist/inputs/MRT_EditCellTextField.d.ts +1 -1
  32. package/dist/inputs/MRT_FilterRangeFields.d.ts +1 -1
  33. package/dist/inputs/MRT_FilterTextField.d.ts +1 -1
  34. package/dist/inputs/MRT_GlobalFilterTextField.d.ts +1 -1
  35. package/dist/inputs/MRT_SelectCheckbox.d.ts +1 -1
  36. package/dist/material-react-table.cjs.development.js +760 -759
  37. package/dist/material-react-table.cjs.development.js.map +1 -1
  38. package/dist/material-react-table.cjs.production.min.js +1 -1
  39. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  40. package/dist/material-react-table.esm.js +762 -761
  41. package/dist/material-react-table.esm.js.map +1 -1
  42. package/dist/menus/MRT_ColumnActionMenu.d.ts +1 -1
  43. package/dist/menus/MRT_FilterOptionMenu.d.ts +1 -1
  44. package/dist/menus/MRT_RowActionMenu.d.ts +1 -1
  45. package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +1 -1
  46. package/dist/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -1
  47. package/dist/sortingFns.d.ts +10 -3
  48. package/dist/table/MRT_Table.d.ts +1 -1
  49. package/dist/table/MRT_TableContainer.d.ts +1 -1
  50. package/dist/table/MRT_TablePaper.d.ts +1 -1
  51. package/dist/toolbar/MRT_LinearProgressBar.d.ts +1 -1
  52. package/dist/toolbar/MRT_TablePagination.d.ts +1 -1
  53. package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +1 -1
  54. package/dist/toolbar/MRT_ToolbarBottom.d.ts +1 -1
  55. package/dist/toolbar/MRT_ToolbarInternalButtons.d.ts +1 -1
  56. package/dist/toolbar/MRT_ToolbarTop.d.ts +1 -1
  57. package/dist/utils.d.ts +10 -16
  58. package/package.json +4 -4
  59. package/src/MaterialReactTable.tsx +167 -156
  60. package/src/body/MRT_TableBody.tsx +5 -6
  61. package/src/body/MRT_TableBodyCell.tsx +18 -27
  62. package/src/body/MRT_TableBodyRow.tsx +7 -7
  63. package/src/body/MRT_TableDetailPanel.tsx +7 -7
  64. package/src/buttons/MRT_ColumnPinningButtons.tsx +3 -3
  65. package/src/buttons/MRT_CopyButton.tsx +5 -7
  66. package/src/buttons/MRT_EditActionButtons.tsx +4 -5
  67. package/src/buttons/MRT_ExpandAllButton.tsx +4 -5
  68. package/src/buttons/MRT_ExpandButton.tsx +4 -5
  69. package/src/buttons/MRT_FullScreenToggleButton.tsx +3 -7
  70. package/src/buttons/MRT_GrabHandleButton.tsx +39 -41
  71. package/src/buttons/MRT_ShowHideColumnsButton.tsx +4 -4
  72. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +3 -7
  73. package/src/buttons/MRT_ToggleFiltersButton.tsx +3 -4
  74. package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +4 -8
  75. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +6 -6
  76. package/src/filtersFns.ts +24 -23
  77. package/src/footer/MRT_TableFooter.tsx +5 -6
  78. package/src/footer/MRT_TableFooterCell.tsx +8 -11
  79. package/src/footer/MRT_TableFooterRow.tsx +5 -9
  80. package/src/head/MRT_DraggableTableHeadCell.tsx +4 -6
  81. package/src/head/MRT_TableHead.tsx +5 -5
  82. package/src/head/MRT_TableHeadCell.tsx +18 -29
  83. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +6 -8
  84. package/src/head/MRT_TableHeadCellFilterContainer.tsx +5 -7
  85. package/src/head/MRT_TableHeadCellFilterLabel.tsx +13 -19
  86. package/src/head/MRT_TableHeadCellResizeHandle.tsx +12 -11
  87. package/src/head/MRT_TableHeadCellSortLabel.tsx +3 -5
  88. package/src/head/MRT_TableHeadRow.tsx +6 -6
  89. package/src/inputs/MRT_EditCellTextField.tsx +12 -14
  90. package/src/inputs/MRT_FilterRangeFields.tsx +4 -4
  91. package/src/inputs/MRT_FilterTextField.tsx +27 -38
  92. package/src/inputs/MRT_GlobalFilterTextField.tsx +5 -6
  93. package/src/inputs/MRT_SelectCheckbox.tsx +9 -12
  94. package/src/menus/MRT_ColumnActionMenu.tsx +5 -9
  95. package/src/menus/MRT_FilterOptionMenu.tsx +16 -48
  96. package/src/menus/MRT_RowActionMenu.tsx +4 -5
  97. package/src/menus/MRT_ShowHideColumnsMenu.tsx +8 -9
  98. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +11 -10
  99. package/src/sortingFns.ts +11 -3
  100. package/src/table/MRT_Table.tsx +7 -11
  101. package/src/table/MRT_TableContainer.tsx +5 -6
  102. package/src/table/MRT_TablePaper.tsx +7 -8
  103. package/src/table/MRT_TableRoot.tsx +118 -132
  104. package/src/toolbar/MRT_LinearProgressBar.tsx +4 -5
  105. package/src/toolbar/MRT_TablePagination.tsx +7 -9
  106. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +13 -9
  107. package/src/toolbar/MRT_ToolbarBottom.tsx +8 -9
  108. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +10 -10
  109. package/src/toolbar/MRT_ToolbarTop.tsx +11 -11
  110. package/src/utils.ts +56 -50
@@ -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 } 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, 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 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 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","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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"}
1
+ {"version":3,"file":"material-react-table.cjs.production.min.js","sources":["../src/localization.ts","../src/icons.ts","../src/buttons/MRT_ExpandAllButton.tsx","../src/buttons/MRT_ExpandButton.tsx","../src/menus/MRT_FilterOptionMenu.tsx","../node_modules/react-dnd/src/core/DndContext.ts","../node_modules/redux/es/redux.js","../node_modules/@react-dnd/invariant/src/index.ts","../node_modules/dnd-core/src/utils/js_utils.ts","../node_modules/dnd-core/src/actions/dragDrop/types.ts","../node_modules/dnd-core/src/actions/dragDrop/local/setClientOffset.ts","../node_modules/dnd-core/src/actions/dragDrop/beginDrag.ts","../node_modules/dnd-core/src/actions/dragDrop/drop.ts","../node_modules/dnd-core/src/actions/dragDrop/endDrag.ts","../node_modules/dnd-core/src/utils/matchesType.ts","../node_modules/dnd-core/src/actions/dragDrop/hover.ts","../node_modules/dnd-core/src/actions/dragDrop/publishDragSource.ts","../node_modules/dnd-core/src/classes/DragDropManagerImpl.ts","../node_modules/dnd-core/src/actions/dragDrop/index.ts","../node_modules/dnd-core/src/utils/coords.ts","../node_modules/dnd-core/src/utils/dirtiness.ts","../node_modules/dnd-core/src/classes/DragDropMonitorImpl.ts","../node_modules/@react-dnd/asap/src/makeRequestCall.ts","../node_modules/@react-dnd/asap/src/RawTask.ts","../node_modules/@react-dnd/asap/src/asap.ts","../node_modules/@react-dnd/asap/src/AsapQueue.ts","../node_modules/@react-dnd/asap/src/TaskFactory.ts","../node_modules/dnd-core/src/actions/registry.ts","../node_modules/dnd-core/src/contracts.ts","../node_modules/dnd-core/src/interfaces.ts","../node_modules/dnd-core/src/utils/getNextUniqueId.ts","../node_modules/dnd-core/src/classes/HandlerRegistryImpl.ts","../node_modules/dnd-core/src/utils/equality.ts","../node_modules/dnd-core/src/reducers/dirtyHandlerIds.ts","../node_modules/dnd-core/src/reducers/dragOffset.ts","../node_modules/dnd-core/src/reducers/dragOperation.ts","../node_modules/dnd-core/src/reducers/refCount.ts","../node_modules/dnd-core/src/reducers/stateId.ts","../node_modules/dnd-core/src/reducers/index.ts","../node_modules/dnd-core/src/createDragDropManager.ts","../node_modules/react-dnd/src/core/DndProvider.tsx","../node_modules/react-dnd/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/react-dnd/src/hooks/useCollectedProps.ts","../node_modules/react-dnd/src/hooks/useMonitorOutput.ts","../node_modules/react-dnd/src/hooks/useCollector.ts","../node_modules/fast-deep-equal/index.js","../node_modules/react-dnd/src/hooks/useOptionalFactory.ts","../node_modules/react-dnd/src/hooks/useDrag/connectors.ts","../node_modules/react-dnd/src/internals/DragSourceMonitorImpl.ts","../node_modules/react-dnd/src/internals/DropTargetMonitorImpl.ts","../node_modules/@react-dnd/shallowequal/src/index.ts","../node_modules/react-dnd/src/internals/isRef.ts","../node_modules/react-dnd/src/internals/wrapConnectorHooks.ts","../node_modules/react-dnd/src/internals/SourceConnector.ts","../node_modules/react-dnd/src/internals/TargetConnector.ts","../node_modules/react-dnd/src/hooks/useDragDropManager.ts","../node_modules/react-dnd/src/hooks/useDrag/DragSourceImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/useDrag.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceMonitor.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceConnector.ts","../node_modules/react-dnd/src/hooks/useDrag/useRegisteredDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragType.ts","../node_modules/react-dnd/src/internals/registration.ts","../node_modules/react-dnd/src/hooks/useDrop/connectors.ts","../node_modules/react-dnd/src/hooks/useDrop/DropTargetImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/useDrop.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetMonitor.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetConnector.ts","../node_modules/react-dnd/src/hooks/useDrop/useRegisteredDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useAccept.ts","../src/buttons/MRT_ColumnPinningButtons.tsx","../src/buttons/MRT_GrabHandleButton.tsx","../src/filtersFns.ts","../src/sortingFns.ts","../src/utils.ts","../src/menus/MRT_ShowHideColumnsMenuItems.tsx","../src/menus/MRT_ShowHideColumnsMenu.tsx","../src/menus/MRT_ColumnActionMenu.tsx","../src/menus/MRT_RowActionMenu.tsx","../src/buttons/MRT_EditActionButtons.tsx","../src/buttons/MRT_ToggleRowActionMenuButton.tsx","../src/inputs/MRT_SelectCheckbox.tsx","../node_modules/react-dnd-html5-backend/src/utils/js_utils.ts","../node_modules/react-dnd-html5-backend/src/EnterLeaveCounter.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/NativeDragSource.ts","../node_modules/react-dnd-html5-backend/src/NativeTypes.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/getDataFromDataTransfer.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/nativeTypesConfig.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/index.ts","../node_modules/react-dnd-html5-backend/src/BrowserDetector.ts","../node_modules/react-dnd-html5-backend/src/MonotonicInterpolant.ts","../node_modules/react-dnd-html5-backend/src/OffsetUtils.ts","../node_modules/react-dnd-html5-backend/src/OptionsReader.ts","../node_modules/react-dnd-html5-backend/src/HTML5BackendImpl.ts","../node_modules/react-dnd-html5-backend/src/index.ts","../src/buttons/MRT_FullScreenToggleButton.tsx","../src/buttons/MRT_ShowHideColumnsButton.tsx","../src/buttons/MRT_ToggleDensePaddingButton.tsx","../src/buttons/MRT_ToggleFiltersButton.tsx","../src/buttons/MRT_ToggleGlobalFilterButton.tsx","../src/inputs/MRT_GlobalFilterTextField.tsx","../src/toolbar/MRT_ToolbarInternalButtons.tsx","../src/toolbar/MRT_TablePagination.tsx","../src/toolbar/MRT_ToolbarAlertBanner.tsx","../src/toolbar/MRT_LinearProgressBar.tsx","../src/toolbar/MRT_ToolbarTop.tsx","../src/toolbar/MRT_ToolbarBottom.tsx","../src/inputs/MRT_FilterTextField.tsx","../src/inputs/MRT_FilterRangeFields.tsx","../src/head/MRT_TableHeadCellFilterContainer.tsx","../src/head/MRT_TableHeadCellFilterLabel.tsx","../src/head/MRT_TableHeadCellResizeHandle.tsx","../src/head/MRT_TableHeadCellSortLabel.tsx","../src/head/MRT_TableHeadCellColumnActionsButton.tsx","../src/head/MRT_TableHeadCell.tsx","../src/head/MRT_DraggableTableHeadCell.tsx","../src/head/MRT_TableHeadRow.tsx","../src/head/MRT_TableHead.tsx","../node_modules/react-virtual/node_modules/@reach/observe-rect/dist/observe-rect.esm.js","../node_modules/react-virtual/src/useIsomorphicLayoutEffect.js","../node_modules/react-virtual/src/useRect.js","../node_modules/react-virtual/src/index.js","../src/inputs/MRT_EditCellTextField.tsx","../src/buttons/MRT_CopyButton.tsx","../src/body/MRT_TableBodyCell.tsx","../src/body/MRT_TableDetailPanel.tsx","../src/body/MRT_TableBodyRow.tsx","../src/body/MRT_TableBody.tsx","../src/footer/MRT_TableFooterCell.tsx","../src/footer/MRT_TableFooterRow.tsx","../src/footer/MRT_TableFooter.tsx","../src/table/MRT_Table.tsx","../src/table/MRT_TableContainer.tsx","../src/table/MRT_TablePaper.tsx","../src/table/MRT_TableRoot.tsx","../src/MaterialReactTable.tsx"],"sourcesContent":["export interface MRT_Localization {\n actions: string;\n and: string;\n cancel: string;\n changeFilterMode: string;\n changeSearchMode: string;\n clearFilter: string;\n clearSearch: string;\n clearSort: string;\n clickToCopy: string;\n columnActions: string;\n copiedToClipboard: string;\n edit: string;\n expand: string;\n expandAll: string;\n filterBetween: string;\n filterByColumn: string;\n filterContains: string;\n filterEmpty: string;\n filterEndsWith: string;\n filterEquals: string;\n filterFuzzy: string;\n filterGreaterThan: string;\n filterLessThan: string;\n filterMode: string;\n filterNotEmpty: string;\n filterNotEquals: string;\n filterStartsWith: string;\n filteringByColumn: string;\n grab: string;\n groupByColumn: string;\n groupedBy: string;\n hideAll: string;\n hideColumn: string;\n max: string;\n min: string;\n pinToLeft: string;\n pinToRight: string;\n resetColumnSize: string;\n resetOrder: string;\n rowActions: string;\n rowNumber: string;\n rowNumbers: string;\n save: string;\n search: string;\n select: string;\n selectedCountOfRowCountRowsSelected: string;\n showAll: string;\n showAllColumns: string;\n showHideColumns: string;\n showHideFilters: string;\n showHideSearch: string;\n sortByColumnAsc: string;\n sortByColumnDesc: string;\n sortedByColumnAsc: string;\n sortedByColumnDesc: string;\n thenBy: string;\n toggleDensity: string;\n toggleFullScreen: string;\n toggleSelectAll: string;\n toggleSelectRow: string;\n toggleVisibility: string;\n ungroupByColumn: string;\n unpin: string;\n unpinAll: string;\n unsorted: string;\n}\n\nexport const MRT_DefaultLocalization_EN: MRT_Localization = {\n actions: 'Actions',\n and: 'and',\n cancel: 'Cancel',\n changeFilterMode: 'Change filter mode',\n changeSearchMode: 'Change search mode',\n clearFilter: 'Clear filter',\n clearSearch: 'Clear search',\n clearSort: 'Clear sort',\n clickToCopy: 'Click to copy',\n columnActions: 'Column Actions',\n copiedToClipboard: 'Copied to clipboard',\n edit: 'Edit',\n expand: 'Expand',\n expandAll: 'Expand all',\n filterBetween: 'Between',\n filterByColumn: 'Filter by {column}',\n filterContains: 'Contains',\n filterEmpty: 'Empty',\n filterEndsWith: 'Ends With',\n filterEquals: 'Equals',\n filterFuzzy: 'Fuzzy',\n filterGreaterThan: 'Greater Than',\n filterLessThan: 'Less Than',\n filterMode: 'Filter Mode: {filterType}',\n filterNotEmpty: 'Not Empty',\n filterNotEquals: 'Not Equals',\n filterStartsWith: 'Starts With',\n filteringByColumn: 'Filtering by {column} - {filterType} {filterValue}',\n grab: 'Grab',\n groupByColumn: 'Group by {column}',\n groupedBy: 'Grouped by ',\n hideAll: 'Hide all',\n hideColumn: 'Hide {column} column',\n max: 'Max',\n min: 'Min',\n pinToLeft: 'Pin to left',\n pinToRight: 'Pin to right',\n resetColumnSize: 'Reset column size',\n resetOrder: 'Reset order',\n rowActions: 'Row Actions',\n rowNumber: '#',\n rowNumbers: 'Row Numbers',\n save: 'Save',\n search: 'Search',\n selectedCountOfRowCountRowsSelected:\n '{selectedCount} of {rowCount} row(s) selected',\n select: 'Select',\n showAll: 'Show all',\n showAllColumns: 'Show all columns',\n showHideColumns: 'Show/Hide columns',\n showHideFilters: 'Show/Hide filters',\n showHideSearch: 'Show/Hide search',\n sortByColumnAsc: 'Sort by {column} ascending',\n sortByColumnDesc: 'Sort by {column} descending',\n sortedByColumnAsc: 'Sorted by {column} ascending',\n sortedByColumnDesc: 'Sorted by {column} descending',\n thenBy: ', then by ',\n toggleDensity: 'Toggle density',\n toggleFullScreen: 'Toggle full screen',\n toggleSelectAll: 'Toggle select all',\n toggleSelectRow: 'Toggle select row',\n toggleVisibility: 'Toggle visibility',\n ungroupByColumn: 'Ungroup by {column}',\n unpin: 'Unpin',\n unpinAll: 'Unpin all',\n unsorted: 'Unsorted',\n};\n","import {\n ArrowRight,\n Cancel,\n CheckBox,\n ClearAll,\n Close,\n DensityLarge,\n DensityMedium,\n DensitySmall,\n DragHandle,\n DynamicFeed,\n Edit,\n ExpandLess,\n ExpandMore,\n FilterAlt,\n FilterAltOff,\n FilterList,\n FilterListOff,\n Fullscreen,\n FullscreenExit,\n KeyboardDoubleArrowDown,\n MoreHoriz,\n MoreVert,\n PushPin,\n RestartAlt,\n Save,\n Search,\n SearchOff,\n Sort,\n ViewColumn,\n VisibilityOff,\n} from '@mui/icons-material';\n\nexport interface MRT_Icons {\n ArrowRightIcon: any;\n CancelIcon: any;\n CheckBoxIcon: any;\n ClearAllIcon: any;\n CloseIcon: any;\n DensityLargeIcon: any;\n DensityMediumIcon: any;\n DensitySmallIcon: any;\n KeyboardDoubleArrowDownIcon: any;\n DragHandleIcon: any;\n DynamicFeedIcon: any;\n EditIcon: any;\n ExpandLessIcon: any;\n ExpandMoreIcon: any;\n FilterAltIcon: any;\n FilterAltOffIcon: any;\n FilterListIcon: any;\n FilterListOffIcon: any;\n FullscreenExitIcon: any;\n FullscreenIcon: any;\n MoreHorizIcon: any;\n MoreVertIcon: any;\n PushPinIcon: any;\n RestartAltIcon: any;\n SaveIcon: any;\n SearchIcon: any;\n SearchOffIcon: any;\n SortIcon: any;\n ViewColumnIcon: any;\n VisibilityOffIcon: any;\n}\n\nexport const MRT_Default_Icons: MRT_Icons = {\n ArrowRightIcon: ArrowRight,\n CancelIcon: Cancel,\n CheckBoxIcon: CheckBox,\n ClearAllIcon: ClearAll,\n CloseIcon: Close,\n DensityLargeIcon: DensityLarge,\n DensityMediumIcon: DensityMedium,\n DensitySmallIcon: DensitySmall,\n DragHandleIcon: DragHandle,\n DynamicFeedIcon: DynamicFeed,\n EditIcon: Edit,\n ExpandLessIcon: ExpandLess,\n ExpandMoreIcon: ExpandMore,\n FilterAltIcon: FilterAlt,\n FilterAltOffIcon: FilterAltOff,\n FilterListIcon: FilterList,\n FilterListOffIcon: FilterListOff,\n FullscreenExitIcon: FullscreenExit,\n FullscreenIcon: Fullscreen,\n KeyboardDoubleArrowDownIcon: KeyboardDoubleArrowDown,\n MoreHorizIcon: MoreHoriz,\n MoreVertIcon: MoreVert,\n PushPinIcon: PushPin,\n RestartAltIcon: RestartAlt,\n SaveIcon: Save,\n SearchIcon: Search,\n SearchOffIcon: SearchOff,\n SortIcon: Sort,\n ViewColumnIcon: ViewColumn,\n VisibilityOffIcon: VisibilityOff,\n};\n","import React, { FC } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ExpandAllButton: FC<Props> = ({ table }) => {\n const {\n getIsAllRowsExpanded,\n getIsSomeRowsExpanded,\n getCanSomeRowsExpand,\n getState,\n options: {\n icons: { KeyboardDoubleArrowDownIcon },\n localization,\n muiExpandAllButtonProps,\n renderDetailPanel,\n },\n toggleAllRowsExpanded,\n } = table;\n const { density } = getState();\n\n const iconButtonProps =\n muiExpandAllButtonProps instanceof Function\n ? muiExpandAllButtonProps({ table })\n : muiExpandAllButtonProps;\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.expandAll}\n >\n <span>\n <IconButton\n aria-label={localization.expandAll}\n disabled={!getCanSomeRowsExpand() && !renderDetailPanel}\n onClick={() => toggleAllRowsExpanded(!getIsAllRowsExpanded())}\n {...iconButtonProps}\n sx={{\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...iconButtonProps?.sx,\n }}\n >\n <KeyboardDoubleArrowDownIcon\n style={{\n transform: `rotate(${\n getIsAllRowsExpanded()\n ? -180\n : getIsSomeRowsExpanded()\n ? -90\n : 0\n }deg)`,\n transition: 'transform 0.2s',\n }}\n />\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ExpandButton: FC<Props> = ({ row, table }) => {\n const {\n getState,\n options: {\n icons: { ExpandMoreIcon },\n localization,\n muiExpandButtonProps,\n renderDetailPanel,\n },\n } = table;\n const { density } = getState();\n\n const iconButtonProps =\n muiExpandButtonProps instanceof Function\n ? muiExpandButtonProps({ table, row })\n : muiExpandButtonProps;\n\n const handleToggleExpand = () => {\n row.toggleExpanded();\n };\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.expand}\n >\n <span>\n <IconButton\n aria-label={localization.expand}\n disabled={!row.getCanExpand() && !renderDetailPanel}\n onClick={handleToggleExpand}\n {...iconButtonProps}\n sx={{\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...iconButtonProps?.sx,\n }}\n >\n <ExpandMoreIcon\n style={{\n transform: `rotate(${\n !row.getCanExpand() && !renderDetailPanel\n ? -90\n : row.getIsExpanded()\n ? -180\n : 0\n }deg)`,\n transition: 'transform 0.2s',\n }}\n />\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import React, { FC, useMemo } from 'react';\nimport { Menu, MenuItem } from '@mui/material';\nimport type { MRT_FilterOption, MRT_Header, MRT_TableInstance } from '..';\n\nconst commonMenuItemStyles = {\n py: '6px',\n my: 0,\n alignItems: 'center',\n};\n\ninterface Props {\n anchorEl: HTMLElement | null;\n header?: MRT_Header;\n onSelect?: () => void;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_FilterOptionMenu: FC<Props> = ({\n anchorEl,\n header,\n onSelect,\n setAnchorEl,\n table,\n}) => {\n const {\n getState,\n options: {\n enabledGlobalFilterOptions,\n enabledColumnFilterOptions,\n localization,\n },\n setCurrentFilterFns,\n setCurrentGlobalFilterFn,\n } = table;\n const { currentFilterFns, currentGlobalFilterFn, density } = getState();\n const { column } = header ?? {};\n const { columnDef } = column ?? {};\n\n const allowedColumnFilterOptions =\n columnDef?.enabledColumnFilterOptions ?? enabledColumnFilterOptions;\n\n const filterOptions = useMemo(\n () =>\n [\n {\n option: 'fuzzy',\n label: localization.filterFuzzy,\n divider: false,\n },\n {\n option: 'contains',\n label: localization.filterContains,\n divider: false,\n },\n {\n option: 'startsWith',\n label: localization.filterStartsWith,\n divider: false,\n },\n {\n option: 'endsWith',\n label: localization.filterEndsWith,\n divider: true,\n },\n {\n option: 'equals',\n label: localization.filterEquals,\n divider: false,\n },\n {\n option: 'notEquals',\n label: localization.filterNotEquals,\n divider: true,\n },\n {\n option: 'between',\n label: localization.filterBetween,\n divider: false,\n },\n {\n option: 'greaterThan',\n label: localization.filterGreaterThan,\n divider: false,\n },\n {\n option: 'lessThan',\n label: localization.filterLessThan,\n divider: true,\n },\n {\n option: 'empty',\n label: localization.filterEmpty,\n divider: false,\n },\n {\n option: 'notEmpty',\n label: localization.filterNotEmpty,\n divider: false,\n },\n ].filter((filterType) =>\n columnDef\n ? allowedColumnFilterOptions === undefined ||\n allowedColumnFilterOptions?.includes(filterType.option)\n : (!enabledGlobalFilterOptions ||\n enabledGlobalFilterOptions.includes(filterType.option)) &&\n ['fuzzy', 'contains'].includes(filterType.option),\n ) as Array<{\n option: MRT_FilterOption;\n label: string;\n divider: boolean;\n fn: Function;\n }>,\n [],\n );\n\n const handleSelectFilterType = (option: MRT_FilterOption) => {\n if (header && column) {\n setCurrentFilterFns((prev: { [key: string]: any }) => ({\n ...prev,\n [header.id]: option,\n }));\n if (['empty', 'notEmpty'].includes(option)) {\n column.setFilterValue(' ');\n } else if (option === 'between') {\n column.setFilterValue(['', '']);\n } else {\n column.setFilterValue('');\n }\n } else {\n setCurrentGlobalFilterFn(option);\n }\n setAnchorEl(null);\n onSelect?.();\n };\n\n const filterOption = !!header\n ? currentFilterFns[header.id]\n : currentGlobalFilterFn;\n\n return (\n <Menu\n anchorEl={anchorEl}\n anchorOrigin={{ vertical: 'center', horizontal: 'right' }}\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n {filterOptions.map(({ option, label, divider }, index) => (\n <MenuItem\n divider={divider}\n key={index}\n onClick={() => handleSelectFilterType(option)}\n selected={option === filterOption}\n sx={commonMenuItemStyles}\n value={option}\n >\n {label}\n </MenuItem>\n ))}\n </Menu>\n );\n};\n","import type { DragDropManager } from 'dnd-core'\nimport { createContext } from 'react'\n\n/**\n * The React context type\n */\nexport interface DndContextType {\n\tdragDropManager: DragDropManager | undefined\n}\n\n/**\n * Create the React Context\n */\nexport const DndContext = createContext<DndContextType>({\n\tdragDropManager: undefined,\n})\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport function invariant(condition: any, format: string, ...args: any[]) {\n\tif (isProduction()) {\n\t\tif (format === undefined) {\n\t\t\tthrow new Error('invariant requires an error message argument')\n\t\t}\n\t}\n\n\tif (!condition) {\n\t\tlet error\n\t\tif (format === undefined) {\n\t\t\terror = new Error(\n\t\t\t\t'Minified exception occurred; use the non-minified dev environment ' +\n\t\t\t\t\t'for the full error message and additional helpful warnings.',\n\t\t\t)\n\t\t} else {\n\t\t\tlet argIndex = 0\n\t\t\terror = new Error(\n\t\t\t\tformat.replace(/%s/g, function () {\n\t\t\t\t\treturn args[argIndex++]\n\t\t\t\t}),\n\t\t\t)\n\t\t\terror.name = 'Invariant Violation'\n\t\t}\n\n\t\t;(error as any).framesToPop = 1 // we don't care about invariant's own frame\n\t\tthrow error\n\t}\n}\n\nfunction isProduction() {\n\treturn (\n\t\ttypeof process !== 'undefined' && process.env['NODE_ENV'] === 'production'\n\t)\n}\n","// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get<T>(obj: any, path: string, defaultValue: T): T {\n\treturn path\n\t\t.split('.')\n\t\t.reduce((a, c) => (a && a[c] ? a[c] : defaultValue || null), obj) as T\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without<T>(items: T[], item: T): T[] {\n\treturn items.filter((i) => i !== item)\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isString(input: any): boolean {\n\treturn typeof input === 'string'\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isObject(input: any): boolean {\n\treturn typeof input === 'object'\n}\n\n/**\n * replacement for _.xor\n * @param itemsA\n * @param itemsB\n */\nexport function xor<T extends string | number>(itemsA: T[], itemsB: T[]): T[] {\n\tconst map = new Map<T, number>()\n\tconst insertItem = (item: T) => {\n\t\tmap.set(item, map.has(item) ? (map.get(item) as number) + 1 : 1)\n\t}\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tmap.forEach((count, key) => {\n\t\tif (count === 1) {\n\t\t\tresult.push(key)\n\t\t}\n\t})\n\treturn result\n}\n\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\nexport function intersection<T>(itemsA: T[], itemsB: T[]): T[] {\n\treturn itemsA.filter((t) => itemsB.indexOf(t) > -1)\n}\n","export const INIT_COORDS = 'dnd-core/INIT_COORDS'\nexport const BEGIN_DRAG = 'dnd-core/BEGIN_DRAG'\nexport const PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE'\nexport const HOVER = 'dnd-core/HOVER'\nexport const DROP = 'dnd-core/DROP'\nexport const END_DRAG = 'dnd-core/END_DRAG'\n","import type { AnyAction } from 'redux'\n\nimport type { XYCoord } from '../../../interfaces.js'\nimport { INIT_COORDS } from '../types.js'\n\nexport function setClientOffset(\n\tclientOffset: XYCoord | null | undefined,\n\tsourceClientOffset?: XYCoord | null | undefined,\n): AnyAction {\n\treturn {\n\t\ttype: INIT_COORDS,\n\t\tpayload: {\n\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\tclientOffset: clientOffset || null,\n\t\t},\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tBeginDragOptions,\n\tBeginDragPayload,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tXYCoord,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { setClientOffset } from './local/setClientOffset.js'\nimport { BEGIN_DRAG, INIT_COORDS } from './types.js'\n\nconst ResetCoordinatesAction = {\n\ttype: INIT_COORDS,\n\tpayload: {\n\t\tclientOffset: null,\n\t\tsourceClientOffset: null,\n\t},\n}\n\nexport function createBeginDrag(manager: DragDropManager) {\n\treturn function beginDrag(\n\t\tsourceIds: Identifier[] = [],\n\t\toptions: BeginDragOptions = {\n\t\t\tpublishSource: true,\n\t\t},\n\t): Action<BeginDragPayload> | undefined {\n\t\tconst {\n\t\t\tpublishSource = true,\n\t\t\tclientOffset,\n\t\t\tgetSourceClientOffset,\n\t\t}: BeginDragOptions = options\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\n\t\t// Initialize the coordinates using the client offset\n\t\tmanager.dispatch(setClientOffset(clientOffset))\n\n\t\tverifyInvariants(sourceIds, monitor, registry)\n\n\t\t// Get the draggable source\n\t\tconst sourceId = getDraggableSource(sourceIds, monitor)\n\t\tif (sourceId == null) {\n\t\t\tmanager.dispatch(ResetCoordinatesAction)\n\t\t\treturn\n\t\t}\n\n\t\t// Get the source client offset\n\t\tlet sourceClientOffset: XYCoord | null = null\n\t\tif (clientOffset) {\n\t\t\tif (!getSourceClientOffset) {\n\t\t\t\tthrow new Error('getSourceClientOffset must be defined')\n\t\t\t}\n\t\t\tverifyGetSourceClientOffsetIsFunction(getSourceClientOffset)\n\t\t\tsourceClientOffset = getSourceClientOffset(sourceId)\n\t\t}\n\n\t\t// Initialize the full coordinates\n\t\tmanager.dispatch(setClientOffset(clientOffset, sourceClientOffset))\n\n\t\tconst source = registry.getSource(sourceId)\n\t\tconst item = source.beginDrag(monitor, sourceId)\n\t\t// If source.beginDrag returns null, this is an indicator to cancel the drag\n\t\tif (item == null) {\n\t\t\treturn undefined\n\t\t}\n\t\tverifyItemIsObject(item)\n\t\tregistry.pinSource(sourceId)\n\n\t\tconst itemType = registry.getSourceType(sourceId)\n\t\treturn {\n\t\t\ttype: BEGIN_DRAG,\n\t\t\tpayload: {\n\t\t\t\titemType,\n\t\t\t\titem,\n\t\t\t\tsourceId,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\t\tisSourcePublic: !!publishSource,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyInvariants(\n\tsourceIds: Identifier[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.')\n\tsourceIds.forEach(function (sourceId) {\n\t\tinvariant(\n\t\t\tregistry.getSource(sourceId),\n\t\t\t'Expected sourceIds to be registered.',\n\t\t)\n\t})\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset: any) {\n\tinvariant(\n\t\ttypeof getSourceClientOffset === 'function',\n\t\t'When clientOffset is provided, getSourceClientOffset must be a function.',\n\t)\n}\n\nfunction verifyItemIsObject(item: any) {\n\tinvariant(isObject(item), 'Item must be an object.')\n}\n\nfunction getDraggableSource(sourceIds: Identifier[], monitor: DragDropMonitor) {\n\tlet sourceId = null\n\tfor (let i = sourceIds.length - 1; i >= 0; i--) {\n\t\tif (monitor.canDragSource(sourceIds[i])) {\n\t\t\tsourceId = sourceIds[i]\n\t\t\tbreak\n\t\t}\n\t}\n\treturn sourceId\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tDropPayload,\n\tHandlerRegistry,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { DROP } from './types.js'\n\nexport function createDrop(manager: DragDropManager) {\n\treturn function drop(options = {}): void {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyInvariants(monitor)\n\t\tconst targetIds = getDroppableTargets(monitor)\n\n\t\t// Multiple actions are dispatched here, which is why this doesn't return an action\n\t\ttargetIds.forEach((targetId, index) => {\n\t\t\tconst dropResult = determineDropResult(targetId, index, registry, monitor)\n\t\t\tconst action: Action<DropPayload> = {\n\t\t\t\ttype: DROP,\n\t\t\t\tpayload: {\n\t\t\t\t\tdropResult: {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\t...dropResult,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t\tmanager.dispatch(action)\n\t\t})\n\t}\n}\n\nfunction verifyInvariants(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call drop while not dragging.')\n\tinvariant(\n\t\t!monitor.didDrop(),\n\t\t'Cannot call drop twice during one drag operation.',\n\t)\n}\n\nfunction determineDropResult(\n\ttargetId: Identifier,\n\tindex: number,\n\tregistry: HandlerRegistry,\n\tmonitor: DragDropMonitor,\n) {\n\tconst target = registry.getTarget(targetId)\n\tlet dropResult = target ? target.drop(monitor, targetId) : undefined\n\tverifyDropResultType(dropResult)\n\tif (typeof dropResult === 'undefined') {\n\t\tdropResult = index === 0 ? {} : monitor.getDropResult()\n\t}\n\treturn dropResult\n}\n\nfunction verifyDropResultType(dropResult: any) {\n\tinvariant(\n\t\ttypeof dropResult === 'undefined' || isObject(dropResult),\n\t\t'Drop result must either be an object or undefined.',\n\t)\n}\n\nfunction getDroppableTargets(monitor: DragDropMonitor) {\n\tconst targetIds = monitor\n\t\t.getTargetIds()\n\t\t.filter(monitor.canDropOnTarget, monitor)\n\ttargetIds.reverse()\n\treturn targetIds\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tSentinelAction,\n} from '../../interfaces.js'\nimport { END_DRAG } from './types.js'\n\nexport function createEndDrag(manager: DragDropManager) {\n\treturn function endDrag(): SentinelAction {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyIsDragging(monitor)\n\n\t\tconst sourceId = monitor.getSourceId()\n\t\tif (sourceId != null) {\n\t\t\tconst source = registry.getSource(sourceId, true)\n\t\t\tsource.endDrag(monitor, sourceId)\n\t\t\tregistry.unpinSource()\n\t\t}\n\t\treturn { type: END_DRAG }\n\t}\n}\n\nfunction verifyIsDragging(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.')\n}\n","import type { Identifier } from '../interfaces.js'\n\nexport function matchesType(\n\ttargetType: Identifier | Identifier[] | null,\n\tdraggedItemType: Identifier | null,\n): boolean {\n\tif (draggedItemType === null) {\n\t\treturn targetType === null\n\t}\n\treturn Array.isArray(targetType)\n\t\t? (targetType as Identifier[]).some((t) => t === draggedItemType)\n\t\t: targetType === draggedItemType\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tHoverOptions,\n\tHoverPayload,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { matchesType } from '../../utils/matchesType.js'\nimport { HOVER } from './types.js'\n\nexport function createHover(manager: DragDropManager) {\n\treturn function hover(\n\t\ttargetIdsArg: string[],\n\t\t{ clientOffset }: HoverOptions = {},\n\t): Action<HoverPayload> {\n\t\tverifyTargetIdsIsArray(targetIdsArg)\n\t\tconst targetIds = targetIdsArg.slice(0)\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tconst draggedItemType = monitor.getItemType()\n\t\tremoveNonMatchingTargetIds(targetIds, registry, draggedItemType)\n\t\tcheckInvariants(targetIds, monitor, registry)\n\t\thoverAllTargets(targetIds, monitor, registry)\n\n\t\treturn {\n\t\t\ttype: HOVER,\n\t\t\tpayload: {\n\t\t\t\ttargetIds,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg: string[]) {\n\tinvariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.')\n}\n\nfunction checkInvariants(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(monitor.isDragging(), 'Cannot call hover while not dragging.')\n\tinvariant(!monitor.didDrop(), 'Cannot call hover after drop.')\n\tfor (let i = 0; i < targetIds.length; i++) {\n\t\tconst targetId = targetIds[i] as string\n\t\tinvariant(\n\t\t\ttargetIds.lastIndexOf(targetId) === i,\n\t\t\t'Expected targetIds to be unique in the passed array.',\n\t\t)\n\n\t\tconst target = registry.getTarget(targetId)\n\t\tinvariant(target, 'Expected targetIds to be registered.')\n\t}\n}\n\nfunction removeNonMatchingTargetIds(\n\ttargetIds: string[],\n\tregistry: HandlerRegistry,\n\tdraggedItemType: Identifier | null,\n) {\n\t// Remove those targetIds that don't match the targetType. This\n\t// fixes shallow isOver which would only be non-shallow because of\n\t// non-matching targets.\n\tfor (let i = targetIds.length - 1; i >= 0; i--) {\n\t\tconst targetId = targetIds[i] as string\n\t\tconst targetType = registry.getTargetType(targetId)\n\t\tif (!matchesType(targetType, draggedItemType)) {\n\t\t\ttargetIds.splice(i, 1)\n\t\t}\n\t}\n}\n\nfunction hoverAllTargets(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\t// Finally call hover on all matching targets.\n\ttargetIds.forEach(function (targetId) {\n\t\tconst target = registry.getTarget(targetId)\n\t\ttarget.hover(monitor, targetId)\n\t})\n}\n","import type { DragDropManager, SentinelAction } from '../../interfaces.js'\nimport { PUBLISH_DRAG_SOURCE } from './types.js'\n\nexport function createPublishDragSource(manager: DragDropManager) {\n\treturn function publishDragSource(): SentinelAction | undefined {\n\t\tconst monitor = manager.getMonitor()\n\t\tif (monitor.isDragging()) {\n\t\t\treturn { type: PUBLISH_DRAG_SOURCE }\n\t\t}\n\t\treturn\n\t}\n}\n","import type { Action, Store } from 'redux'\n\nimport { createDragDropActions } from '../actions/dragDrop/index.js'\nimport type {\n\tActionCreator,\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport type { DragDropMonitorImpl } from './DragDropMonitorImpl.js'\n\nexport class DragDropManagerImpl implements DragDropManager {\n\tprivate store: Store<State>\n\tprivate monitor: DragDropMonitor\n\tprivate backend: Backend | undefined\n\tprivate isSetUp = false\n\n\tpublic constructor(store: Store<State>, monitor: DragDropMonitor) {\n\t\tthis.store = store\n\t\tthis.monitor = monitor\n\t\tstore.subscribe(this.handleRefCountChange)\n\t}\n\n\tpublic receiveBackend(backend: Backend): void {\n\t\tthis.backend = backend\n\t}\n\n\tpublic getMonitor(): DragDropMonitor {\n\t\treturn this.monitor\n\t}\n\n\tpublic getBackend(): Backend {\n\t\treturn this.backend as Backend\n\t}\n\n\tpublic getRegistry(): HandlerRegistry {\n\t\treturn (this.monitor as DragDropMonitorImpl).registry\n\t}\n\n\tpublic getActions(): DragDropActions {\n\t\t/* eslint-disable-next-line @typescript-eslint/no-this-alias */\n\t\tconst manager = this\n\t\tconst { dispatch } = this.store\n\n\t\tfunction bindActionCreator(actionCreator: ActionCreator<any>) {\n\t\t\treturn (...args: any[]) => {\n\t\t\t\tconst action = actionCreator.apply(manager, args as any)\n\t\t\t\tif (typeof action !== 'undefined') {\n\t\t\t\t\tdispatch(action)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst actions = createDragDropActions(this)\n\n\t\treturn Object.keys(actions).reduce(\n\t\t\t(boundActions: DragDropActions, key: string) => {\n\t\t\t\tconst action: ActionCreator<any> = (actions as any)[\n\t\t\t\t\tkey\n\t\t\t\t] as ActionCreator<any>\n\t\t\t\t;(boundActions as any)[key] = bindActionCreator(action)\n\t\t\t\treturn boundActions\n\t\t\t},\n\t\t\t{} as DragDropActions,\n\t\t)\n\t}\n\n\tpublic dispatch(action: Action<any>): void {\n\t\tthis.store.dispatch(action)\n\t}\n\n\tprivate handleRefCountChange = (): void => {\n\t\tconst shouldSetUp = this.store.getState().refCount > 0\n\t\tif (this.backend) {\n\t\t\tif (shouldSetUp && !this.isSetUp) {\n\t\t\t\tthis.backend.setup()\n\t\t\t\tthis.isSetUp = true\n\t\t\t} else if (!shouldSetUp && this.isSetUp) {\n\t\t\t\tthis.backend.teardown()\n\t\t\t\tthis.isSetUp = false\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { DragDropActions, DragDropManager } from '../../interfaces.js'\nimport { createBeginDrag } from './beginDrag.js'\nimport { createDrop } from './drop.js'\nimport { createEndDrag } from './endDrag.js'\nimport { createHover } from './hover.js'\nimport { createPublishDragSource } from './publishDragSource.js'\n\nexport * from './types.js'\n\nexport function createDragDropActions(\n\tmanager: DragDropManager,\n): DragDropActions {\n\treturn {\n\t\tbeginDrag: createBeginDrag(manager),\n\t\tpublishDragSource: createPublishDragSource(manager),\n\t\thover: createHover(manager),\n\t\tdrop: createDrop(manager),\n\t\tendDrag: createEndDrag(manager),\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\nimport type { State } from '../reducers/dragOffset.js'\n\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x + b.x,\n\t\ty: a.y + b.y,\n\t}\n}\n\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function subtract(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x - b.x,\n\t\ty: a.y - b.y,\n\t}\n}\n\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nexport function getSourceClientOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset, initialSourceClientOffset } = state\n\tif (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(\n\t\tadd(clientOffset, initialSourceClientOffset),\n\t\tinitialClientOffset,\n\t)\n}\n\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nexport function getDifferenceFromInitialOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset } = state\n\tif (!clientOffset || !initialClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(clientOffset, initialClientOffset)\n}\n","import { intersection } from './js_utils.js'\n\nexport const NONE: string[] = []\nexport const ALL: string[] = []\n// Add these flags for debug\n;(NONE as any).__IS_NONE__ = true\n;(ALL as any).__IS_ALL__ = true\n\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nexport function areDirty(\n\tdirtyIds: string[],\n\thandlerIds: string[] | undefined,\n): boolean {\n\tif (dirtyIds === NONE) {\n\t\treturn false\n\t}\n\n\tif (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n\t\treturn true\n\t}\n\n\tconst commonIds = intersection(handlerIds, dirtyIds)\n\treturn commonIds.length > 0\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport type {\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport {\n\tgetDifferenceFromInitialOffset,\n\tgetSourceClientOffset,\n} from '../utils/coords.js'\nimport { areDirty } from '../utils/dirtiness.js'\nimport { matchesType } from '../utils/matchesType.js'\n\nexport class DragDropMonitorImpl implements DragDropMonitor {\n\tprivate store: Store<State>\n\tpublic readonly registry: HandlerRegistry\n\n\tpublic constructor(store: Store<State>, registry: HandlerRegistry) {\n\t\tthis.store = store\n\t\tthis.registry = registry\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions: { handlerIds?: string[] } = {},\n\t): Unsubscribe {\n\t\tconst { handlerIds } = options\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\t\tinvariant(\n\t\t\ttypeof handlerIds === 'undefined' || Array.isArray(handlerIds),\n\t\t\t'handlerIds, when specified, must be an array of strings.',\n\t\t)\n\n\t\tlet prevStateId = this.store.getState().stateId\n\t\tconst handleChange = () => {\n\t\t\tconst state = this.store.getState()\n\t\t\tconst currentStateId = state.stateId\n\t\t\ttry {\n\t\t\t\tconst canSkipListener =\n\t\t\t\t\tcurrentStateId === prevStateId ||\n\t\t\t\t\t(currentStateId === prevStateId + 1 &&\n\t\t\t\t\t\t!areDirty(state.dirtyHandlerIds, handlerIds))\n\n\t\t\t\tif (!canSkipListener) {\n\t\t\t\t\tlistener()\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tprevStateId = currentStateId\n\t\t\t}\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\n\t\tlet previousState = this.store.getState().dragOffset\n\t\tconst handleChange = () => {\n\t\t\tconst nextState = this.store.getState().dragOffset\n\t\t\tif (nextState === previousState) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tpreviousState = nextState\n\t\t\tlistener()\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic canDragSource(sourceId: string | undefined): boolean {\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.canDrag(this, sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\t\tconst target = this.registry.getTarget(targetId)\n\t\tinvariant(target, `Expected to find a valid target. targetId=${targetId}`)\n\n\t\tif (!this.isDragging() || this.didDrop()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\treturn (\n\t\t\tmatchesType(targetType, draggedItemType) && target.canDrop(this, targetId)\n\t\t)\n\t}\n\n\tpublic isDragging(): boolean {\n\t\treturn Boolean(this.getItemType())\n\t}\n\n\tpublic isDraggingSource(sourceId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId, true)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (!this.isDragging() || !this.isSourcePublic()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst sourceType = this.registry.getSourceType(sourceId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (sourceType !== draggedItemType) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.isDragging(this, sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: string | undefined,\n\t\toptions = { shallow: false },\n\t): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst { shallow } = options\n\t\tif (!this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (draggedItemType && !matchesType(targetType, draggedItemType)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetIds = this.getTargetIds()\n\t\tif (!targetIds.length) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst index = targetIds.indexOf(targetId)\n\t\tif (shallow) {\n\t\t\treturn index === targetIds.length - 1\n\t\t} else {\n\t\t\treturn index > -1\n\t\t}\n\t}\n\n\tpublic getItemType(): Identifier {\n\t\treturn this.store.getState().dragOperation.itemType as Identifier\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.store.getState().dragOperation.item\n\t}\n\n\tpublic getSourceId(): string | null {\n\t\treturn this.store.getState().dragOperation.sourceId\n\t}\n\n\tpublic getTargetIds(): string[] {\n\t\treturn this.store.getState().dragOperation.targetIds\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.store.getState().dragOperation.dropResult\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.store.getState().dragOperation.didDrop\n\t}\n\n\tpublic isSourcePublic(): boolean {\n\t\treturn Boolean(this.store.getState().dragOperation.isSourcePublic)\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialClientOffset\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialSourceClientOffset\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.clientOffset\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn getSourceClientOffset(this.store.getState().dragOffset)\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn getDifferenceFromInitialOffset(this.store.getState().dragOffset)\n\t}\n}\n","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nconst scope = typeof global !== 'undefined' ? global : self\nconst BrowserMutationObserver =\n\t(scope as any).MutationObserver || (scope as any).WebKitMutationObserver\n\nexport function makeRequestCallFromTimer(callback: () => void) {\n\treturn function requestCall() {\n\t\t// We dispatch a timeout with a specified delay of 0 for engines that\n\t\t// can reliably accommodate that request. This will usually be snapped\n\t\t// to a 4 milisecond delay, but once we're flushing, there's no delay\n\t\t// between events.\n\t\tconst timeoutHandle = setTimeout(handleTimer, 0)\n\t\t// However, since this timer gets frequently dropped in Firefox\n\t\t// workers, we enlist an interval handle that will try to fire\n\t\t// an event 20 times per second until it succeeds.\n\t\tconst intervalHandle = setInterval(handleTimer, 50)\n\n\t\tfunction handleTimer() {\n\t\t\t// Whichever timer succeeds will cancel both timers and\n\t\t\t// execute the callback.\n\t\t\tclearTimeout(timeoutHandle)\n\t\t\tclearInterval(intervalHandle)\n\t\t\tcallback()\n\t\t}\n\t}\n}\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback: () => void) {\n\tlet toggle = 1\n\tconst observer = new BrowserMutationObserver(callback)\n\tconst node = document.createTextNode('')\n\tobserver.observe(node, { characterData: true })\n\treturn function requestCall() {\n\t\ttoggle = -toggle\n\t\t;(node as any).data = toggle\n\t}\n}\n\nexport const makeRequestCall =\n\ttypeof BrowserMutationObserver === 'function'\n\t\t? // MutationObservers are desirable because they have high priority and work\n\t\t // reliably everywhere they are implemented.\n\t\t // They are implemented in all modern browsers.\n\t\t //\n\t\t // - Android 4-4.3\n\t\t // - Chrome 26-34\n\t\t // - Firefox 14-29\n\t\t // - Internet Explorer 11\n\t\t // - iPad Safari 6-7.1\n\t\t // - iPhone Safari 7-7.1\n\t\t // - Safari 6-7\n\t\t makeRequestCallFromMutationObserver\n\t\t: // MessageChannels are desirable because they give direct access to the HTML\n\t\t // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t\t // 11-12, and in web workers in many engines.\n\t\t // Although message channels yield to any queued rendering and IO tasks, they\n\t\t // would be better than imposing the 4ms delay of timers.\n\t\t // However, they do not work reliably in Internet Explorer or Safari.\n\n\t\t // Internet Explorer 10 is the only browser that has setImmediate but does\n\t\t // not have MutationObservers.\n\t\t // Although setImmediate yields to the browser's renderer, it would be\n\t\t // preferrable to falling back to setTimeout since it does not have\n\t\t // the minimum 4ms penalty.\n\t\t // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t\t // Desktop to a lesser extent) that renders both setImmediate and\n\t\t // MessageChannel useless for the purposes of ASAP.\n\t\t // https://github.com/kriskowal/q/issues/396\n\n\t\t // Timers are implemented universally.\n\t\t // We fall back to timers in workers in most engines, and in foreground\n\t\t // contexts in the following browsers.\n\t\t // However, note that even this simple case requires nuances to operate in a\n\t\t // broad spectrum of browsers.\n\t\t //\n\t\t // - Firefox 3-13\n\t\t // - Internet Explorer 6-9\n\t\t // - iPad Safari 4.3\n\t\t // - Lynx 2.8.7\n\t\t makeRequestCallFromTimer\n","// We wrap tasks with recyclable task objects. A task object implements\n\nimport type { Task, TaskFn } from 'types'\n\n// `call`, just like a function.\nexport class RawTask implements Task {\n\tpublic task: TaskFn | null = null\n\n\tpublic constructor(\n\t\tprivate onError: (err: any) => void,\n\t\tprivate release: (t: RawTask) => void,\n\t) {}\n\n\tpublic call() {\n\t\ttry {\n\t\t\tthis.task && this.task()\n\t\t} catch (error) {\n\t\t\tthis.onError(error)\n\t\t} finally {\n\t\t\tthis.task = null\n\t\t\tthis.release(this)\n\t\t}\n\t}\n}\n","import { AsapQueue } from './AsapQueue.js'\nimport { TaskFactory } from './TaskFactory.js'\nimport type { TaskFn } from './types.js'\n\nconst asapQueue = new AsapQueue()\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError)\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task: TaskFn) {\n\tasapQueue.enqueueTask(taskFactory.create(task))\n}\n","/* eslint-disable no-restricted-globals, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-non-null-assertion */\nimport { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.js'\nimport type { Task } from './types.js'\n\nexport class AsapQueue {\n\tprivate queue: Task[] = []\n\t// We queue errors to ensure they are thrown in right order (FIFO).\n\t// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\tprivate pendingErrors: any[] = []\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\t// @ts-ignore\n\tprivate flushing = false\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tprivate requestFlush: () => void\n\n\tprivate requestErrorThrow: () => void\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tprivate index = 0\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tprivate capacity = 1024\n\n\tpublic constructor() {\n\t\t// `requestFlush` requests that the high priority event queue be flushed as\n\t\t// soon as possible.\n\t\t// This is useful to prevent an error thrown in a task from stalling the event\n\t\t// queue if the exception handled by Node.js’s\n\t\t// `process.on(\"uncaughtException\")` or by a domain.\n\n\t\t// `requestFlush` is implemented using a strategy based on data collected from\n\t\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\tthis.requestFlush = makeRequestCall(this.flush)\n\t\tthis.requestErrorThrow = makeRequestCallFromTimer(() => {\n\t\t\t// Throw first error\n\t\t\tif (this.pendingErrors.length) {\n\t\t\t\tthrow this.pendingErrors.shift()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tpublic enqueueTask(task: Task): void {\n\t\tconst { queue: q, requestFlush } = this\n\t\tif (!q.length) {\n\t\t\trequestFlush()\n\t\t\tthis.flushing = true\n\t\t}\n\t\t// Equivalent to push, but avoids a function call.\n\t\tq[q.length] = task\n\t}\n\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tprivate flush = () => {\n\t\tconst { queue: q } = this\n\t\twhile (this.index < q.length) {\n\t\t\tconst currentIndex = this.index\n\t\t\t// Advance the index before calling the task. This ensures that we will\n\t\t\t// begin flushing on the next task the task throws an error.\n\t\t\tthis.index++\n\t\t\tq[currentIndex]!.call()\n\t\t\t// Prevent leaking memory for long chains of recursive calls to `asap`.\n\t\t\t// If we call `asap` within tasks scheduled by `asap`, the queue will\n\t\t\t// grow, but to avoid an O(n) walk for every task we execute, we don't\n\t\t\t// shift tasks off the queue after they have been executed.\n\t\t\t// Instead, we periodically shift 1024 tasks off the queue.\n\t\t\tif (this.index > this.capacity) {\n\t\t\t\t// Manually shift all values starting at the index back to the\n\t\t\t\t// beginning of the queue.\n\t\t\t\tfor (\n\t\t\t\t\tlet scan = 0, newLength = q.length - this.index;\n\t\t\t\t\tscan < newLength;\n\t\t\t\t\tscan++\n\t\t\t\t) {\n\t\t\t\t\tq[scan] = q[scan + this.index]!\n\t\t\t\t}\n\t\t\t\tq.length -= this.index\n\t\t\t\tthis.index = 0\n\t\t\t}\n\t\t}\n\t\tq.length = 0\n\t\tthis.index = 0\n\t\tthis.flushing = false\n\t}\n\n\t// In a web browser, exceptions are not fatal. However, to avoid\n\t// slowing down the queue of pending tasks, we rethrow the error in a\n\t// lower priority turn.\n\tpublic registerPendingError = (err: any) => {\n\t\tthis.pendingErrors.push(err)\n\t\tthis.requestErrorThrow()\n\t}\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","import { RawTask } from './RawTask.js'\nimport type { Task } from './types.js'\n\nexport class TaskFactory {\n\tprivate freeTasks: RawTask[] = []\n\n\tpublic constructor(private onError: (err: any) => void) {}\n\n\tpublic create(task: () => void): Task {\n\t\tconst tasks = this.freeTasks\n\t\tconst t = tasks.length\n\t\t\t? (tasks.pop() as RawTask)\n\t\t\t: new RawTask(this.onError, (t) => (tasks[tasks.length] = t))\n\t\tt.task = task\n\t\treturn t\n\t}\n}\n","import type { Action, SourceIdPayload, TargetIdPayload } from '../interfaces.js'\n\nexport const ADD_SOURCE = 'dnd-core/ADD_SOURCE'\nexport const ADD_TARGET = 'dnd-core/ADD_TARGET'\nexport const REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE'\nexport const REMOVE_TARGET = 'dnd-core/REMOVE_TARGET'\n\nexport function addSource(sourceId: string): Action<SourceIdPayload> {\n\treturn {\n\t\ttype: ADD_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function addTarget(targetId: string): Action<TargetIdPayload> {\n\treturn {\n\t\ttype: ADD_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n\nexport function removeSource(sourceId: string): Action<SourceIdPayload> {\n\treturn {\n\t\ttype: REMOVE_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function removeTarget(targetId: string): Action<TargetIdPayload> {\n\treturn {\n\t\ttype: REMOVE_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type { DragSource, DropTarget, Identifier } from './interfaces.js'\n\nexport function validateSourceContract(source: DragSource): void {\n\tinvariant(\n\t\ttypeof source.canDrag === 'function',\n\t\t'Expected canDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.beginDrag === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.endDrag === 'function',\n\t\t'Expected endDrag to be a function.',\n\t)\n}\n\nexport function validateTargetContract(target: DropTarget): void {\n\tinvariant(\n\t\ttypeof target.canDrop === 'function',\n\t\t'Expected canDrop to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.hover === 'function',\n\t\t'Expected hover to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.drop === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n}\n\nexport function validateType(\n\ttype: Identifier | Identifier[],\n\tallowArray?: boolean,\n): void {\n\tif (allowArray && Array.isArray(type)) {\n\t\ttype.forEach((t) => validateType(t, false))\n\t\treturn\n\t}\n\n\tinvariant(\n\t\ttypeof type === 'string' || typeof type === 'symbol',\n\t\tallowArray\n\t\t\t? 'Type can only be a string, a symbol, or an array of either.'\n\t\t\t: 'Type can only be a string or a symbol.',\n\t)\n}\n","export type Identifier = string | symbol\nexport type SourceType = Identifier\nexport type TargetType = Identifier | Identifier[]\nexport type Unsubscribe = () => void\nexport type Listener = () => void\n\nexport interface XYCoord {\n\tx: number\n\ty: number\n}\n\nexport enum HandlerRole {\n\tSOURCE = 'SOURCE',\n\tTARGET = 'TARGET',\n}\n\nexport interface Backend {\n\tsetup(): void\n\tteardown(): void\n\tconnectDragSource(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDragPreview(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDropTarget(targetId: any, node?: any, options?: any): Unsubscribe\n\tprofile(): Record<string, number>\n}\n\nexport interface DragDropMonitor {\n\tsubscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: {\n\t\t\thandlerIds?: Identifier[]\n\t\t},\n\t): Unsubscribe\n\tsubscribeToOffsetChange(listener: Listener): Unsubscribe\n\tcanDragSource(sourceId: Identifier | undefined): boolean\n\tcanDropOnTarget(targetId: Identifier | undefined): boolean\n\n\t/**\n\t * Returns true if a drag operation is in progress, and either the owner initiated the drag, or its isDragging()\n\t * is defined and returns true.\n\t */\n\tisDragging(): boolean\n\tisDraggingSource(sourceId: Identifier | undefined): boolean\n\tisOverTarget(\n\t\ttargetId: Identifier | undefined,\n\t\toptions?: {\n\t\t\tshallow?: boolean\n\t\t},\n\t): boolean\n\n\t/**\n\t * Returns a string or a symbol identifying the type of the current dragged item. Returns null if no item is being dragged.\n\t */\n\tgetItemType(): Identifier | null\n\n\t/**\n\t * Returns a plain object representing the currently dragged item. Every drag source must specify it by returning an object\n\t * from its beginDrag() method. Returns null if no item is being dragged.\n\t */\n\tgetItem(): any\n\tgetSourceId(): Identifier | null\n\tgetTargetIds(): Identifier[]\n\t/**\n\t * Returns a plain object representing the last recorded drop result. The drop targets may optionally specify it by returning an\n\t * object from their drop() methods. When a chain of drop() is dispatched for the nested targets, bottom up, any parent that\n\t * explicitly returns its own result from drop() overrides the child drop result previously set by the child. Returns null if\n\t * called outside endDrag().\n\t */\n\tgetDropResult(): any\n\t/**\n\t * Returns true if some drop target has handled the drop event, false otherwise. Even if a target did not return a drop result,\n\t * didDrop() returns true. Use it inside endDrag() to test whether any drop target has handled the drop. Returns false if called\n\t * outside endDrag().\n\t */\n\tdidDrop(): boolean\n\tisSourcePublic(): boolean | null\n\t/**\n\t * Returns the { x, y } client offset of the pointer at the time when the current drag operation has started.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetInitialClientOffset(): XYCoord | null\n\t/**\n\t * Returns the { x, y } client offset of the drag source component's root DOM node at the time when the current drag\n\t * operation has started. Returns null if no item is being dragged.\n\t */\n\tgetInitialSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the last recorded { x, y } client offset of the pointer while a drag operation is in progress.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the projected { x, y } client offset of the drag source component's root DOM node, based on its position at the time\n\t * when the current drag operation has started, and the movement difference. Returns null if no item is being dragged.\n\t */\n\tgetSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the { x, y } difference between the last recorded client offset of the pointer and the client offset when the current\n\t * drag operation has started. Returns null if no item is being dragged.\n\t */\n\tgetDifferenceFromInitialOffset(): XYCoord | null\n}\n\nexport interface HandlerRegistry {\n\taddSource(type: SourceType, source: DragSource): Identifier\n\taddTarget(type: TargetType, target: DropTarget): Identifier\n\tcontainsHandler(handler: DragSource | DropTarget): boolean\n\tgetSource(sourceId: Identifier, includePinned?: boolean): DragSource\n\tgetSourceType(sourceId: Identifier): SourceType\n\tgetTargetType(targetId: Identifier): TargetType\n\tgetTarget(targetId: Identifier): DropTarget\n\tisSourceId(handlerId: Identifier): boolean\n\tisTargetId(handlerId: Identifier): boolean\n\tremoveSource(sourceId: Identifier): void\n\tremoveTarget(targetId: Identifier): void\n\tpinSource(sourceId: Identifier): void\n\tunpinSource(): void\n}\n\nexport interface Action<Payload> {\n\ttype: Identifier\n\tpayload: Payload\n}\nexport interface SentinelAction {\n\ttype: Identifier\n}\n\nexport type ActionCreator<Payload> = (args: any[]) => Action<Payload>\n\nexport interface BeginDragOptions {\n\tpublishSource?: boolean\n\tclientOffset?: XYCoord\n\tgetSourceClientOffset?: (sourceId: Identifier | undefined) => XYCoord\n}\n\nexport interface InitCoordsPayload {\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n}\n\nexport interface BeginDragPayload {\n\titemType: Identifier\n\titem: any\n\tsourceId: Identifier\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n\tisSourcePublic: boolean\n}\n\nexport interface HoverPayload {\n\ttargetIds: Identifier[]\n\tclientOffset: XYCoord | null\n}\n\nexport interface HoverOptions {\n\tclientOffset?: XYCoord\n}\n\nexport interface DropPayload {\n\tdropResult: any\n}\n\nexport interface TargetIdPayload {\n\ttargetId: Identifier\n}\n\nexport interface SourceIdPayload {\n\tsourceId: Identifier\n}\n\nexport interface DragDropActions {\n\tbeginDrag(\n\t\tsourceIds?: Identifier[],\n\t\toptions?: any,\n\t): Action<BeginDragPayload> | undefined\n\tpublishDragSource(): SentinelAction | undefined\n\thover(targetIds: Identifier[], options?: any): Action<HoverPayload>\n\tdrop(options?: any): void\n\tendDrag(): SentinelAction\n}\n\nexport interface DragDropManager {\n\tgetMonitor(): DragDropMonitor\n\tgetBackend(): Backend\n\tgetRegistry(): HandlerRegistry\n\tgetActions(): DragDropActions\n\tdispatch(action: any): void\n}\n\nexport type BackendFactory = (\n\tmanager: DragDropManager,\n\tglobalContext?: any,\n\tconfiguration?: any,\n) => Backend\n\nexport interface DragSource {\n\tbeginDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tendDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tcanDrag(monitor: DragDropMonitor, targetId: Identifier): boolean\n\tisDragging(monitor: DragDropMonitor, targetId: Identifier): boolean\n}\n\nexport interface DropTarget {\n\tcanDrop(monitor: DragDropMonitor, targetId: Identifier): boolean\n\thover(monitor: DragDropMonitor, targetId: Identifier): void\n\tdrop(monitor: DragDropMonitor, targetId: Identifier): any\n}\n","let nextUniqueId = 0\n\nexport function getNextUniqueId(): number {\n\treturn nextUniqueId++\n}\n","import { asap } from '@react-dnd/asap'\nimport { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport {\n\taddSource,\n\taddTarget,\n\tremoveSource,\n\tremoveTarget,\n} from '../actions/registry.js'\nimport {\n\tvalidateSourceContract,\n\tvalidateTargetContract,\n\tvalidateType,\n} from '../contracts.js'\nimport type {\n\tDragSource,\n\tDropTarget,\n\tHandlerRegistry,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n} from '../interfaces.js'\nimport { HandlerRole } from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport { getNextUniqueId } from '../utils/getNextUniqueId.js'\n\nfunction getNextHandlerId(role: HandlerRole): string {\n\tconst id = getNextUniqueId().toString()\n\tswitch (role) {\n\t\tcase HandlerRole.SOURCE:\n\t\t\treturn `S${id}`\n\t\tcase HandlerRole.TARGET:\n\t\t\treturn `T${id}`\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown Handler Role: ${role}`)\n\t}\n}\n\nfunction parseRoleFromHandlerId(handlerId: string) {\n\tswitch (handlerId[0]) {\n\t\tcase 'S':\n\t\t\treturn HandlerRole.SOURCE\n\t\tcase 'T':\n\t\t\treturn HandlerRole.TARGET\n\t\tdefault:\n\t\t\tthrow new Error(`Cannot parse handler ID: ${handlerId}`)\n\t}\n}\n\nfunction mapContainsValue<T>(map: Map<string, T>, searchValue: T) {\n\tconst entries = map.entries()\n\tlet isDone = false\n\tdo {\n\t\tconst {\n\t\t\tdone,\n\t\t\tvalue: [, value],\n\t\t} = entries.next()\n\t\tif (value === searchValue) {\n\t\t\treturn true\n\t\t}\n\t\tisDone = !!done\n\t} while (!isDone)\n\treturn false\n}\n\nexport class HandlerRegistryImpl implements HandlerRegistry {\n\tprivate types: Map<string, SourceType | TargetType> = new Map()\n\tprivate dragSources: Map<string, DragSource> = new Map()\n\tprivate dropTargets: Map<string, DropTarget> = new Map()\n\tprivate pinnedSourceId: string | null = null\n\tprivate pinnedSource: any = null\n\tprivate store: Store<State>\n\n\tpublic constructor(store: Store<State>) {\n\t\tthis.store = store\n\t}\n\n\tpublic addSource(type: SourceType, source: DragSource): string {\n\t\tvalidateType(type)\n\t\tvalidateSourceContract(source)\n\n\t\tconst sourceId = this.addHandler(HandlerRole.SOURCE, type, source)\n\t\tthis.store.dispatch(addSource(sourceId))\n\t\treturn sourceId\n\t}\n\n\tpublic addTarget(type: TargetType, target: DropTarget): string {\n\t\tvalidateType(type, true)\n\t\tvalidateTargetContract(target)\n\n\t\tconst targetId = this.addHandler(HandlerRole.TARGET, type, target)\n\t\tthis.store.dispatch(addTarget(targetId))\n\t\treturn targetId\n\t}\n\n\tpublic containsHandler(handler: DragSource | DropTarget): boolean {\n\t\treturn (\n\t\t\tmapContainsValue(this.dragSources, handler) ||\n\t\t\tmapContainsValue(this.dropTargets, handler)\n\t\t)\n\t}\n\n\tpublic getSource(sourceId: string, includePinned = false): DragSource {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\tconst isPinned = includePinned && sourceId === this.pinnedSourceId\n\t\tconst source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId)\n\t\treturn source\n\t}\n\n\tpublic getTarget(targetId: string): DropTarget {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.dropTargets.get(targetId) as DropTarget\n\t}\n\n\tpublic getSourceType(sourceId: string): Identifier {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\treturn this.types.get(sourceId) as Identifier\n\t}\n\n\tpublic getTargetType(targetId: string): Identifier | Identifier[] {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.types.get(targetId) as Identifier | Identifier[]\n\t}\n\n\tpublic isSourceId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.SOURCE\n\t}\n\n\tpublic isTargetId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.TARGET\n\t}\n\n\tpublic removeSource(sourceId: string): void {\n\t\tinvariant(this.getSource(sourceId), 'Expected an existing source.')\n\t\tthis.store.dispatch(removeSource(sourceId))\n\t\tasap(() => {\n\t\t\tthis.dragSources.delete(sourceId)\n\t\t\tthis.types.delete(sourceId)\n\t\t})\n\t}\n\n\tpublic removeTarget(targetId: string): void {\n\t\tinvariant(this.getTarget(targetId), 'Expected an existing target.')\n\t\tthis.store.dispatch(removeTarget(targetId))\n\t\tthis.dropTargets.delete(targetId)\n\t\tthis.types.delete(targetId)\n\t}\n\n\tpublic pinSource(sourceId: string): void {\n\t\tconst source = this.getSource(sourceId)\n\t\tinvariant(source, 'Expected an existing source.')\n\n\t\tthis.pinnedSourceId = sourceId\n\t\tthis.pinnedSource = source\n\t}\n\n\tpublic unpinSource(): void {\n\t\tinvariant(this.pinnedSource, 'No source is pinned at the time.')\n\n\t\tthis.pinnedSourceId = null\n\t\tthis.pinnedSource = null\n\t}\n\n\tprivate addHandler(\n\t\trole: HandlerRole,\n\t\ttype: SourceType | TargetType,\n\t\thandler: DragSource | DropTarget,\n\t): string {\n\t\tconst id = getNextHandlerId(role)\n\t\tthis.types.set(id, type)\n\t\tif (role === HandlerRole.SOURCE) {\n\t\t\tthis.dragSources.set(id, handler as DragSource)\n\t\t} else if (role === HandlerRole.TARGET) {\n\t\t\tthis.dropTargets.set(id, handler as DropTarget)\n\t\t}\n\t\treturn id\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\n\nexport type EqualityCheck<T> = (a: T, b: T) => boolean\nexport const strictEquality = <T>(a: T, b: T): boolean => a === b\n\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nexport function areCoordsEqual(\n\toffsetA: XYCoord | null | undefined,\n\toffsetB: XYCoord | null | undefined,\n): boolean {\n\tif (!offsetA && !offsetB) {\n\t\treturn true\n\t} else if (!offsetA || !offsetB) {\n\t\treturn false\n\t} else {\n\t\treturn offsetA.x === offsetB.x && offsetA.y === offsetB.y\n\t}\n}\n\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nexport function areArraysEqual<T>(\n\ta: T[],\n\tb: T[],\n\tisEqual: EqualityCheck<T> = strictEquality,\n): boolean {\n\tif (a.length !== b.length) {\n\t\treturn false\n\t}\n\tfor (let i = 0; i < a.length; ++i) {\n\t\tif (!isEqual(a[i] as T, b[i] as T)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\nimport { ALL, NONE } from '../utils/dirtiness.js'\nimport { areArraysEqual } from '../utils/equality.js'\nimport { xor } from '../utils/js_utils.js'\n\nexport type State = string[]\n\nexport interface DirtyHandlerIdPayload {\n\ttargetIds: string[]\n\tprevTargetIds: string[]\n}\n\nexport function reduce(\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t_state: State = NONE,\n\taction: Action<DirtyHandlerIdPayload>,\n): State {\n\tswitch (action.type) {\n\t\tcase HOVER:\n\t\t\tbreak\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\tcase REMOVE_TARGET:\n\t\tcase REMOVE_SOURCE:\n\t\t\treturn NONE\n\t\tcase BEGIN_DRAG:\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\tdefault:\n\t\t\treturn ALL\n\t}\n\n\tconst { targetIds = [], prevTargetIds = [] } = action.payload\n\tconst result = xor(targetIds, prevTargetIds)\n\tconst didChange =\n\t\tresult.length > 0 || !areArraysEqual(targetIds, prevTargetIds)\n\n\tif (!didChange) {\n\t\treturn NONE\n\t}\n\n\t// Check the target ids at the innermost position. If they are valid, add them\n\t// to the result\n\tconst prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1]\n\tconst innermostTargetId = targetIds[targetIds.length - 1]\n\tif (prevInnermostTargetId !== innermostTargetId) {\n\t\tif (prevInnermostTargetId) {\n\t\t\tresult.push(prevInnermostTargetId)\n\t\t}\n\t\tif (innermostTargetId) {\n\t\t\tresult.push(innermostTargetId)\n\t\t}\n\t}\n\n\treturn result\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tINIT_COORDS,\n} from '../actions/dragDrop/index.js'\nimport type { Action, XYCoord } from '../interfaces.js'\nimport { areCoordsEqual } from '../utils/equality.js'\n\nexport interface State {\n\tinitialSourceClientOffset: XYCoord | null\n\tinitialClientOffset: XYCoord | null\n\tclientOffset: XYCoord | null\n}\n\nconst initialState: State = {\n\tinitialSourceClientOffset: null,\n\tinitialClientOffset: null,\n\tclientOffset: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\tsourceClientOffset: XYCoord\n\t\tclientOffset: XYCoord\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase INIT_COORDS:\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\tinitialSourceClientOffset: payload.sourceClientOffset,\n\t\t\t\tinitialClientOffset: payload.clientOffset,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\tif (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\t\treturn initialState\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport { REMOVE_TARGET } from '../actions/registry.js'\nimport type { Action, Identifier } from '../interfaces.js'\nimport { without } from '../utils/js_utils.js'\n\nexport interface State {\n\titemType: Identifier | Identifier[] | null\n\titem: any\n\tsourceId: string | null\n\ttargetIds: string[]\n\tdropResult: any\n\tdidDrop: boolean\n\tisSourcePublic: boolean | null\n}\n\nconst initialState: State = {\n\titemType: null,\n\titem: null,\n\tsourceId: null,\n\ttargetIds: [],\n\tdropResult: null,\n\tdidDrop: false,\n\tisSourcePublic: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\titemType: Identifier | Identifier[]\n\t\titem: any\n\t\tsourceId: string\n\t\ttargetId: string\n\t\ttargetIds: string[]\n\t\tisSourcePublic: boolean\n\t\tdropResult: any\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: payload.itemType,\n\t\t\t\titem: payload.item,\n\t\t\t\tsourceId: payload.sourceId,\n\t\t\t\tisSourcePublic: payload.isSourcePublic,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t}\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisSourcePublic: true,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: payload.targetIds,\n\t\t\t}\n\t\tcase REMOVE_TARGET:\n\t\t\tif (state.targetIds.indexOf(payload.targetId) === -1) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: without(state.targetIds, payload.targetId),\n\t\t\t}\n\t\tcase DROP:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdropResult: payload.dropResult,\n\t\t\t\tdidDrop: true,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tcase END_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: null,\n\t\t\t\titem: null,\n\t\t\t\tsourceId: null,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t\tisSourcePublic: null,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\n\nexport type State = number\n\nexport function reduce(state: State = 0, action: Action<any>): State {\n\tswitch (action.type) {\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\t\treturn state + 1\n\t\tcase REMOVE_SOURCE:\n\t\tcase REMOVE_TARGET:\n\t\t\treturn state - 1\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","export type State = number\n\nexport function reduce(state: State = 0): State {\n\treturn state + 1\n}\n","import type { Action } from '../interfaces.js'\nimport { get } from '../utils/js_utils.js'\nimport type { State as DirtyHandlerIdsState } from './dirtyHandlerIds.js'\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds.js'\nimport type { State as DragOffsetState } from './dragOffset.js'\nimport { reduce as dragOffset } from './dragOffset.js'\nimport type { State as DragOperationState } from './dragOperation.js'\nimport { reduce as dragOperation } from './dragOperation.js'\nimport type { State as RefCountState } from './refCount.js'\nimport { reduce as refCount } from './refCount.js'\nimport type { State as StateIdState } from './stateId.js'\nimport { reduce as stateId } from './stateId.js'\n\nexport interface State {\n\tdirtyHandlerIds: DirtyHandlerIdsState\n\tdragOffset: DragOffsetState\n\trefCount: RefCountState\n\tdragOperation: DragOperationState\n\tstateId: StateIdState\n}\n\nexport function reduce(state: State = {} as State, action: Action<any>): State {\n\treturn {\n\t\tdirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n\t\t\ttype: action.type,\n\t\t\tpayload: {\n\t\t\t\t...action.payload,\n\t\t\t\tprevTargetIds: get<string[]>(state, 'dragOperation.targetIds', []),\n\t\t\t},\n\t\t}),\n\t\tdragOffset: dragOffset(state.dragOffset, action),\n\t\trefCount: refCount(state.refCount, action),\n\t\tdragOperation: dragOperation(state.dragOperation, action),\n\t\tstateId: stateId(state.stateId),\n\t}\n}\n","import type { Store } from 'redux'\nimport { createStore } from 'redux'\n\nimport { DragDropManagerImpl } from './classes/DragDropManagerImpl.js'\nimport { DragDropMonitorImpl } from './classes/DragDropMonitorImpl.js'\nimport { HandlerRegistryImpl } from './classes/HandlerRegistryImpl.js'\nimport type { BackendFactory, DragDropManager } from './interfaces.js'\nimport type { State } from './reducers/index.js'\nimport { reduce } from './reducers/index.js'\n\nexport function createDragDropManager(\n\tbackendFactory: BackendFactory,\n\tglobalContext: unknown = undefined,\n\tbackendOptions: unknown = {},\n\tdebugMode = false,\n): DragDropManager {\n\tconst store = makeStoreInstance(debugMode)\n\tconst monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store))\n\tconst manager = new DragDropManagerImpl(store, monitor)\n\tconst backend = backendFactory(manager, globalContext, backendOptions)\n\tmanager.receiveBackend(backend)\n\treturn manager\n}\n\nfunction makeStoreInstance(debugMode: boolean): Store<State> {\n\t// TODO: if we ever make a react-native version of this,\n\t// we'll need to consider how to pull off dev-tooling\n\tconst reduxDevTools =\n\t\ttypeof window !== 'undefined' &&\n\t\t(window as any).__REDUX_DEVTOOLS_EXTENSION__\n\treturn createStore(\n\t\treduce,\n\t\tdebugMode &&\n\t\t\treduxDevTools &&\n\t\t\treduxDevTools({\n\t\t\t\tname: 'dnd-core',\n\t\t\t\tinstanceId: 'dnd-core',\n\t\t\t}),\n\t)\n}\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\nimport { createDragDropManager } from 'dnd-core'\nimport type { FC, ReactNode } from 'react'\nimport { memo, useEffect } from 'react'\n\nimport { DndContext } from './DndContext.js'\n\nexport type DndProviderProps<BackendContext, BackendOptions> =\n\t| {\n\t\t\tchildren?: ReactNode\n\t\t\tmanager: DragDropManager\n\t }\n\t| {\n\t\t\tbackend: BackendFactory\n\t\t\tchildren?: ReactNode\n\t\t\tcontext?: BackendContext\n\t\t\toptions?: BackendOptions\n\t\t\tdebugMode?: boolean\n\t }\n\nlet refCount = 0\nconst INSTANCE_SYM = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__')\n\n/**\n * A React component that provides the React-DnD context\n */\nexport const DndProvider: FC<DndProviderProps<unknown, unknown>> = memo(\n\tfunction DndProvider({ children, ...props }) {\n\t\tconst [manager, isGlobalInstance] = getDndContextValue(props) // memoized from props\n\t\t/**\n\t\t * If the global context was used to store the DND context\n\t\t * then where theres no more references to it we should\n\t\t * clean it up to avoid memory leaks\n\t\t */\n\t\tuseEffect(() => {\n\t\t\tif (isGlobalInstance) {\n\t\t\t\tconst context = getGlobalContext()\n\t\t\t\t++refCount\n\n\t\t\t\treturn () => {\n\t\t\t\t\tif (--refCount === 0) {\n\t\t\t\t\t\tcontext[INSTANCE_SYM] = null\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn\n\t\t}, [])\n\n\t\treturn <DndContext.Provider value={manager}>{children}</DndContext.Provider>\n\t},\n)\n\nfunction getDndContextValue(props: DndProviderProps<unknown, unknown>) {\n\tif ('manager' in props) {\n\t\tconst manager = { dragDropManager: props.manager }\n\t\treturn [manager, false]\n\t}\n\n\tconst manager = createSingletonDndContext(\n\t\tprops.backend,\n\t\tprops.context,\n\t\tprops.options,\n\t\tprops.debugMode,\n\t)\n\tconst isGlobalInstance = !props.context\n\n\treturn [manager, isGlobalInstance]\n}\n\nfunction createSingletonDndContext<BackendContext, BackendOptions>(\n\tbackend: BackendFactory,\n\tcontext: BackendContext = getGlobalContext(),\n\toptions: BackendOptions,\n\tdebugMode?: boolean,\n) {\n\tconst ctx = context as any\n\tif (!ctx[INSTANCE_SYM]) {\n\t\tctx[INSTANCE_SYM] = {\n\t\t\tdragDropManager: createDragDropManager(\n\t\t\t\tbackend,\n\t\t\t\tcontext,\n\t\t\t\toptions,\n\t\t\t\tdebugMode,\n\t\t\t),\n\t\t}\n\t}\n\treturn ctx[INSTANCE_SYM]\n}\n\ndeclare const global: any\nfunction getGlobalContext() {\n\treturn typeof global !== 'undefined' ? global : (window as any)\n}\n","import { useEffect, useLayoutEffect } from 'react'\n\n// suppress the useLayoutEffect warning on server side.\nexport const useIsomorphicLayoutEffect =\n\ttypeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import type { Connector } from '../internals/index.js'\nimport type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useMonitorOutput } from './useMonitorOutput.js'\n\nexport function useCollectedProps<Collected, Monitor extends HandlerManager>(\n\tcollector: ((monitor: Monitor) => Collected) | undefined,\n\tmonitor: Monitor & MonitorEventEmitter,\n\tconnector: Connector,\n) {\n\treturn useMonitorOutput(monitor, collector || (() => ({} as Collected)), () =>\n\t\tconnector.reconnect(),\n\t)\n}\n","import type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useCollector } from './useCollector.js'\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\nexport function useMonitorOutput<Monitor extends HandlerManager, Collected>(\n\tmonitor: Monitor & MonitorEventEmitter,\n\tcollect: (monitor: Monitor) => Collected,\n\tonCollect?: () => void,\n): Collected {\n\tconst [collected, updateCollected] = useCollector(monitor, collect, onCollect)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction subscribeToMonitorStateChange() {\n\t\t\tconst handlerId = monitor.getHandlerId()\n\t\t\tif (handlerId == null) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn monitor.subscribeToStateChange(updateCollected, {\n\t\t\t\thandlerIds: [handlerId],\n\t\t\t})\n\t\t},\n\t\t[monitor, updateCollected],\n\t)\n\n\treturn collected\n}\n","import equal from 'fast-deep-equal'\nimport { useCallback, useState } from 'react'\n\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\nexport function useCollector<T, S>(\n\tmonitor: T,\n\tcollect: (monitor: T) => S,\n\tonUpdate?: () => void,\n): [S, () => void] {\n\tconst [collected, setCollected] = useState(() => collect(monitor))\n\n\tconst updateCollected = useCallback(() => {\n\t\tconst nextValue = collect(monitor)\n\t\t// This needs to be a deep-equality check because some monitor-collected values\n\t\t// include XYCoord objects that may be equivalent, but do not have instance equality.\n\t\tif (!equal(collected, nextValue)) {\n\t\t\tsetCollected(nextValue)\n\t\t\tif (onUpdate) {\n\t\t\t\tonUpdate()\n\t\t\t}\n\t\t}\n\t}, [collected, monitor, onUpdate])\n\n\t// update the collected properties after react renders.\n\t// Note that the \"Dustbin Stress Test\" fails if this is not\n\t// done when the component updates\n\tuseIsomorphicLayoutEffect(updateCollected)\n\n\treturn [collected, updateCollected]\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { useMemo } from 'react'\n\nimport type { FactoryOrInstance } from './types.js'\n\nexport function useOptionalFactory<T>(\n\targ: FactoryOrInstance<T>,\n\tdeps?: unknown[],\n): T {\n\tconst memoDeps = [...(deps || [])]\n\tif (deps == null && typeof arg !== 'function') {\n\t\tmemoDeps.push(arg)\n\t}\n\treturn useMemo<T>(() => {\n\t\treturn typeof arg === 'function' ? (arg as () => T)() : (arg as T)\n\t}, memoDeps)\n}\n","import { useMemo } from 'react'\n\nimport type { SourceConnector } from '../../internals/index.js'\n\nexport function useConnectDragSource(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragSource(), [connector])\n}\n\nexport function useConnectDragPreview(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragPreview(), [connector])\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DragSourceMonitor } from '../types/index.js'\n\nlet isCallingCanDrag = false\nlet isCallingIsDragging = false\n\nexport class DragSourceMonitorImpl implements DragSourceMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate sourceId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(sourceId: Identifier | null): void {\n\t\tthis.sourceId = sourceId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.sourceId\n\t}\n\n\tpublic canDrag(): boolean {\n\t\tinvariant(\n\t\t\t!isCallingCanDrag,\n\t\t\t'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrag = true\n\t\t\treturn this.internalMonitor.canDragSource(this.sourceId as Identifier)\n\t\t} finally {\n\t\t\tisCallingCanDrag = false\n\t\t}\n\t}\n\n\tpublic isDragging(): boolean {\n\t\tif (!this.sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingIsDragging,\n\t\t\t'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingIsDragging = true\n\t\t\treturn this.internalMonitor.isDraggingSource(this.sourceId)\n\t\t} finally {\n\t\t\tisCallingIsDragging = false\n\t\t}\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic isDraggingSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.isDraggingSource(sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: Identifier,\n\t\toptions?: { shallow: boolean },\n\t): boolean {\n\t\treturn this.internalMonitor.isOverTarget(targetId, options)\n\t}\n\n\tpublic getTargetIds(): Identifier[] {\n\t\treturn this.internalMonitor.getTargetIds()\n\t}\n\n\tpublic isSourcePublic(): boolean | null {\n\t\treturn this.internalMonitor.isSourcePublic()\n\t}\n\n\tpublic getSourceId(): Identifier | null {\n\t\treturn this.internalMonitor.getSourceId()\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToOffsetChange(listener)\n\t}\n\n\tpublic canDragSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDragSource(sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDropOnTarget(targetId)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../types/index.js'\n\nlet isCallingCanDrop = false\n\nexport class DropTargetMonitorImpl implements DropTargetMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate targetId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(targetId: Identifier | null): void {\n\t\tthis.targetId = targetId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.targetId\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic canDrop(): boolean {\n\t\t// Cut out early if the target id has not been set. This should prevent errors\n\t\t// where the user has an older version of dnd-core like in\n\t\t// https://github.com/react-dnd/react-dnd/issues/1310\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingCanDrop,\n\t\t\t'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrop = true\n\t\t\treturn this.internalMonitor.canDropOnTarget(this.targetId)\n\t\t} finally {\n\t\t\tisCallingCanDrop = false\n\t\t}\n\t}\n\n\tpublic isOver(options?: { shallow?: boolean }): boolean {\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\treturn this.internalMonitor.isOverTarget(this.targetId, options)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","export function shallowEqual<T>(\n\tobjA: T,\n\tobjB: T,\n\tcompare?: (a: T, b: T, key?: string) => boolean | void,\n\tcompareContext?: any,\n) {\n\tlet compareResult = compare\n\t\t? compare.call(compareContext, objA, objB)\n\t\t: void 0\n\tif (compareResult !== void 0) {\n\t\treturn !!compareResult\n\t}\n\n\tif (objA === objB) {\n\t\treturn true\n\t}\n\n\tif (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n\t\treturn false\n\t}\n\n\tconst keysA = Object.keys(objA)\n\tconst keysB = Object.keys(objB)\n\n\tif (keysA.length !== keysB.length) {\n\t\treturn false\n\t}\n\n\tconst bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB)\n\n\t// Test for A's keys different from B.\n\tfor (let idx = 0; idx < keysA.length; idx++) {\n\t\tconst key = keysA[idx] as string\n\n\t\tif (!bHasOwnProperty(key)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst valueA = (objA as any)[key]\n\t\tconst valueB = (objB as any)[key]\n\n\t\tcompareResult = compare\n\t\t\t? compare.call(compareContext, valueA, valueB, key)\n\t\t\t: void 0\n\n\t\tif (\n\t\t\tcompareResult === false ||\n\t\t\t(compareResult === void 0 && valueA !== valueB)\n\t\t) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n","export interface Ref<T> {\n\tcurrent: T\n}\n\nexport function isRef(obj: unknown): boolean {\n\treturn (\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tobj !== null &&\n\t\ttypeof obj === 'object' &&\n\t\tObject.prototype.hasOwnProperty.call(obj, 'current')\n\t)\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { ReactElement } from 'react'\nimport { cloneElement, isValidElement } from 'react'\n\nfunction throwIfCompositeComponentElement(element: ReactElement<any>) {\n\t// Custom components can no longer be wrapped directly in React DnD 2.0\n\t// so that we don't need to depend on findDOMNode() from react-dom.\n\tif (typeof element.type === 'string') {\n\t\treturn\n\t}\n\n\tconst displayName =\n\t\t(element.type as any).displayName || element.type.name || 'the component'\n\n\tthrow new Error(\n\t\t'Only native element nodes can now be passed to React DnD connectors.' +\n\t\t\t`You can either wrap ${displayName} into a <div>, or turn it into a ` +\n\t\t\t'drag source or a drop target itself.',\n\t)\n}\n\nfunction wrapHookToRecognizeElement(hook: (node: any, options: any) => void) {\n\treturn (elementOrNode = null, options = null) => {\n\t\t// When passed a node, call the hook straight away.\n\t\tif (!isValidElement(elementOrNode)) {\n\t\t\tconst node = elementOrNode\n\t\t\thook(node, options)\n\t\t\t// return the node so it can be chained (e.g. when within callback refs\n\t\t\t// <div ref={node => connectDragSource(connectDropTarget(node))}/>\n\t\t\treturn node\n\t\t}\n\n\t\t// If passed a ReactElement, clone it and attach this function as a ref.\n\t\t// This helps us achieve a neat API where user doesn't even know that refs\n\t\t// are being used under the hood.\n\t\tconst element: ReactElement | null = elementOrNode\n\t\tthrowIfCompositeComponentElement(element as any)\n\n\t\t// When no options are passed, use the hook directly\n\t\tconst ref = options ? (node: Element) => hook(node, options) : hook\n\t\treturn cloneWithRef(element, ref)\n\t}\n}\n\nexport function wrapConnectorHooks(hooks: any) {\n\tconst wrappedHooks: any = {}\n\n\tObject.keys(hooks).forEach((key) => {\n\t\tconst hook = hooks[key]\n\n\t\t// ref objects should be passed straight through without wrapping\n\t\tif (key.endsWith('Ref')) {\n\t\t\twrappedHooks[key] = hooks[key]\n\t\t} else {\n\t\t\tconst wrappedHook = wrapHookToRecognizeElement(hook)\n\t\t\twrappedHooks[key] = () => wrappedHook\n\t\t}\n\t})\n\n\treturn wrappedHooks\n}\n\nfunction setRef(ref: any, node: any) {\n\tif (typeof ref === 'function') {\n\t\tref(node)\n\t} else {\n\t\tref.current = node\n\t}\n}\n\nfunction cloneWithRef(element: any, newRef: any): ReactElement<any> {\n\tconst previousRef = element.ref\n\tinvariant(\n\t\ttypeof previousRef !== 'string',\n\t\t'Cannot connect React DnD to an element with an existing string ref. ' +\n\t\t\t'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' +\n\t\t\t'Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs',\n\t)\n\n\tif (!previousRef) {\n\t\t// When there is no ref on the element, use the new ref directly\n\t\treturn cloneElement(element, {\n\t\t\tref: newRef,\n\t\t})\n\t} else {\n\t\treturn cloneElement(element, {\n\t\t\tref: (node: any) => {\n\t\t\t\tsetRef(previousRef, node)\n\t\t\t\tsetRef(newRef, node)\n\t\t\t},\n\t\t})\n\t}\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { ReactElement, Ref, RefObject } from 'react'\n\nimport type { DragPreviewOptions, DragSourceOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport interface Connector {\n\thooks: any\n\tconnectTarget: any\n\treceiveHandlerId(handlerId: Identifier | null): void\n\treconnect(): void\n}\n\nexport class SourceConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdragSource: (\n\t\t\tnode: Element | ReactElement | Ref<any>,\n\t\t\toptions?: DragSourceOptions,\n\t\t) => {\n\t\t\tthis.clearDragSource()\n\t\t\tthis.dragSourceOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragSourceRef = node as RefObject<any>\n\t\t\t} else {\n\t\t\t\tthis.dragSourceNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragSource()\n\t\t},\n\t\tdragPreview: (node: any, options?: DragPreviewOptions) => {\n\t\t\tthis.clearDragPreview()\n\t\t\tthis.dragPreviewOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragPreviewRef = node\n\t\t\t} else {\n\t\t\t\tthis.dragPreviewNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragPreview()\n\t\t},\n\t})\n\tprivate handlerId: Identifier | null = null\n\n\t// The drop target may either be attached via ref or connect function\n\tprivate dragSourceRef: RefObject<any> | null = null\n\tprivate dragSourceNode: any\n\tprivate dragSourceOptionsInternal: DragSourceOptions | null = null\n\tprivate dragSourceUnsubscribe: Unsubscribe | undefined\n\n\t// The drag preview may either be attached via ref or connect function\n\tprivate dragPreviewRef: RefObject<any> | null = null\n\tprivate dragPreviewNode: any\n\tprivate dragPreviewOptionsInternal: DragPreviewOptions | null = null\n\tprivate dragPreviewUnsubscribe: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDragSource: any = null\n\tprivate lastConnectedDragSourceOptions: any = null\n\tprivate lastConnectedDragPreview: any = null\n\tprivate lastConnectedDragPreviewOptions: any = null\n\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (this.handlerId === newHandlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dragSource\n\t}\n\n\tpublic get dragSourceOptions(): DragSourceOptions | null {\n\t\treturn this.dragSourceOptionsInternal\n\t}\n\tpublic set dragSourceOptions(options: DragSourceOptions | null) {\n\t\tthis.dragSourceOptionsInternal = options\n\t}\n\n\tpublic get dragPreviewOptions(): DragPreviewOptions | null {\n\t\treturn this.dragPreviewOptionsInternal\n\t}\n\n\tpublic set dragPreviewOptions(options: DragPreviewOptions | null) {\n\t\tthis.dragPreviewOptionsInternal = options\n\t}\n\n\tpublic reconnect(): void {\n\t\tconst didChange = this.reconnectDragSource()\n\t\tthis.reconnectDragPreview(didChange)\n\t}\n\n\tprivate reconnectDragSource(): boolean {\n\t\tconst dragSource = this.dragSource\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragSourceChange() ||\n\t\t\tthis.didDragSourceOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragSource()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn didChange\n\t\t}\n\t\tif (!dragSource) {\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\treturn didChange\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\tthis.lastConnectedDragSourceOptions = this.dragSourceOptions\n\t\t\tthis.dragSourceUnsubscribe = this.backend.connectDragSource(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragSource,\n\t\t\t\tthis.dragSourceOptions,\n\t\t\t)\n\t\t}\n\t\treturn didChange\n\t}\n\n\tprivate reconnectDragPreview(forceDidChange = false): void {\n\t\tconst dragPreview = this.dragPreview\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tforceDidChange ||\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragPreviewChange() ||\n\t\t\tthis.didDragPreviewOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragPreview()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dragPreview) {\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\tthis.lastConnectedDragPreviewOptions = this.dragPreviewOptions\n\t\t\tthis.dragPreviewUnsubscribe = this.backend.connectDragPreview(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragPreview,\n\t\t\t\tthis.dragPreviewOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didConnectedDragSourceChange(): boolean {\n\t\treturn this.lastConnectedDragSource !== this.dragSource\n\t}\n\n\tprivate didConnectedDragPreviewChange(): boolean {\n\t\treturn this.lastConnectedDragPreview !== this.dragPreview\n\t}\n\n\tprivate didDragSourceOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragSourceOptions,\n\t\t\tthis.dragSourceOptions,\n\t\t)\n\t}\n\n\tprivate didDragPreviewOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragPreviewOptions,\n\t\t\tthis.dragPreviewOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDragSource() {\n\t\tif (this.dragSourceUnsubscribe) {\n\t\t\tthis.dragSourceUnsubscribe()\n\t\t\tthis.dragSourceUnsubscribe = undefined\n\t\t}\n\t}\n\n\tpublic disconnectDragPreview() {\n\t\tif (this.dragPreviewUnsubscribe) {\n\t\t\tthis.dragPreviewUnsubscribe()\n\t\t\tthis.dragPreviewUnsubscribe = undefined\n\t\t\tthis.dragPreviewNode = null\n\t\t\tthis.dragPreviewRef = null\n\t\t}\n\t}\n\n\tprivate get dragSource() {\n\t\treturn (\n\t\t\tthis.dragSourceNode || (this.dragSourceRef && this.dragSourceRef.current)\n\t\t)\n\t}\n\n\tprivate get dragPreview() {\n\t\treturn (\n\t\t\tthis.dragPreviewNode ||\n\t\t\t(this.dragPreviewRef && this.dragPreviewRef.current)\n\t\t)\n\t}\n\n\tprivate clearDragSource() {\n\t\tthis.dragSourceNode = null\n\t\tthis.dragSourceRef = null\n\t}\n\n\tprivate clearDragPreview() {\n\t\tthis.dragPreviewNode = null\n\t\tthis.dragPreviewRef = null\n\t}\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { RefObject } from 'react'\n\nimport type { DropTargetOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport type { Connector } from './SourceConnector.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport class TargetConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdropTarget: (node: any, options: DropTargetOptions) => {\n\t\t\tthis.clearDropTarget()\n\t\t\tthis.dropTargetOptions = options\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dropTargetRef = node\n\t\t\t} else {\n\t\t\t\tthis.dropTargetNode = node\n\t\t\t}\n\t\t\tthis.reconnect()\n\t\t},\n\t})\n\n\tprivate handlerId: Identifier | null = null\n\t// The drop target may either be attached via ref or connect function\n\tprivate dropTargetRef: RefObject<any> | null = null\n\tprivate dropTargetNode: any\n\tprivate dropTargetOptionsInternal: DropTargetOptions | null = null\n\tprivate unsubscribeDropTarget: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDropTarget: any = null\n\tprivate lastConnectedDropTargetOptions: DropTargetOptions | null = null\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dropTarget\n\t}\n\n\tpublic reconnect(): void {\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didDropTargetChange() ||\n\t\t\tthis.didOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDropTarget()\n\t\t}\n\n\t\tconst dropTarget = this.dropTarget\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dropTarget) {\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\tthis.lastConnectedDropTargetOptions = this.dropTargetOptions\n\n\t\t\tthis.unsubscribeDropTarget = this.backend.connectDropTarget(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdropTarget,\n\t\t\t\tthis.dropTargetOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (newHandlerId === this.handlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get dropTargetOptions(): DropTargetOptions {\n\t\treturn this.dropTargetOptionsInternal\n\t}\n\tpublic set dropTargetOptions(options: DropTargetOptions) {\n\t\tthis.dropTargetOptionsInternal = options\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didDropTargetChange(): boolean {\n\t\treturn this.lastConnectedDropTarget !== this.dropTarget\n\t}\n\n\tprivate didOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDropTargetOptions,\n\t\t\tthis.dropTargetOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDropTarget() {\n\t\tif (this.unsubscribeDropTarget) {\n\t\t\tthis.unsubscribeDropTarget()\n\t\t\tthis.unsubscribeDropTarget = undefined\n\t\t}\n\t}\n\n\tprivate get dropTarget() {\n\t\treturn (\n\t\t\tthis.dropTargetNode || (this.dropTargetRef && this.dropTargetRef.current)\n\t\t)\n\t}\n\n\tprivate clearDropTarget() {\n\t\tthis.dropTargetRef = null\n\t\tthis.dropTargetNode = null\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { DragDropManager } from 'dnd-core'\nimport { useContext } from 'react'\n\nimport { DndContext } from '../core/index.js'\n\n/**\n * A hook to retrieve the DragDropManager from Context\n */\nexport function useDragDropManager(): DragDropManager {\n\tconst { dragDropManager } = useContext(DndContext)\n\tinvariant(dragDropManager != null, 'Expected drag drop context')\n\treturn dragDropManager as DragDropManager\n}\n","import type { DragDropMonitor, DragSource, Identifier } from 'dnd-core'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragObjectFactory, DragSourceHookSpec } from '../types.js'\n\nexport class DragSourceImpl<O, R, P> implements DragSource {\n\tpublic constructor(\n\t\tpublic spec: DragSourceHookSpec<O, R, P>,\n\t\tprivate monitor: DragSourceMonitor<O, R>,\n\t\tprivate connector: Connector,\n\t) {}\n\n\tpublic beginDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\n\t\tlet result: O | null = null\n\t\tif (typeof spec.item === 'object') {\n\t\t\tresult = spec.item as O\n\t\t} else if (typeof spec.item === 'function') {\n\t\t\tresult = (spec.item as DragObjectFactory<O>)(monitor)\n\t\t} else {\n\t\t\tresult = {} as O\n\t\t}\n\t\treturn result ?? null\n\t}\n\n\tpublic canDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (typeof spec.canDrag === 'boolean') {\n\t\t\treturn spec.canDrag\n\t\t} else if (typeof spec.canDrag === 'function') {\n\t\t\treturn spec.canDrag(monitor)\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tpublic isDragging(globalMonitor: DragDropMonitor, target: Identifier) {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst { isDragging } = spec\n\t\treturn isDragging\n\t\t\t? isDragging(monitor)\n\t\t\t: target === globalMonitor.getSourceId()\n\t}\n\n\tpublic endDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst connector = this.connector\n\t\tconst { end } = spec\n\t\tif (end) {\n\t\t\tend(monitor.getItem(), monitor)\n\t\t}\n\t\tconnector.reconnect()\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tConnectDragPreview,\n\tConnectDragSource,\n} from '../../types/index.js'\nimport type { DragSourceHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDragPreview, useConnectDragSource } from './connectors.js'\nimport { useDragSourceConnector } from './useDragSourceConnector.js'\nimport { useDragSourceMonitor } from './useDragSourceMonitor.js'\nimport { useRegisteredDragSource } from './useRegisteredDragSource.js'\n\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrag<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDragSourceHookSpec<DragObject, DropResult, CollectedProps>\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDragSource, ConnectDragPreview] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tinvariant(\n\t\t!(spec as any).begin,\n\t\t`useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)`,\n\t)\n\n\tconst monitor = useDragSourceMonitor<DragObject, DropResult>()\n\tconst connector = useDragSourceConnector(spec.options, spec.previewOptions)\n\tuseRegisteredDragSource(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDragSource(connector),\n\t\tuseConnectDragPreview(connector),\n\t]\n}\n","import { useMemo } from 'react'\n\nimport { DragSourceMonitorImpl } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDragSourceMonitor<O, R>(): DragSourceMonitor<O, R> {\n\tconst manager = useDragDropManager()\n\treturn useMemo<DragSourceMonitor<O, R>>(\n\t\t() => new DragSourceMonitorImpl(manager),\n\t\t[manager],\n\t)\n}\n","import { useMemo } from 'react'\n\nimport { SourceConnector } from '../../internals/index.js'\nimport type {\n\tDragPreviewOptions,\n\tDragSourceOptions,\n} from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDragSourceConnector(\n\tdragSourceOptions: DragSourceOptions | undefined,\n\tdragPreviewOptions: DragPreviewOptions | undefined,\n): SourceConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new SourceConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragSourceOptions = dragSourceOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragSource()\n\t}, [connector, dragSourceOptions])\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragPreviewOptions = dragPreviewOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragPreview()\n\t}, [connector, dragPreviewOptions])\n\treturn connector\n}\n","import type { SourceConnector } from '../../internals/index.js'\nimport { registerSource } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useDragSource } from './useDragSource.js'\nimport { useDragType } from './useDragType.js'\n\nexport function useRegisteredDragSource<O, R, P>(\n\tspec: DragSourceHookSpec<O, R, P>,\n\tmonitor: DragSourceMonitor<O, R>,\n\tconnector: SourceConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst handler = useDragSource(spec, monitor, connector)\n\tconst itemType = useDragType(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDragSource() {\n\t\t\tif (itemType != null) {\n\t\t\t\tconst [handlerId, unregister] = registerSource(\n\t\t\t\t\titemType,\n\t\t\t\t\thandler,\n\t\t\t\t\tmanager,\n\t\t\t\t)\n\t\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\t\treturn unregister\n\t\t\t}\n\t\t\treturn\n\t\t},\n\t\t[manager, monitor, connector, handler, itemType],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { DragSourceImpl } from './DragSourceImpl.js'\n\nexport function useDragSource<O, R, P>(\n\tspec: DragSourceHookSpec<O, R, P>,\n\tmonitor: DragSourceMonitor<O, R>,\n\tconnector: Connector,\n) {\n\tconst handler = useMemo(\n\t\t() => new DragSourceImpl(spec, monitor, connector),\n\t\t[monitor, connector],\n\t)\n\tuseEffect(() => {\n\t\thandler.spec = spec\n\t}, [spec])\n\treturn handler\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DragSourceHookSpec } from '../types.js'\n\nexport function useDragType(\n\tspec: DragSourceHookSpec<any, any, any>,\n): Identifier {\n\treturn useMemo(() => {\n\t\tconst result: Identifier = spec.type\n\t\tinvariant(result != null, 'spec.type must be defined')\n\t\treturn result\n\t}, [spec])\n}\n","import type {\n\tDragDropManager,\n\tDragSource,\n\tDropTarget,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n\tUnsubscribe,\n} from 'dnd-core'\n\nexport function registerTarget(\n\ttype: TargetType,\n\ttarget: DropTarget,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst targetId = registry.addTarget(type, target)\n\n\treturn [targetId, () => registry.removeTarget(targetId)]\n}\n\nexport function registerSource(\n\ttype: SourceType,\n\tsource: DragSource,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst sourceId = registry.addSource(type, source)\n\n\treturn [sourceId, () => registry.removeSource(sourceId)]\n}\n","import { useMemo } from 'react'\n\nimport type { TargetConnector } from '../../internals/index.js'\n\nexport function useConnectDropTarget(connector: TargetConnector) {\n\treturn useMemo(() => connector.hooks.dropTarget(), [connector])\n}\n","import type { DropTarget } from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\n\nexport class DropTargetImpl<O, R, P> implements DropTarget {\n\tpublic constructor(\n\t\tpublic spec: DropTargetHookSpec<O, R, P>,\n\t\tprivate monitor: DropTargetMonitor<O, R>,\n\t) {}\n\n\tpublic canDrop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\treturn spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true\n\t}\n\n\tpublic hover() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.hover) {\n\t\t\tspec.hover(monitor.getItem(), monitor)\n\t\t}\n\t}\n\n\tpublic drop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.drop) {\n\t\t\treturn spec.drop(monitor.getItem(), monitor)\n\t\t}\n\t\treturn\n\t}\n}\n","import type { ConnectDropTarget } from '../../types/index.js'\nimport type { DropTargetHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDropTarget } from './connectors.js'\nimport { useDropTargetConnector } from './useDropTargetConnector.js'\nimport { useDropTargetMonitor } from './useDropTargetMonitor.js'\nimport { useRegisteredDropTarget } from './useRegisteredDropTarget.js'\n\n/**\n * useDropTarget Hook\n * @param spec The drop target specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrop<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDropTargetHookSpec<DragObject, DropResult, CollectedProps>\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDropTarget] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tconst monitor = useDropTargetMonitor<DragObject, DropResult>()\n\tconst connector = useDropTargetConnector(spec.options)\n\tuseRegisteredDropTarget(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDropTarget(connector),\n\t]\n}\n","import { useMemo } from 'react'\n\nimport { DropTargetMonitorImpl } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDropTargetMonitor<O, R>(): DropTargetMonitor<O, R> {\n\tconst manager = useDragDropManager()\n\treturn useMemo(() => new DropTargetMonitorImpl(manager), [manager])\n}\n","import { useMemo } from 'react'\n\nimport { TargetConnector } from '../../internals/index.js'\nimport type { DropTargetOptions } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDropTargetConnector(\n\toptions: DropTargetOptions,\n): TargetConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new TargetConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dropTargetOptions = options || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDropTarget()\n\t}, [options])\n\treturn connector\n}\n","import type { TargetConnector } from '../../internals/index.js'\nimport { registerTarget } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useAccept } from './useAccept.js'\nimport { useDropTarget } from './useDropTarget.js'\n\nexport function useRegisteredDropTarget<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n\tmonitor: DropTargetMonitor<O, R>,\n\tconnector: TargetConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst dropTarget = useDropTarget(spec, monitor)\n\tconst accept = useAccept(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDropTarget() {\n\t\t\tconst [handlerId, unregister] = registerTarget(\n\t\t\t\taccept,\n\t\t\t\tdropTarget,\n\t\t\t\tmanager,\n\t\t\t)\n\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\treturn unregister\n\t\t},\n\t\t[\n\t\t\tmanager,\n\t\t\tmonitor,\n\t\t\tdropTarget,\n\t\t\tconnector,\n\t\t\taccept.map((a) => a.toString()).join('|'),\n\t\t],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { DropTargetImpl } from './DropTargetImpl.js'\n\nexport function useDropTarget<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n\tmonitor: DropTargetMonitor<O, R>,\n) {\n\tconst dropTarget = useMemo(() => new DropTargetImpl(spec, monitor), [monitor])\n\tuseEffect(() => {\n\t\tdropTarget.spec = spec\n\t}, [spec])\n\treturn dropTarget\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DropTargetHookSpec } from '../types.js'\n\n/**\n * Internal utility hook to get an array-version of spec.accept.\n * The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.\n * @param spec\n */\nexport function useAccept<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n): Identifier[] {\n\tconst { accept } = spec\n\treturn useMemo(() => {\n\t\tinvariant(spec.accept != null, 'accept must be defined')\n\t\treturn Array.isArray(accept) ? accept : [accept]\n\t}, [accept])\n}\n","import React, { FC } from 'react';\nimport { Box, IconButton, Tooltip } from '@mui/material';\nimport type { MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n column: MRT_Column;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ColumnPinningButtons: FC<Props> = ({ column, table }) => {\n const {\n options: {\n icons: { PushPinIcon },\n localization,\n },\n } = table;\n\n const handlePinColumn = (pinDirection: 'left' | 'right' | false) => {\n column.pin(pinDirection);\n };\n\n return (\n <Box sx={{ minWidth: '70px', textAlign: 'center' }}>\n {column.getIsPinned() ? (\n <Tooltip arrow title={localization.unpin}>\n <IconButton onClick={() => handlePinColumn(false)} size=\"small\">\n <PushPinIcon />\n </IconButton>\n </Tooltip>\n ) : (\n <>\n <Tooltip arrow title={localization.pinToLeft}>\n <IconButton onClick={() => handlePinColumn('left')} size=\"small\">\n <PushPinIcon\n style={{\n transform: 'rotate(90deg)',\n }}\n />\n </IconButton>\n </Tooltip>\n <Tooltip arrow title={localization.pinToRight}>\n <IconButton onClick={() => handlePinColumn('right')} size=\"small\">\n <PushPinIcon\n style={{\n transform: 'rotate(-90deg)',\n }}\n />\n </IconButton>\n </Tooltip>\n </>\n )}\n </Box>\n );\n};\n","import { IconButton, Tooltip } from '@mui/material';\nimport React, { FC, forwardRef, Ref } from 'react';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n ref: Ref<HTMLButtonElement>;\n table: MRT_TableInstance;\n}\n\nexport const MRT_GrabHandleButton: FC<Props> = forwardRef(({ table }, ref) => {\n const {\n options: {\n icons: { DragHandleIcon },\n localization,\n },\n } = table;\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n placement=\"top\"\n title={localization.grab}\n >\n <IconButton\n disableRipple\n ref={ref}\n size=\"small\"\n sx={{\n cursor: 'grab',\n m: 0,\n opacity: 0.5,\n p: '2px',\n transition: 'all 0.2s ease-in-out',\n '&:hover': {\n backgroundColor: 'transparent',\n opacity: 1,\n },\n '&:active': {\n cursor: 'grabbing',\n },\n }}\n >\n <DragHandleIcon />\n </IconButton>\n </Tooltip>\n );\n});\n","import { rankItem, rankings, RankingInfo } from '@tanstack/match-sorter-utils';\nimport { filterFns, Row } from '@tanstack/react-table';\n\nexport const fuzzy = <D extends Record<string, any> = {}>(\n row: Row<D>,\n columnId: string,\n filterValue: string,\n addMeta: (item: RankingInfo) => void,\n) => {\n const itemRank = rankItem(row.getValue(columnId), filterValue, {\n threshold: rankings.MATCHES,\n });\n addMeta(itemRank);\n return itemRank.passed;\n};\n\nfuzzy.autoRemove = (val: any) => !val;\n\nexport const contains = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row\n .getValue(id)\n .toString()\n .toLowerCase()\n .trim()\n .includes(filterValue.toString().toLowerCase().trim());\n\ncontains.autoRemove = (val: any) => !val;\n\nexport const startsWith = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row\n .getValue(id)\n .toString()\n .toLowerCase()\n .trim()\n .startsWith(filterValue.toString().toLowerCase().trim());\n\nstartsWith.autoRemove = (val: any) => !val;\n\nexport const endsWith = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row\n .getValue(id)\n .toString()\n .toLowerCase()\n .trim()\n .endsWith(filterValue.toString().toLowerCase().trim());\n\nendsWith.autoRemove = (val: any) => !val;\n\nexport const equals = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row.getValue(id).toString().toLowerCase().trim() ===\n filterValue.toString().toLowerCase().trim();\n\nequals.autoRemove = (val: any) => !val;\n\nexport const notEquals = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row.getValue(id).toString().toLowerCase().trim() !==\n filterValue.toString().toLowerCase().trim();\n\nnotEquals.autoRemove = (val: any) => !val;\n\nexport const greaterThan = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue(id))\n ? +row.getValue(id) >= +filterValue\n : row.getValue(id).toString().toLowerCase().trim() >\n filterValue.toString().toLowerCase().trim();\n\ngreaterThan.autoRemove = (val: any) => !val;\n\nexport const lessThan = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue(id))\n ? +row.getValue(id) <= +filterValue\n : row.getValue(id).toString().toLowerCase().trim() <\n filterValue.toString().toLowerCase().trim();\n\nlessThan.autoRemove = (val: any) => !val;\n\nexport const between = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValues: [string | number, string | number],\n) =>\n ((['', undefined] as any[]).includes(filterValues[0]) ||\n greaterThan(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) &&\n !isNaN(+filterValues[1]) &&\n +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThan(row, id, filterValues[1]));\n\nbetween.autoRemove = (val: any) => !val;\n\nexport const empty = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n _filterValue: string | number,\n) => !row.getValue(id).toString().trim();\n\nempty.autoRemove = (val: any) => !val;\n\nexport const notEmpty = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n _filterValue: string | number,\n) => !!row.getValue(id).toString().trim();\n\nnotEmpty.autoRemove = (val: any) => !val;\n\nexport const MRT_FilterFns = {\n ...filterFns,\n between,\n contains,\n empty,\n endsWith,\n equals,\n fuzzy,\n greaterThan,\n lessThan,\n notEmpty,\n notEquals,\n startsWith,\n};\n","import { compareItems, RankingInfo } from '@tanstack/match-sorter-utils';\nimport { Row, sortingFns } from '@tanstack/react-table';\nimport { MRT_Row } from '.';\n\nconst fuzzy = <D extends Record<string, any> = {}>(\n rowA: Row<D>,\n rowB: Row<D>,\n columnId: string,\n) => {\n let dir = 0;\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId]! as RankingInfo,\n rowB.columnFiltersMeta[columnId]! as RankingInfo,\n );\n }\n // Provide a fallback for when the item ranks are equal\n return dir === 0\n ? sortingFns.alphanumeric(rowA as Row<any>, rowB as Row<any>, columnId)\n : dir;\n};\n\nexport const MRT_SortingFns = {\n ...sortingFns,\n fuzzy,\n};\n\nexport const rankGlobalFuzzy = <D extends Record<string, any> = {}>(\n rowA: MRT_Row<D>,\n rowB: MRT_Row<D>,\n) =>\n Math.max(...Object.values(rowB.columnFiltersMeta).map((v: any) => v.rank)) -\n Math.max(...Object.values(rowA.columnFiltersMeta).map((v: any) => v.rank));\n","import { ColumnOrderState } from '@tanstack/react-table';\nimport {\n MaterialReactTableProps,\n MRT_Column,\n MRT_ColumnDef,\n MRT_DefinedColumnDef,\n MRT_FilterOption,\n} from '.';\nimport { MRT_FilterFns } from './filtersFns';\nimport { MRT_SortingFns } from './sortingFns';\n\nconst getColumnId = <D extends Record<string, any> = {}>(\n columnDef: MRT_ColumnDef<D>,\n): string =>\n columnDef.id ?? columnDef.accessorKey?.toString?.() ?? columnDef.header;\n\nexport const getAllLeafColumnDefs = <D extends Record<string, any> = {}>(\n columns: MRT_ColumnDef<D>[],\n): MRT_ColumnDef<D>[] => {\n let lowestLevelColumns: MRT_ColumnDef<D>[] = columns;\n let currentCols: MRT_ColumnDef<D>[] | undefined = columns;\n while (!!currentCols?.length && currentCols.some((col) => col.columns)) {\n const nextCols: MRT_ColumnDef<D>[] = currentCols\n .filter((col) => !!col.columns)\n .map((col) => col.columns)\n .flat() as MRT_ColumnDef<D>[];\n if (nextCols.every((col) => !col?.columns)) {\n lowestLevelColumns = [...lowestLevelColumns, ...nextCols];\n }\n currentCols = nextCols;\n }\n return lowestLevelColumns.filter((col) => !col.columns);\n};\n\nexport const prepareColumns = <D extends Record<string, any> = {}>(\n columnDefs: MRT_ColumnDef<D>[],\n currentFilterFns: { [key: string]: MRT_FilterOption },\n): MRT_DefinedColumnDef<D>[] =>\n columnDefs.map((columnDef) => {\n if (!columnDef.id) columnDef.id = getColumnId(columnDef);\n if (process.env.NODE_ENV !== 'production' && !columnDef.id) {\n console.error(\n 'Column definitions must have a valid `accessorKey` or `id` property',\n );\n }\n if (!columnDef.columnDefType) columnDef.columnDefType = 'data';\n if (!!columnDef.columns?.length) {\n columnDef.columnDefType = 'group';\n columnDef.columns = prepareColumns(columnDef.columns, currentFilterFns);\n } else if (columnDef.columnDefType === 'data') {\n if (Object.keys(MRT_FilterFns).includes(currentFilterFns[columnDef.id])) {\n columnDef.filterFn =\n MRT_FilterFns[currentFilterFns[columnDef.id]] ?? MRT_FilterFns.fuzzy;\n }\n if (Object.keys(MRT_SortingFns).includes(columnDef.sortingFn as string)) {\n // @ts-ignore\n columnDef.sortingFn = MRT_SortingFns[columnDef.sortingFn];\n }\n }\n return columnDef;\n }) as MRT_DefinedColumnDef<D>[];\n\nexport const reorderColumn = <D extends Record<string, any> = {}>(\n movingColumn: MRT_Column<D>,\n receivingColumn: MRT_Column<D>,\n columnOrder: ColumnOrderState,\n): ColumnOrderState => {\n if (movingColumn.getCanPin()) {\n movingColumn.pin(receivingColumn.getIsPinned());\n }\n columnOrder.splice(\n columnOrder.indexOf(receivingColumn.id),\n 0,\n columnOrder.splice(columnOrder.indexOf(movingColumn.id), 1)[0],\n );\n return [...columnOrder];\n};\n\nexport const getLeadingDisplayColumnIds = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) =>\n [\n ((props.positionActionsColumn === 'first' && props.enableRowActions) ||\n (props.enableEditing && props.editingMode === 'row')) &&\n 'mrt-row-actions',\n (props.enableExpanding || props.enableGrouping) && 'mrt-expand',\n props.enableRowSelection && 'mrt-select',\n props.enableRowNumbers && 'mrt-row-numbers',\n ].filter(Boolean) as string[];\n\nexport const getTrailingDisplayColumnIds = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) => [\n ((props.positionActionsColumn === 'last' && props.enableRowActions) ||\n (props.enableEditing && props.editingMode === 'row')) &&\n 'mrt-row-actions',\n];\n\nexport const getDefaultColumnOrderIds = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) =>\n [\n ...getLeadingDisplayColumnIds(props),\n ...getAllLeafColumnDefs(props.columns).map((columnDef) =>\n getColumnId(columnDef),\n ),\n ...getTrailingDisplayColumnIds(props),\n ].filter(Boolean) as string[];\n","import React, { FC, Ref } from 'react';\nimport { useDrag, useDrop } from 'react-dnd';\nimport {\n Box,\n FormControlLabel,\n MenuItem,\n Switch,\n Tooltip,\n Typography,\n} from '@mui/material';\nimport { MRT_ColumnPinningButtons } from '../buttons/MRT_ColumnPinningButtons';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\nimport { reorderColumn } from '../utils';\nimport type { MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n allColumns: MRT_Column[];\n column: MRT_Column;\n isSubMenu?: boolean;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsMenuItems: FC<Props> = ({\n allColumns,\n column,\n isSubMenu,\n table,\n}) => {\n const {\n getState,\n options: {\n enableColumnOrdering,\n enableHiding,\n enablePinning,\n localization,\n },\n setColumnOrder,\n } = table;\n const { columnOrder } = getState();\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const [, dropRef] = useDrop({\n accept: 'column',\n drop: (movingColumn: MRT_Column) => {\n const newColumnOrder = reorderColumn(movingColumn, column, columnOrder);\n setColumnOrder(newColumnOrder);\n },\n });\n\n const [, dragRef, previewRef] = useDrag({\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n item: () => column,\n type: 'column',\n });\n\n const switchChecked =\n (columnDefType !== 'group' && column.getIsVisible()) ||\n (columnDefType === 'group' &&\n column.getLeafColumns().some((col) => col.getIsVisible()));\n\n const handleToggleColumnHidden = (column: MRT_Column) => {\n if (columnDefType === 'group') {\n column?.columns?.forEach?.((childColumn: MRT_Column) => {\n childColumn.toggleVisibility(!switchChecked);\n });\n } else {\n column.toggleVisibility();\n }\n };\n\n return (\n <>\n <MenuItem\n ref={columnDefType === 'data' ? dropRef : undefined}\n sx={{\n alignItems: 'center',\n justifyContent: 'flex-start',\n my: 0,\n pl: `${(column.depth + 0.5) * 2}rem`,\n py: '6px',\n }}\n >\n <Box\n ref={previewRef}\n sx={{\n display: 'flex',\n flexWrap: 'nowrap',\n gap: '8px',\n }}\n >\n {columnDefType !== 'group' &&\n enableColumnOrdering &&\n !allColumns.some(\n (col) => col.columnDef.columnDefType === 'group',\n ) &&\n (columnDef.enableColumnOrdering !== false ? (\n <MRT_GrabHandleButton\n ref={dragRef as Ref<HTMLButtonElement>}\n table={table}\n />\n ) : (\n <Box sx={{ width: '28px' }} />\n ))}\n {enablePinning &&\n !isSubMenu &&\n (column.getCanPin() ? (\n <MRT_ColumnPinningButtons column={column} table={table} />\n ) : (\n <Box sx={{ width: '70px' }} />\n ))}\n {enableHiding ? (\n <FormControlLabel\n componentsProps={{\n typography: {\n sx: {\n mb: 0,\n opacity: columnDefType !== 'display' ? 1 : 0.5,\n },\n },\n }}\n checked={switchChecked}\n control={\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.toggleVisibility}\n >\n <Switch />\n </Tooltip>\n }\n disabled={\n (isSubMenu && switchChecked) ||\n !column.getCanHide() ||\n column.getIsGrouped()\n }\n label={columnDef.header}\n onChange={() => handleToggleColumnHidden(column)}\n />\n ) : (\n <Typography sx={{ alignSelf: 'center' }}>\n {columnDef.header}\n </Typography>\n )}\n </Box>\n </MenuItem>\n {column.columns?.map((c: MRT_Column, i) => (\n <MRT_ShowHideColumnsMenuItems\n allColumns={allColumns}\n key={`${i}-${c.id}`}\n column={c}\n isSubMenu={isSubMenu}\n table={table}\n />\n ))}\n </>\n );\n};\n","import React, { FC, useMemo } from 'react';\nimport { Button, Menu, Divider, Box } from '@mui/material';\nimport { MRT_ShowHideColumnsMenuItems } from './MRT_ShowHideColumnsMenuItems';\nimport type { MRT_Column, MRT_TableInstance } from '..';\nimport { getDefaultColumnOrderIds } from '../utils';\n\ninterface Props {\n anchorEl: HTMLElement | null;\n isSubMenu?: boolean;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsMenu: FC<Props> = ({\n anchorEl,\n isSubMenu,\n setAnchorEl,\n table,\n}) => {\n const {\n getAllColumns,\n getAllLeafColumns,\n getCenterLeafColumns,\n getIsAllColumnsVisible,\n getIsSomeColumnsPinned,\n getIsSomeColumnsVisible,\n getLeftLeafColumns,\n getRightLeafColumns,\n getState,\n toggleAllColumnsVisible,\n options: { localization, enablePinning, enableColumnOrdering },\n } = table;\n const { density, columnOrder, columnPinning } = getState();\n\n const hideAllColumns = () => {\n getAllLeafColumns()\n .filter((col) => col.columnDef.enableHiding !== false)\n .forEach((col) => col.toggleVisibility(false));\n };\n\n const allColumns = useMemo(() => {\n const columns = getAllColumns();\n if (\n columnOrder.length > 0 &&\n !columns.some((col) => col.columnDef.columnDefType === 'group')\n ) {\n return [\n ...getLeftLeafColumns(),\n ...Array.from(new Set(columnOrder)).map((colId) =>\n getCenterLeafColumns().find((col) => col?.id === colId),\n ),\n ...getRightLeafColumns(),\n ].filter(Boolean);\n }\n return columns;\n }, [\n columnOrder,\n columnPinning,\n getAllColumns(),\n getCenterLeafColumns(),\n getLeftLeafColumns(),\n getRightLeafColumns(),\n ]) as MRT_Column[];\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={!!anchorEl}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n <Box\n sx={{\n display: 'flex',\n justifyContent: isSubMenu ? 'center' : 'space-between',\n p: '0.5rem',\n pt: 0,\n }}\n >\n {!isSubMenu && (\n <Button\n disabled={!getIsSomeColumnsVisible()}\n onClick={hideAllColumns}\n >\n {localization.hideAll}\n </Button>\n )}\n {!isSubMenu && enableColumnOrdering && (\n <Button\n onClick={() =>\n table.setColumnOrder(\n getDefaultColumnOrderIds(table.options as any),\n )\n }\n >\n {localization.resetOrder}\n </Button>\n )}\n {!isSubMenu && enablePinning && (\n <Button\n disabled={!getIsSomeColumnsPinned()}\n onClick={() => table.resetColumnPinning(true)}\n >\n {localization.unpinAll}\n </Button>\n )}\n <Button\n disabled={getIsAllColumnsVisible()}\n onClick={() => toggleAllColumnsVisible(true)}\n >\n {localization.showAll}\n </Button>\n </Box>\n <Divider />\n {allColumns.map((column, index) => (\n <MRT_ShowHideColumnsMenuItems\n allColumns={allColumns}\n column={column}\n isSubMenu={isSubMenu}\n key={`${index}-${column.id}`}\n table={table}\n />\n ))}\n </Menu>\n );\n};\n","import React, { FC, useState } from 'react';\nimport { Box, IconButton, ListItemIcon, Menu, MenuItem } from '@mui/material';\nimport type { MRT_Header, MRT_TableInstance } from '..';\nimport { MRT_FilterOptionMenu } from './MRT_FilterOptionMenu';\nimport { MRT_ShowHideColumnsMenu } from './MRT_ShowHideColumnsMenu';\n\nexport const commonMenuItemStyles = {\n py: '6px',\n my: 0,\n justifyContent: 'space-between',\n alignItems: 'center',\n};\n\nexport const commonListItemStyles = {\n display: 'flex',\n alignItems: 'center',\n};\n\ninterface Props {\n anchorEl: HTMLElement | null;\n header: MRT_Header;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ColumnActionMenu: FC<Props> = ({\n anchorEl,\n header,\n setAnchorEl,\n table,\n}) => {\n const {\n getState,\n toggleAllColumnsVisible,\n setColumnOrder,\n options: {\n enableColumnFilterChangeMode,\n enableColumnFilters,\n enableColumnResizing,\n enableGrouping,\n enableHiding,\n enablePinning,\n enableSorting,\n enabledColumnFilterOptions,\n icons: {\n ArrowRightIcon,\n ClearAllIcon,\n ViewColumnIcon,\n DynamicFeedIcon,\n FilterListIcon,\n FilterListOffIcon,\n PushPinIcon,\n SortIcon,\n RestartAltIcon,\n VisibilityOffIcon,\n },\n tableId,\n localization,\n },\n setShowFilters,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { columnSizing, columnVisibility, density } = getState();\n\n const [filterMenuAnchorEl, setFilterMenuAnchorEl] =\n useState<null | HTMLElement>(null);\n const [showHideColumnsMenuAnchorEl, setShowHideColumnsMenuAnchorEl] =\n useState<null | HTMLElement>(null);\n\n const handleClearSort = () => {\n column.clearSorting();\n setAnchorEl(null);\n };\n\n const handleSortAsc = () => {\n column.toggleSorting(false);\n setAnchorEl(null);\n };\n\n const handleSortDesc = () => {\n column.toggleSorting(true);\n setAnchorEl(null);\n };\n\n const handleResetColumnSize = () => {\n column.resetSize();\n setAnchorEl(null);\n };\n\n const handleHideColumn = () => {\n column.toggleVisibility(false);\n setAnchorEl(null);\n };\n\n const handlePinColumn = (pinDirection: 'left' | 'right' | false) => {\n column.pin(pinDirection);\n setAnchorEl(null);\n };\n\n const handleGroupByColumn = () => {\n column.toggleGrouping();\n setColumnOrder((old) => ['mrt-expand', ...old]);\n setAnchorEl(null);\n };\n\n const handleClearFilter = () => {\n column.setFilterValue('');\n setAnchorEl(null);\n };\n\n const handleFilterByColumn = () => {\n setShowFilters(true);\n setTimeout(\n () =>\n document\n .getElementById(\n // @ts-ignore\n header.muiTableHeadCellFilterTextFieldProps?.id ??\n `mrt-${tableId}-${header.id}-filter-text-field`,\n )\n ?.focus(),\n 200,\n );\n setAnchorEl(null);\n };\n\n const handleShowAllColumns = () => {\n toggleAllColumnsVisible(true);\n setAnchorEl(null);\n };\n\n const handleOpenFilterModeMenu = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setFilterMenuAnchorEl(event.currentTarget);\n };\n\n const handleOpenShowHideColumnsMenu = (\n event: React.MouseEvent<HTMLElement>,\n ) => {\n event.stopPropagation();\n setShowHideColumnsMenuAnchorEl(event.currentTarget);\n };\n\n const isSelectFilter = !!columnDef.filterSelectOptions;\n\n const allowedColumnFilterOptions =\n columnDef?.enabledColumnFilterOptions ?? enabledColumnFilterOptions;\n\n const showFilterModeSubMenu =\n enableColumnFilterChangeMode &&\n columnDef.enableColumnFilterChangeMode !== false &&\n !isSelectFilter &&\n (allowedColumnFilterOptions === undefined ||\n !!allowedColumnFilterOptions?.length);\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={!!anchorEl}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n {enableSorting &&\n column.getCanSort() && [\n <MenuItem\n disabled={!column.getIsSorted()}\n key={0}\n onClick={handleClearSort}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <ClearAllIcon />\n </ListItemIcon>\n {localization.clearSort}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={column.getIsSorted() === 'asc'}\n key={1}\n onClick={handleSortAsc}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <SortIcon />\n </ListItemIcon>\n {localization.sortByColumnAsc?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n </MenuItem>,\n <MenuItem\n divider={enableColumnFilters || enableGrouping || enableHiding}\n key={2}\n disabled={column.getIsSorted() === 'desc'}\n onClick={handleSortDesc}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <SortIcon style={{ transform: 'rotate(180deg) scaleX(-1)' }} />\n </ListItemIcon>\n {localization.sortByColumnDesc?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n </MenuItem>,\n ]}\n {enableColumnFilters &&\n column.getCanFilter() &&\n [\n <MenuItem\n disabled={!column.getFilterValue()}\n key={0}\n onClick={handleClearFilter}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <FilterListOffIcon />\n </ListItemIcon>\n {localization.clearFilter}\n </Box>\n </MenuItem>,\n <MenuItem\n divider={enableGrouping || enableHiding}\n key={1}\n onClick={handleFilterByColumn}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <FilterListIcon />\n </ListItemIcon>\n {localization.filterByColumn?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n {showFilterModeSubMenu && (\n <IconButton\n onClick={handleOpenFilterModeMenu}\n onMouseEnter={handleOpenFilterModeMenu}\n size=\"small\"\n sx={{ p: 0 }}\n >\n <ArrowRightIcon />\n </IconButton>\n )}\n </MenuItem>,\n showFilterModeSubMenu && (\n <MRT_FilterOptionMenu\n anchorEl={filterMenuAnchorEl}\n header={header}\n key={2}\n onSelect={handleFilterByColumn}\n setAnchorEl={setFilterMenuAnchorEl}\n table={table}\n />\n ),\n ].filter(Boolean)}\n {enableGrouping &&\n column.getCanGroup() && [\n <MenuItem\n divider={enablePinning}\n key={0}\n onClick={handleGroupByColumn}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <DynamicFeedIcon />\n </ListItemIcon>\n {localization[\n column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn'\n ]?.replace('{column}', String(columnDef.header))}\n </Box>\n </MenuItem>,\n ]}\n {enablePinning &&\n column.getCanPin() && [\n <MenuItem\n disabled={column.getIsPinned() === 'left' || !column.getCanPin()}\n key={0}\n onClick={() => handlePinColumn('left')}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <PushPinIcon style={{ transform: 'rotate(90deg)' }} />\n </ListItemIcon>\n {localization.pinToLeft}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={column.getIsPinned() === 'right' || !column.getCanPin()}\n key={1}\n onClick={() => handlePinColumn('right')}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <PushPinIcon style={{ transform: 'rotate(-90deg)' }} />\n </ListItemIcon>\n {localization.pinToRight}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={!column.getIsPinned()}\n divider={enableHiding}\n key={2}\n onClick={() => handlePinColumn(false)}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <PushPinIcon />\n </ListItemIcon>\n {localization.unpin}\n </Box>\n </MenuItem>,\n ]}\n {enableColumnResizing && [\n <MenuItem\n disabled={!column.getCanResize() || !columnSizing[column.id]}\n key={0}\n onClick={handleResetColumnSize}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <RestartAltIcon />\n </ListItemIcon>\n {localization.resetColumnSize}\n </Box>\n </MenuItem>,\n ]}\n {enableHiding && [\n <MenuItem\n disabled={columnDef.enableHiding === false}\n key={0}\n onClick={handleHideColumn}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <VisibilityOffIcon />\n </ListItemIcon>\n {localization.hideColumn?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={\n !Object.values(columnVisibility).filter((visible) => !visible)\n .length\n }\n key={1}\n onClick={handleShowAllColumns}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <ViewColumnIcon />\n </ListItemIcon>\n {localization.showAllColumns?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n <IconButton\n onClick={handleOpenShowHideColumnsMenu}\n onMouseEnter={handleOpenShowHideColumnsMenu}\n size=\"small\"\n sx={{ p: 0 }}\n >\n <ArrowRightIcon />\n </IconButton>\n </MenuItem>,\n <MRT_ShowHideColumnsMenu\n anchorEl={showHideColumnsMenuAnchorEl}\n isSubMenu\n key={2}\n setAnchorEl={setShowHideColumnsMenuAnchorEl}\n table={table}\n />,\n ]}\n </Menu>\n );\n};\n","import React, { FC } from 'react';\nimport { Box, ListItemIcon, Menu, MenuItem } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\nimport {\n commonListItemStyles,\n commonMenuItemStyles,\n} from './MRT_ColumnActionMenu';\n\ninterface Props {\n anchorEl: HTMLElement | null;\n handleEdit: () => void;\n row: MRT_Row;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_RowActionMenu: FC<Props> = ({\n anchorEl,\n handleEdit,\n row,\n setAnchorEl,\n table,\n}) => {\n const {\n getState,\n options: {\n icons: { EditIcon },\n enableEditing,\n localization,\n renderRowActionMenuItems,\n },\n } = table;\n const { density } = getState();\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={!!anchorEl}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n {enableEditing && (\n <MenuItem onClick={handleEdit} sx={commonMenuItemStyles}>\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <EditIcon />\n </ListItemIcon>\n {localization.edit}\n </Box>\n </MenuItem>\n )}\n {renderRowActionMenuItems?.({\n row,\n table,\n closeMenu: () => setAnchorEl(null),\n })}\n </Menu>\n );\n};\n","import React, { FC } from 'react';\nimport { Box, IconButton, Tooltip } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_EditActionButtons: FC<Props> = ({ row, table }) => {\n const {\n getState,\n options: {\n icons: { CancelIcon, SaveIcon },\n localization,\n onEditRowSubmit,\n },\n setCurrentEditingRow,\n } = table;\n const { currentEditingRow } = getState();\n\n const handleCancel = () => {\n row._valuesCache = row.original ?? {};\n setCurrentEditingRow(null);\n };\n\n const handleSave = () => {\n onEditRowSubmit?.({ row: currentEditingRow ?? row, table });\n setCurrentEditingRow(null);\n };\n\n return (\n <Box sx={{ display: 'flex', gap: '0.75rem' }}>\n <Tooltip arrow title={localization.cancel}>\n <IconButton aria-label={localization.cancel} onClick={handleCancel}>\n <CancelIcon />\n </IconButton>\n </Tooltip>\n <Tooltip arrow title={localization.save}>\n <IconButton\n aria-label={localization.save}\n color=\"info\"\n onClick={handleSave}\n >\n <SaveIcon />\n </IconButton>\n </Tooltip>\n </Box>\n );\n};\n","import React, { FC, MouseEvent, useState } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { MRT_RowActionMenu } from '../menus/MRT_RowActionMenu';\nimport { MRT_EditActionButtons } from './MRT_EditActionButtons';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\nconst commonIconButtonStyles = {\n height: '2rem',\n ml: '10px',\n opacity: 0.5,\n transition: 'opacity 0.2s',\n width: '2rem',\n '&:hover': {\n opacity: 1,\n },\n};\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleRowActionMenuButton: FC<Props> = ({ row, table }) => {\n const {\n getState,\n options: {\n enableEditing,\n icons: { EditIcon, MoreHorizIcon },\n localization,\n renderRowActionMenuItems,\n renderRowActions,\n },\n setCurrentEditingRow,\n } = table;\n\n const { currentEditingRow } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const handleOpenRowActionMenu = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n event.preventDefault();\n setAnchorEl(event.currentTarget);\n };\n\n const handleStartEditMode = () => {\n setCurrentEditingRow({ ...row });\n setAnchorEl(null);\n };\n\n return (\n <>\n {renderRowActions ? (\n <>{renderRowActions({ row, table })}</>\n ) : row.id === currentEditingRow?.id ? (\n <MRT_EditActionButtons row={row} table={table} />\n ) : !renderRowActionMenuItems && enableEditing ? (\n <Tooltip placement=\"right\" arrow title={localization.edit}>\n <IconButton sx={commonIconButtonStyles} onClick={handleStartEditMode}>\n <EditIcon />\n </IconButton>\n </Tooltip>\n ) : renderRowActionMenuItems ? (\n <>\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.rowActions}\n >\n <IconButton\n aria-label={localization.rowActions}\n onClick={handleOpenRowActionMenu}\n size=\"small\"\n sx={commonIconButtonStyles}\n >\n <MoreHorizIcon />\n </IconButton>\n </Tooltip>\n <MRT_RowActionMenu\n anchorEl={anchorEl}\n handleEdit={handleStartEditMode}\n row={row}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n ) : null}\n </>\n );\n};\n","import React, { ChangeEvent, FC } from 'react';\nimport { Checkbox, Tooltip } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row?: MRT_Row;\n selectAll?: boolean;\n table: MRT_TableInstance;\n}\n\nexport const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll, table }) => {\n const {\n getState,\n options: {\n localization,\n muiSelectCheckboxProps,\n muiSelectAllCheckboxProps,\n selectAllMode,\n },\n } = table;\n const { density } = getState();\n\n const handleSelectChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (selectAll) {\n if (selectAllMode === 'all') {\n table.getToggleAllRowsSelectedHandler()(event as any);\n } else if (selectAllMode === 'page') {\n table.getToggleAllPageRowsSelectedHandler()(event as any);\n }\n } else if (row) {\n row?.getToggleSelectedHandler()(event as any);\n }\n };\n\n const checkboxProps = selectAll\n ? muiSelectAllCheckboxProps instanceof Function\n ? muiSelectAllCheckboxProps({ table })\n : muiSelectAllCheckboxProps\n : muiSelectCheckboxProps instanceof Function\n ? muiSelectCheckboxProps({ row: row as MRT_Row, table })\n : muiSelectCheckboxProps;\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={\n selectAll ? localization.toggleSelectAll : localization.toggleSelectRow\n }\n >\n <Checkbox\n checked={\n selectAll ? table.getIsAllRowsSelected() : row?.getIsSelected()\n }\n indeterminate={\n selectAll ? table.getIsSomeRowsSelected() : row?.getIsSomeSelected()\n }\n inputProps={{\n 'aria-label': selectAll\n ? localization.toggleSelectAll\n : localization.toggleSelectRow,\n }}\n onChange={handleSelectChange}\n size={density === 'compact' ? 'small' : 'medium'}\n {...checkboxProps}\n sx={{\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...checkboxProps?.sx,\n }}\n />\n </Tooltip>\n );\n};\n","// cheap lodash replacements\n\nexport function memoize<T>(fn: () => T): () => T {\n\tlet result: T | null = null\n\tconst memoized = () => {\n\t\tif (result == null) {\n\t\t\tresult = fn()\n\t\t}\n\t\treturn result\n\t}\n\treturn memoized\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without<T>(items: T[], item: T) {\n\treturn items.filter((i) => i !== item)\n}\n\nexport function union<T extends string | number>(itemsA: T[], itemsB: T[]) {\n\tconst set = new Set<T>()\n\tconst insertItem = (item: T) => set.add(item)\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tset.forEach((key) => result.push(key))\n\treturn result\n}\n","import { union, without } from './utils/js_utils.js'\n\ntype NodePredicate = (node: Node | null | undefined) => boolean\n\nexport class EnterLeaveCounter {\n\tprivate entered: any[] = []\n\tprivate isNodeInDocument: NodePredicate\n\n\tpublic constructor(isNodeInDocument: NodePredicate) {\n\t\tthis.isNodeInDocument = isNodeInDocument\n\t}\n\n\tpublic enter(enteringNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tconst isNodeEntered = (node: Node): boolean =>\n\t\t\tthis.isNodeInDocument(node) &&\n\t\t\t(!node.contains || node.contains(enteringNode as Node))\n\n\t\tthis.entered = union(this.entered.filter(isNodeEntered), [enteringNode])\n\n\t\treturn previousLength === 0 && this.entered.length > 0\n\t}\n\n\tpublic leave(leavingNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tthis.entered = without(\n\t\t\tthis.entered.filter(this.isNodeInDocument),\n\t\t\tleavingNode,\n\t\t)\n\n\t\treturn previousLength > 0 && this.entered.length === 0\n\t}\n\n\tpublic reset(): void {\n\t\tthis.entered = []\n\t}\n}\n","import type { DragDropMonitor } from 'dnd-core'\n\nimport type { NativeItemConfig } from './nativeTypesConfig.js'\n\nexport class NativeDragSource {\n\tpublic item: any\n\tprivate config: NativeItemConfig\n\n\tpublic constructor(config: NativeItemConfig) {\n\t\tthis.config = config\n\t\tthis.item = {}\n\t\tthis.initializeExposedProperties()\n\t}\n\n\tprivate initializeExposedProperties() {\n\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\tObject.defineProperty(this.item, property, {\n\t\t\t\tconfigurable: true, // This is needed to allow redefining it later\n\t\t\t\tenumerable: true,\n\t\t\t\tget() {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Browser doesn't allow reading \"${property}\" until the drop event.`,\n\t\t\t\t\t)\n\t\t\t\t\treturn null\n\t\t\t\t},\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic loadDataTransfer(dataTransfer: DataTransfer | null | undefined): void {\n\t\tif (dataTransfer) {\n\t\t\tconst newProperties: PropertyDescriptorMap = {}\n\t\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\t\tconst propertyFn = this.config.exposeProperties[property]\n\t\t\t\tif (propertyFn != null) {\n\t\t\t\t\tnewProperties[property] = {\n\t\t\t\t\t\tvalue: propertyFn(dataTransfer, this.config.matchesTypes),\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tObject.defineProperties(this.item, newProperties)\n\t\t}\n\t}\n\n\tpublic canDrag(): boolean {\n\t\treturn true\n\t}\n\n\tpublic beginDrag(): any {\n\t\treturn this.item\n\t}\n\n\tpublic isDragging(monitor: DragDropMonitor, handle: string): boolean {\n\t\treturn handle === monitor.getSourceId()\n\t}\n\n\tpublic endDrag(): void {\n\t\t// empty\n\t}\n}\n","export const FILE = '__NATIVE_FILE__'\nexport const URL = '__NATIVE_URL__'\nexport const TEXT = '__NATIVE_TEXT__'\nexport const HTML = '__NATIVE_HTML__'\n","export function getDataFromDataTransfer(\n\tdataTransfer: DataTransfer,\n\ttypesToTry: string[],\n\tdefaultValue: string,\n): string {\n\tconst result = typesToTry.reduce(\n\t\t(resultSoFar, typeToTry) => resultSoFar || dataTransfer.getData(typeToTry),\n\t\t'',\n\t)\n\n\treturn result != null ? result : defaultValue\n}\n","import * as NativeTypes from '../NativeTypes.js'\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer.js'\n\nexport interface NativeItemConfigExposePropreties {\n\t[property: string]: (\n\t\tdataTransfer: DataTransfer,\n\t\tmatchesTypes: string[],\n\t) => any\n}\n\nexport interface NativeItemConfig {\n\texposeProperties: NativeItemConfigExposePropreties\n\tmatchesTypes: string[]\n}\n\nexport const nativeTypesConfig: {\n\t[key: string]: NativeItemConfig\n} = {\n\t[NativeTypes.FILE]: {\n\t\texposeProperties: {\n\t\t\tfiles: (dataTransfer: DataTransfer): File[] =>\n\t\t\t\tArray.prototype.slice.call(dataTransfer.files),\n\t\t\titems: (dataTransfer: DataTransfer): DataTransferItemList =>\n\t\t\t\tdataTransfer.items,\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Files'],\n\t},\n\t[NativeTypes.HTML]: {\n\t\texposeProperties: {\n\t\t\thtml: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Html', 'text/html'],\n\t},\n\t[NativeTypes.URL]: {\n\t\texposeProperties: {\n\t\t\turls: (dataTransfer: DataTransfer, matchesTypes: string[]): string[] =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n'),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Url', 'text/uri-list'],\n\t},\n\t[NativeTypes.TEXT]: {\n\t\texposeProperties: {\n\t\t\ttext: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Text', 'text/plain'],\n\t},\n}\n","import { NativeDragSource } from './NativeDragSource.js'\nimport { nativeTypesConfig } from './nativeTypesConfig.js'\n\nexport function createNativeDragSource(\n\ttype: string,\n\tdataTransfer?: DataTransfer,\n): NativeDragSource {\n\tconst config = nativeTypesConfig[type]\n\tif (!config) {\n\t\tthrow new Error(`native type ${type} has no configuration`)\n\t}\n\tconst result = new NativeDragSource(config)\n\tresult.loadDataTransfer(dataTransfer)\n\treturn result\n}\n\nexport function matchNativeItemType(\n\tdataTransfer: DataTransfer | null,\n): string | null {\n\tif (!dataTransfer) {\n\t\treturn null\n\t}\n\n\tconst dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || [])\n\treturn (\n\t\tObject.keys(nativeTypesConfig).filter((nativeItemType) => {\n\t\t\tconst typeConfig = nativeTypesConfig[nativeItemType]\n\t\t\tif (!typeConfig?.matchesTypes) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn typeConfig.matchesTypes.some(\n\t\t\t\t(t) => dataTransferTypes.indexOf(t) > -1,\n\t\t\t)\n\t\t})[0] || null\n\t)\n}\n","import { memoize } from './utils/js_utils.js'\n\ndeclare global {\n\tinterface Window extends HTMLElement {\n\t\tsafari: any\n\t}\n}\n\nexport type Predicate = () => boolean\nexport const isFirefox: Predicate = memoize(() =>\n\t/firefox/i.test(navigator.userAgent),\n)\nexport const isSafari: Predicate = memoize(() => Boolean(window.safari))\n","export class MonotonicInterpolant {\n\tprivate xs: any\n\tprivate ys: any\n\tprivate c1s: any\n\tprivate c2s: any\n\tprivate c3s: any\n\n\tpublic constructor(xs: number[], ys: number[]) {\n\t\tconst { length } = xs\n\n\t\t// Rearrange xs and ys so that xs is sorted\n\t\tconst indexes = []\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tindexes.push(i)\n\t\t}\n\t\tindexes.sort((a, b) => ((xs[a] as number) < (xs[b] as number) ? -1 : 1))\n\n\t\t// Get consecutive differences and slopes\n\t\tconst dys = []\n\t\tconst dxs = []\n\t\tconst ms = []\n\t\tlet dx\n\t\tlet dy\n\t\tfor (let i = 0; i < length - 1; i++) {\n\t\t\tdx = (xs[i + 1] as number) - (xs[i] as number)\n\t\t\tdy = (ys[i + 1] as number) - (ys[i] as number)\n\t\t\tdxs.push(dx)\n\t\t\tdys.push(dy)\n\t\t\tms.push(dy / dx)\n\t\t}\n\n\t\t// Get degree-1 coefficients\n\t\tconst c1s = [ms[0]]\n\t\tfor (let i = 0; i < dxs.length - 1; i++) {\n\t\t\tconst m2 = ms[i] as number\n\t\t\tconst mNext = ms[i + 1] as number\n\t\t\tif (m2 * mNext <= 0) {\n\t\t\t\tc1s.push(0)\n\t\t\t} else {\n\t\t\t\tdx = dxs[i] as number\n\t\t\t\tconst dxNext = dxs[i + 1] as number\n\t\t\t\tconst common = dx + dxNext\n\t\t\t\tc1s.push(\n\t\t\t\t\t(3 * common) / ((common + dxNext) / m2 + (common + dx) / mNext),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tc1s.push(ms[ms.length - 1])\n\n\t\t// Get degree-2 and degree-3 coefficients\n\t\tconst c2s = []\n\t\tconst c3s = []\n\t\tlet m\n\t\tfor (let i = 0; i < c1s.length - 1; i++) {\n\t\t\tm = ms[i] as number\n\t\t\tconst c1 = c1s[i] as number\n\t\t\tconst invDx = 1 / (dxs[i] as number)\n\t\t\tconst common = c1 + (c1s[i + 1] as number) - m - m\n\t\t\tc2s.push((m - c1 - common) * invDx)\n\t\t\tc3s.push(common * invDx * invDx)\n\t\t}\n\n\t\tthis.xs = xs\n\t\tthis.ys = ys\n\t\tthis.c1s = c1s\n\t\tthis.c2s = c2s\n\t\tthis.c3s = c3s\n\t}\n\n\tpublic interpolate(x: number): number {\n\t\tconst { xs, ys, c1s, c2s, c3s } = this\n\n\t\t// The rightmost point in the dataset should give an exact result\n\t\tlet i = xs.length - 1\n\t\tif (x === xs[i]) {\n\t\t\treturn ys[i]\n\t\t}\n\n\t\t// Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\t\tlet low = 0\n\t\tlet high = c3s.length - 1\n\t\tlet mid\n\t\twhile (low <= high) {\n\t\t\tmid = Math.floor(0.5 * (low + high))\n\t\t\tconst xHere = xs[mid]\n\t\t\tif (xHere < x) {\n\t\t\t\tlow = mid + 1\n\t\t\t} else if (xHere > x) {\n\t\t\t\thigh = mid - 1\n\t\t\t} else {\n\t\t\t\treturn ys[mid]\n\t\t\t}\n\t\t}\n\t\ti = Math.max(0, high)\n\n\t\t// Interpolate\n\t\tconst diff = x - xs[i]\n\t\tconst diffSq = diff * diff\n\t\treturn ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq\n\t}\n}\n","import type { XYCoord } from 'dnd-core'\n\nimport { isFirefox, isSafari } from './BrowserDetector.js'\nimport { MonotonicInterpolant } from './MonotonicInterpolant.js'\n\nconst ELEMENT_NODE = 1\n\nexport function getNodeClientOffset(node: Node): XYCoord | null {\n\tconst el = node.nodeType === ELEMENT_NODE ? node : node.parentElement\n\n\tif (!el) {\n\t\treturn null\n\t}\n\n\tconst { top, left } = (el as HTMLElement).getBoundingClientRect()\n\treturn { x: left, y: top }\n}\n\nexport function getEventClientOffset(e: MouseEvent): XYCoord {\n\treturn {\n\t\tx: e.clientX,\n\t\ty: e.clientY,\n\t}\n}\n\nfunction isImageNode(node: any) {\n\treturn (\n\t\tnode.nodeName === 'IMG' &&\n\t\t(isFirefox() || !document.documentElement?.contains(node))\n\t)\n}\n\nfunction getDragPreviewSize(\n\tisImage: boolean,\n\tdragPreview: any,\n\tsourceWidth: number,\n\tsourceHeight: number,\n) {\n\tlet dragPreviewWidth = isImage ? dragPreview.width : sourceWidth\n\tlet dragPreviewHeight = isImage ? dragPreview.height : sourceHeight\n\n\t// Work around @2x coordinate discrepancies in browsers\n\tif (isSafari() && isImage) {\n\t\tdragPreviewHeight /= window.devicePixelRatio\n\t\tdragPreviewWidth /= window.devicePixelRatio\n\t}\n\treturn { dragPreviewWidth, dragPreviewHeight }\n}\n\nexport function getDragPreviewOffset(\n\tsourceNode: HTMLElement,\n\tdragPreview: HTMLElement,\n\tclientOffset: XYCoord,\n\tanchorPoint: { anchorX: number; anchorY: number },\n\toffsetPoint: { offsetX: number; offsetY: number },\n): XYCoord {\n\t// The browsers will use the image intrinsic size under different conditions.\n\t// Firefox only cares if it's an image, but WebKit also wants it to be detached.\n\tconst isImage = isImageNode(dragPreview)\n\tconst dragPreviewNode = isImage ? sourceNode : dragPreview\n\tconst dragPreviewNodeOffsetFromClient = getNodeClientOffset(\n\t\tdragPreviewNode,\n\t) as XYCoord\n\tconst offsetFromDragPreview = {\n\t\tx: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n\t\ty: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n\t}\n\tconst { offsetWidth: sourceWidth, offsetHeight: sourceHeight } = sourceNode\n\tconst { anchorX, anchorY } = anchorPoint\n\tconst { dragPreviewWidth, dragPreviewHeight } = getDragPreviewSize(\n\t\tisImage,\n\t\tdragPreview,\n\t\tsourceWidth,\n\t\tsourceHeight,\n\t)\n\n\tconst calculateYOffset = () => {\n\t\tconst interpolantY = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the top\n\t\t\t\toffsetFromDragPreview.y,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n\t\t\t\t// Dock to the bottom\n\t\t\t\toffsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n\t\t\t],\n\t\t)\n\t\tlet y = interpolantY.interpolate(anchorY)\n\t\t// Work around Safari 8 positioning bug\n\t\tif (isSafari() && isImage) {\n\t\t\t// We'll have to wait for @3x to see if this is entirely correct\n\t\t\ty += (window.devicePixelRatio - 1) * dragPreviewHeight\n\t\t}\n\t\treturn y\n\t}\n\n\tconst calculateXOffset = () => {\n\t\t// Interpolate coordinates depending on anchor point\n\t\t// If you know a simpler way to do this, let me know\n\t\tconst interpolantX = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the left\n\t\t\t\toffsetFromDragPreview.x,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n\t\t\t\t// Dock to the right\n\t\t\t\toffsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n\t\t\t],\n\t\t)\n\t\treturn interpolantX.interpolate(anchorX)\n\t}\n\n\t// Force offsets if specified in the options.\n\tconst { offsetX, offsetY } = offsetPoint\n\tconst isManualOffsetX = offsetX === 0 || offsetX\n\tconst isManualOffsetY = offsetY === 0 || offsetY\n\treturn {\n\t\tx: isManualOffsetX ? offsetX : calculateXOffset(),\n\t\ty: isManualOffsetY ? offsetY : calculateYOffset(),\n\t}\n}\n","import type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport class OptionsReader {\n\tpublic ownerDocument: Document | null = null\n\tprivate globalContext: HTML5BackendContext\n\tprivate optionsArgs: HTML5BackendOptions | undefined\n\n\tpublic constructor(\n\t\tglobalContext: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.globalContext = globalContext\n\t\tthis.optionsArgs = options\n\t}\n\n\tpublic get window(): Window | undefined {\n\t\tif (this.globalContext) {\n\t\t\treturn this.globalContext\n\t\t} else if (typeof window !== 'undefined') {\n\t\t\treturn window\n\t\t}\n\t\treturn undefined\n\t}\n\n\tpublic get document(): Document | undefined {\n\t\tif (this.globalContext?.document) {\n\t\t\treturn this.globalContext.document\n\t\t} else if (this.window) {\n\t\t\treturn this.window.document\n\t\t} else {\n\t\t\treturn undefined\n\t\t}\n\t}\n\n\tpublic get rootElement(): Node | undefined {\n\t\treturn this.optionsArgs?.rootElement || this.window\n\t}\n}\n","import type {\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport { EnterLeaveCounter } from './EnterLeaveCounter.js'\nimport {\n\tcreateNativeDragSource,\n\tmatchNativeItemType,\n} from './NativeDragSources/index.js'\nimport type { NativeDragSource } from './NativeDragSources/NativeDragSource.js'\nimport * as NativeTypes from './NativeTypes.js'\nimport {\n\tgetDragPreviewOffset,\n\tgetEventClientOffset,\n\tgetNodeClientOffset,\n} from './OffsetUtils.js'\nimport { OptionsReader } from './OptionsReader.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\ntype RootNode = Node & { __isReactDndBackendSetUp: boolean | undefined }\n\nexport class HTML5BackendImpl implements Backend {\n\tprivate options: OptionsReader\n\n\t// React-Dnd Components\n\tprivate actions: DragDropActions\n\tprivate monitor: DragDropMonitor\n\tprivate registry: HandlerRegistry\n\n\t// Internal State\n\tprivate enterLeaveCounter: EnterLeaveCounter\n\n\tprivate sourcePreviewNodes: Map<string, Element> = new Map()\n\tprivate sourcePreviewNodeOptions: Map<string, any> = new Map()\n\tprivate sourceNodes: Map<string, Element> = new Map()\n\tprivate sourceNodeOptions: Map<string, any> = new Map()\n\n\tprivate dragStartSourceIds: string[] | null = null\n\tprivate dropTargetIds: string[] = []\n\tprivate dragEnterTargetIds: string[] = []\n\tprivate currentNativeSource: NativeDragSource | null = null\n\tprivate currentNativeHandle: Identifier | null = null\n\tprivate currentDragSourceNode: Element | null = null\n\tprivate altKeyPressed = false\n\tprivate mouseMoveTimeoutTimer: number | null = null\n\tprivate asyncEndDragFrameId: number | null = null\n\tprivate dragOverTargetIds: string[] | null = null\n\n\tprivate lastClientOffset: XYCoord | null = null\n\tprivate hoverRafId: number | null = null\n\n\tpublic constructor(\n\t\tmanager: DragDropManager,\n\t\tglobalContext?: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.options = new OptionsReader(globalContext, options)\n\t\tthis.actions = manager.getActions()\n\t\tthis.monitor = manager.getMonitor()\n\t\tthis.registry = manager.getRegistry()\n\t\tthis.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument)\n\t}\n\n\t/**\n\t * Generate profiling statistics for the HTML5Backend.\n\t */\n\tpublic profile(): Record<string, number> {\n\t\treturn {\n\t\t\tsourcePreviewNodes: this.sourcePreviewNodes.size,\n\t\t\tsourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n\t\t\tsourceNodeOptions: this.sourceNodeOptions.size,\n\t\t\tsourceNodes: this.sourceNodes.size,\n\t\t\tdragStartSourceIds: this.dragStartSourceIds?.length || 0,\n\t\t\tdropTargetIds: this.dropTargetIds.length,\n\t\t\tdragEnterTargetIds: this.dragEnterTargetIds.length,\n\t\t\tdragOverTargetIds: this.dragOverTargetIds?.length || 0,\n\t\t}\n\t}\n\n\t// public for test\n\tpublic get window(): Window | undefined {\n\t\treturn this.options.window\n\t}\n\tpublic get document(): Document | undefined {\n\t\treturn this.options.document\n\t}\n\t/**\n\t * Get the root element to use for event subscriptions\n\t */\n\tprivate get rootElement(): Node | undefined {\n\t\treturn this.options.rootElement as Node\n\t}\n\n\tpublic setup(): void {\n\t\tconst root = this.rootElement as RootNode | undefined\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tif (root.__isReactDndBackendSetUp) {\n\t\t\tthrow new Error('Cannot have two HTML5 backends at the same time.')\n\t\t}\n\t\troot.__isReactDndBackendSetUp = true\n\t\tthis.addEventListeners(root)\n\t}\n\n\tpublic teardown(): void {\n\t\tconst root = this.rootElement as RootNode\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\troot.__isReactDndBackendSetUp = false\n\t\tthis.removeEventListeners(this.rootElement as Element)\n\t\tthis.clearCurrentDragSourceNode()\n\t\tif (this.asyncEndDragFrameId) {\n\t\t\tthis.window?.cancelAnimationFrame(this.asyncEndDragFrameId)\n\t\t}\n\t}\n\n\tpublic connectDragPreview(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourcePreviewNodeOptions.set(sourceId, options)\n\t\tthis.sourcePreviewNodes.set(sourceId, node)\n\n\t\treturn (): void => {\n\t\t\tthis.sourcePreviewNodes.delete(sourceId)\n\t\t\tthis.sourcePreviewNodeOptions.delete(sourceId)\n\t\t}\n\t}\n\n\tpublic connectDragSource(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourceNodes.set(sourceId, node)\n\t\tthis.sourceNodeOptions.set(sourceId, options)\n\n\t\tconst handleDragStart = (e: any) => this.handleDragStart(e, sourceId)\n\t\tconst handleSelectStart = (e: any) => this.handleSelectStart(e)\n\n\t\tnode.setAttribute('draggable', 'true')\n\t\tnode.addEventListener('dragstart', handleDragStart)\n\t\tnode.addEventListener('selectstart', handleSelectStart)\n\n\t\treturn (): void => {\n\t\t\tthis.sourceNodes.delete(sourceId)\n\t\t\tthis.sourceNodeOptions.delete(sourceId)\n\n\t\t\tnode.removeEventListener('dragstart', handleDragStart)\n\t\t\tnode.removeEventListener('selectstart', handleSelectStart)\n\t\t\tnode.setAttribute('draggable', 'false')\n\t\t}\n\t}\n\n\tpublic connectDropTarget(targetId: string, node: HTMLElement): Unsubscribe {\n\t\tconst handleDragEnter = (e: DragEvent) => this.handleDragEnter(e, targetId)\n\t\tconst handleDragOver = (e: DragEvent) => this.handleDragOver(e, targetId)\n\t\tconst handleDrop = (e: DragEvent) => this.handleDrop(e, targetId)\n\n\t\tnode.addEventListener('dragenter', handleDragEnter)\n\t\tnode.addEventListener('dragover', handleDragOver)\n\t\tnode.addEventListener('drop', handleDrop)\n\n\t\treturn (): void => {\n\t\t\tnode.removeEventListener('dragenter', handleDragEnter)\n\t\t\tnode.removeEventListener('dragover', handleDragOver)\n\t\t\tnode.removeEventListener('drop', handleDrop)\n\t\t}\n\t}\n\n\tprivate addEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.addEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.addEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStart as EventListener,\n\t\t)\n\t\ttarget.addEventListener('dragstart', this.handleTopDragStartCapture, true)\n\t\ttarget.addEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('dragover', this.handleTopDragOver as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate removeEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.removeEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.removeEventListener('dragstart', this.handleTopDragStart as any)\n\t\ttarget.removeEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStartCapture,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOver as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.removeEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate getCurrentSourceNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourceNodeOptions = this.sourceNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tdropEffect: this.altKeyPressed ? 'copy' : 'move',\n\t\t\t...(sourceNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getCurrentDropEffect() {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\t// It makes more sense to default to 'copy' for native resources\n\t\t\treturn 'copy'\n\t\t}\n\n\t\treturn this.getCurrentSourceNodeOptions().dropEffect\n\t}\n\n\tprivate getCurrentSourcePreviewNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tanchorX: 0.5,\n\t\t\tanchorY: 0.5,\n\t\t\tcaptureDraggingState: false,\n\t\t\t...(sourcePreviewNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getSourceClientOffset = (sourceId: string): XYCoord | null => {\n\t\tconst source = this.sourceNodes.get(sourceId)\n\t\treturn (source && getNodeClientOffset(source as HTMLElement)) || null\n\t}\n\n\tprivate isDraggingNativeItem() {\n\t\tconst itemType = this.monitor.getItemType()\n\t\treturn Object.keys(NativeTypes).some(\n\t\t\t(key: string) => (NativeTypes as any)[key] === itemType,\n\t\t)\n\t}\n\n\tprivate beginDragNativeItem(type: string, dataTransfer?: DataTransfer) {\n\t\tthis.clearCurrentDragSourceNode()\n\n\t\tthis.currentNativeSource = createNativeDragSource(type, dataTransfer)\n\t\tthis.currentNativeHandle = this.registry.addSource(\n\t\t\ttype,\n\t\t\tthis.currentNativeSource,\n\t\t)\n\t\tthis.actions.beginDrag([this.currentNativeHandle])\n\t}\n\n\tprivate endDragNativeItem = (): void => {\n\t\tif (!this.isDraggingNativeItem()) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.actions.endDrag()\n\t\tif (this.currentNativeHandle) {\n\t\t\tthis.registry.removeSource(this.currentNativeHandle)\n\t\t}\n\t\tthis.currentNativeHandle = null\n\t\tthis.currentNativeSource = null\n\t}\n\n\tprivate isNodeInDocument = (node: Node | null | undefined): boolean => {\n\t\t// Check the node either in the main document or in the current context\n\t\treturn Boolean(\n\t\t\tnode &&\n\t\t\t\tthis.document &&\n\t\t\t\tthis.document.body &&\n\t\t\t\tthis.document.body.contains(node),\n\t\t)\n\t}\n\n\tprivate endDragIfSourceWasRemovedFromDOM = (): void => {\n\t\tconst node = this.currentDragSourceNode\n\t\tif (node == null || this.isNodeInDocument(node)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tprivate setCurrentDragSourceNode(node: Element | null) {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.currentDragSourceNode = node\n\n\t\t// A timeout of > 0 is necessary to resolve Firefox issue referenced\n\t\t// See:\n\t\t// * https://github.com/react-dnd/react-dnd/pull/928\n\t\t// * https://github.com/react-dnd/react-dnd/issues/869\n\t\tconst MOUSE_MOVE_TIMEOUT = 1000\n\n\t\t// Receiving a mouse event in the middle of a dragging operation\n\t\t// means it has ended and the drag source node disappeared from DOM,\n\t\t// so the browser didn't dispatch the dragend event.\n\t\t//\n\t\t// We need to wait before we start listening for mousemove events.\n\t\t// This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n\t\t// immediately in some browsers.\n\t\t//\n\t\t// See:\n\t\t// * https://github.com/react-dnd/react-dnd/pull/928\n\t\t// * https://github.com/react-dnd/react-dnd/issues/869\n\t\t//\n\t\tthis.mouseMoveTimeoutTimer = setTimeout(() => {\n\t\t\treturn this.rootElement?.addEventListener(\n\t\t\t\t'mousemove',\n\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\ttrue,\n\t\t\t)\n\t\t}, MOUSE_MOVE_TIMEOUT) as any as number\n\t}\n\n\tprivate clearCurrentDragSourceNode() {\n\t\tif (this.currentDragSourceNode) {\n\t\t\tthis.currentDragSourceNode = null\n\n\t\t\tif (this.rootElement) {\n\t\t\t\tthis.window?.clearTimeout(this.mouseMoveTimeoutTimer || undefined)\n\t\t\t\tthis.rootElement.removeEventListener(\n\t\t\t\t\t'mousemove',\n\t\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\t\ttrue,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.mouseMoveTimeoutTimer = null\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate scheduleHover = (dragOverTargetIds: string[] | null) => {\n\t\tif (\n\t\t\tthis.hoverRafId === null &&\n\t\t\ttypeof requestAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tthis.hoverRafId = requestAnimationFrame(() => {\n\t\t\t\tif (this.monitor.isDragging()) {\n\t\t\t\t\tthis.actions.hover(dragOverTargetIds || [], {\n\t\t\t\t\t\tclientOffset: this.lastClientOffset,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.hoverRafId = null\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate cancelHover = () => {\n\t\tif (\n\t\t\tthis.hoverRafId !== null &&\n\t\t\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tcancelAnimationFrame(this.hoverRafId)\n\t\t\tthis.hoverRafId = null\n\t\t}\n\t}\n\n\tpublic handleTopDragStartCapture = (): void => {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.dragStartSourceIds = []\n\t}\n\n\tpublic handleDragStart(e: DragEvent, sourceId: string): void {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.dragStartSourceIds) {\n\t\t\tthis.dragStartSourceIds = []\n\t\t}\n\t\tthis.dragStartSourceIds.unshift(sourceId)\n\t}\n\n\tpublic handleTopDragStart = (e: DragEvent): void => {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dragStartSourceIds } = this\n\t\tthis.dragStartSourceIds = null\n\n\t\tconst clientOffset = getEventClientOffset(e)\n\n\t\t// Avoid crashing if we missed a drop event or our previous drag died\n\t\tif (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t\tthis.cancelHover()\n\t\t}\n\n\t\t// Don't publish the source just yet (see why below)\n\t\tthis.actions.beginDrag(dragStartSourceIds || [], {\n\t\t\tpublishSource: false,\n\t\t\tgetSourceClientOffset: this.getSourceClientOffset,\n\t\t\tclientOffset,\n\t\t})\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (this.monitor.isDragging()) {\n\t\t\tif (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n\t\t\t\t// Use custom drag image if user specifies it.\n\t\t\t\t// If child drag source refuses drag but parent agrees,\n\t\t\t\t// use parent's node as drag image. Neither works in IE though.\n\t\t\t\tconst sourceId: string = this.monitor.getSourceId() as string\n\t\t\t\tconst sourceNode = this.sourceNodes.get(sourceId)\n\t\t\t\tconst dragPreview = this.sourcePreviewNodes.get(sourceId) || sourceNode\n\n\t\t\t\tif (dragPreview) {\n\t\t\t\t\tconst { anchorX, anchorY, offsetX, offsetY } =\n\t\t\t\t\t\tthis.getCurrentSourcePreviewNodeOptions()\n\t\t\t\t\tconst anchorPoint = { anchorX, anchorY }\n\t\t\t\t\tconst offsetPoint = { offsetX, offsetY }\n\t\t\t\t\tconst dragPreviewOffset = getDragPreviewOffset(\n\t\t\t\t\t\tsourceNode as HTMLElement,\n\t\t\t\t\t\tdragPreview as HTMLElement,\n\t\t\t\t\t\tclientOffset,\n\t\t\t\t\t\tanchorPoint,\n\t\t\t\t\t\toffsetPoint,\n\t\t\t\t\t)\n\n\t\t\t\t\tdataTransfer.setDragImage(\n\t\t\t\t\t\tdragPreview,\n\t\t\t\t\t\tdragPreviewOffset.x,\n\t\t\t\t\t\tdragPreviewOffset.y,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Firefox won't drag without setting data\n\t\t\t\tdataTransfer?.setData('application/json', {} as any)\n\t\t\t} catch (err) {\n\t\t\t\t// IE doesn't support MIME types in setData\n\t\t\t}\n\n\t\t\t// Store drag source node so we can check whether\n\t\t\t// it is removed from DOM and trigger endDrag manually.\n\t\t\tthis.setCurrentDragSourceNode(e.target as Element)\n\n\t\t\t// Now we are ready to publish the drag source.. or are we not?\n\t\t\tconst { captureDraggingState } = this.getCurrentSourcePreviewNodeOptions()\n\t\t\tif (!captureDraggingState) {\n\t\t\t\t// Usually we want to publish it in the next tick so that browser\n\t\t\t\t// is able to screenshot the current (not yet dragging) state.\n\t\t\t\t//\n\t\t\t\t// It also neatly avoids a situation where render() returns null\n\t\t\t\t// in the same tick for the source element, and browser freaks out.\n\t\t\t\tsetTimeout(() => this.actions.publishDragSource(), 0)\n\t\t\t} else {\n\t\t\t\t// In some cases the user may want to override this behavior, e.g.\n\t\t\t\t// to work around IE not supporting custom drag previews.\n\t\t\t\t//\n\t\t\t\t// When using a custom drag layer, the only way to prevent\n\t\t\t\t// the default drag preview from drawing in IE is to screenshot\n\t\t\t\t// the dragging state in which the node itself has zero opacity\n\t\t\t\t// and height. In this case, though, returning null from render()\n\t\t\t\t// will abruptly end the dragging, which is not obvious.\n\t\t\t\t//\n\t\t\t\t// This is the reason such behavior is strictly opt-in.\n\t\t\t\tthis.actions.publishDragSource()\n\t\t\t}\n\t\t} else if (nativeType) {\n\t\t\t// A native item (such as URL) dragged from inside the document\n\t\t\tthis.beginDragNativeItem(nativeType)\n\t\t} else if (\n\t\t\tdataTransfer &&\n\t\t\t!dataTransfer.types &&\n\t\t\t((e.target && !(e.target as Element).hasAttribute) ||\n\t\t\t\t!(e.target as Element).hasAttribute('draggable'))\n\t\t) {\n\t\t\t// Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n\t\t\t// Just let it drag. It's a native type (URL or text) and will be picked up in\n\t\t\t// dragenter handler.\n\t\t\treturn\n\t\t} else {\n\t\t\t// If by this time no drag source reacted, tell browser not to drag.\n\t\t\te.preventDefault()\n\t\t}\n\t}\n\n\tpublic handleTopDragEndCapture = (): void => {\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\t// Firefox can dispatch this event in an infinite loop\n\t\t\t// if dragend handler does something like showing an alert.\n\t\t\t// Only proceed if we have not handled it already.\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDragEnterCapture = (e: DragEvent): void => {\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\n\t\tconst isFirstEnter = this.enterLeaveCounter.enter(e.target)\n\t\tif (!isFirstEnter || this.monitor.isDragging()) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (nativeType) {\n\t\t\t// A native item (such as file or URL) dragged from outside the document\n\t\t\tthis.beginDragNativeItem(nativeType, dataTransfer as DataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragEnter(_e: DragEvent, targetId: string): void {\n\t\tthis.dragEnterTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragEnter = (e: DragEvent): void => {\n\t\tconst { dragEnterTargetIds } = this\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\n\t\t// If the target changes position as the result of `dragenter`, `dragover` might still\n\t\t// get dispatched despite target being no longer there. The easy solution is to check\n\t\t// whether there actually is a target before firing `hover`.\n\t\tif (dragEnterTargetIds.length > 0) {\n\t\t\tthis.actions.hover(dragEnterTargetIds, {\n\t\t\t\tclientOffset: getEventClientOffset(e),\n\t\t\t})\n\t\t}\n\n\t\tconst canDrop = dragEnterTargetIds.some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// IE requires this to fire dragover events\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragOverCapture = (e: DragEvent): void => {\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragOver(_e: DragEvent, targetId: string): void {\n\t\tif (this.dragOverTargetIds === null) {\n\t\t\tthis.dragOverTargetIds = []\n\t\t}\n\t\tthis.dragOverTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragOver = (e: DragEvent): void => {\n\t\tconst { dragOverTargetIds } = this\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\t// Prevent default \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\t\tthis.lastClientOffset = getEventClientOffset(e)\n\n\t\tthis.scheduleHover(dragOverTargetIds)\n\n\t\tconst canDrop = (dragOverTargetIds || []).some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// Show user-specified drop effect.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t} else if (this.isDraggingNativeItem()) {\n\t\t\t// Don't show a nice cursor but still prevent default\n\t\t\t// \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t} else {\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragLeaveCapture = (e: DragEvent): void => {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tconst isLastLeave = this.enterLeaveCounter.leave(e.target)\n\t\tif (!isLastLeave) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tsetTimeout(() => this.endDragNativeItem(), 0)\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDropCapture = (e: DragEvent): void => {\n\t\tthis.dropTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t} else if (matchNativeItemType(e.dataTransfer)) {\n\t\t\t// Dragging some elements, like <a> and <img> may still behave like a native drag event,\n\t\t\t// even if the current drag event matches a user-defined type.\n\t\t\t// Stop the default behavior when we're not expecting a native item to be dropped.\n\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tthis.enterLeaveCounter.reset()\n\t}\n\n\tpublic handleDrop(_e: DragEvent, targetId: string): void {\n\t\tthis.dropTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDrop = (e: DragEvent): void => {\n\t\tconst { dropTargetIds } = this\n\t\tthis.dropTargetIds = []\n\n\t\tthis.actions.hover(dropTargetIds, {\n\t\t\tclientOffset: getEventClientOffset(e),\n\t\t})\n\t\tthis.actions.drop({ dropEffect: this.getCurrentDropEffect() })\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.endDragNativeItem()\n\t\t} else if (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleSelectStart = (e: DragEvent): void => {\n\t\tconst target = e.target as HTMLElement & { dragDrop: () => void }\n\n\t\t// Only IE requires us to explicitly say\n\t\t// we want drag drop operation to start\n\t\tif (typeof target.dragDrop !== 'function') {\n\t\t\treturn\n\t\t}\n\n\t\t// Inputs and textareas should be selectable\n\t\tif (\n\t\t\ttarget.tagName === 'INPUT' ||\n\t\t\ttarget.tagName === 'SELECT' ||\n\t\t\ttarget.tagName === 'TEXTAREA' ||\n\t\t\ttarget.isContentEditable\n\t\t) {\n\t\t\treturn\n\t\t}\n\n\t\t// For other targets, ask IE\n\t\t// to enable drag and drop\n\t\te.preventDefault()\n\t\ttarget.dragDrop()\n\t}\n}\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\n\nimport { HTML5BackendImpl } from './HTML5BackendImpl.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\nexport { getEmptyImage } from './getEmptyImage.js'\nexport * as NativeTypes from './NativeTypes.js'\nexport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport const HTML5Backend: BackendFactory = function createBackend(\n\tmanager: DragDropManager,\n\tcontext?: HTML5BackendContext,\n\toptions?: HTML5BackendOptions,\n): HTML5BackendImpl {\n\treturn new HTML5BackendImpl(manager, context, options)\n}\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_FullScreenToggleButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { FullscreenExitIcon, FullscreenIcon },\n localization,\n },\n setIsFullScreen,\n } = table;\n const { isFullScreen } = getState();\n\n const handleToggleFullScreen = () => {\n setIsFullScreen(!isFullScreen);\n };\n\n return (\n <Tooltip arrow title={localization.toggleFullScreen}>\n <IconButton\n aria-label={localization.showHideFilters}\n onClick={handleToggleFullScreen}\n {...rest}\n >\n {isFullScreen ? <FullscreenExitIcon /> : <FullscreenIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, { FC, MouseEvent, useState } from 'react';\nimport { IconButton, Tooltip, IconButtonProps } from '@mui/material';\nimport { MRT_ShowHideColumnsMenu } from '../menus/MRT_ShowHideColumnsMenu';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsButton: FC<Props> = ({ table, ...rest }) => {\n const {\n options: {\n icons: { ViewColumnIcon },\n localization,\n },\n } = table;\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n return (\n <>\n <Tooltip arrow title={localization.showHideColumns}>\n <IconButton\n aria-label={localization.showHideColumns}\n onClick={handleClick}\n {...rest}\n >\n <ViewColumnIcon />\n </IconButton>\n </Tooltip>\n <MRT_ShowHideColumnsMenu\n anchorEl={anchorEl}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleDensePaddingButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { DensityLargeIcon, DensityMediumIcon, DensitySmallIcon },\n localization,\n },\n setDensity,\n } = table;\n const { density } = getState();\n\n const handleToggleDensePadding = () => {\n const nextDensity =\n density === 'comfortable'\n ? 'compact'\n : density === 'compact'\n ? 'spacious'\n : 'comfortable';\n setDensity(nextDensity);\n };\n\n return (\n <Tooltip arrow title={localization.toggleDensity}>\n <IconButton\n aria-label={localization.toggleDensity}\n onClick={handleToggleDensePadding}\n {...rest}\n >\n {density === 'compact' ? (\n <DensitySmallIcon />\n ) : density === 'comfortable' ? (\n <DensityMediumIcon />\n ) : (\n <DensityLargeIcon />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleFiltersButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { FilterListIcon, FilterListOffIcon },\n localization,\n },\n setShowFilters,\n } = table;\n const { showFilters } = getState();\n\n const handleToggleShowFilters = () => {\n setShowFilters(!showFilters);\n };\n\n return (\n <Tooltip arrow title={localization.showHideFilters}>\n <IconButton\n aria-label={localization.showHideFilters}\n onClick={handleToggleShowFilters}\n {...rest}\n >\n {showFilters ? <FilterListOffIcon /> : <FilterListIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleGlobalFilterButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { SearchIcon, SearchOffIcon },\n tableId,\n localization,\n muiSearchTextFieldProps,\n },\n setShowGlobalFilter,\n } = table;\n const { showGlobalFilter } = getState();\n\n const textFieldProps =\n muiSearchTextFieldProps instanceof Function\n ? muiSearchTextFieldProps({ table })\n : muiSearchTextFieldProps;\n\n const handleToggleSearch = () => {\n setShowGlobalFilter(!showGlobalFilter);\n setTimeout(\n () =>\n document\n .getElementById(\n textFieldProps?.id ?? `mrt-${tableId}-search-text-field`,\n )\n ?.focus(),\n 200,\n );\n };\n\n return (\n <Tooltip arrow title={localization.showHideSearch}>\n <IconButton onClick={handleToggleSearch} {...rest}>\n {showGlobalFilter ? <SearchOffIcon /> : <SearchIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, {\n ChangeEvent,\n FC,\n MouseEvent,\n useCallback,\n useState,\n} from 'react';\nimport {\n Collapse,\n debounce,\n IconButton,\n InputAdornment,\n TextField,\n Tooltip,\n} from '@mui/material';\nimport { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_GlobalFilterTextField: FC<Props> = ({ table }) => {\n const {\n getState,\n setGlobalFilter,\n options: {\n enableGlobalFilterChangeMode,\n icons: { SearchIcon, CloseIcon },\n localization,\n muiSearchTextFieldProps,\n tableId,\n },\n } = table;\n const { globalFilter, showGlobalFilter } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const [searchValue, setSearchValue] = useState(globalFilter ?? '');\n\n const handleChangeDebounced = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n setGlobalFilter(event.target.value ?? undefined);\n }, 250),\n [],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n handleChangeDebounced(event);\n };\n\n const handleGlobalFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClear = () => {\n setSearchValue('');\n setGlobalFilter(undefined);\n };\n\n const textFieldProps =\n muiSearchTextFieldProps instanceof Function\n ? muiSearchTextFieldProps({ table })\n : muiSearchTextFieldProps;\n\n return (\n <Collapse in={showGlobalFilter} orientation=\"horizontal\">\n <TextField\n id={`mrt-${tableId}-search-text-field`}\n placeholder={localization.search}\n onChange={handleChange}\n value={searchValue ?? ''}\n variant=\"standard\"\n InputProps={{\n startAdornment: enableGlobalFilterChangeMode ? (\n <InputAdornment position=\"start\">\n <Tooltip arrow title={localization.changeSearchMode}>\n <IconButton\n aria-label={localization.changeSearchMode}\n onClick={handleGlobalFilterMenuOpen}\n size=\"small\"\n sx={{ height: '1.75rem', width: '1.75rem' }}\n >\n <SearchIcon />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ) : (\n <SearchIcon />\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <Tooltip arrow title={localization.clearSearch ?? ''}>\n <span>\n <IconButton\n aria-label={localization.clearSearch}\n disabled={!searchValue?.length}\n onClick={handleClear}\n size=\"small\"\n >\n <CloseIcon />\n </IconButton>\n </span>\n </Tooltip>\n </InputAdornment>\n ),\n }}\n {...textFieldProps}\n />\n <MRT_FilterOptionMenu\n anchorEl={anchorEl}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </Collapse>\n );\n};\n","import React, { FC } from 'react';\nimport { Box } from '@mui/material';\nimport { MRT_FullScreenToggleButton } from '../buttons/MRT_FullScreenToggleButton';\nimport { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';\nimport { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';\nimport { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';\nimport { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';\nimport { MRT_TableInstance } from '..';\nimport { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarInternalButtons: FC<Props> = ({ table }) => {\n const {\n options: {\n enableColumnFilters,\n enableColumnOrdering,\n enableDensityToggle,\n enableFilters,\n enableFullScreenToggle,\n enableGlobalFilter,\n enableHiding,\n enablePinning,\n positionGlobalFilter,\n renderToolbarInternalActions,\n },\n } = table;\n\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n zIndex: 3,\n }}\n >\n {renderToolbarInternalActions?.({\n MRT_FullScreenToggleButton,\n MRT_ShowHideColumnsButton,\n MRT_ToggleDensePaddingButton,\n MRT_ToggleFiltersButton,\n MRT_ToggleGlobalFilterButton,\n table,\n }) ?? (\n <>\n {enableGlobalFilter && positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField table={table} />\n )}\n {enableFilters && enableGlobalFilter && (\n <MRT_ToggleGlobalFilterButton table={table} />\n )}\n {enableFilters && enableColumnFilters && (\n <MRT_ToggleFiltersButton table={table} />\n )}\n {(enableHiding || enableColumnOrdering || enablePinning) && (\n <MRT_ShowHideColumnsButton table={table} />\n )}\n {enableDensityToggle && (\n <MRT_ToggleDensePaddingButton table={table} />\n )}\n {enableFullScreenToggle && (\n <MRT_FullScreenToggleButton table={table} />\n )}\n </>\n )}\n </Box>\n );\n};\n","import React, { ChangeEvent, FC } from 'react';\nimport { TablePagination } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n position: 'top' | 'bottom';\n}\n\nexport const MRT_TablePagination: FC<Props> = ({ table, position }) => {\n const {\n getPrePaginationRowModel,\n getState,\n setPageIndex,\n setPageSize,\n options: {\n muiTablePaginationProps,\n enableToolbarInternalActions,\n rowCount,\n },\n } = table;\n const {\n pagination: { pageSize = 10, pageIndex = 0 },\n showGlobalFilter,\n } = getState();\n\n const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;\n const showFirstLastPageButtons = totalRowCount / pageSize > 2;\n\n const tablePaginationProps =\n muiTablePaginationProps instanceof Function\n ? muiTablePaginationProps({ table })\n : muiTablePaginationProps;\n\n const handleChangeRowsPerPage = (event: ChangeEvent<HTMLInputElement>) => {\n setPageSize(+event.target.value);\n };\n\n return (\n <TablePagination\n SelectProps={{\n sx: { m: '0 1rem 0 1ch' },\n MenuProps: { MenuListProps: { disablePadding: true } },\n }}\n component=\"div\"\n count={totalRowCount}\n onPageChange={(_: any, newPage: number) => setPageIndex(newPage)}\n onRowsPerPageChange={handleChangeRowsPerPage}\n page={pageIndex}\n rowsPerPage={pageSize}\n rowsPerPageOptions={[5, 10, 15, 20, 25, 30, 50, 100]}\n showFirstButton={showFirstLastPageButtons}\n showLastButton={showFirstLastPageButtons}\n {...tablePaginationProps}\n sx={{\n m: '0 0.5rem',\n mt:\n position === 'top' &&\n enableToolbarInternalActions &&\n !showGlobalFilter\n ? '3.5rem'\n : undefined,\n position: 'relative',\n zIndex: 2,\n ...tablePaginationProps?.sx,\n }}\n />\n );\n};\n","import React, { FC, Fragment } from 'react';\nimport { Alert, AlertTitle, Box, Chip, Collapse } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n stackAlertBanner?: boolean;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarAlertBanner: FC<Props> = ({\n stackAlertBanner,\n table,\n}) => {\n const {\n getPrePaginationRowModel,\n getSelectedRowModel,\n getState,\n options: { localization, muiTableToolbarAlertBannerProps },\n } = table;\n const { grouping, showAlertBanner } = getState();\n\n const alertProps =\n muiTableToolbarAlertBannerProps instanceof Function\n ? muiTableToolbarAlertBannerProps({ table })\n : muiTableToolbarAlertBannerProps;\n\n const selectMessage =\n getSelectedRowModel().rows.length > 0\n ? localization.selectedCountOfRowCountRowsSelected\n ?.replace(\n '{selectedCount}',\n getSelectedRowModel().rows.length.toString(),\n )\n ?.replace(\n '{rowCount}',\n getPrePaginationRowModel().rows.length.toString(),\n )\n : null;\n\n const groupedByMessage =\n grouping.length > 0 ? (\n <span>\n {localization.groupedBy}{' '}\n {grouping.map((columnId, index) => (\n <Fragment key={`${index}-${columnId}`}>\n {index > 0 ? localization.thenBy : ''}\n <Chip\n color=\"secondary\"\n label={table.getColumn(columnId).columnDef.header}\n onDelete={() => table.getColumn(columnId).toggleGrouping()}\n />\n </Fragment>\n ))}\n </span>\n ) : null;\n\n return (\n <Collapse\n in={showAlertBanner || !!selectMessage || !!groupedByMessage}\n timeout={stackAlertBanner ? 200 : 0}\n >\n <Alert\n color=\"info\"\n icon={false}\n {...alertProps}\n sx={{\n borderRadius: 0,\n fontSize: '1rem',\n left: 0,\n p: 0,\n position: 'relative',\n right: 0,\n top: 0,\n width: '100%',\n zIndex: 2,\n ...alertProps?.sx,\n }}\n >\n {alertProps?.title && <AlertTitle>{alertProps.title}</AlertTitle>}\n <Box sx={{ p: '0.5rem 1rem' }}>\n {alertProps?.children}\n {alertProps?.children && (selectMessage || groupedByMessage) && (\n <br />\n )}\n {selectMessage}\n {selectMessage && groupedByMessage && <br />}\n {groupedByMessage}\n </Box>\n </Alert>\n </Collapse>\n );\n};\n","import React, { FC } from 'react';\nimport { Collapse, LinearProgress } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n alignTo: 'bottom' | 'top';\n table: MRT_TableInstance;\n}\n\nexport const MRT_LinearProgressBar: FC<Props> = ({ alignTo, table }) => {\n const {\n options: { muiLinearProgressProps },\n getState,\n } = table;\n const { isLoading, showProgressBars } = getState();\n\n const linearProgressProps =\n muiLinearProgressProps instanceof Function\n ? muiLinearProgressProps({ table })\n : muiLinearProgressProps;\n\n return (\n <Collapse\n in={isLoading || showProgressBars}\n mountOnEnter\n unmountOnExit\n sx={{\n bottom: alignTo === 'bottom' ? 0 : undefined,\n position: 'absolute',\n top: alignTo === 'top' ? 0 : undefined,\n width: '100%',\n }}\n >\n <LinearProgress\n aria-label=\"Loading\"\n aria-busy=\"true\"\n sx={{ position: 'relative' }}\n {...linearProgressProps}\n />\n </Collapse>\n );\n};\n","import React, { FC } from 'react';\nimport { Box, lighten, Theme, Toolbar, useMediaQuery } from '@mui/material';\nimport { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';\nimport { MRT_TablePagination } from './MRT_TablePagination';\nimport { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';\nimport { MRT_LinearProgressBar } from './MRT_LinearProgressBar';\nimport { MRT_TableInstance } from '..';\nimport { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';\n\nexport const commonToolbarStyles = ({ theme }: { theme: Theme }) => ({\n backgroundColor: lighten(theme.palette.background.default, 0.04),\n backgroundImage: 'none',\n display: 'grid',\n minHeight: '3.5rem',\n overflow: 'hidden',\n p: '0 !important',\n transition: 'all 0.2s ease-in-out',\n zIndex: 1,\n});\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarTop: FC<Props> = ({ table }) => {\n const {\n getState,\n options: {\n enableGlobalFilter,\n enablePagination,\n enableToolbarInternalActions,\n muiTableToolbarTopProps,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n renderToolbarTopCustomActions,\n tableId,\n },\n } = table;\n\n const { isFullScreen, showGlobalFilter } = getState();\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps =\n muiTableToolbarTopProps instanceof Function\n ? muiTableToolbarTopProps({ table })\n : muiTableToolbarTopProps;\n\n const stackAlertBanner =\n isMobile ||\n (positionToolbarAlertBanner === 'top' &&\n (!!renderToolbarTopCustomActions || showGlobalFilter));\n\n return (\n <Toolbar\n id={`mrt-${tableId}-toolbar-top`}\n variant=\"dense\"\n {...toolbarProps}\n sx={(theme) =>\n ({\n position: isFullScreen ? 'sticky' : undefined,\n top: isFullScreen ? '0' : undefined,\n ...commonToolbarStyles({ theme }),\n ...toolbarProps?.sx,\n } as any)\n }\n >\n {positionToolbarAlertBanner === 'top' && (\n <MRT_ToolbarAlertBanner\n stackAlertBanner={stackAlertBanner}\n table={table}\n />\n )}\n <Box\n sx={{\n alignItems: 'flex-start',\n boxSizing: 'border-box',\n display: 'flex',\n justifyContent: 'space-between',\n p: '0.5rem',\n position: stackAlertBanner ? 'relative' : 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n }}\n >\n {enableGlobalFilter && positionGlobalFilter === 'left' && (\n <MRT_GlobalFilterTextField table={table} />\n )}\n\n {renderToolbarTopCustomActions?.({ table }) ?? <span />}\n {enableToolbarInternalActions ? (\n <MRT_ToolbarInternalButtons table={table} />\n ) : (\n enableGlobalFilter &&\n positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField table={table} />\n )\n )}\n </Box>\n {enablePagination &&\n ['top', 'both'].includes(positionPagination ?? '') && (\n <MRT_TablePagination table={table} position=\"top\" />\n )}\n <MRT_LinearProgressBar alignTo=\"bottom\" table={table} />\n </Toolbar>\n );\n};\n","import React, { FC } from 'react';\nimport { alpha, Box, Toolbar, useMediaQuery } from '@mui/material';\nimport { MRT_TablePagination } from './MRT_TablePagination';\nimport { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';\nimport { MRT_LinearProgressBar } from './MRT_LinearProgressBar';\nimport { commonToolbarStyles } from './MRT_ToolbarTop';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarBottom: FC<Props> = ({ table }) => {\n const {\n getState,\n options: {\n enablePagination,\n muiTableToolbarBottomProps,\n positionPagination,\n positionToolbarAlertBanner,\n renderToolbarBottomCustomActions,\n tableId,\n },\n } = table;\n const { isFullScreen } = getState();\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps =\n muiTableToolbarBottomProps instanceof Function\n ? muiTableToolbarBottomProps({ table })\n : muiTableToolbarBottomProps;\n\n const stackAlertBanner =\n isMobile ||\n (positionToolbarAlertBanner === 'bottom' &&\n !!renderToolbarBottomCustomActions);\n\n return (\n <Toolbar\n id={`mrt-${tableId}-toolbar-bottom`}\n variant=\"dense\"\n {...toolbarProps}\n sx={(theme) =>\n ({\n ...commonToolbarStyles({ theme }),\n bottom: isFullScreen ? '0' : undefined,\n boxShadow: `-3px 0 6px ${alpha(theme.palette.common.black, 0.1)}`,\n left: 0,\n position: isFullScreen ? 'fixed' : 'relative',\n right: 0,\n ...toolbarProps?.sx,\n } as any)\n }\n >\n <MRT_LinearProgressBar alignTo=\"top\" table={table} />\n {positionToolbarAlertBanner === 'bottom' && (\n <MRT_ToolbarAlertBanner table={table} />\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n }}\n >\n {renderToolbarBottomCustomActions ? (\n <Box sx={{ p: '0.5rem' }}>\n {renderToolbarBottomCustomActions({ table })}\n </Box>\n ) : (\n <span />\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n position: stackAlertBanner ? 'relative' : 'absolute',\n right: 0,\n top: 0,\n }}\n >\n {enablePagination &&\n ['bottom', 'both'].includes(positionPagination ?? '') && (\n <MRT_TablePagination table={table} position=\"bottom\" />\n )}\n </Box>\n </Box>\n </Toolbar>\n );\n};\n","import React, {\n ChangeEvent,\n FC,\n MouseEvent,\n useCallback,\n useState,\n} from 'react';\nimport {\n Chip,\n debounce,\n IconButton,\n InputAdornment,\n MenuItem,\n TextField,\n TextFieldProps,\n Tooltip,\n} from '@mui/material';\nimport { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n inputIndex?: number;\n table: MRT_TableInstance;\n}\n\nexport const MRT_FilterTextField: FC<Props> = ({\n header,\n inputIndex,\n table,\n}) => {\n const {\n getState,\n options: {\n enableColumnFilterChangeMode,\n enabledColumnFilterOptions,\n icons: { FilterListIcon, CloseIcon },\n localization,\n muiTableHeadCellFilterTextFieldProps,\n tableId,\n },\n setCurrentFilterFns,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { currentFilterFns } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const mTableHeadCellFilterTextFieldProps =\n muiTableHeadCellFilterTextFieldProps instanceof Function\n ? muiTableHeadCellFilterTextFieldProps({ column, table })\n : muiTableHeadCellFilterTextFieldProps;\n\n const mcTableHeadCellFilterTextFieldProps =\n columnDef.muiTableHeadCellFilterTextFieldProps instanceof Function\n ? columnDef.muiTableHeadCellFilterTextFieldProps({\n column,\n table,\n })\n : columnDef.muiTableHeadCellFilterTextFieldProps;\n\n const textFieldProps = {\n ...mTableHeadCellFilterTextFieldProps,\n ...mcTableHeadCellFilterTextFieldProps,\n } as TextFieldProps;\n\n const [filterValue, setFilterValue] = useState<string>(() =>\n inputIndex !== undefined\n ? (column.getFilterValue() as [string, string])?.[inputIndex] ?? ''\n : (column.getFilterValue() as string) ?? '',\n );\n\n const handleChangeDebounced = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (inputIndex !== undefined) {\n column.setFilterValue((old: [string, string]) => {\n const newFilterValues = old ?? ['', ''];\n newFilterValues[inputIndex] = event.target.value;\n return newFilterValues;\n });\n } else {\n column.setFilterValue(event.target.value ?? undefined);\n }\n }, 200),\n [],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setFilterValue(event.target.value);\n handleChangeDebounced(event);\n };\n\n const handleFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClear = () => {\n setFilterValue('');\n if (inputIndex !== undefined) {\n column.setFilterValue((old: [string | undefined, string | undefined]) => {\n const newFilterValues = old ?? ['', ''];\n newFilterValues[inputIndex] = undefined;\n return newFilterValues;\n });\n } else {\n column.setFilterValue(undefined);\n }\n };\n\n const handleClearFilterChip = () => {\n setFilterValue('');\n column.setFilterValue(undefined);\n setCurrentFilterFns((prev) => ({\n ...prev,\n [header.id]: 'fuzzy',\n }));\n };\n\n if (columnDef.Filter) {\n return <>{columnDef.Filter?.({ header, table })}</>;\n }\n\n const filterId = `mrt-${tableId}-${header.id}-filter-text-field${\n inputIndex ?? ''\n }`;\n const currentFilterOption = currentFilterFns?.[header.id];\n const isSelectFilter = !!columnDef.filterSelectOptions;\n const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)\n ? //@ts-ignore\n localization[\n `filter${\n currentFilterOption.charAt(0).toUpperCase() +\n currentFilterOption.slice(1)\n }`\n ]\n : '';\n const filterPlaceholder =\n inputIndex === undefined\n ? localization.filterByColumn?.replace(\n '{column}',\n String(columnDef.header),\n )\n : inputIndex === 0\n ? localization.min\n : inputIndex === 1\n ? localization.max\n : '';\n\n const allowedColumnFilterOptions =\n columnDef?.enabledColumnFilterOptions ?? enabledColumnFilterOptions;\n\n const showChangeModeButton =\n enableColumnFilterChangeMode &&\n columnDef.enableColumnFilterChangeMode !== false &&\n !isSelectFilter &&\n !inputIndex &&\n (allowedColumnFilterOptions === undefined ||\n !!allowedColumnFilterOptions?.length);\n\n return (\n <>\n <TextField\n fullWidth\n id={filterId}\n inputProps={{\n disabled: !!filterChipLabel,\n sx: {\n textOverflow: 'ellipsis',\n width: filterChipLabel ? 0 : undefined,\n },\n title: filterPlaceholder,\n }}\n helperText={\n showChangeModeButton ? (\n <label htmlFor={filterId}>\n {localization.filterMode.replace(\n '{filterType}',\n // @ts-ignore\n localization[\n `filter${\n currentFilterOption.charAt(0).toUpperCase() +\n currentFilterOption.slice(1)\n }`\n ],\n )}\n </label>\n ) : null\n }\n FormHelperTextProps={{\n sx: {\n fontSize: '0.6rem',\n lineHeight: '0.8rem',\n whiteSpace: 'nowrap',\n },\n }}\n margin=\"none\"\n placeholder={\n filterChipLabel || isSelectFilter ? undefined : filterPlaceholder\n }\n onChange={handleChange}\n onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}\n select={isSelectFilter}\n value={filterValue ?? ''}\n variant=\"standard\"\n InputProps={{\n startAdornment: showChangeModeButton ? (\n <InputAdornment position=\"start\">\n <Tooltip arrow title={localization.changeFilterMode}>\n <span>\n <IconButton\n aria-label={localization.changeFilterMode}\n onClick={handleFilterMenuOpen}\n size=\"small\"\n sx={{ height: '1.75rem', width: '1.75rem' }}\n >\n <FilterListIcon />\n </IconButton>\n </span>\n </Tooltip>\n {filterChipLabel && (\n <Chip\n onDelete={handleClearFilterChip}\n label={filterChipLabel}\n />\n )}\n </InputAdornment>\n ) : (\n <FilterListIcon />\n ),\n endAdornment: !filterChipLabel && (\n <InputAdornment position=\"end\">\n <Tooltip\n arrow\n disableHoverListener={isSelectFilter}\n placement=\"right\"\n title={localization.clearFilter ?? ''}\n >\n <span>\n <IconButton\n aria-label={localization.clearFilter}\n disabled={!filterValue?.length}\n onClick={handleClear}\n size=\"small\"\n sx={{\n height: '1.75rem',\n width: '1.75rem',\n }}\n >\n <CloseIcon />\n </IconButton>\n </span>\n </Tooltip>\n </InputAdornment>\n ),\n }}\n {...textFieldProps}\n sx={{\n m: '-0.25rem',\n p: 0,\n minWidth: !filterChipLabel ? '8rem' : 'auto',\n width: 'calc(100% + 0.5rem)',\n '&\t.MuiSelect-icon': {\n mr: '1.5rem',\n },\n ...textFieldProps?.sx,\n }}\n >\n {isSelectFilter && (\n <MenuItem divider disabled={!filterValue} value=\"\">\n {localization.clearFilter}\n </MenuItem>\n )}\n {columnDef?.filterSelectOptions?.map((option) => {\n let value;\n let text;\n if (typeof option === 'string') {\n value = option;\n text = option;\n } else if (typeof option === 'object') {\n value = option.value;\n text = option.text;\n }\n return (\n <MenuItem key={value} value={value}>\n {text}\n </MenuItem>\n );\n })}\n </TextField>\n <MRT_FilterOptionMenu\n anchorEl={anchorEl}\n header={header}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n );\n};\n","import React, { FC } from 'react';\nimport { Box } from '@mui/material';\nimport { MRT_FilterTextField } from './MRT_FilterTextField';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_FilterRangeFields: FC<Props> = ({ header, table }) => {\n return (\n <Box sx={{ display: 'grid', gridTemplateColumns: '6fr 6fr', gap: '1rem' }}>\n <MRT_FilterTextField header={header} inputIndex={0} table={table} />\n <MRT_FilterTextField header={header} inputIndex={1} table={table} />\n </Box>\n );\n};\n","import React, { FC } from 'react';\nimport { Collapse } from '@mui/material';\nimport { MRT_FilterRangeFields } from '../inputs/MRT_FilterRangeFields';\nimport { MRT_FilterTextField } from '../inputs/MRT_FilterTextField';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellFilterContainer: FC<Props> = ({\n header,\n table,\n}) => {\n const { getState } = table;\n const { currentFilterFns, showFilters } = getState();\n const { column } = header;\n\n return (\n <Collapse in={showFilters} mountOnEnter unmountOnExit>\n {currentFilterFns[column.id] === 'between' ? (\n <MRT_FilterRangeFields header={header} table={table} />\n ) : (\n <MRT_FilterTextField header={header} table={table} />\n )}\n </Collapse>\n );\n};\n","import React, { FC, MouseEvent } from 'react';\nimport { Grow, IconButton, Tooltip } from '@mui/material';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellFilterLabel: FC<Props> = ({ header, table }) => {\n const {\n getState,\n options: {\n icons: { FilterAltIcon },\n localization,\n },\n } = table;\n const { currentFilterFns } = getState();\n const { column } = header;\n const { columnDef } = column;\n\n const currentFilterOption = currentFilterFns?.[header.id];\n const filterTooltip = localization.filteringByColumn\n .replace('{column}', String(columnDef.header))\n .replace(\n '{filterType}',\n // @ts-ignore\n localization[\n `filter${\n currentFilterOption.charAt(0).toUpperCase() +\n currentFilterOption.slice(1)\n }`\n ],\n )\n .replace(\n '{filterValue}',\n `\"${\n Array.isArray(column.getFilterValue())\n ? (column.getFilterValue() as [string, string]).join(\n `\" ${localization.and} \"`,\n )\n : (column.getFilterValue() as string)\n }\"`,\n )\n .replace('\" \"', '');\n\n return (\n <Grow\n unmountOnExit\n in={\n (!!column.getFilterValue() && currentFilterOption !== 'between') ||\n (currentFilterOption === 'between' && // @ts-ignore\n (!!column.getFilterValue()?.[0] || !!column.getFilterValue()?.[1]))\n }\n >\n <span>\n <Tooltip arrow placement=\"top\" title={filterTooltip}>\n <IconButton\n disableRipple\n onClick={(event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n }}\n size=\"small\"\n sx={{\n m: 0,\n opacity: 0.8,\n p: '2px',\n transform: 'scale(0.66)',\n width: '1.5ch',\n }}\n >\n <FilterAltIcon />\n </IconButton>\n </Tooltip>\n </span>\n </Grow>\n );\n};\n","import React, { FC } from 'react';\nimport { Divider, Theme } from '@mui/material';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellResizeHandle: FC<Props> = ({ header, table }) => {\n const {\n getState,\n options: { columnResizeMode },\n } = table;\n const { density, showFilters } = getState();\n const { column } = header;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n return (\n <Divider\n flexItem\n orientation=\"vertical\"\n onDoubleClick={() => column.resetSize()}\n sx={(theme: Theme) => ({\n borderRadius: '2px',\n borderRightWidth: '2px',\n cursor: 'col-resize',\n height: showFilters && columnDefType === 'data' ? '4rem' : '2rem',\n mr: density === 'compact' ? '-0.5rem' : '-1rem',\n opacity: 0.8,\n position: 'absolute',\n right: '1px',\n touchAction: 'none',\n transition: column.getIsResizing() ? undefined : 'all 0.2s ease-in-out',\n userSelect: 'none',\n zIndex: 4,\n '&:active': {\n backgroundColor: theme.palette.info.main,\n opacity: 1,\n },\n })}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n style={{\n transform: column.getIsResizing()\n ? `translateX(${\n (getState().columnSizingInfo.deltaOffset ?? 0) /\n (columnResizeMode === 'onChange' ? 16 : 1)\n }px)`\n : 'none',\n }}\n />\n );\n};\n","import React, { FC } from 'react';\nimport { TableSortLabel, Tooltip } from '@mui/material';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellSortLabel: FC<Props> = ({ header, table }) => {\n const {\n options: { localization },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const sortTooltip = !!column.getIsSorted()\n ? column.getIsSorted() === 'desc'\n ? localization.sortedByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortedByColumnAsc.replace('{column}', columnDef.header)\n : localization.unsorted;\n\n return (\n <Tooltip arrow placement=\"top\" title={sortTooltip}>\n <TableSortLabel\n aria-label={sortTooltip}\n active={!!column.getIsSorted()}\n direction={\n column.getIsSorted()\n ? (column.getIsSorted() as 'asc' | 'desc')\n : undefined\n }\n sx={{\n width: '2ch',\n transform: 'translateX(-0.5ch)',\n }}\n />\n </Tooltip>\n );\n};\n","import React, { FC, MouseEvent, useState } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { MRT_ColumnActionMenu } from '../menus/MRT_ColumnActionMenu';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellColumnActionsButton: FC<Props> = ({\n header,\n table,\n}) => {\n const {\n options: {\n icons: { MoreVertIcon },\n localization,\n muiTableHeadCellColumnActionsButtonProps,\n },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n event.preventDefault();\n setAnchorEl(event.currentTarget);\n };\n\n const mTableHeadCellColumnActionsButtonProps =\n muiTableHeadCellColumnActionsButtonProps instanceof Function\n ? muiTableHeadCellColumnActionsButtonProps({ column, table })\n : muiTableHeadCellColumnActionsButtonProps;\n\n const mcTableHeadCellColumnActionsButtonProps =\n columnDef.muiTableHeadCellColumnActionsButtonProps instanceof Function\n ? columnDef.muiTableHeadCellColumnActionsButtonProps({\n column,\n table,\n })\n : columnDef.muiTableHeadCellColumnActionsButtonProps;\n\n const iconButtonProps = {\n ...mTableHeadCellColumnActionsButtonProps,\n ...mcTableHeadCellColumnActionsButtonProps,\n };\n\n return (\n <>\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n placement=\"top\"\n title={localization.columnActions}\n >\n <IconButton\n aria-label={localization.columnActions}\n onClick={handleClick}\n size=\"small\"\n {...iconButtonProps}\n sx={{\n height: '2rem',\n mt: '-0.2rem',\n opacity: 0.5,\n transition: 'opacity 0.2s',\n width: '2rem',\n '&:hover': {\n opacity: 1,\n },\n ...iconButtonProps.sx,\n }}\n >\n <MoreVertIcon />\n </IconButton>\n </Tooltip>\n <MRT_ColumnActionMenu\n anchorEl={anchorEl}\n header={header}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n );\n};\n","import React, { FC, ReactNode, Ref } from 'react';\nimport { Box, TableCell, Theme, alpha, lighten } from '@mui/material';\nimport { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer';\nimport { MRT_TableHeadCellFilterLabel } from './MRT_TableHeadCellFilterLabel';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\nimport { MRT_TableHeadCellResizeHandle } from './MRT_TableHeadCellResizeHandle';\nimport { MRT_TableHeadCellSortLabel } from './MRT_TableHeadCellSortLabel';\nimport { MRT_TableHeadCellColumnActionsButton } from './MRT_TableHeadCellColumnActionsButton';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n dragRef?: Ref<HTMLButtonElement>;\n dropRef?: Ref<HTMLDivElement>;\n header: MRT_Header;\n table: MRT_TableInstance;\n isDragging?: boolean;\n previewRef?: Ref<HTMLTableCellElement>;\n}\n\nexport const MRT_TableHeadCell: FC<Props> = ({\n dragRef,\n dropRef,\n header,\n table,\n isDragging,\n previewRef,\n}) => {\n const {\n getState,\n options: {\n enableColumnActions,\n enableColumnOrdering,\n enableColumnResizing,\n enableGrouping,\n enableMultiSort,\n muiTableHeadCellProps,\n },\n } = table;\n const { density, showFilters } = getState();\n const { column } = header;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const mTableHeadCellProps =\n muiTableHeadCellProps instanceof Function\n ? muiTableHeadCellProps({ column, table })\n : muiTableHeadCellProps;\n\n const mcTableHeadCellProps =\n columnDef.muiTableHeadCellProps instanceof Function\n ? columnDef.muiTableHeadCellProps({ column, table })\n : columnDef.muiTableHeadCellProps;\n\n const tableCellProps = {\n ...mTableHeadCellProps,\n ...mcTableHeadCellProps,\n };\n\n const headerElement = ((columnDef?.Header instanceof Function\n ? columnDef?.Header?.({\n header,\n table,\n })\n : columnDef?.Header) ?? columnDef.header) as ReactNode;\n\n const getIsLastLeftPinnedColumn = () => {\n return (\n column.getIsPinned() === 'left' &&\n table.getLeftLeafHeaders().length - 1 === column.getPinnedIndex()\n );\n };\n\n const getIsFirstRightPinnedColumn = () => {\n return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;\n };\n\n const getTotalRight = () => {\n return (\n (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150\n );\n };\n\n return (\n <TableCell\n align={columnDefType === 'group' ? 'center' : 'left'}\n colSpan={header.colSpan}\n {...tableCellProps}\n ref={\n columnDefType === 'data' && enableColumnOrdering ? dropRef : undefined\n }\n sx={(theme: Theme) => ({\n backgroundColor:\n column.getIsPinned() && columnDefType !== 'group'\n ? alpha(lighten(theme.palette.background.default, 0.04), 0.95)\n : 'inherit',\n backgroundImage: 'inherit',\n boxShadow: getIsLastLeftPinnedColumn()\n ? `4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : getIsFirstRightPinnedColumn()\n ? `-4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : undefined,\n fontWeight: 'bold',\n height: '100%',\n left:\n column.getIsPinned() === 'left'\n ? `${column.getStart('left')}px`\n : undefined,\n overflow: 'visible',\n p:\n density === 'compact'\n ? columnDefType === 'display'\n ? '0 0.5rem'\n : '0.5rem'\n : density === 'comfortable'\n ? columnDefType === 'display'\n ? '0.5rem 0.75rem'\n : '1rem'\n : columnDefType === 'display'\n ? '1rem 1.25rem'\n : '1.5rem',\n pb: columnDefType === 'display' ? 0 : undefined,\n position:\n column.getIsPinned() && columnDefType !== 'group'\n ? 'sticky'\n : undefined,\n pt:\n columnDefType !== 'data'\n ? 0\n : density === 'compact'\n ? '0.25'\n : density === 'comfortable'\n ? '.75rem'\n : '1.25rem',\n right:\n column.getIsPinned() === 'right' ? `${getTotalRight()}px` : undefined,\n transition: `all ${enableColumnResizing ? 0 : '0.2s'} ease-in-out`,\n userSelect: enableMultiSort && column.getCanSort() ? 'none' : undefined,\n verticalAlign:\n columnDefType === 'display' && showFilters ? 'center' : 'text-top',\n zIndex: column.getIsResizing()\n ? 3\n : column.getIsPinned() && columnDefType !== 'group'\n ? 2\n : 1,\n ...(tableCellProps?.sx as any),\n maxWidth: `min(${column.getSize()}px, fit-content)`,\n minWidth: `max(${column.getSize()}px, ${columnDef.minSize ?? 30}px)`,\n width: header.getSize(),\n })}\n >\n {header.isPlaceholder ? null : columnDefType === 'display' ? (\n headerElement\n ) : (\n <Box\n ref={previewRef}\n sx={{\n alignItems: 'flex-start',\n display: 'flex',\n justifyContent:\n columnDefType === 'group' ? 'center' : 'space-between',\n opacity: isDragging ? 0.5 : 1,\n position: 'relative',\n width: '100%',\n }}\n >\n <Box\n onClick={column.getToggleSortingHandler()}\n sx={{\n alignItems: 'center',\n cursor:\n column.getCanSort() && columnDefType !== 'group'\n ? 'pointer'\n : undefined,\n display: 'flex',\n flexWrap: 'nowrap',\n whiteSpace:\n (columnDef.header?.length ?? 0) < 24 ? 'nowrap' : 'normal',\n }}\n >\n {headerElement}\n {columnDefType === 'data' && column.getCanSort() && (\n <MRT_TableHeadCellSortLabel header={header} table={table} />\n )}\n {columnDefType === 'data' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterLabel header={header} table={table} />\n )}\n </Box>\n <Box sx={{ whiteSpace: 'nowrap' }}>\n {columnDefType === 'data' &&\n ((enableColumnOrdering &&\n columnDef.enableColumnOrdering !== false) ||\n (enableGrouping && columnDef.enableGrouping !== false)) && (\n <MRT_GrabHandleButton\n ref={dragRef as Ref<HTMLButtonElement>}\n table={table}\n />\n )}\n {(enableColumnActions || columnDef.enableColumnActions) &&\n columnDef.enableColumnActions !== false &&\n columnDefType !== 'group' && (\n <MRT_TableHeadCellColumnActionsButton\n header={header}\n table={table}\n />\n )}\n </Box>\n {column.getCanResize() && (\n <MRT_TableHeadCellResizeHandle header={header} table={table} />\n )}\n </Box>\n )}\n {columnDefType === 'data' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterContainer header={header} table={table} />\n )}\n </TableCell>\n );\n};\n","import React, { FC } from 'react';\nimport { useDrag, useDrop } from 'react-dnd';\nimport { MRT_TableHeadCell } from './MRT_TableHeadCell';\nimport type { MRT_Column, MRT_Header, MRT_TableInstance } from '..';\nimport { reorderColumn } from '../utils';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_DraggableTableHeadCell: FC<Props> = ({ header, table }) => {\n const { getState, setColumnOrder } = table;\n const { columnOrder } = getState();\n const { column } = header;\n\n const [, dropRef] = useDrop({\n accept: 'column',\n drop: (movingColumn: MRT_Column) => {\n const newColumnOrder = reorderColumn(movingColumn, column, columnOrder);\n setColumnOrder(newColumnOrder);\n },\n });\n\n const [{ isDragging }, dragRef, previewRef] = useDrag({\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n item: () => column,\n type: 'column',\n });\n\n return (\n <MRT_TableHeadCell\n dragRef={dragRef}\n dropRef={dropRef}\n header={header}\n isDragging={isDragging}\n previewRef={previewRef}\n table={table}\n />\n );\n};\n","import React, { FC } from 'react';\nimport { alpha, lighten, TableRow } from '@mui/material';\nimport { MRT_TableHeadCell } from './MRT_TableHeadCell';\nimport { MRT_DraggableTableHeadCell } from './MRT_DraggableTableHeadCell';\nimport type { MRT_Header, MRT_HeaderGroup, MRT_TableInstance } from '..';\n\ninterface Props {\n headerGroup: MRT_HeaderGroup;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadRow: FC<Props> = ({ headerGroup, table }) => {\n const {\n options: { enableColumnOrdering, enableGrouping, muiTableHeadRowProps },\n } = table;\n\n const tableRowProps =\n muiTableHeadRowProps instanceof Function\n ? muiTableHeadRowProps({ headerGroup, table })\n : muiTableHeadRowProps;\n\n return (\n <TableRow\n {...tableRowProps}\n sx={(theme) => ({\n boxShadow: `4px 0 8px ${alpha(theme.palette.common.black, 0.1)}`,\n backgroundColor: lighten(theme.palette.background.default, 0.04),\n ...(tableRowProps?.sx as any),\n })}\n >\n {headerGroup.headers.map((header: MRT_Header, index) =>\n enableColumnOrdering || enableGrouping ? (\n <MRT_DraggableTableHeadCell\n header={header}\n key={header.id || index}\n table={table}\n />\n ) : (\n <MRT_TableHeadCell\n header={header}\n key={header.id || index}\n table={table}\n />\n ),\n )}\n </TableRow>\n );\n};\n","import React, { FC } from 'react';\nimport { TableHead } from '@mui/material';\nimport { MRT_TableHeadRow } from './MRT_TableHeadRow';\nimport type { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHead: FC<Props> = ({ table }) => {\n const {\n getHeaderGroups,\n options: { muiTableHeadProps },\n } = table;\n\n const tableHeadProps =\n muiTableHeadProps instanceof Function\n ? muiTableHeadProps({ table })\n : muiTableHeadProps;\n\n return (\n <TableHead {...tableHeadProps}>\n {getHeaderGroups().map((headerGroup) => (\n <MRT_TableHeadRow\n headerGroup={headerGroup as any}\n key={headerGroup.id}\n table={table}\n />\n ))}\n </TableHead>\n );\n};\n","var props = ['bottom', 'height', 'left', 'right', 'top', 'width'];\n\nvar rectChanged = function rectChanged(a, b) {\n if (a === void 0) {\n a = {};\n }\n\n if (b === void 0) {\n b = {};\n }\n\n return props.some(function (prop) {\n return a[prop] !== b[prop];\n });\n};\n\nvar observedNodes =\n/*#__PURE__*/\nnew Map();\nvar rafId;\n\nvar run = function run() {\n var changedStates = [];\n observedNodes.forEach(function (state, node) {\n var newRect = node.getBoundingClientRect();\n\n if (rectChanged(newRect, state.rect)) {\n state.rect = newRect;\n changedStates.push(state);\n }\n });\n changedStates.forEach(function (state) {\n state.callbacks.forEach(function (cb) {\n return cb(state.rect);\n });\n });\n rafId = window.requestAnimationFrame(run);\n};\n\nfunction observeRect(node, cb) {\n return {\n observe: function observe() {\n var wasEmpty = observedNodes.size === 0;\n\n if (observedNodes.has(node)) {\n observedNodes.get(node).callbacks.push(cb);\n } else {\n observedNodes.set(node, {\n rect: undefined,\n hasRectChanged: false,\n callbacks: [cb]\n });\n }\n\n if (wasEmpty) run();\n },\n unobserve: function unobserve() {\n var state = observedNodes.get(node);\n\n if (state) {\n // Remove the callback\n var index = state.callbacks.indexOf(cb);\n if (index >= 0) state.callbacks.splice(index, 1); // Remove the node reference\n\n if (!state.callbacks.length) observedNodes[\"delete\"](node); // Stop the loop\n\n if (!observedNodes.size) cancelAnimationFrame(rafId);\n }\n }\n };\n}\n\nexport default observeRect;\n//# sourceMappingURL=observe-rect.esm.js.map\n","import React from 'react'\n\nexport default typeof window !== 'undefined'\n ? React.useLayoutEffect\n : React.useEffect\n","import React from 'react'\nimport observeRect from '@reach/observe-rect'\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect'\n\nexport default function useRect(\n nodeRef,\n initialRect = { width: 0, height: 0 }\n) {\n const [element, setElement] = React.useState(nodeRef.current)\n const [rect, dispatch] = React.useReducer(rectReducer, initialRect)\n const initialRectSet = React.useRef(false)\n\n useIsomorphicLayoutEffect(() => {\n if (nodeRef.current !== element) {\n setElement(nodeRef.current)\n }\n })\n\n useIsomorphicLayoutEffect(() => {\n if (element && !initialRectSet.current) {\n initialRectSet.current = true\n const rect = element.getBoundingClientRect()\n dispatch({ rect })\n }\n }, [element])\n\n React.useEffect(() => {\n if (!element) {\n return\n }\n\n const observer = observeRect(element, rect => {\n dispatch({ rect })\n })\n\n observer.observe()\n\n return () => {\n observer.unobserve()\n }\n }, [element])\n\n return rect\n}\n\nfunction rectReducer(state, action) {\n const rect = action.rect\n if (state.height !== rect.height || state.width !== rect.width) {\n return rect\n }\n return state\n}\n","import React from 'react'\nimport useRect from './useRect'\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect'\n\nconst defaultEstimateSize = () => 50\n\nconst defaultKeyExtractor = index => index\n\nconst defaultMeasureSize = (el, horizontal) => {\n const key = horizontal ? 'offsetWidth' : 'offsetHeight'\n\n return el[key]\n}\n\nexport const defaultRangeExtractor = range => {\n const start = Math.max(range.start - range.overscan, 0)\n const end = Math.min(range.end + range.overscan, range.size - 1)\n\n const arr = []\n\n for (let i = start; i <= end; i++) {\n arr.push(i)\n }\n\n return arr\n}\n\nexport function useVirtual({\n size = 0,\n estimateSize = defaultEstimateSize,\n overscan = 1,\n paddingStart = 0,\n paddingEnd = 0,\n parentRef,\n horizontal,\n scrollToFn,\n useObserver,\n initialRect,\n onScrollElement,\n scrollOffsetFn,\n keyExtractor = defaultKeyExtractor,\n measureSize = defaultMeasureSize,\n rangeExtractor = defaultRangeExtractor,\n}) {\n const sizeKey = horizontal ? 'width' : 'height'\n const scrollKey = horizontal ? 'scrollLeft' : 'scrollTop'\n\n const latestRef = React.useRef({\n scrollOffset: 0,\n measurements: [],\n })\n\n const [scrollOffset, setScrollOffset] = React.useState(0)\n latestRef.current.scrollOffset = scrollOffset\n\n const useMeasureParent = useObserver || useRect\n\n const { [sizeKey]: outerSize } = useMeasureParent(parentRef, initialRect)\n\n latestRef.current.outerSize = outerSize\n\n const defaultScrollToFn = React.useCallback(\n offset => {\n if (parentRef.current) {\n parentRef.current[scrollKey] = offset\n }\n },\n [parentRef, scrollKey]\n )\n\n const resolvedScrollToFn = scrollToFn || defaultScrollToFn\n\n scrollToFn = React.useCallback(\n offset => {\n resolvedScrollToFn(offset, defaultScrollToFn)\n },\n [defaultScrollToFn, resolvedScrollToFn]\n )\n\n const [measuredCache, setMeasuredCache] = React.useState({})\n\n const measure = React.useCallback(() => setMeasuredCache({}), [])\n\n const pendingMeasuredCacheIndexesRef = React.useRef([])\n\n const measurements = React.useMemo(() => {\n const min =\n pendingMeasuredCacheIndexesRef.current.length > 0\n ? Math.min(...pendingMeasuredCacheIndexesRef.current)\n : 0\n pendingMeasuredCacheIndexesRef.current = []\n\n const measurements = latestRef.current.measurements.slice(0, min)\n\n for (let i = min; i < size; i++) {\n const key = keyExtractor(i)\n const measuredSize = measuredCache[key]\n const start = measurements[i - 1] ? measurements[i - 1].end : paddingStart\n const size =\n typeof measuredSize === 'number' ? measuredSize : estimateSize(i)\n const end = start + size\n measurements[i] = { index: i, start, size, end, key }\n }\n return measurements\n }, [estimateSize, measuredCache, paddingStart, size, keyExtractor])\n\n const totalSize = (measurements[size - 1]?.end || paddingStart) + paddingEnd\n\n latestRef.current.measurements = measurements\n latestRef.current.totalSize = totalSize\n\n const element = onScrollElement ? onScrollElement.current : parentRef.current\n\n const scrollOffsetFnRef = React.useRef(scrollOffsetFn)\n scrollOffsetFnRef.current = scrollOffsetFn\n\n useIsomorphicLayoutEffect(() => {\n if (!element) {\n setScrollOffset(0)\n\n return\n }\n\n const onScroll = event => {\n const offset = scrollOffsetFnRef.current\n ? scrollOffsetFnRef.current(event)\n : element[scrollKey]\n\n setScrollOffset(offset)\n }\n\n onScroll()\n\n element.addEventListener('scroll', onScroll, {\n capture: false,\n passive: true,\n })\n\n return () => {\n element.removeEventListener('scroll', onScroll)\n }\n }, [element, scrollKey])\n\n const { start, end } = calculateRange(latestRef.current)\n\n const indexes = React.useMemo(\n () =>\n rangeExtractor({\n start,\n end,\n overscan,\n size: measurements.length,\n }),\n [start, end, overscan, measurements.length, rangeExtractor]\n )\n\n const measureSizeRef = React.useRef(measureSize)\n measureSizeRef.current = measureSize\n\n const virtualItems = React.useMemo(() => {\n const virtualItems = []\n\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k]\n const measurement = measurements[i]\n\n const item = {\n ...measurement,\n measureRef: el => {\n if (el) {\n const measuredSize = measureSizeRef.current(el, horizontal)\n\n if (measuredSize !== item.size) {\n const { scrollOffset } = latestRef.current\n\n if (item.start < scrollOffset) {\n defaultScrollToFn(scrollOffset + (measuredSize - item.size))\n }\n\n pendingMeasuredCacheIndexesRef.current.push(i)\n\n setMeasuredCache(old => ({\n ...old,\n [item.key]: measuredSize,\n }))\n }\n }\n },\n }\n\n virtualItems.push(item)\n }\n\n return virtualItems\n }, [indexes, defaultScrollToFn, horizontal, measurements])\n\n const mountedRef = React.useRef(false)\n\n useIsomorphicLayoutEffect(() => {\n if (mountedRef.current) {\n setMeasuredCache({})\n }\n mountedRef.current = true\n }, [estimateSize])\n\n const scrollToOffset = React.useCallback(\n (toOffset, { align = 'start' } = {}) => {\n const { scrollOffset, outerSize } = latestRef.current\n\n if (align === 'auto') {\n if (toOffset <= scrollOffset) {\n align = 'start'\n } else if (toOffset >= scrollOffset + outerSize) {\n align = 'end'\n } else {\n align = 'start'\n }\n }\n\n if (align === 'start') {\n scrollToFn(toOffset)\n } else if (align === 'end') {\n scrollToFn(toOffset - outerSize)\n } else if (align === 'center') {\n scrollToFn(toOffset - outerSize / 2)\n }\n },\n [scrollToFn]\n )\n\n const tryScrollToIndex = React.useCallback(\n (index, { align = 'auto', ...rest } = {}) => {\n const { measurements, scrollOffset, outerSize } = latestRef.current\n\n const measurement = measurements[Math.max(0, Math.min(index, size - 1))]\n\n if (!measurement) {\n return\n }\n\n if (align === 'auto') {\n if (measurement.end >= scrollOffset + outerSize) {\n align = 'end'\n } else if (measurement.start <= scrollOffset) {\n align = 'start'\n } else {\n return\n }\n }\n\n const toOffset =\n align === 'center'\n ? measurement.start + measurement.size / 2\n : align === 'end'\n ? measurement.end\n : measurement.start\n\n scrollToOffset(toOffset, { align, ...rest })\n },\n [scrollToOffset, size]\n )\n\n const scrollToIndex = React.useCallback(\n (...args) => {\n // We do a double request here because of\n // dynamic sizes which can cause offset shift\n // and end up in the wrong spot. Unfortunately,\n // we can't know about those dynamic sizes until\n // we try and render them. So double down!\n tryScrollToIndex(...args)\n requestAnimationFrame(() => {\n tryScrollToIndex(...args)\n })\n },\n [tryScrollToIndex]\n )\n\n return {\n virtualItems,\n totalSize,\n scrollToOffset,\n scrollToIndex,\n measure,\n }\n}\n\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n let middle = ((low + high) / 2) | 0\n let currentValue = getCurrentValue(middle)\n\n if (currentValue < value) {\n low = middle + 1\n } else if (currentValue > value) {\n high = middle - 1\n } else {\n return middle\n }\n }\n\n if (low > 0) {\n return low - 1\n } else {\n return 0\n }\n}\n\nfunction calculateRange({ measurements, outerSize, scrollOffset }) {\n const size = measurements.length - 1\n const getOffset = index => measurements[index].start\n\n let start = findNearestBinarySearch(0, size, getOffset, scrollOffset)\n let end = start\n\n while (end < size && measurements[end].end < scrollOffset + outerSize) {\n end++\n }\n\n return { start, end }\n}\n","import React, {\n ChangeEvent,\n FC,\n FocusEvent,\n MouseEvent,\n useState,\n} from 'react';\nimport { TextField } from '@mui/material';\nimport type { MRT_Cell, MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n cell: MRT_Cell;\n table: MRT_TableInstance;\n}\n\nexport const MRT_EditCellTextField: FC<Props> = ({ cell, table }) => {\n const {\n getState,\n options: {\n tableId,\n enableEditing,\n muiTableBodyCellEditTextFieldProps,\n onCellEditBlur,\n onCellEditChange,\n },\n setCurrentEditingCell,\n setCurrentEditingRow,\n } = table;\n const { column, row } = cell;\n const { columnDef } = column;\n\n const [value, setValue] = useState(cell.getValue());\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setValue(event.target.value);\n columnDef.onCellEditChange?.({ event, cell, table });\n onCellEditChange?.({ event, cell, table });\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n if (getState().currentEditingRow) {\n if (!row._valuesCache) row._valuesCache = {};\n (row._valuesCache as Record<string, any>)[column.id] = value;\n setCurrentEditingRow({ ...getState().currentEditingRow } as MRT_Row);\n }\n setCurrentEditingCell(null);\n columnDef.onCellEditBlur?.({ event, cell, table });\n onCellEditBlur?.({ event, cell, table });\n };\n\n const mTableBodyCellEditTextFieldProps =\n muiTableBodyCellEditTextFieldProps instanceof Function\n ? muiTableBodyCellEditTextFieldProps({ cell, table })\n : muiTableBodyCellEditTextFieldProps;\n\n const mcTableBodyCellEditTextFieldProps =\n columnDef.muiTableBodyCellEditTextFieldProps instanceof Function\n ? columnDef.muiTableBodyCellEditTextFieldProps({\n cell,\n table,\n })\n : columnDef.muiTableBodyCellEditTextFieldProps;\n\n const textFieldProps = {\n ...mTableBodyCellEditTextFieldProps,\n ...mcTableBodyCellEditTextFieldProps,\n };\n\n if (enableEditing && columnDef.enableEditing !== false && columnDef.Edit) {\n return <>{columnDef.Edit?.({ cell, table })}</>;\n }\n\n return (\n <TextField\n id={`mrt-${tableId}-edit-cell-text-field-${cell.id}`}\n margin=\"dense\"\n onBlur={handleBlur}\n onChange={handleChange}\n onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}\n placeholder={columnDef.header}\n value={value}\n variant=\"standard\"\n {...textFieldProps}\n />\n );\n};\n","import React, { FC, ReactNode, useState } from 'react';\nimport { Button, Tooltip } from '@mui/material';\nimport { MRT_Cell, MRT_TableInstance } from '..';\n\ninterface Props {\n cell: MRT_Cell;\n children: ReactNode;\n table: MRT_TableInstance;\n}\n\nexport const MRT_CopyButton: FC<Props> = ({ cell, children, table }) => {\n const {\n options: { localization, muiTableBodyCellCopyButtonProps },\n } = table;\n const { column } = cell;\n const { columnDef } = column;\n\n const [copied, setCopied] = useState(false);\n\n const handleCopy = (text: unknown) => {\n navigator.clipboard.writeText(text as string);\n setCopied(true);\n setTimeout(() => setCopied(false), 4000);\n };\n\n const mTableBodyCellCopyButtonProps =\n muiTableBodyCellCopyButtonProps instanceof Function\n ? muiTableBodyCellCopyButtonProps({ cell, table })\n : muiTableBodyCellCopyButtonProps;\n\n const mcTableBodyCellCopyButtonProps =\n columnDef.muiTableBodyCellCopyButtonProps instanceof Function\n ? columnDef.muiTableBodyCellCopyButtonProps({\n cell,\n table,\n })\n : columnDef.muiTableBodyCellCopyButtonProps;\n\n const buttonProps = {\n ...mTableBodyCellCopyButtonProps,\n ...mcTableBodyCellCopyButtonProps,\n };\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n placement=\"top\"\n title={copied ? localization.copiedToClipboard : localization.clickToCopy}\n >\n <Button\n aria-label={localization.clickToCopy}\n onClick={() => handleCopy(cell.getValue())}\n size=\"small\"\n type=\"button\"\n variant=\"text\"\n {...buttonProps}\n sx={{\n backgroundColor: 'transparent',\n border: 'none',\n color: 'inherit',\n cursor: 'copy',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n letterSpacing: 'inherit',\n m: '-0.25rem',\n minWidth: 'unset',\n textAlign: 'inherit',\n textTransform: 'inherit',\n ...buttonProps?.sx,\n }}\n >\n {children}\n </Button>\n </Tooltip>\n );\n};\n","import React, { FC, MouseEvent, useMemo } from 'react';\nimport { useDrop } from 'react-dnd';\nimport { alpha, darken, lighten, Skeleton, TableCell } from '@mui/material';\nimport { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';\nimport { MRT_CopyButton } from '../buttons/MRT_CopyButton';\nimport { reorderColumn } from '../utils';\nimport type { MRT_Cell, MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n cell: MRT_Cell;\n enableHover?: boolean;\n rowIndex: number;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableBodyCell: FC<Props> = ({\n cell,\n enableHover,\n rowIndex,\n table,\n}) => {\n const {\n getState,\n options: {\n editingMode,\n enableClickToCopy,\n enableColumnOrdering,\n enableEditing,\n enableRowNumbers,\n muiTableBodyCellProps,\n muiTableBodyCellSkeletonProps,\n rowNumberMode,\n tableId,\n },\n setColumnOrder,\n setCurrentEditingCell,\n } = table;\n const {\n columnOrder,\n currentEditingCell,\n currentEditingRow,\n density,\n isLoading,\n showSkeletons,\n } = getState();\n const { column, row } = cell;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const [, dropRef] = useDrop({\n accept: 'column',\n drop: (movingColumn: MRT_Column) => {\n const newColumnOrder = reorderColumn(movingColumn, column, columnOrder);\n setColumnOrder(newColumnOrder);\n },\n });\n\n const mTableCellBodyProps =\n muiTableBodyCellProps instanceof Function\n ? muiTableBodyCellProps({ cell, table })\n : muiTableBodyCellProps;\n\n const mcTableCellBodyProps =\n columnDef.muiTableBodyCellProps instanceof Function\n ? columnDef.muiTableBodyCellProps({ cell, table })\n : columnDef.muiTableBodyCellProps;\n\n const tableCellProps = {\n ...mTableCellBodyProps,\n ...mcTableCellBodyProps,\n };\n\n const skeletonWidth = useMemo(\n () =>\n columnDefType === 'display'\n ? column.getSize() / 2\n : Math.random() * (column.getSize() - column.getSize() / 3) +\n column.getSize() / 3,\n [],\n );\n\n const isEditable =\n (enableEditing || columnDef.enableEditing) &&\n columnDef.enableEditing !== false;\n\n const isEditing =\n isEditable &&\n (editingMode === 'table' ||\n currentEditingRow?.id === row.id ||\n currentEditingCell?.id === cell.id);\n\n const handleDoubleClick = (_event: MouseEvent<HTMLTableCellElement>) => {\n if (\n (enableEditing || columnDef.enableEditing) &&\n columnDef.enableEditing !== false &&\n editingMode === 'cell'\n ) {\n setCurrentEditingCell(cell);\n setTimeout(() => {\n const textField = document.getElementById(\n `mrt-${tableId}-edit-cell-text-field-${cell.id}`,\n ) as HTMLInputElement;\n if (textField) {\n textField.focus();\n textField.select();\n }\n }, 200);\n }\n };\n\n const getIsLastLeftPinnedColumn = () => {\n return (\n column.getIsPinned() === 'left' &&\n table.getLeftLeafHeaders().length - 1 === column.getPinnedIndex()\n );\n };\n\n const getIsFirstRightPinnedColumn = () => {\n return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;\n };\n\n const getTotalRight = () => {\n return (\n (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150\n );\n };\n\n return (\n <TableCell\n onDoubleClick={handleDoubleClick}\n {...tableCellProps}\n ref={\n columnDefType === 'data' && enableColumnOrdering ? dropRef : undefined\n }\n sx={(theme) => ({\n backgroundColor: column.getIsPinned()\n ? alpha(lighten(theme.palette.background.default, 0.04), 0.95)\n : undefined,\n boxShadow: getIsLastLeftPinnedColumn()\n ? `4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : getIsFirstRightPinnedColumn()\n ? `-4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : undefined,\n cursor: isEditable && editingMode === 'cell' ? 'pointer' : 'text',\n left:\n column.getIsPinned() === 'left'\n ? `${column.getStart('left')}px`\n : undefined,\n overflow: 'hidden',\n p:\n density === 'compact'\n ? columnDefType === 'display'\n ? '0 0.5rem'\n : '0.5rem'\n : density === 'comfortable'\n ? columnDefType === 'display'\n ? '0.5rem 0.75rem'\n : '1rem'\n : columnDefType === 'display'\n ? '1rem 1.25rem'\n : '1.5rem',\n pl:\n column.id === 'mrt-expand'\n ? `${\n row.depth +\n (density === 'compact'\n ? 0.5\n : density === 'comfortable'\n ? 0.75\n : 1.25)\n }rem`\n : undefined,\n position: column.getIsPinned() ? 'sticky' : 'relative',\n right:\n column.getIsPinned() === 'right' ? `${getTotalRight()}px` : undefined,\n textOverflow: columnDefType !== 'display' ? 'ellipsis' : undefined,\n transition: 'all 0.2s ease-in-out',\n whiteSpace: density === 'compact' ? 'nowrap' : 'normal',\n zIndex: column.getIsPinned() ? 1 : undefined,\n '&:hover': {\n backgroundColor:\n enableHover && enableEditing && editingMode !== 'row'\n ? theme.palette.mode === 'dark'\n ? `${lighten(\n theme.palette.background.default,\n 0.13,\n )} !important`\n : `${darken(theme.palette.background.default, 0.07)} !important`\n : undefined,\n },\n ...(tableCellProps?.sx as any),\n maxWidth: `min(${column.getSize()}px, fit-content)`,\n minWidth: `max(${column.getSize()}px, ${columnDef.minSize ?? 30}px)`,\n width: column.getSize(),\n })}\n >\n <>\n {cell.getIsPlaceholder() ? null : isLoading || showSkeletons ? (\n <Skeleton\n animation=\"wave\"\n height={20}\n width={skeletonWidth}\n {...muiTableBodyCellSkeletonProps}\n />\n ) : enableRowNumbers &&\n rowNumberMode === 'static' &&\n column.id === 'mrt-row-numbers' ? (\n rowIndex + 1\n ) : columnDefType === 'display' ? (\n columnDef.Cell?.({ cell, table })\n ) : isEditing ? (\n <MRT_EditCellTextField cell={cell} table={table} />\n ) : (enableClickToCopy || columnDef.enableClickToCopy) &&\n columnDef.enableClickToCopy !== false ? (\n <>\n <MRT_CopyButton cell={cell} table={table}>\n <>{columnDef?.Cell?.({ cell, table }) ?? cell.renderValue()}</>\n </MRT_CopyButton>\n {cell.getIsGrouped() && <> ({row.subRows?.length})</>}\n </>\n ) : (\n <>\n {columnDef?.Cell?.({ cell, table }) ?? cell.renderValue()}\n {cell.getIsGrouped() && <> ({row.subRows?.length ?? ''})</>}\n </>\n )}\n </>\n </TableCell>\n );\n};\n","import React, { FC } from 'react';\nimport { Collapse, TableCell, TableRow } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableDetailPanel: FC<Props> = ({ row, table }) => {\n const {\n getVisibleLeafColumns,\n options: {\n muiTableBodyRowProps,\n muiTableDetailPanelProps,\n renderDetailPanel,\n },\n } = table;\n\n const tableRowProps =\n muiTableBodyRowProps instanceof Function\n ? muiTableBodyRowProps({ row, table })\n : muiTableBodyRowProps;\n\n const tableCellProps =\n muiTableDetailPanelProps instanceof Function\n ? muiTableDetailPanelProps({ row, table })\n : muiTableDetailPanelProps;\n\n return (\n <TableRow {...tableRowProps}>\n <TableCell\n colSpan={getVisibleLeafColumns().length}\n {...tableCellProps}\n sx={{\n borderBottom: !row.getIsExpanded() ? 'none' : undefined,\n pb: row.getIsExpanded() ? '1rem' : 0,\n pt: row.getIsExpanded() ? '1rem' : 0,\n transition: 'all 0.2s ease-in-out',\n width: `${table.getTotalSize()}px`,\n ...tableCellProps?.sx,\n }}\n >\n {renderDetailPanel && (\n <Collapse in={row.getIsExpanded()}>\n {renderDetailPanel({ row, table })}\n </Collapse>\n )}\n </TableCell>\n </TableRow>\n );\n};\n","import React, { FC } from 'react';\nimport { darken, lighten, TableRow } from '@mui/material';\nimport { MRT_TableBodyCell } from './MRT_TableBodyCell';\nimport { MRT_TableDetailPanel } from './MRT_TableDetailPanel';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n rowIndex: number;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableBodyRow: FC<Props> = ({ row, rowIndex, table }) => {\n const {\n getIsSomeColumnsPinned,\n options: { muiTableBodyRowProps, renderDetailPanel },\n } = table;\n\n const tableRowProps =\n muiTableBodyRowProps instanceof Function\n ? muiTableBodyRowProps({ row, table })\n : muiTableBodyRowProps;\n\n return (\n <>\n <TableRow\n hover\n selected={row.getIsSelected()}\n {...tableRowProps}\n sx={(theme) => ({\n backgroundColor: lighten(theme.palette.background.default, 0.06),\n transition: 'all 0.2s ease-in-out',\n '&:hover td': {\n backgroundColor:\n tableRowProps?.hover !== false && getIsSomeColumnsPinned()\n ? theme.palette.mode === 'dark'\n ? `${lighten(theme.palette.background.default, 0.12)}`\n : `${darken(theme.palette.background.default, 0.05)}`\n : undefined,\n },\n ...(tableRowProps?.sx as any),\n })}\n >\n {row?.getVisibleCells()?.map?.((cell) => (\n <MRT_TableBodyCell\n cell={cell}\n key={cell.id}\n enableHover={tableRowProps?.hover !== false}\n rowIndex={rowIndex}\n table={table}\n />\n ))}\n </TableRow>\n {renderDetailPanel && !row.getIsGrouped() && (\n <MRT_TableDetailPanel row={row} table={table} />\n )}\n </>\n );\n};\n","import React, { FC, RefObject, useMemo } from 'react';\nimport { useVirtual } from 'react-virtual';\nimport { TableBody } from '@mui/material';\nimport { MRT_TableBodyRow } from './MRT_TableBodyRow';\nimport type { MRT_Row, MRT_TableInstance } from '..';\nimport { rankGlobalFuzzy } from '../sortingFns';\n\ninterface Props {\n table: MRT_TableInstance;\n tableContainerRef: RefObject<HTMLDivElement>;\n}\n\nexport const MRT_TableBody: FC<Props> = ({ table, tableContainerRef }) => {\n const {\n getRowModel,\n getPrePaginationRowModel,\n getState,\n options: {\n enableGlobalFilterRankedResults,\n enablePagination,\n enableRowVirtualization,\n muiTableBodyProps,\n virtualizerProps,\n },\n } = table;\n const { density, globalFilter, pagination, sorting } = getState();\n\n const tableBodyProps =\n muiTableBodyProps instanceof Function\n ? muiTableBodyProps({ table })\n : muiTableBodyProps;\n\n const getIsSomeColumnsSorted = () => {\n return Object.values(sorting).some(Boolean);\n };\n\n const rows = useMemo(() => {\n if (\n enableGlobalFilterRankedResults &&\n globalFilter &&\n !getIsSomeColumnsSorted()\n ) {\n const rankedRows = getPrePaginationRowModel().rows.sort((a, b) =>\n rankGlobalFuzzy(a, b),\n );\n if (enablePagination) {\n return rankedRows.slice(0, pagination.pageSize);\n }\n return rankedRows;\n }\n\n return enablePagination\n ? getRowModel().rows\n : getPrePaginationRowModel().rows;\n }, [\n enableGlobalFilterRankedResults,\n (enableGlobalFilterRankedResults && globalFilter) || !enablePagination\n ? getPrePaginationRowModel().rows\n : getRowModel().rows,\n globalFilter,\n ]);\n\n const rowVirtualizer = enableRowVirtualization\n ? useVirtual({\n 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 table={table}\n />\n );\n },\n )}\n {enableRowVirtualization && paddingBottom > 0 && (\n <tr>\n <td style={{ height: `${paddingBottom}px` }} />\n </tr>\n )}\n </TableBody>\n );\n};\n","import React, { FC } from 'react';\nimport { alpha, TableCell } from '@mui/material';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n footer: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableFooterCell: FC<Props> = ({ footer, table }) => {\n const {\n getState,\n options: { muiTableFooterCellProps, enableColumnResizing },\n } = table;\n const { density } = getState();\n const { column } = footer;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const mTableFooterCellProps =\n muiTableFooterCellProps instanceof Function\n ? muiTableFooterCellProps({ column, table })\n : muiTableFooterCellProps;\n\n const mcTableFooterCellProps =\n columnDef.muiTableFooterCellProps instanceof Function\n ? columnDef.muiTableFooterCellProps({ column, table })\n : columnDef.muiTableFooterCellProps;\n\n const tableCellProps = {\n ...mTableFooterCellProps,\n ...mcTableFooterCellProps,\n };\n\n return (\n <TableCell\n align={columnDefType === 'group' ? 'center' : 'left'}\n colSpan={footer.colSpan}\n variant=\"head\"\n {...tableCellProps}\n sx={(theme) => ({\n backgroundColor: theme.palette.background.default,\n backgroundImage: `linear-gradient(${alpha(\n theme.palette.common.white,\n 0.05,\n )},${alpha(theme.palette.common.white, 0.05)})`,\n fontWeight: 'bold',\n maxWidth: `${column.getSize()}px`,\n minWidth: `${column.getSize()}px`,\n p:\n density === 'compact'\n ? '0.5rem'\n : density === 'comfortable'\n ? '1rem'\n : '1.5rem',\n transition: `all ${enableColumnResizing ? '10ms' : '0.2s'} ease-in-out`,\n width: column.getSize(),\n verticalAlign: 'text-top',\n ...(tableCellProps?.sx as any),\n })}\n >\n <>\n {footer.isPlaceholder\n ? null\n : (columnDef.Footer instanceof Function\n ? columnDef.Footer?.({\n footer,\n table,\n })\n : columnDef.Footer) ??\n columnDef.footer ??\n null}\n </>\n </TableCell>\n );\n};\n","import React, { FC } from 'react';\nimport { TableRow } from '@mui/material';\nimport { MRT_TableFooterCell } from './MRT_TableFooterCell';\nimport type { MRT_Header, MRT_HeaderGroup, MRT_TableInstance } from '..';\n\ninterface Props {\n footerGroup: MRT_HeaderGroup;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableFooterRow: FC<Props> = ({ footerGroup, table }) => {\n const {\n options: { muiTableFooterRowProps },\n } = table;\n\n // if no content in row, skip row\n if (\n !footerGroup.headers?.some(\n (header) =>\n (typeof header.column.columnDef.footer === 'string' &&\n !!header.column.columnDef.footer) ||\n header.column.columnDef.Footer,\n )\n )\n return null;\n\n const tableRowProps =\n muiTableFooterRowProps instanceof Function\n ? muiTableFooterRowProps({ footerGroup, table })\n : muiTableFooterRowProps;\n\n return (\n <TableRow {...tableRowProps}>\n {footerGroup.headers.map((footer: MRT_Header) => (\n <MRT_TableFooterCell footer={footer} key={footer.id} table={table} />\n ))}\n </TableRow>\n );\n};\n","import React, { FC } from 'react';\nimport { TableFooter } from '@mui/material';\nimport { MRT_TableFooterRow } from './MRT_TableFooterRow';\nimport type { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableFooter: FC<Props> = ({ table }) => {\n const {\n getFooterGroups,\n options: { muiTableFooterProps },\n } = table;\n\n const tableFooterProps =\n muiTableFooterProps instanceof Function\n ? muiTableFooterProps({ table })\n : muiTableFooterProps;\n\n return (\n <TableFooter {...tableFooterProps}>\n {getFooterGroups().map((footerGroup) => (\n <MRT_TableFooterRow\n footerGroup={footerGroup as any}\n key={footerGroup.id}\n table={table}\n />\n ))}\n </TableFooter>\n );\n};\n","import React, { FC, RefObject } from 'react';\nimport { Table } from '@mui/material';\nimport { MRT_TableHead } from '../head/MRT_TableHead';\nimport { MRT_TableBody } from '../body/MRT_TableBody';\nimport { MRT_TableFooter } from '../footer/MRT_TableFooter';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n tableContainerRef: RefObject<HTMLDivElement>;\n table: MRT_TableInstance;\n}\n\nexport const MRT_Table: FC<Props> = ({ tableContainerRef, table }) => {\n const {\n getState,\n options: {\n enableColumnResizing,\n enableRowVirtualization,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n muiTableProps,\n },\n } = table;\n const { isFullScreen } = getState();\n\n const tableProps =\n muiTableProps instanceof Function\n ? muiTableProps({ table })\n : muiTableProps;\n\n return (\n <Table\n stickyHeader={\n enableStickyHeader || enableRowVirtualization || isFullScreen\n }\n {...tableProps}\n sx={{\n tableLayout:\n enableColumnResizing || enableRowVirtualization ? 'fixed' : 'auto',\n ...tableProps?.sx,\n }}\n >\n {enableTableHead && <MRT_TableHead table={table} />}\n <MRT_TableBody tableContainerRef={tableContainerRef} table={table} />\n {enableTableFooter && <MRT_TableFooter table={table} />}\n </Table>\n );\n};\n","import React, { FC, useEffect, useLayoutEffect, useState } from 'react';\nimport { TableContainer } from '@mui/material';\nimport { MRT_Table } from './MRT_Table';\nimport type { MRT_TableInstance } from '..';\n\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableContainer: FC<Props> = ({ table }) => {\n const {\n getState,\n options: {\n enableStickyHeader,\n enableRowVirtualization,\n muiTableContainerProps,\n tableId,\n },\n } = table;\n const { isFullScreen } = getState();\n\n const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);\n\n const tableContainerProps =\n muiTableContainerProps instanceof Function\n ? muiTableContainerProps({ table })\n : muiTableContainerProps;\n\n useIsomorphicLayoutEffect(() => {\n const topToolbarHeight =\n typeof document !== 'undefined'\n ? document?.getElementById(`mrt-${tableId}-toolbar-top`)\n ?.offsetHeight ?? 0\n : 0;\n\n const bottomToolbarHeight =\n typeof document !== 'undefined'\n ? document?.getElementById(`mrt-${tableId}-toolbar-bottom`)\n ?.offsetHeight ?? 0\n : 0;\n\n setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);\n });\n\n const tableContainerRef = React.useRef<HTMLDivElement>(null);\n\n return (\n <TableContainer\n {...tableContainerProps}\n ref={tableContainerRef}\n sx={{\n maxWidth: '100%',\n maxHeight:\n enableStickyHeader || enableRowVirtualization\n ? `clamp(350px, calc(100vh - ${totalToolbarHeight}px), 9999px)`\n : undefined,\n overflow: 'auto',\n ...tableContainerProps?.sx,\n }}\n style={{\n maxHeight: isFullScreen\n ? `calc(100vh - ${totalToolbarHeight}px)`\n : undefined,\n ...tableContainerProps?.style,\n }}\n >\n <MRT_Table tableContainerRef={tableContainerRef} table={table} />\n </TableContainer>\n );\n};\n","import React, { FC, useEffect } from 'react';\nimport { Paper } from '@mui/material';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { MRT_ToolbarTop } from '../toolbar/MRT_ToolbarTop';\nimport { MRT_ToolbarBottom } from '../toolbar/MRT_ToolbarBottom';\nimport { MRT_TableContainer } from './MRT_TableContainer';\nimport type { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TablePaper: FC<Props> = ({ table }) => {\n const {\n getState,\n options: { enableToolbarBottom, enableToolbarTop, muiTablePaperProps },\n } = table;\n const { isFullScreen } = getState();\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n if (isFullScreen) {\n document.body.style.height = '100vh';\n } else {\n document.body.style.height = 'auto';\n }\n }\n }, [isFullScreen]);\n\n const tablePaperProps =\n muiTablePaperProps instanceof Function\n ? muiTablePaperProps({ table })\n : muiTablePaperProps;\n\n return (\n <DndProvider backend={HTML5Backend}>\n <Paper\n elevation={2}\n {...tablePaperProps}\n sx={{\n transition: 'all 0.2s ease-in-out',\n ...tablePaperProps?.sx,\n }}\n style={{\n ...tablePaperProps?.style,\n height: isFullScreen ? '100vh' : undefined,\n margin: isFullScreen ? '0' : undefined,\n maxHeight: isFullScreen ? '100vh' : undefined,\n maxWidth: isFullScreen ? '100vw' : undefined,\n padding: isFullScreen ? '0' : undefined,\n width: isFullScreen ? '100vw' : undefined,\n }}\n >\n {enableToolbarTop && <MRT_ToolbarTop table={table} />}\n <MRT_TableContainer table={table} />\n {enableToolbarBottom && <MRT_ToolbarBottom table={table} />}\n </Paper>\n </DndProvider>\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport {\n TableState,\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport {\n MRT_Cell,\n MRT_ColumnDef,\n MRT_FilterOption,\n MRT_Row,\n MRT_TableInstance,\n MRT_TableState,\n} from '..';\nimport { MRT_ExpandAllButton } from '../buttons/MRT_ExpandAllButton';\nimport { MRT_ExpandButton } from '../buttons/MRT_ExpandButton';\nimport { MRT_ToggleRowActionMenuButton } from '../buttons/MRT_ToggleRowActionMenuButton';\nimport { MRT_SelectCheckbox } from '../inputs/MRT_SelectCheckbox';\nimport { MaterialReactTableProps } from '../MaterialReactTable';\nimport { MRT_TablePaper } from './MRT_TablePaper';\nimport { Box, Dialog, Grow } from '@mui/material';\nimport {\n prepareColumns,\n getAllLeafColumnDefs,\n getDefaultColumnOrderIds,\n} from '../utils';\nimport { MRT_FilterFns } from '../filtersFns';\n\nexport const MRT_TableRoot = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) => {\n const [tableId, setIdPrefix] = useState(props.tableId);\n useEffect(\n () =>\n setIdPrefix(props.tableId ?? Math.random().toString(36).substring(2, 9)),\n [props.tableId],\n );\n\n const initialState: Partial<MRT_TableState<D>> = useMemo(() => {\n const initState = props.initialState ?? {};\n initState.columnOrder =\n initState.columnOrder ?? getDefaultColumnOrderIds(props);\n return initState;\n }, []);\n\n const [columnOrder, setColumnOrder] = useState(\n initialState.columnOrder ?? [],\n );\n const [currentEditingCell, setCurrentEditingCell] =\n useState<MRT_Cell<D> | null>(initialState?.currentEditingCell ?? null);\n const [currentEditingRow, setCurrentEditingRow] = useState<MRT_Row<D> | null>(\n initialState?.currentEditingRow ?? null,\n );\n const [density, setDensity] = useState(\n initialState?.density ?? 'comfortable',\n );\n const [isFullScreen, setIsFullScreen] = useState(\n initialState?.isFullScreen ?? false,\n );\n const [showAlertBanner, setShowAlertBanner] = useState(\n props.initialState?.showAlertBanner ?? false,\n );\n const [showFilters, setShowFilters] = useState(\n initialState?.showFilters ?? false,\n );\n const [showGlobalFilter, setShowGlobalFilter] = useState(\n initialState?.showGlobalFilter ?? false,\n );\n\n const [currentFilterFns, setCurrentFilterFns] = useState<{\n [key: string]: MRT_FilterOption;\n }>(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef<D>[]).map(\n (col) => ({\n [col.id?.toString() ?? col.accessorKey?.toString() ?? '']:\n col.filterFn instanceof Function\n ? col.filterFn.name ?? 'custom'\n : col.filterFn ??\n initialState?.currentFilterFns?.[\n col.id?.toString() ?? col.accessorKey?.toString() ?? ''\n ] ??\n (!!col.filterSelectOptions?.length ? 'equals' : 'fuzzy'),\n }),\n ),\n ),\n );\n\n const [currentGlobalFilterFn, setCurrentGlobalFilterFn] =\n useState<MRT_FilterOption>(\n props.globalFilterFn instanceof String\n ? (props.globalFilterFn as MRT_FilterOption)\n : 'fuzzy',\n );\n\n const displayColumns = useMemo(\n () =>\n (\n [\n columnOrder.includes('mrt-row-actions') && {\n Cell: ({ cell }) => (\n <MRT_ToggleRowActionMenuButton\n row={cell.row as any}\n table={table}\n />\n ),\n columnDefType: 'display',\n header: props.localization?.actions,\n id: 'mrt-row-actions',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 70,\n },\n columnOrder.includes('mrt-expand') && {\n Cell: ({ cell }) => (\n <MRT_ExpandButton row={cell.row as any} table={table} />\n ),\n Header: () =>\n props.enableExpandAll ? (\n <MRT_ExpandAllButton table={table} />\n ) : null,\n columnDefType: 'display',\n header: props.localization?.expand,\n id: 'mrt-expand',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n },\n columnOrder.includes('mrt-select') && {\n Cell: ({ cell }) => (\n <MRT_SelectCheckbox row={cell.row as any} table={table} />\n ),\n Header: () =>\n props.enableSelectAll ? (\n <MRT_SelectCheckbox selectAll table={table} />\n ) : null,\n columnDefType: 'display',\n header: props.localization?.select,\n id: 'mrt-select',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n },\n columnOrder.includes('mrt-row-numbers') && {\n Cell: ({ cell }) => cell.row.index + 1,\n Header: () => props.localization?.rowNumber,\n columnDefType: 'display',\n header: props.localization?.rowNumbers,\n id: 'mrt-row-numbers',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n },\n ] as MRT_ColumnDef<D>[]\n ).filter(Boolean),\n [\n columnOrder,\n props.editingMode,\n props.enableEditing,\n props.enableExpandAll,\n props.enableExpanding,\n props.enableGrouping,\n props.enableRowActions,\n props.enableRowNumbers,\n props.enableRowSelection,\n props.enableSelectAll,\n props.localization,\n props.muiTableBodyCellProps,\n props.muiTableHeadCellProps,\n props.positionActionsColumn,\n ],\n );\n\n const columnDefs = useMemo(\n () =>\n prepareColumns([...displayColumns, ...props.columns], currentFilterFns),\n [currentFilterFns, displayColumns, props.columns],\n );\n\n const data: D[] = useMemo(\n () =>\n (props.state?.isLoading || props.state?.showSkeletons) &&\n !props.data.length\n ? [...Array(10).fill(null)].map(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map(\n (col) => ({\n [col.id ?? col.accessorKey ?? '']: null,\n }),\n ),\n ),\n )\n : props.data,\n [props.data, props.state?.isLoading, props.state?.showSkeletons],\n );\n\n //@ts-ignore\n const table = {\n ...useReactTable({\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n onColumnOrderChange: setColumnOrder,\n ...props,\n //@ts-ignore\n columns: columnDefs,\n data,\n getSubRows: (row) => row?.subRows,\n //@ts-ignore\n globalFilterFn:\n MRT_FilterFns[currentGlobalFilterFn] ?? MRT_FilterFns.fuzzy,\n initialState,\n state: {\n columnOrder,\n currentEditingCell,\n currentEditingRow,\n currentFilterFns,\n currentGlobalFilterFn,\n density,\n isFullScreen,\n showAlertBanner,\n showFilters,\n showGlobalFilter,\n ...props.state,\n } as TableState,\n tableId,\n }),\n setCurrentEditingCell:\n props.onCurrentEditingCellChange ?? setCurrentEditingCell,\n setCurrentEditingRow:\n props.onCurrentEditingRowChange ?? setCurrentEditingRow,\n setCurrentFilterFns: props.onCurrentFilterFnsChange ?? setCurrentFilterFns,\n setCurrentGlobalFilterFn:\n props.onCurrentGlobalFilterFnChange ?? setCurrentGlobalFilterFn,\n setDensity: props.onDensityChange ?? setDensity,\n setIsFullScreen: props.onIsFullScreenChange ?? setIsFullScreen,\n setShowAlertBanner: props.onShowAlertBannerChange ?? setShowAlertBanner,\n setShowFilters: props.onShowFiltersChange ?? setShowFilters,\n setShowGlobalFilter: props.onShowGlobalFilterChange ?? setShowGlobalFilter,\n } as MRT_TableInstance;\n\n return (\n <>\n <Dialog\n PaperComponent={Box}\n TransitionComponent={Grow}\n disablePortal\n fullScreen\n keepMounted={false}\n onClose={() => setIsFullScreen(false)}\n open={isFullScreen}\n transitionDuration={400}\n >\n <MRT_TablePaper table={table} />\n </Dialog>\n {!isFullScreen && <MRT_TablePaper table={table} />}\n </>\n );\n};\n","import React, {\n ChangeEvent,\n Dispatch,\n FC,\n FocusEvent,\n ReactNode,\n SetStateAction,\n} from 'react';\nimport {\n AlertProps,\n ButtonProps,\n CheckboxProps,\n IconButtonProps,\n LinearProgressProps,\n PaperProps,\n SkeletonProps,\n TableBodyProps,\n TableCellProps,\n TableContainerProps,\n TableFooterProps,\n TableHeadProps,\n TablePaginationProps,\n TableProps,\n TableRowProps,\n TextFieldProps,\n ToolbarProps,\n} from '@mui/material';\nimport {\n Cell,\n Column,\n ColumnDef,\n FilterFn,\n Header,\n HeaderGroup,\n OnChangeFn,\n Row,\n SortingFn,\n Table,\n TableOptions,\n TableState,\n} from '@tanstack/react-table';\nimport { Options as VirtualizerOptions } from 'react-virtual';\nimport { MRT_Localization, MRT_DefaultLocalization_EN } from './localization';\nimport { MRT_Default_Icons, MRT_Icons } from './icons';\nimport { MRT_TableRoot } from './table/MRT_TableRoot';\nimport { MRT_FilterFns } from './filtersFns';\nimport { MRT_SortingFns } from './sortingFns';\n\ntype LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>);\n\nexport type MRT_TableOptions<D extends Record<string, any> = {}> = Partial<\n Omit<\n TableOptions<D>,\n 'columns' | 'data' | 'initialState' | 'state' | 'expandRowsFn'\n >\n> & {\n columns: MRT_ColumnDef<D>[];\n data: D[];\n expandRowsFn?: (dataRow: D) => D[];\n initialState?: Partial<MRT_TableState<D>>;\n state?: Partial<MRT_TableState<D>>;\n};\n\nexport interface MRT_RowModel<D extends Record<string, any> = {}> {\n flatRows: MRT_Row<D>[];\n rows: MRT_Row<D>[];\n rowsById: { [key: string]: MRT_Row<D> };\n}\n\nexport type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<\n Table<D>,\n | 'getAllColumns'\n | 'getAllFlatColumns'\n | 'getAllLeafColumns'\n | 'getCenterLeafColumns'\n | 'getColumn'\n | 'getExpandedRowModel'\n | 'getFlatHeaders'\n | 'getLeftLeafColumns'\n | 'getPaginationRowModel'\n | 'getPreFilteredRowModel'\n | 'getPrePaginationRowModel'\n | 'getRightLeafColumns'\n | 'getRowModel'\n | 'getSelectedRowModel'\n | 'getState'\n | 'options'\n> & {\n getAllColumns: () => MRT_Column<D>[];\n getAllFlatColumns: () => MRT_Column<D>[];\n getAllLeafColumns: () => MRT_Column<D>[];\n getCenterLeafColumns: () => MRT_Column<D>[];\n getColumn: (columnId: string) => MRT_Column<D>;\n getExpandedRowModel: () => MRT_RowModel<D>;\n getFlatHeaders: () => MRT_Header<D>[];\n getLeftLeafColumns: () => MRT_Column<D>[];\n getPaginationRowModel: () => MRT_RowModel<D>;\n getPreFilteredRowModel: () => MRT_RowModel<D>;\n getPrePaginationRowModel: () => MRT_RowModel<D>;\n getRightLeafColumns: () => MRT_Column<D>[];\n getRowModel: () => MRT_RowModel<D>;\n getSelectedRowModel: () => MRT_RowModel<D>;\n getState: () => MRT_TableState<D>;\n options: MaterialReactTableProps<D> & {\n icons: MRT_Icons;\n tableId: string;\n localization: MRT_Localization;\n };\n setCurrentEditingCell: Dispatch<SetStateAction<MRT_Cell | null>>;\n setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row | null>>;\n setCurrentFilterFns: Dispatch<\n SetStateAction<{\n [key: string]: MRT_FilterOption;\n }>\n >;\n setCurrentGlobalFilterFn: Dispatch<SetStateAction<MRT_FilterOption>>;\n setDensity: Dispatch<SetStateAction<'comfortable' | 'compact' | 'spacious'>>;\n setIsFullScreen: Dispatch<SetStateAction<boolean>>;\n setShowAlertBanner: Dispatch<SetStateAction<boolean>>;\n setShowFilters: Dispatch<SetStateAction<boolean>>;\n setShowGlobalFilter: Dispatch<SetStateAction<boolean>>;\n};\n\nexport type MRT_TableState<D extends Record<string, any> = {}> = TableState & {\n currentEditingCell: MRT_Cell<D> | null;\n currentEditingRow: MRT_Row<D> | null;\n currentFilterFns: Record<string, MRT_FilterOption>;\n currentGlobalFilterFn: Record<string, MRT_FilterOption>;\n density: 'comfortable' | 'compact' | 'spacious';\n isLoading: boolean;\n isFullScreen: boolean;\n showAlertBanner: boolean;\n showFilters: boolean;\n showGlobalFilter: boolean;\n showProgressBars: boolean;\n showSkeletons: boolean;\n};\n\nexport type MRT_ColumnDef<D extends Record<string, any> = {}> = Omit<\n ColumnDef<D>,\n | 'accessorFn'\n | 'accessorKey'\n | 'aggregatedCell'\n | 'cell'\n | 'columns'\n | 'filterFn'\n | 'footer'\n | 'header'\n | 'id'\n | 'sortingFn'\n> & {\n AggregatedCell?: ({\n cell,\n table,\n }: {\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Cell?: ({\n cell,\n table,\n }: {\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Edit?: ({\n cell,\n table,\n }: {\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Filter?: ({\n header,\n table,\n }: {\n header: MRT_Header<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Footer?:\n | ReactNode\n | (({\n footer,\n table,\n }: {\n footer: MRT_Header<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode);\n Header?:\n | ReactNode\n | (({\n header,\n table,\n }: {\n header: MRT_Header<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode);\n /**\n * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.\n * Specify a function here to point to the correct property in the data object.\n *\n * @example accessorFn: (row) => row.username\n */\n accessorFn?: (row: D) => any;\n /**\n * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.\n * Specify which key in the row this column should use to access the correct data.\n *\n * @example accessorKey: 'username'\n */\n accessorKey?: LiteralUnion<string & keyof D>;\n /**\n * Specify what type of column this is. Either `data`, `display`, or `group`. Defaults to `data`.\n * Leave this blank if you are just creating a normal data column.\n *\n * @default 'data'\n *\n * @example columnDefType: 'display'\n */\n columnDefType?: 'data' | 'display' | 'group';\n columns?: MRT_ColumnDef<D>[];\n enableClickToCopy?: boolean;\n enableColumnActions?: boolean;\n enableColumnFilterChangeMode?: boolean;\n enableColumnOrdering?: boolean;\n enableEditing?: boolean;\n enabledColumnFilterOptions?: MRT_FilterOption[] | null;\n filterFn?: MRT_FilterFn<D>;\n filterSelectOptions?: (string | { text: string; value: string })[];\n footer?: string;\n header: string;\n /**\n * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.\n *\n * If you have also specified an `accessorFn`, MRT still needs to have a valid `id` to be able to identify the column uniquely.\n *\n * `id` defaults to the `accessorKey` or `header` if not specified.\n *\n * @default gets set to the same value as `accessorKey` by default\n */\n id?: LiteralUnion<string & keyof D>;\n muiTableBodyCellCopyButtonProps?:\n | ButtonProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => ButtonProps);\n muiTableBodyCellEditTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TextFieldProps);\n muiTableBodyCellProps?:\n | TableCellProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TableCellProps);\n muiTableFooterCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableHeadCellColumnActionsButtonProps?:\n | IconButtonProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => IconButtonProps);\n muiTableHeadCellFilterTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TextFieldProps);\n muiTableHeadCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n onCellEditBlur?: ({\n cell,\n event,\n table,\n }: {\n event: FocusEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n onCellEditChange?: ({\n cell,\n event,\n table,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n sortingFn?: MRT_SortingFn;\n};\n\nexport type MRT_DefinedColumnDef<D extends Record<string, any> = {}> = Omit<\n MRT_ColumnDef<D>,\n 'id'\n> & {\n id: string;\n};\n\nexport type MRT_Column<D extends Record<string, any> = {}> = Omit<\n Column<D>,\n 'header' | 'footer' | 'columns' | 'columnDef' | 'filterFn'\n> & {\n columnDef: MRT_DefinedColumnDef<D>;\n columns?: MRT_Column<D>[];\n filterFn?: MRT_FilterFn<D>;\n footer: string;\n header: string;\n};\n\nexport type MRT_Header<D extends Record<string, any> = {}> = Omit<\n Header<D>,\n 'column'\n> & {\n column: MRT_Column<D>;\n};\n\nexport type MRT_HeaderGroup<D extends Record<string, any> = {}> = Omit<\n HeaderGroup<D>,\n 'headers'\n> & {\n headers: MRT_Header<D>[];\n};\n\nexport type MRT_Row<D extends Record<string, any> = {}> = Omit<\n Row<D>,\n 'getVisibleCells' | 'getAllCells' | 'subRows' | 'original' | '_valuesCache'\n> & {\n getAllCells: () => MRT_Cell<D>[];\n getVisibleCells: () => MRT_Cell<D>[];\n subRows?: MRT_Row<D>[];\n original: D;\n _valuesCache?: D;\n};\n\nexport type MRT_Cell<D extends Record<string, any> = {}> = Omit<\n Cell<D>,\n 'column' | 'row'\n> & {\n column: MRT_Column<D>;\n row: MRT_Row<D>;\n};\n\nexport type MRT_SortingOption = keyof typeof MRT_SortingFns;\n\nexport type MRT_SortingFn<D extends Record<string, any> = {}> =\n | SortingFn<D>\n | MRT_SortingOption;\n\nexport type MRT_FilterOption = keyof typeof MRT_FilterFns;\n\nexport type MRT_FilterFn<D extends Record<string, any> = {}> =\n | FilterFn<D>\n | MRT_FilterOption;\n\nexport type MaterialReactTableProps<D extends Record<string, any> = {}> =\n MRT_TableOptions<D> & {\n editingMode?: 'table' | 'row' | 'cell';\n enableClickToCopy?: boolean;\n enableColumnActions?: boolean;\n enableColumnFilterChangeMode?: boolean;\n enableColumnOrdering?: boolean;\n enableDensityToggle?: boolean;\n enableEditing?: boolean;\n enableExpandAll?: boolean;\n enableFullScreenToggle?: boolean;\n enableGlobalFilterChangeMode?: boolean;\n enableGlobalFilterRankedResults?: boolean;\n enablePagination?: boolean;\n enableRowActions?: boolean;\n enableRowNumbers?: boolean;\n enableRowVirtualization?: boolean;\n enableSelectAll?: boolean;\n enableStickyHeader?: boolean;\n enableTableFooter?: boolean;\n enableTableHead?: boolean;\n enableToolbarBottom?: boolean;\n enableToolbarInternalActions?: boolean;\n enableToolbarTop?: boolean;\n enabledColumnFilterOptions?: (MRT_FilterOption | string)[] | null;\n enabledGlobalFilterOptions?: (MRT_FilterOption | string)[] | null;\n icons?: Partial<MRT_Icons>;\n localization?: Partial<MRT_Localization>;\n muiExpandAllButtonProps?:\n | IconButtonProps\n | (({ table }: { table: MRT_TableInstance<D> }) => IconButtonProps);\n muiExpandButtonProps?:\n | IconButtonProps\n | (({\n table,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => IconButtonProps);\n muiLinearProgressProps?:\n | LinearProgressProps\n | (({ table }: { table: MRT_TableInstance<D> }) => LinearProgressProps);\n muiSearchTextFieldProps?:\n | TextFieldProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TextFieldProps);\n muiSelectAllCheckboxProps?:\n | CheckboxProps\n | (({ table }: { table: MRT_TableInstance<D> }) => CheckboxProps);\n muiSelectCheckboxProps?:\n | CheckboxProps\n | (({\n table,\n row,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => CheckboxProps);\n muiTableBodyCellCopyButtonProps?:\n | ButtonProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => ButtonProps);\n muiTableBodyCellEditTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TextFieldProps);\n muiTableBodyCellProps?:\n | TableCellProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TableCellProps);\n muiTableBodyCellSkeletonProps?:\n | SkeletonProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => SkeletonProps);\n muiTableBodyProps?:\n | TableBodyProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableBodyProps);\n muiTableBodyRowProps?:\n | TableRowProps\n | (({\n table,\n row,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => TableRowProps);\n muiTableContainerProps?:\n | TableContainerProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableContainerProps);\n muiTableDetailPanelProps?:\n | TableCellProps\n | (({\n table,\n row,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => TableCellProps);\n muiTableFooterCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableFooterProps?:\n | TableFooterProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableFooterProps);\n muiTableFooterRowProps?:\n | TableRowProps\n | (({\n table,\n footerGroup,\n }: {\n table: MRT_TableInstance<D>;\n footerGroup: MRT_HeaderGroup<D>;\n }) => TableRowProps);\n muiTableHeadCellColumnActionsButtonProps?:\n | IconButtonProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => IconButtonProps);\n muiTableHeadCellFilterTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TextFieldProps);\n muiTableHeadCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableHeadProps?:\n | TableHeadProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableHeadProps);\n muiTableHeadRowProps?:\n | TableRowProps\n | (({\n table,\n headerGroup,\n }: {\n table: MRT_TableInstance<D>;\n headerGroup: MRT_HeaderGroup<D>;\n }) => TableRowProps);\n muiTablePaginationProps?:\n | Partial<TablePaginationProps>\n | (({\n table,\n }: {\n table: MRT_TableInstance<D>;\n }) => Partial<TablePaginationProps>);\n muiTablePaperProps?:\n | PaperProps\n | (({ table }: { table: MRT_TableInstance<D> }) => PaperProps);\n muiTableProps?:\n | TableProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableProps);\n muiTableToolbarAlertBannerProps?:\n | AlertProps\n | (({ table }: { table: MRT_TableInstance<D> }) => AlertProps);\n muiTableToolbarBottomProps?:\n | ToolbarProps\n | (({ table }: { table: MRT_TableInstance<D> }) => ToolbarProps);\n muiTableToolbarTopProps?:\n | ToolbarProps\n | (({ table }: { table: MRT_TableInstance<D> }) => ToolbarProps);\n onCellEditBlur?: ({\n cell,\n event,\n table,\n }: {\n event: FocusEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n onCellEditChange?: ({\n cell,\n event,\n table,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n onCurrentEditingCellChange?: OnChangeFn<MRT_Cell>;\n onCurrentEditingRowChange?: OnChangeFn<MRT_Row>;\n onCurrentFilterFnsChange?: OnChangeFn<{ [key: string]: MRT_FilterOption }>;\n onCurrentGlobalFilterFnChange?: OnChangeFn<MRT_FilterOption>;\n onEditRowSubmit?: ({\n row,\n table,\n }: {\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => Promise<void> | void;\n onDensityChange?: OnChangeFn<boolean>;\n onIsFullScreenChange?: OnChangeFn<boolean>;\n onShowAlertBannerChange?: OnChangeFn<boolean>;\n onShowFiltersChange?: OnChangeFn<boolean>;\n onShowGlobalFilterChange?: OnChangeFn<boolean>;\n positionActionsColumn?: 'first' | 'last';\n positionGlobalFilter?: 'left' | 'right';\n positionPagination?: 'bottom' | 'top' | 'both';\n positionToolbarAlertBanner?: 'bottom' | 'top';\n renderDetailPanel?: ({\n row,\n table,\n }: {\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderRowActionMenuItems?: ({\n closeMenu,\n row,\n table,\n }: {\n closeMenu: () => void;\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode[];\n renderRowActions?: ({\n row,\n table,\n }: {\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarBottomCustomActions?: ({\n table,\n }: {\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarTopCustomActions?: ({\n table,\n }: {\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarInternalActions?: ({\n table,\n MRT_ToggleGlobalFilterButton,\n MRT_ToggleFiltersButton,\n MRT_ShowHideColumnsButton,\n MRT_ToggleDensePaddingButton,\n MRT_FullScreenToggleButton,\n }: {\n table: MRT_TableInstance<D>;\n MRT_ToggleGlobalFilterButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_ToggleFiltersButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_ShowHideColumnsButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_ToggleDensePaddingButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_FullScreenToggleButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n }) => ReactNode;\n rowCount?: number;\n rowNumberMode?: 'original' | 'static';\n selectAllMode?: 'all' | 'page';\n tableId?: string;\n virtualizerProps?: Partial<VirtualizerOptions<HTMLDivElement>>;\n };\n\nexport default <D extends Record<string, any> = {}>({\n autoResetExpanded = false,\n columnResizeMode = 'onEnd',\n defaultColumn = { minSize: 40, maxSize: 1000, size: 180 },\n editingMode = 'row',\n enableColumnActions = true,\n enableColumnFilterChangeMode = true,\n enableColumnFilters = true,\n enableColumnOrdering = false,\n enableColumnResizing = false,\n enableDensityToggle = true,\n enableExpandAll = true,\n enableFilters = true,\n enableFullScreenToggle = true,\n enableGlobalFilter = true,\n enableGlobalFilterChangeMode = true,\n enableGlobalFilterRankedResults = true,\n enableGrouping = false,\n enableHiding = true,\n enableMultiRowSelection = true,\n enableMultiSort = true,\n enablePagination = true,\n enablePinning = false,\n enableRowSelection = false,\n enableSelectAll = true,\n enableSorting = true,\n enableStickyHeader = false,\n enableTableFooter = true,\n enableTableHead = true,\n enableToolbarBottom = true,\n enableToolbarInternalActions = true,\n enableToolbarTop = true,\n icons,\n localization,\n positionActionsColumn = 'first',\n positionGlobalFilter = 'right',\n positionPagination = 'bottom',\n positionToolbarAlertBanner = 'top',\n rowNumberMode = 'original',\n selectAllMode = 'all',\n ...rest\n}: MaterialReactTableProps<D>) => (\n <MRT_TableRoot\n autoResetExpanded={autoResetExpanded}\n columnResizeMode={columnResizeMode}\n defaultColumn={defaultColumn}\n editingMode={editingMode}\n enableColumnActions={enableColumnActions}\n enableColumnFilterChangeMode={enableColumnFilterChangeMode}\n enableColumnFilters={enableColumnFilters}\n enableColumnOrdering={enableColumnOrdering}\n enableColumnResizing={enableColumnResizing}\n enableDensityToggle={enableDensityToggle}\n enableExpandAll={enableExpandAll}\n enableFilters={enableFilters}\n enableFullScreenToggle={enableFullScreenToggle}\n enableGlobalFilter={enableGlobalFilter}\n enableGlobalFilterChangeMode={enableGlobalFilterChangeMode}\n enableGlobalFilterRankedResults={enableGlobalFilterRankedResults}\n enableGrouping={enableGrouping}\n enableHiding={enableHiding}\n enableMultiRowSelection={enableMultiRowSelection}\n enableMultiSort={enableMultiSort}\n enablePagination={enablePagination}\n enablePinning={enablePinning}\n enableRowSelection={enableRowSelection}\n enableSelectAll={enableSelectAll}\n enableSorting={enableSorting}\n enableStickyHeader={enableStickyHeader}\n enableTableFooter={enableTableFooter}\n enableTableHead={enableTableHead}\n enableToolbarBottom={enableToolbarBottom}\n enableToolbarInternalActions={enableToolbarInternalActions}\n enableToolbarTop={enableToolbarTop}\n icons={{ ...MRT_Default_Icons, ...icons }}\n localization={{ ...MRT_DefaultLocalization_EN, ...localization }}\n positionActionsColumn={positionActionsColumn}\n positionGlobalFilter={positionGlobalFilter}\n positionPagination={positionPagination}\n positionToolbarAlertBanner={positionToolbarAlertBanner}\n rowNumberMode={rowNumberMode}\n selectAllMode={selectAllMode}\n {...rest}\n />\n);\n"],"names":["MRT_DefaultLocalization_EN","actions","and","cancel","changeFilterMode","changeSearchMode","clearFilter","clearSearch","clearSort","clickToCopy","columnActions","copiedToClipboard","edit","expand","expandAll","filterBetween","filterByColumn","filterContains","filterEmpty","filterEndsWith","filterEquals","filterFuzzy","filterGreaterThan","filterLessThan","filterMode","filterNotEmpty","filterNotEquals","filterStartsWith","filteringByColumn","grab","groupByColumn","groupedBy","hideAll","hideColumn","max","min","pinToLeft","pinToRight","resetColumnSize","resetOrder","rowActions","rowNumber","rowNumbers","save","search","selectedCountOfRowCountRowsSelected","select","showAll","showAllColumns","showHideColumns","showHideFilters","showHideSearch","sortByColumnAsc","sortByColumnDesc","sortedByColumnAsc","sortedByColumnDesc","thenBy","toggleDensity","toggleFullScreen","toggleSelectAll","toggleSelectRow","toggleVisibility","ungroupByColumn","unpin","unpinAll","unsorted","MRT_Default_Icons","ArrowRightIcon","ArrowRight","CancelIcon","Cancel","CheckBoxIcon","CheckBox","ClearAllIcon","ClearAll","CloseIcon","Close","DensityLargeIcon","DensityLarge","DensityMediumIcon","DensityMedium","DensitySmallIcon","DensitySmall","DragHandleIcon","DragHandle","DynamicFeedIcon","DynamicFeed","EditIcon","Edit","ExpandLessIcon","ExpandLess","ExpandMoreIcon","ExpandMore","FilterAltIcon","FilterAlt","FilterAltOffIcon","FilterAltOff","FilterListIcon","FilterList","FilterListOffIcon","FilterListOff","FullscreenExitIcon","FullscreenExit","FullscreenIcon","Fullscreen","KeyboardDoubleArrowDownIcon","KeyboardDoubleArrowDown","MoreHorizIcon","MoreHoriz","MoreVertIcon","MoreVert","PushPinIcon","PushPin","RestartAltIcon","RestartAlt","SaveIcon","Save","SearchIcon","Search","SearchOffIcon","SearchOff","SortIcon","Sort","ViewColumnIcon","ViewColumn","VisibilityOffIcon","VisibilityOff","MRT_ExpandAllButton","table","getIsAllRowsExpanded","getIsSomeRowsExpanded","getCanSomeRowsExpand","options","icons","localization","muiExpandAllButtonProps","renderDetailPanel","toggleAllRowsExpanded","density","getState","iconButtonProps","Function","React","Tooltip","arrow","enterDelay","enterNextDelay","title","IconButton","disabled","onClick","sx","height","width","style","transform","transition","MRT_ExpandButton","row","muiExpandButtonProps","getCanExpand","toggleExpanded","getIsExpanded","commonMenuItemStyles","py","my","alignItems","MRT_FilterOptionMenu","anchorEl","header","onSelect","setAnchorEl","enabledGlobalFilterOptions","enabledColumnFilterOptions","setCurrentFilterFns","setCurrentGlobalFilterFn","currentFilterFns","currentGlobalFilterFn","column","columnDef","allowedColumnFilterOptions","filterOptions","useMemo","option","label","divider","filter","filterType","undefined","includes","filterOption","id","Menu","anchorOrigin","vertical","horizontal","onClose","open","MenuListProps","dense","map","index","MenuItem","key","prev","setFilterValue","handleSelectFilterType","selected","value","DndContext","createContext","dragDropManager","formatProdErrorMessage","code","$$observable","Symbol","observable","randomString","Math","random","toString","substring","split","join","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","obj","proto","Object","getPrototypeOf","createStore","reducer","preloadedState","enhancer","_ref2","arguments","Error","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","slice","subscribe","listener","isSubscribed","push","indexOf","splice","dispatch","action","type","listeners","i","length","replaceReducer","nextReducer","_ref","outerSubscribe","observer","observeState","next","unsubscribe","this","invariant","condition","format","args","process","env","error","argIndex","replace","name","framesToPop","isObject","input","BEGIN_DRAG","HOVER","DROP","END_DRAG","setClientOffset","clientOffset","sourceClientOffset","payload","ResetCoordinatesAction","createBeginDrag","manager","sourceIds","publishSource","getSourceClientOffset","monitor","getMonitor","registry","getRegistry","isDragging","forEach","sourceId","getSource","verifyInvariants","canDragSource","getDraggableSource","verifyGetSourceClientOffsetIsFunction","item","beginDrag","verifyItemIsObject","pinSource","itemType","getSourceType","isSourcePublic","createDrop","didDrop","targetIds","getTargetIds","canDropOnTarget","reverse","getDroppableTargets","targetId","dropResult","target","getTarget","drop","verifyDropResultType","getDropResult","determineDropResult","_objectSpread","createEndDrag","verifyIsDragging","getSourceId","endDrag","unpinSource","matchesType","targetType","draggedItemType","Array","isArray","some","t","createHover","targetIdsArg","verifyTargetIdsIsArray","getTargetType","removeNonMatchingTargetIds","getItemType","lastIndexOf","checkInvariants","hover","hoverAllTargets","createPublishDragSource","DragDropManagerImpl","[object Object]","backend","getBackend","getActions","store","publishDragSource","createDragDropActions","keys","reduce","boundActions","actionCreator","apply","isSetUp","handleRefCountChange","shouldSetUp","refCount","setup","teardown","subtract","a","b","x","y","NONE","ALL","__IS_NONE__","__IS_ALL__","DragDropMonitorImpl","subscribeToStateChange","handlerIds","prevStateId","stateId","state","currentStateId","dirtyIds","itemsB","areDirty","dirtyHandlerIds","previousState","dragOffset","nextState","source","canDrag","canDrop","Boolean","isOverTarget","shallow","dragOperation","getItem","getInitialClientOffset","initialClientOffset","getInitialSourceClientOffset","initialSourceClientOffset","getClientOffset","getDifferenceFromInitialOffset","scope","global","self","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","makeRequestCallFromTimer","callback","timeoutHandle","setTimeout","handleTimer","intervalHandle","setInterval","clearTimeout","clearInterval","makeRequestCall","toggle","node","document","createTextNode","observe","characterData","data","RawTask","call","task","onError","release","asapQueue","queue","q","requestFlush","flushing","pendingErrors","capacity","flush","currentIndex","scan","newLength","registerPendingError","err","requestErrorThrow","shift","taskFactory","tasks","freeTasks","pop","REMOVE_TARGET","validateType","allowArray","HandlerRole","SOURCE","TARGET","nextUniqueId","parseRoleFromHandlerId","handlerId","mapContainsValue","searchValue","entries","isDone","done","HandlerRegistryImpl","addSource","validateSourceContract","addHandler","addTarget","validateTargetContract","handler","dragSources","dropTargets","includePinned","isSourceId","pinnedSourceId","pinnedSource","get","isTargetId","types","removeSource","enqueueTask","create","delete","removeTarget","role","getNextHandlerId","set","Map","strictEquality","_state","prevTargetIds","result","itemsA","insertItem","has","count","xor","isEqual","areArraysEqual","prevInnermostTargetId","innermostTargetId","initialState","offsetB","offsetA","items","defaultValue","c","createDragDropManager","backendFactory","globalContext","backendOptions","debugMode","reduxDevTools","window","__REDUX_DEVTOOLS_EXTENSION__","instanceId","makeStoreInstance","receiveBackend","INSTANCE_SYM","for","DndProvider","memo","_param","children","props","isGlobalInstance","context","getGlobalContext","ctx","createSingletonDndContext","getDndContextValue","useEffect","_jsx","Provider","useIsomorphicLayoutEffect","useLayoutEffect","useCollectedProps","collector","connector","collect","onCollect","collected","updateCollected","onUpdate","setCollected","useState","useCallback","nextValue","equal","constructor","RegExp","flags","valueOf","prototype","hasOwnProperty","useCollector","reconnect","getHandlerId","useMonitorOutput","useOptionalFactory","arg","deps","memoDeps","useConnectDragSource","hooks","dragSource","useConnectDragPreview","dragPreview","isCallingCanDrag","isCallingIsDragging","DragSourceMonitorImpl","internalMonitor","isDraggingSource","subscribeToOffsetChange","isCallingCanDrop","DropTargetMonitorImpl","shallowEqual","objA","objB","compare","compareContext","compareResult","keysA","keysB","bHasOwnProperty","bind","idx","valueA","valueB","isRef","wrapConnectorHooks","wrappedHooks","hook","endsWith","wrappedHook","elementOrNode","isValidElement","element","displayName","throwIfCompositeComponentElement","newRef","previousRef","ref","cloneElement","setRef","cloneWithRef","wrapHookToRecognizeElement","current","SourceConnector","newHandlerId","connectTarget","dragSourceOptions","dragSourceOptionsInternal","dragPreviewOptions","dragPreviewOptionsInternal","didChange","reconnectDragSource","reconnectDragPreview","didHandlerIdChange","didConnectedDragSourceChange","didDragSourceOptionsChange","disconnectDragSource","lastConnectedHandlerId","lastConnectedDragSource","lastConnectedDragSourceOptions","dragSourceUnsubscribe","connectDragSource","forceDidChange","didConnectedDragPreviewChange","didDragPreviewOptionsChange","disconnectDragPreview","lastConnectedDragPreview","lastConnectedDragPreviewOptions","dragPreviewUnsubscribe","connectDragPreview","dragPreviewNode","dragPreviewRef","dragSourceNode","dragSourceRef","clearDragSource","clearDragPreview","TargetConnector","dropTarget","didDropTargetChange","didOptionsChange","disconnectDropTarget","lastConnectedDropTarget","lastConnectedDropTargetOptions","dropTargetOptions","unsubscribeDropTarget","connectDropTarget","dropTargetOptionsInternal","dropTargetNode","dropTargetRef","clearDropTarget","useDragDropManager","useContext","DragSourceImpl","spec","globalMonitor","end","useDrag","specArg","begin","useDragSourceMonitor","useDragSourceConnector","previewOptions","useDragSource","useDragType","unregister","registerSource","receiveHandlerId","useRegisteredDragSource","useConnectDropTarget","DropTargetImpl","useDrop","useDropTargetMonitor","useDropTargetConnector","useDropTarget","accept","useAccept","registerTarget","useRegisteredDropTarget","MRT_ColumnPinningButtons","handlePinColumn","pinDirection","pin","Box","minWidth","textAlign","getIsPinned","size","MRT_GrabHandleButton","forwardRef","placement","disableRipple","cursor","m","opacity","p","&:hover","backgroundColor","&:active","fuzzy","columnId","filterValue","addMeta","itemRank","rankItem","getValue","threshold","rankings","MATCHES","passed","autoRemove","val","contains","toLowerCase","trim","startsWith","equals","notEquals","greaterThan","isNaN","lessThan","between","filterValues","empty","_filterValue","notEmpty","MRT_FilterFns","filterFns","MRT_SortingFns","sortingFns","rowA","rowB","dir","columnFiltersMeta","compareItems","alphanumeric","getColumnId","accessorKey","_columnDef$accessorKe","getAllLeafColumnDefs","columns","lowestLevelColumns","currentCols","_currentCols","col","nextCols","flat","every","reorderColumn","movingColumn","receivingColumn","columnOrder","getCanPin","getDefaultColumnOrderIds","positionActionsColumn","enableRowActions","enableEditing","editingMode","enableExpanding","enableGrouping","enableRowSelection","enableRowNumbers","getLeadingDisplayColumnIds","getTrailingDisplayColumnIds","MRT_ShowHideColumnsMenuItems","allColumns","isSubMenu","enableColumnOrdering","enableHiding","enablePinning","setColumnOrder","columnDefType","dropRef","newColumnOrder","dragRef","previewRef","switchChecked","getIsVisible","getLeafColumns","justifyContent","pl","depth","display","flexWrap","gap","FormControlLabel","componentsProps","typography","mb","checked","control","Switch","getCanHide","getIsGrouped","onChange","childColumn","handleToggleColumnHidden","Typography","alignSelf","_column$columns2","MRT_ShowHideColumnsMenu","getAllColumns","getAllLeafColumns","getCenterLeafColumns","getIsAllColumnsVisible","getIsSomeColumnsPinned","getIsSomeColumnsVisible","getLeftLeafColumns","getRightLeafColumns","toggleAllColumnsVisible","from","Set","colId","find","columnPinning","pt","Button","resetColumnPinning","Divider","commonListItemStyles","MRT_ColumnActionMenu","enableColumnFilterChangeMode","enableColumnFilters","enableColumnResizing","enableSorting","tableId","setShowFilters","columnSizing","columnVisibility","filterMenuAnchorEl","setFilterMenuAnchorEl","showHideColumnsMenuAnchorEl","setShowHideColumnsMenuAnchorEl","handleFilterByColumn","getElementById","muiTableHeadCellFilterTextFieldProps","_header$muiTableHeadC2","_document$getElementB","focus","handleOpenFilterModeMenu","event","stopPropagation","currentTarget","handleOpenShowHideColumnsMenu","showFilterModeSubMenu","filterSelectOptions","getCanSort","getIsSorted","clearSorting","ListItemIcon","toggleSorting","_localization$sortByC","String","_localization$sortByC2","getCanFilter","getFilterValue","_localization$filterB","onMouseEnter","getCanGroup","toggleGrouping","old","_localization","getCanResize","resetSize","_localization$hideCol","values","visible","_localization$showAll","MRT_RowActionMenu","handleEdit","renderRowActionMenuItems","closeMenu","MRT_EditActionButtons","onEditRowSubmit","setCurrentEditingRow","currentEditingRow","_valuesCache","original","color","commonIconButtonStyles","ml","MRT_ToggleRowActionMenuButton","renderRowActions","handleStartEditMode","preventDefault","MRT_SelectCheckbox","selectAll","muiSelectCheckboxProps","muiSelectAllCheckboxProps","selectAllMode","checkboxProps","Checkbox","getIsAllRowsSelected","getIsSelected","indeterminate","getIsSomeRowsSelected","getIsSomeSelected","inputProps","aria-label","getToggleAllRowsSelectedHandler","getToggleAllPageRowsSelectedHandler","getToggleSelectedHandler","memoize","fn","EnterLeaveCounter","enteringNode","previousLength","entered","add","union","isNodeInDocument","leavingNode","reset","NativeDragSource","initializeExposedProperties","config","exposeProperties","property","defineProperty","configurable","enumerable","console","warn","dataTransfer","newProperties","propertyFn","matchesTypes","defineProperties","handle","FILE","URL","TEXT","HTML","getDataFromDataTransfer","typesToTry","resultSoFar","typeToTry","getData","nativeTypesConfig","NativeTypes","files","html","urls","text","matchNativeItemType","dataTransferTypes","nativeItemType","typeConfig","isFirefox","test","navigator","userAgent","isSafari","safari","MonotonicInterpolant","xs","ys","c1s","c2s","c3s","mid","low","high","floor","xHere","diff","diffSq","dxs","ms","dx","dy","m2","mNext","dxNext","common","c1","invDx","getNodeClientOffset","el","nodeType","parentElement","top","left","getBoundingClientRect","getEventClientOffset","e","clientX","clientY","OptionsReader","rootElement","optionsArgs","ownerDocument","HTML5BackendImpl","profile","ref1","sourcePreviewNodes","sourcePreviewNodeOptions","sourceNodeOptions","sourceNodes","dragStartSourceIds","dropTargetIds","dragEnterTargetIds","dragOverTargetIds","root","__isReactDndBackendSetUp","addEventListeners","removeEventListeners","clearCurrentDragSourceNode","asyncEndDragFrameId","cancelAnimationFrame","handleDragStart","handleSelectStart","setAttribute","addEventListener","removeEventListener","handleDragEnter","handleDragOver","handleDrop","handleTopDragStart","handleTopDragStartCapture","handleTopDragEndCapture","handleTopDragEnter","handleTopDragEnterCapture","handleTopDragLeaveCapture","handleTopDragOver","handleTopDragOverCapture","handleTopDrop","handleTopDropCapture","getCurrentSourceNodeOptions","dropEffect","altKeyPressed","getCurrentDropEffect","isDraggingNativeItem","getCurrentSourcePreviewNodeOptions","anchorX","anchorY","captureDraggingState","beginDragNativeItem","currentNativeSource","loadDataTransfer","createNativeDragSource","currentNativeHandle","currentDragSourceNode","mouseMoveTimeoutTimer","endDragIfSourceWasRemovedFromDOM","defaultPrevented","unshift","_e","lastClientOffset","hoverRafId","endDragNativeItem","body","cancelHover","scheduleHover","requestAnimationFrame","nativeType","setDragImage","sourceNode","offsetX","offsetY","dragPreviewOffset","anchorPoint","offsetPoint","isImage","nodeName","documentElement","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","offsetWidth","sourceWidth","offsetHeight","sourceHeight","dragPreviewWidth","dragPreviewHeight","devicePixelRatio","getDragPreviewSize","isManualOffsetY","interpolate","calculateYOffset","getDragPreviewOffset","setData","setCurrentDragSourceNode","hasAttribute","enterLeaveCounter","enter","altKey","leave","dragDrop","tagName","isContentEditable","HTML5Backend","MRT_FullScreenToggleButton","rest","setIsFullScreen","isFullScreen","MRT_ShowHideColumnsButton","MRT_ToggleDensePaddingButton","setDensity","MRT_ToggleFiltersButton","showFilters","MRT_ToggleGlobalFilterButton","muiSearchTextFieldProps","setShowGlobalFilter","showGlobalFilter","textFieldProps","MRT_GlobalFilterTextField","setGlobalFilter","enableGlobalFilterChangeMode","globalFilter","setSearchValue","handleChangeDebounced","debounce","Collapse","in","orientation","TextField","placeholder","variant","InputProps","startAdornment","InputAdornment","position","endAdornment","MRT_ToolbarInternalButtons","enableDensityToggle","enableFilters","enableFullScreenToggle","enableGlobalFilter","positionGlobalFilter","renderToolbarInternalActions","zIndex","MRT_TablePagination","getPrePaginationRowModel","setPageIndex","setPageSize","muiTablePaginationProps","enableToolbarInternalActions","rowCount","pagination","pageSize","pageIndex","totalRowCount","rows","showFirstLastPageButtons","tablePaginationProps","TablePagination","SelectProps","MenuProps","disablePadding","component","onPageChange","_","newPage","onRowsPerPageChange","page","rowsPerPage","rowsPerPageOptions","showFirstButton","showLastButton","mt","MRT_ToolbarAlertBanner","stackAlertBanner","getSelectedRowModel","muiTableToolbarAlertBannerProps","grouping","showAlertBanner","alertProps","selectMessage","_localization$selecte","_localization$selecte2","groupedByMessage","Fragment","Chip","getColumn","onDelete","timeout","Alert","icon","borderRadius","fontSize","right","AlertTitle","MRT_LinearProgressBar","alignTo","muiLinearProgressProps","isLoading","showProgressBars","linearProgressProps","mountOnEnter","unmountOnExit","bottom","LinearProgress","commonToolbarStyles","lighten","theme","palette","background","backgroundImage","minHeight","overflow","MRT_ToolbarTop","enablePagination","muiTableToolbarTopProps","positionPagination","positionToolbarAlertBanner","renderToolbarTopCustomActions","isMobile","useMediaQuery","toolbarProps","Toolbar","boxSizing","MRT_ToolbarBottom","muiTableToolbarBottomProps","renderToolbarBottomCustomActions","boxShadow","alpha","black","MRT_FilterTextField","inputIndex","_column$getFilterValu2","newFilterValues","Filter","filterId","currentFilterOption","isSelectFilter","filterChipLabel","charAt","toUpperCase","filterPlaceholder","showChangeModeButton","fullWidth","textOverflow","helperText","htmlFor","FormHelperTextProps","lineHeight","whiteSpace","margin","disableHoverListener","&\t.MuiSelect-icon","mr","_columnDef$filterSele","MRT_FilterRangeFields","gridTemplateColumns","MRT_TableHeadCellFilterContainer","MRT_TableHeadCellFilterLabel","filterTooltip","Grow","_column$getFilterValu","MRT_TableHeadCellResizeHandle","columnResizeMode","flexItem","onDoubleClick","borderRightWidth","touchAction","getIsResizing","userSelect","info","main","onMouseDown","getResizeHandler","onTouchStart","columnSizingInfo","deltaOffset","MRT_TableHeadCellSortLabel","sortTooltip","TableSortLabel","active","direction","MRT_TableHeadCellColumnActionsButton","muiTableHeadCellColumnActionsButtonProps","MRT_TableHeadCell","enableColumnActions","enableMultiSort","muiTableHeadCellProps","tableCellProps","headerElement","Header","TableCell","align","colSpan","getLeftLeafHeaders","getPinnedIndex","fontWeight","getStart","pb","getRightLeafHeaders","verticalAlign","maxWidth","getSize","minSize","isPlaceholder","getToggleSortingHandler","_columnDef$header","MRT_DraggableTableHeadCell","MRT_TableHeadRow","headerGroup","muiTableHeadRowProps","tableRowProps","TableRow","headers","MRT_TableHead","getHeaderGroups","muiTableHeadProps","tableHeadProps","TableHead","rafId","observedNodes","useRect","nodeRef","initialRect","setElement","useReducer","rectReducer","rect","initialRectSet","useRef","cb","wasEmpty","hasRectChanged","callbacks","run","changedStates","newRect","prop","unobserve","defaultEstimateSize","defaultKeyExtractor","defaultMeasureSize","defaultRangeExtractor","range","start","overscan","arr","MRT_EditCellTextField","cell","muiTableBodyCellEditTextFieldProps","onCellEditBlur","onCellEditChange","setCurrentEditingCell","setValue","onBlur","MRT_CopyButton","muiTableBodyCellCopyButtonProps","copied","setCopied","buttonProps","clipboard","writeText","border","fontFamily","letterSpacing","textTransform","MRT_TableBodyCell","enableHover","rowIndex","enableClickToCopy","muiTableBodyCellProps","muiTableBodyCellSkeletonProps","rowNumberMode","currentEditingCell","showSkeletons","skeletonWidth","isEditable","isEditing","_event","textField","mode","darken","getIsPlaceholder","Skeleton","animation","Cell","renderValue","subRows","_row$subRows","_row$subRows2","MRT_TableDetailPanel","getVisibleLeafColumns","muiTableBodyRowProps","muiTableDetailPanelProps","borderBottom","getTotalSize","MRT_TableBodyRow","&:hover td","getVisibleCells","_row$getVisibleCells","MRT_TableBody","tableContainerRef","getRowModel","enableGlobalFilterRankedResults","enableRowVirtualization","muiTableBodyProps","virtualizerProps","sorting","tableBodyProps","rankedRows","sort","v","rank","rowVirtualizer","estimateSize","paddingStart","paddingEnd","parentRef","scrollToFn","useObserver","onScrollElement","scrollOffsetFn","keyExtractor","measureSize","rangeExtractor","sizeKey","scrollKey","latestRef","scrollOffset","measurements","setScrollOffset","outerSize","defaultScrollToFn","offset","resolvedScrollToFn","measuredCache","setMeasuredCache","measure","pendingMeasuredCacheIndexesRef","measuredSize","totalSize","scrollOffsetFnRef","onScroll","capture","passive","getCurrentValue","middle","currentValue","findNearestBinarySearch","calculateRange","indexes","measureSizeRef","virtualItems","k","len","measureRef","mountedRef","scrollToOffset","toOffset","tryScrollToIndex","measurement","scrollToIndex","useVirtual","virtualRows","paddingTop","paddingBottom","TableBody","rowOrVirtualRow","MRT_TableFooterCell","footer","muiTableFooterCellProps","white","Footer","MRT_TableFooterRow","footerGroup","muiTableFooterRowProps","_footerGroup$headers","MRT_TableFooter","getFooterGroups","muiTableFooterProps","tableFooterProps","TableFooter","MRT_Table","enableStickyHeader","enableTableFooter","enableTableHead","muiTableProps","tableProps","Table","stickyHeader","tableLayout","MRT_TableContainer","muiTableContainerProps","totalToolbarHeight","setTotalToolbarHeight","tableContainerProps","topToolbarHeight","_document","_document$getElementB2","bottomToolbarHeight","_document2","_document2$getElement","TableContainer","maxHeight","MRT_TablePaper","enableToolbarBottom","enableToolbarTop","muiTablePaperProps","tablePaperProps","Paper","elevation","padding","MRT_TableRoot","setIdPrefix","initState","_props$initialState2","setShowAlertBanner","assign","_col$id","_col$accessorKey","filterFn","_initialState$current3","_col$id2","_col$accessorKey2","_col$filterSelectOpti","globalFilterFn","displayColumns","_props$localization","enableExpandAll","_props$localization2","enableSelectAll","_props$localization3","_props$localization4","_props$localization5","columnDefs","prepareColumns","_columnDef$columns","sortingFn","_props$state2","fill","_props$state3","_props$state4","useReactTable","getCoreRowModel","getExpandedRowModel","getFacetedRowModel","getFilteredRowModel","getGroupedRowModel","getPaginationRowModel","getSortedRowModel","onColumnOrderChange","getSubRows","onCurrentEditingCellChange","onCurrentEditingRowChange","onCurrentFilterFnsChange","onCurrentGlobalFilterFnChange","onDensityChange","onIsFullScreenChange","onShowAlertBannerChange","onShowFiltersChange","onShowGlobalFilterChange","Dialog","PaperComponent","TransitionComponent","disablePortal","fullScreen","keepMounted","transitionDuration","autoResetExpanded","defaultColumn","maxSize","enableMultiRowSelection"],"mappings":"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"}