@elliemae/ds-data-table 2.0.0-alpha.1 → 2.0.0-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/cjs/DataTable.js +9 -4
  2. package/cjs/DataTableContext.js +1 -1
  3. package/cjs/DataTableSchema.js +32 -20
  4. package/cjs/addons/Columns/ColumnDragHandle/ColumnDragHandle.js +12 -11
  5. package/cjs/addons/Columns/ColumnExpand/ColumnExpand.js +62 -40
  6. package/cjs/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +30 -23
  7. package/cjs/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +22 -16
  8. package/cjs/addons/Editables/ComboboxEditableCell/ComboboxEditableCell.js +22 -15
  9. package/cjs/addons/Editables/DateEditableCell/DateEditableCell.js +22 -13
  10. package/cjs/addons/Editables/TextEditableCell/TextEditableCell.js +38 -13
  11. package/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js +169 -0
  12. package/cjs/addons/Filters/Components/DateRangeFilter/index.js +26 -19
  13. package/cjs/addons/Filters/Components/DateSwitcherFilter/index.js +145 -0
  14. package/cjs/addons/Filters/Components/NumberRangeFilter/index.js +95 -37
  15. package/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +88 -91
  16. package/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilter.js +46 -34
  17. package/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilter.js +46 -32
  18. package/cjs/addons/Filters/Components/SelectFilter/components.js +6 -6
  19. package/cjs/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js +17 -13
  20. package/cjs/addons/Filters/Components/SelectFilter/utils.js +14 -8
  21. package/cjs/addons/Filters/Components/SingleDateFilter/index.js +25 -18
  22. package/cjs/addons/Filters/Components/index.js +8 -6
  23. package/cjs/addons/Filters/index.js +8 -6
  24. package/cjs/addons/Pagination/Pagination.js +19 -54
  25. package/cjs/configs/constants.js +4 -4
  26. package/cjs/configs/fixedSizes.js +1 -1
  27. package/cjs/configs/index.js +1 -3
  28. package/cjs/configs/useDatatableConfig.js +8 -2
  29. package/cjs/configs/usePaginationConfig.js +10 -4
  30. package/cjs/configs/useRowFlattenization.js +14 -7
  31. package/cjs/configs/useTableColsWithAddons.js +36 -21
  32. package/cjs/exported-related/EditableCell.js +22 -7
  33. package/cjs/exported-related/FilterPopover.js +72 -78
  34. package/cjs/exported-related/FilterTypes.js +3 -2
  35. package/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js +8 -3
  36. package/cjs/exported-related/Filters/currencyRangeFilterFn.js +24 -0
  37. package/cjs/exported-related/Filters/dateRangeFilterFn.js +13 -7
  38. package/cjs/exported-related/Filters/dateSwitcherFilterFn.js +12 -0
  39. package/cjs/exported-related/Filters/index.js +2 -2
  40. package/cjs/exported-related/Filters/multiSelectFilterFn.js +9 -3
  41. package/cjs/exported-related/Filters/numberRangeFilterFn.js +7 -1
  42. package/cjs/exported-related/Filters/singleDateFilterFn.js +13 -7
  43. package/cjs/exported-related/Filters/singleSelectFilterFn.js +5 -1
  44. package/cjs/exported-related/RowRenderer/DefaultRowContentRenderer.js +18 -6
  45. package/cjs/exported-related/RowRenderer/index.js +20 -12
  46. package/cjs/exported-related/RowRenderer/useRowRendererHandlers.js +58 -17
  47. package/cjs/exported-related/RowRenderer/useRowRendererProperties.js +13 -5
  48. package/cjs/exported-related/RowRenderer/useRowStyle.js +7 -6
  49. package/cjs/exported-related/Toolbar/Toolbar.js +48 -28
  50. package/cjs/exported-related/groupBy.js +14 -5
  51. package/cjs/exported-related/index.js +2 -2
  52. package/cjs/helpers/addCellData.js +16 -6
  53. package/cjs/helpers/cellPadding.js +17 -11
  54. package/cjs/helpers/columnsToGrid.js +6 -1
  55. package/cjs/helpers/getIdFromUniqueRowAccessor.js +3 -0
  56. package/cjs/helpers/refs-helpers.js +13 -3
  57. package/cjs/helpers/sizeToCss.js +1 -1
  58. package/cjs/hooks/useRecoverFocusCol.js +1 -0
  59. package/cjs/index.js +2 -2
  60. package/cjs/parts/Cells/Cell.js +38 -26
  61. package/cjs/parts/Cells/index.js +7 -5
  62. package/cjs/parts/Cells/useCellStyle.js +3 -3
  63. package/cjs/parts/DnDHandle.js +31 -22
  64. package/cjs/parts/DropIndicator.js +33 -33
  65. package/cjs/parts/EmptyContent.js +23 -20
  66. package/cjs/parts/FilterBar/FiltersBar.js +62 -33
  67. package/cjs/parts/FilterBar/components/DateRangePill.js +23 -12
  68. package/cjs/parts/FilterBar/components/DateSwitcherPill.js +45 -0
  69. package/cjs/parts/FilterBar/components/MultiSelectPill.js +34 -14
  70. package/cjs/parts/FilterBar/components/NumberRangePill.js +25 -12
  71. package/cjs/parts/FilterBar/components/SelectPill.js +23 -12
  72. package/cjs/parts/FilterBar/components/SingleDatePill.js +22 -11
  73. package/cjs/parts/FilterBar/components/index.js +2 -2
  74. package/cjs/parts/FilterBar/styled.js +2 -2
  75. package/cjs/parts/Filters/index.js +34 -22
  76. package/cjs/parts/Footer.js +9 -6
  77. package/cjs/parts/Headers/EmptyChildrenGroup.js +2 -2
  78. package/cjs/parts/Headers/HeaderCell.js +34 -26
  79. package/cjs/parts/Headers/HeaderCellGroup.js +31 -21
  80. package/cjs/parts/Headers/HeaderCellTitle.js +61 -27
  81. package/cjs/parts/Headers/HeaderResizer.js +22 -13
  82. package/cjs/parts/Headers/RequiredDot.js +2 -2
  83. package/cjs/parts/Headers/index.js +6 -4
  84. package/cjs/parts/Headers/useHeaderCellConfig.js +12 -7
  85. package/cjs/parts/Headers/useHeaderCellHandlers.js +32 -21
  86. package/cjs/parts/HoC/withConditionalDnDColumnContext.js +52 -21
  87. package/cjs/parts/HoC/withConditionalDnDRowContext.js +21 -16
  88. package/cjs/parts/HoC/withConditionalDnDSortableContext.js +24 -14
  89. package/cjs/parts/HoC/withDnDSortableColumnContext.js +13 -22
  90. package/cjs/parts/HoC/withDnDSortableRowContext.js +11 -20
  91. package/cjs/parts/Loader.js +3 -3
  92. package/cjs/parts/Row.js +18 -12
  93. package/cjs/parts/RowLoading.js +14 -8
  94. package/cjs/parts/RowVariants/RowVariantHeader.js +37 -24
  95. package/cjs/parts/RowVariants/RowVariantPrimary.js +11 -10
  96. package/cjs/parts/RowVariants/RowVariantSecondary.js +11 -10
  97. package/cjs/parts/RowVariants/index.js +22 -13
  98. package/cjs/parts/Rows.js +12 -5
  99. package/cjs/parts/SortByCaret.js +16 -16
  100. package/cjs/parts/SortableHeaderCell.js +7 -2
  101. package/cjs/parts/TableContent.js +22 -12
  102. package/cjs/parts/VirtualRowsList.js +17 -10
  103. package/cjs/parts/index.js +1 -1
  104. package/cjs/prop-types.js +30 -25
  105. package/cjs/redux/reducers/headersReducers/logic.js +11 -5
  106. package/cjs/redux/reducers/index.js +1 -1
  107. package/cjs/redux/storeConfig.js +1 -1
  108. package/cjs/styled.js +133 -120
  109. package/esm/DataTable.js +5 -0
  110. package/esm/DataTableSchema.js +32 -20
  111. package/esm/addons/Columns/ColumnDragHandle/ColumnDragHandle.js +9 -8
  112. package/esm/addons/Columns/ColumnExpand/ColumnExpand.js +52 -29
  113. package/esm/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +27 -19
  114. package/esm/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +18 -11
  115. package/esm/addons/Editables/ComboboxEditableCell/ComboboxEditableCell.js +19 -11
  116. package/esm/addons/Editables/DateEditableCell/DateEditableCell.js +19 -10
  117. package/esm/addons/Editables/TextEditableCell/TextEditableCell.js +34 -9
  118. package/esm/addons/Filters/Components/CurrencyRangeFilter/index.js +159 -0
  119. package/esm/addons/Filters/Components/DateRangeFilter/index.js +20 -12
  120. package/esm/addons/Filters/Components/DateSwitcherFilter/index.js +136 -0
  121. package/esm/addons/Filters/Components/NumberRangeFilter/index.js +92 -32
  122. package/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +87 -87
  123. package/esm/addons/Filters/Components/SelectFilter/MultiSelectFilter.js +46 -34
  124. package/esm/addons/Filters/Components/SelectFilter/SingleSelectFilter.js +46 -32
  125. package/esm/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js +17 -13
  126. package/esm/addons/Filters/Components/SelectFilter/utils.js +14 -8
  127. package/esm/addons/Filters/Components/SingleDateFilter/index.js +19 -11
  128. package/esm/addons/Filters/Components/index.js +2 -1
  129. package/esm/addons/Filters/index.js +2 -1
  130. package/esm/addons/Pagination/Pagination.js +17 -52
  131. package/esm/configs/constants.js +4 -4
  132. package/esm/configs/fixedSizes.js +1 -1
  133. package/esm/configs/useDatatableConfig.js +8 -2
  134. package/esm/configs/usePaginationConfig.js +10 -4
  135. package/esm/configs/useRowFlattenization.js +14 -7
  136. package/esm/configs/useTableColsWithAddons.js +36 -21
  137. package/esm/exported-related/EditableCell.js +21 -6
  138. package/esm/exported-related/FilterPopover.js +67 -73
  139. package/esm/exported-related/FilterTypes.js +3 -2
  140. package/esm/exported-related/Filters/applyOutOfTheBoxFilters.js +8 -3
  141. package/esm/exported-related/Filters/currencyRangeFilterFn.js +20 -0
  142. package/esm/exported-related/Filters/dateRangeFilterFn.js +12 -6
  143. package/esm/exported-related/Filters/dateSwitcherFilterFn.js +8 -0
  144. package/esm/exported-related/Filters/index.js +1 -1
  145. package/esm/exported-related/Filters/multiSelectFilterFn.js +9 -3
  146. package/esm/exported-related/Filters/numberRangeFilterFn.js +7 -1
  147. package/esm/exported-related/Filters/singleDateFilterFn.js +12 -6
  148. package/esm/exported-related/Filters/singleSelectFilterFn.js +5 -1
  149. package/esm/exported-related/RowRenderer/DefaultRowContentRenderer.js +14 -2
  150. package/esm/exported-related/RowRenderer/index.js +15 -7
  151. package/esm/exported-related/RowRenderer/useRowRendererHandlers.js +57 -16
  152. package/esm/exported-related/RowRenderer/useRowRendererProperties.js +11 -3
  153. package/esm/exported-related/RowRenderer/useRowStyle.js +6 -5
  154. package/esm/exported-related/Toolbar/Toolbar.js +46 -25
  155. package/esm/exported-related/groupBy.js +14 -5
  156. package/esm/exported-related/index.js +1 -1
  157. package/esm/helpers/addCellData.js +16 -6
  158. package/esm/helpers/cellPadding.js +17 -11
  159. package/esm/helpers/columnsToGrid.js +6 -1
  160. package/esm/helpers/getIdFromUniqueRowAccessor.js +3 -0
  161. package/esm/helpers/refs-helpers.js +13 -3
  162. package/esm/helpers/sizeToCss.js +1 -1
  163. package/esm/hooks/useRecoverFocusCol.js +1 -0
  164. package/esm/index.js +1 -1
  165. package/esm/parts/Cells/Cell.js +34 -22
  166. package/esm/parts/Cells/index.js +4 -2
  167. package/esm/parts/Cells/useCellStyle.js +2 -2
  168. package/esm/parts/DnDHandle.js +28 -18
  169. package/esm/parts/DropIndicator.js +29 -29
  170. package/esm/parts/EmptyContent.js +11 -7
  171. package/esm/parts/FilterBar/FiltersBar.js +58 -29
  172. package/esm/parts/FilterBar/components/DateRangePill.js +24 -13
  173. package/esm/parts/FilterBar/components/DateSwitcherPill.js +37 -0
  174. package/esm/parts/FilterBar/components/MultiSelectPill.js +35 -15
  175. package/esm/parts/FilterBar/components/NumberRangePill.js +26 -13
  176. package/esm/parts/FilterBar/components/SelectPill.js +24 -13
  177. package/esm/parts/FilterBar/components/SingleDatePill.js +23 -12
  178. package/esm/parts/FilterBar/components/index.js +1 -1
  179. package/esm/parts/Filters/index.js +29 -17
  180. package/esm/parts/Footer.js +8 -5
  181. package/esm/parts/Headers/HeaderCell.js +23 -15
  182. package/esm/parts/Headers/HeaderCellGroup.js +26 -17
  183. package/esm/parts/Headers/HeaderCellTitle.js +60 -26
  184. package/esm/parts/Headers/HeaderResizer.js +20 -11
  185. package/esm/parts/Headers/index.js +4 -2
  186. package/esm/parts/Headers/useHeaderCellConfig.js +12 -7
  187. package/esm/parts/Headers/useHeaderCellHandlers.js +31 -20
  188. package/esm/parts/HoC/withConditionalDnDColumnContext.js +49 -18
  189. package/esm/parts/HoC/withConditionalDnDRowContext.js +16 -11
  190. package/esm/parts/HoC/withConditionalDnDSortableContext.js +22 -12
  191. package/esm/parts/HoC/withDnDSortableColumnContext.js +11 -20
  192. package/esm/parts/HoC/withDnDSortableRowContext.js +9 -18
  193. package/esm/parts/Row.js +13 -10
  194. package/esm/parts/RowLoading.js +11 -5
  195. package/esm/parts/RowVariants/RowVariantHeader.js +33 -20
  196. package/esm/parts/RowVariants/RowVariantPrimary.js +10 -9
  197. package/esm/parts/RowVariants/RowVariantSecondary.js +10 -9
  198. package/esm/parts/RowVariants/index.js +21 -12
  199. package/esm/parts/Rows.js +9 -2
  200. package/esm/parts/SortByCaret.js +16 -14
  201. package/esm/parts/SortableHeaderCell.js +5 -0
  202. package/esm/parts/TableContent.js +18 -8
  203. package/esm/parts/VirtualRowsList.js +12 -5
  204. package/esm/prop-types.js +5 -0
  205. package/esm/redux/reducers/headersReducers/logic.js +10 -4
  206. package/esm/styled.js +113 -97
  207. package/package.json +55 -108
  208. package/types/DataTable.d.ts +245 -43
  209. package/types/DataTableSchema.d.ts +245 -43
  210. package/types/addons/Filters/Components/CurrencyRangeFilter/index.d.ts +3 -0
  211. package/types/addons/Filters/Components/{TextInputFilter → DateSwitcherFilter}/index.d.ts +1 -1
  212. package/types/addons/Filters/Components/SelectFilter/BaseSelectFilter.d.ts +7 -1
  213. package/types/addons/Filters/Components/SelectFilter/components.d.ts +6 -6
  214. package/types/addons/Filters/Components/index.d.ts +2 -1
  215. package/types/configs/constants.d.ts +3 -3
  216. package/types/exported-related/FilterPopover.d.ts +1 -1
  217. package/types/exported-related/FilterTypes.d.ts +2 -1
  218. package/types/exported-related/Filters/currencyRangeFilterFn.d.ts +5 -0
  219. package/types/exported-related/Filters/dateSwitcherFilterFn.d.ts +6 -0
  220. package/types/exported-related/Filters/index.d.ts +1 -1
  221. package/types/exported-related/Filters/multiSelectFilterFn.d.ts +3 -1
  222. package/types/exported-related/Filters/singleDateFilterFn.d.ts +1 -1
  223. package/types/exported-related/Filters/singleSelectFilterFn.d.ts +3 -1
  224. package/types/exported-related/RowRenderer/useRowRendererHandlers.d.ts +1 -0
  225. package/types/exported-related/Toolbar/Toolbar.d.ts +2 -4
  226. package/types/helpers/refs-helpers.d.ts +1 -1
  227. package/types/parts/FilterBar/components/DateSwitcherPill.d.ts +6 -0
  228. package/types/parts/FilterBar/components/MultiSelectPill.d.ts +2 -2
  229. package/types/parts/FilterBar/components/SelectPill.d.ts +2 -2
  230. package/types/parts/FilterBar/components/index.d.ts +1 -1
  231. package/types/parts/FilterBar/styled.d.ts +167 -32
  232. package/types/parts/FilterBar/types.d.ts +10 -1
  233. package/types/parts/Headers/HeaderCellGroup.d.ts +4 -3
  234. package/types/parts/Row.d.ts +2 -1
  235. package/types/styled.d.ts +23 -21
  236. package/types/types/props.d.ts +14 -4
  237. package/cjs/addons/Filters/Components/TextInputFilter/index.js +0 -85
  238. package/cjs/addons/Pagination/ActiveZoneButtons.js +0 -63
  239. package/cjs/addons/Pagination/PagesButtons.js +0 -77
  240. package/cjs/addons/Pagination/PerPageSelector.js +0 -84
  241. package/cjs/exported-related/Filters/textFilterFn.js +0 -10
  242. package/cjs/helpers/dndkit/hierarchy/customCollisionDetection.js +0 -65
  243. package/cjs/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.js +0 -128
  244. package/cjs/helpers/dndkit/hierarchy/types.js +0 -2
  245. package/cjs/helpers/dndkit/hierarchy/useHierarchyActionHandlers.js +0 -54
  246. package/cjs/helpers/dndkit/hierarchy/useHierarchyAnnouncements.js +0 -36
  247. package/cjs/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js +0 -92
  248. package/cjs/helpers/dndkit/hierarchy/useHierarchyPreviewHandlers.js +0 -76
  249. package/cjs/helpers/dndkit/tree/customCollisionDetection.js +0 -86
  250. package/cjs/helpers/dndkit/tree/getTreeKeyboardCoordinates.js +0 -126
  251. package/cjs/helpers/dndkit/tree/types.js +0 -2
  252. package/cjs/helpers/dndkit/tree/useTreeActionHandlers.js +0 -74
  253. package/cjs/helpers/dndkit/tree/useTreeAnnouncements.js +0 -55
  254. package/cjs/helpers/dndkit/tree/useTreeDndkitConfig.js +0 -127
  255. package/cjs/helpers/dndkit/tree/useTreePreviewHandlers.js +0 -49
  256. package/cjs/helpers/dndkit/types.js +0 -2
  257. package/cjs/helpers/dndkit/utilities.js +0 -51
  258. package/cjs/package.json +0 -7
  259. package/cjs/parts/FilterBar/components/TextPill.js +0 -31
  260. package/cjs/parts/HoC/DragOverlayContext.js +0 -11
  261. package/esm/addons/Filters/Components/TextInputFilter/index.js +0 -76
  262. package/esm/addons/Pagination/ActiveZoneButtons.js +0 -57
  263. package/esm/addons/Pagination/PagesButtons.js +0 -69
  264. package/esm/addons/Pagination/PerPageSelector.js +0 -73
  265. package/esm/exported-related/Filters/textFilterFn.js +0 -6
  266. package/esm/helpers/dndkit/hierarchy/customCollisionDetection.js +0 -61
  267. package/esm/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.js +0 -120
  268. package/esm/helpers/dndkit/hierarchy/types.js +0 -1
  269. package/esm/helpers/dndkit/hierarchy/useHierarchyActionHandlers.js +0 -50
  270. package/esm/helpers/dndkit/hierarchy/useHierarchyAnnouncements.js +0 -32
  271. package/esm/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js +0 -86
  272. package/esm/helpers/dndkit/hierarchy/useHierarchyPreviewHandlers.js +0 -72
  273. package/esm/helpers/dndkit/tree/customCollisionDetection.js +0 -82
  274. package/esm/helpers/dndkit/tree/getTreeKeyboardCoordinates.js +0 -118
  275. package/esm/helpers/dndkit/tree/types.js +0 -1
  276. package/esm/helpers/dndkit/tree/useTreeActionHandlers.js +0 -70
  277. package/esm/helpers/dndkit/tree/useTreeAnnouncements.js +0 -51
  278. package/esm/helpers/dndkit/tree/useTreeDndkitConfig.js +0 -121
  279. package/esm/helpers/dndkit/tree/useTreePreviewHandlers.js +0 -45
  280. package/esm/helpers/dndkit/types.js +0 -1
  281. package/esm/helpers/dndkit/utilities.js +0 -46
  282. package/esm/package.json +0 -7
  283. package/esm/parts/FilterBar/components/TextPill.js +0 -23
  284. package/esm/parts/HoC/DragOverlayContext.js +0 -7
  285. package/types/addons/Pagination/ActiveZoneButtons.d.ts +0 -9
  286. package/types/addons/Pagination/PagesButtons.d.ts +0 -4
  287. package/types/addons/Pagination/PerPageSelector.d.ts +0 -8
  288. package/types/exported-related/Filters/textFilterFn.d.ts +0 -2
  289. package/types/helpers/dndkit/hierarchy/customCollisionDetection.d.ts +0 -3
  290. package/types/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.d.ts +0 -3
  291. package/types/helpers/dndkit/hierarchy/types.d.ts +0 -66
  292. package/types/helpers/dndkit/hierarchy/useHierarchyActionHandlers.d.ts +0 -2
  293. package/types/helpers/dndkit/hierarchy/useHierarchyAnnouncements.d.ts +0 -3
  294. package/types/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.d.ts +0 -3
  295. package/types/helpers/dndkit/hierarchy/useHierarchyPreviewHandlers.d.ts +0 -2
  296. package/types/helpers/dndkit/tree/customCollisionDetection.d.ts +0 -4
  297. package/types/helpers/dndkit/tree/getTreeKeyboardCoordinates.d.ts +0 -3
  298. package/types/helpers/dndkit/tree/types.d.ts +0 -83
  299. package/types/helpers/dndkit/tree/useTreeActionHandlers.d.ts +0 -2
  300. package/types/helpers/dndkit/tree/useTreeAnnouncements.d.ts +0 -4
  301. package/types/helpers/dndkit/tree/useTreeDndkitConfig.d.ts +0 -3
  302. package/types/helpers/dndkit/tree/useTreePreviewHandlers.d.ts +0 -2
  303. package/types/helpers/dndkit/types.d.ts +0 -20
  304. package/types/helpers/dndkit/utilities.d.ts +0 -7
  305. package/types/parts/FilterBar/components/TextPill.d.ts +0 -2
  306. package/types/parts/HoC/DragOverlayContext.d.ts +0 -6
@@ -1,86 +0,0 @@
1
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
- import { useState, useMemo, useRef, useEffect } from 'react';
3
- import { LayoutMeasuringStrategy, useSensors, useSensor, PointerSensor, KeyboardSensor } from '@dnd-kit/core';
4
- import { useHierarchyActionHandlers } from './useHierarchyActionHandlers.js';
5
- import { useHierarchyPreviewHandlers } from './useHierarchyPreviewHandlers.js';
6
- import { getHierarchyKeyboardCoordinates } from './getHierarchyKeyboardCoordinates.js';
7
- import { customCollisionDetection } from './customCollisionDetection.js';
8
- import { useHierarchyAnnouncements } from './useHierarchyAnnouncements.js';
9
-
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
11
-
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
- // if second parameter is true, the space will be done on the horizontal axis
14
-
15
- const adjustTranslate = ({
16
- transform
17
- }, isHorizontalDnD = false) => {
18
- const newTransform = _objectSpread({}, transform);
19
-
20
- if (isHorizontalDnD) {
21
- newTransform.y = transform.y + 15;
22
- } else {
23
- newTransform.y = transform.y - 35;
24
- }
25
-
26
- return newTransform;
27
- };
28
-
29
- const layoutMeasuring = {
30
- strategy: LayoutMeasuringStrategy.Always
31
- };
32
-
33
- const useHierarchyDndkitConfig = ({
34
- flattenedItems,
35
- isHorizontalDnD = false,
36
- onReorder
37
- }) => {
38
- const [activeId, setActiveId] = useState(null);
39
- const [overId, setOverId] = useState(null);
40
- const dndItems = useMemo(() => flattenedItems.map(([item]) => item), [flattenedItems]);
41
- const activeItem = useMemo(() => dndItems.find(item => item.id === activeId), [activeId, dndItems]);
42
- const itemsDictionary = useMemo(() => {
43
- const dictionary = {};
44
- dndItems.forEach(item => {
45
- dictionary[item.id] = item;
46
- });
47
- return dictionary;
48
- }, [dndItems]);
49
- const modifiers = useMemo(() => [options => adjustTranslate(options, isHorizontalDnD)], [isHorizontalDnD]);
50
- const sensorContext = useRef({
51
- items: dndItems
52
- });
53
- useEffect(() => {
54
- sensorContext.current = {
55
- items: dndItems
56
- };
57
- }, [dndItems]);
58
- const coordinateGetter = useMemo(() => getHierarchyKeyboardCoordinates(sensorContext, isHorizontalDnD), [isHorizontalDnD]);
59
- const sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor, {
60
- coordinateGetter
61
- }));
62
- const dragPreviewHandlers = useHierarchyPreviewHandlers({
63
- setActiveId,
64
- setOverId
65
- });
66
- const dragActionHandlers = useHierarchyActionHandlers(_objectSpread(_objectSpread({}, dragPreviewHandlers), {}, {
67
- dndItems,
68
- onReorder
69
- }));
70
- const announcements = useHierarchyAnnouncements(itemsDictionary);
71
- const dndContextProps = useMemo(() => _objectSpread({
72
- announcements,
73
- modifiers,
74
- sensors,
75
- layoutMeasuring,
76
- collisionDetection: customCollisionDetection(activeId, activeItem === null || activeItem === void 0 ? void 0 : activeItem.parentId, dndItems)
77
- }, dragActionHandlers), [announcements, modifiers, sensors, activeId, activeItem === null || activeItem === void 0 ? void 0 : activeItem.parentId, dndItems, dragActionHandlers]);
78
- return {
79
- dndContextProps,
80
- activeId,
81
- overId,
82
- activeIndex: activeId ? activeItem.index : -1
83
- };
84
- };
85
-
86
- export { useHierarchyDndkitConfig as default };
@@ -1,72 +0,0 @@
1
- import { useCallback } from 'react';
2
- import { DATA_TESTID } from '../../../configs/constants.js';
3
- import 'react-virtual';
4
- import '../../../configs/useRowFlattenization.js';
5
- import '@babel/runtime/helpers/esm/defineProperty';
6
- import '@babel/runtime/helpers/esm/jsx';
7
- import '@elliemae/ds-icons/ArrowShortReturn';
8
- import 'styled-components';
9
- import '@elliemae/ds-icons';
10
- import '../../../styled.js';
11
- import 'react/jsx-runtime';
12
- import '@elliemae/ds-form/Checkbox';
13
- import '@elliemae/ds-form/Radio';
14
- import '../../../parts/TableContent.js';
15
- import '@elliemae/ds-grid';
16
- import '@elliemae/ds-circular-progress-indicator';
17
- import '@elliemae/ds-icons/WarningTriangle';
18
- import '@elliemae/ds-system';
19
- import '@elliemae/ds-button';
20
- import '../../../DataTableContext.js';
21
- import '../../../parts/Row.js';
22
- import '../../../parts/Footer.js';
23
- import '@elliemae/ds-icons/GripperVertical';
24
- import '../../../parts/HoC/SortableItemContext.js';
25
-
26
- const useHierarchyPreviewHandlers = ({
27
- setOverId,
28
- setActiveId
29
- }) => {
30
- const resetState = useCallback(() => {
31
- setOverId(null);
32
- setActiveId(null);
33
- document.body.style.setProperty('cursor', '');
34
- const el = document.querySelector(`[data-testid="${DATA_TESTID.DATA_TABLE_SCROLLABLE_CONTAINER}"]`);
35
-
36
- el.onscroll = () => null;
37
- }, [setOverId, setActiveId]);
38
- const handlePreviewDragStart = useCallback(({
39
- active: {
40
- id
41
- }
42
- }) => {
43
- setActiveId(id);
44
- setOverId(id);
45
- document.body.style.setProperty('cursor', 'grabbing');
46
- const el = document.querySelector(`[data-testid="${DATA_TESTID.DATA_TABLE_SCROLLABLE_CONTAINER}"]`);
47
- const y = el.scrollTop;
48
-
49
- el.onscroll = () => el.scrollTo(0, y);
50
- }, [setActiveId, setOverId]);
51
- const handlePreviewDragMove = useCallback(() => null, []);
52
- const handlePreviewDragOver = useCallback(({
53
- over
54
- }) => {
55
- setOverId((over === null || over === void 0 ? void 0 : over.id) ?? null);
56
- }, [setOverId]);
57
- const handlePreviewDragEnd = useCallback(() => {
58
- resetState();
59
- }, [resetState]);
60
- const handlePreviewDragCancel = useCallback(() => {
61
- resetState();
62
- }, [resetState]);
63
- return {
64
- handlePreviewDragStart,
65
- handlePreviewDragMove,
66
- handlePreviewDragOver,
67
- handlePreviewDragEnd,
68
- handlePreviewDragCancel
69
- };
70
- };
71
-
72
- export { useHierarchyPreviewHandlers };
@@ -1,82 +0,0 @@
1
- import { DropIndicatorPosition } from '../../../parts/HoC/SortableItemContext.js';
2
-
3
- /* eslint-disable complexity */
4
- const DUMMY_ID = 'DUMMY_ID_INTERNAL_USE_ONLY';
5
- const RECT_UP = {
6
- offsetTop: -Infinity,
7
- offsetLeft: 0,
8
- // Doesn't matter,
9
- width: 0,
10
- // Doesn't matter
11
- height: 0 // Doesn't matter
12
-
13
- };
14
- const RECT_DOWN = {
15
- offsetTop: Infinity,
16
- offsetLeft: 0,
17
- // Doesn't matter,
18
- width: 0,
19
- // Doesn't matter
20
- height: 0 // Doesn't matter
21
-
22
- }; // Percentage of height to take into consideration when looking for colliding rects
23
-
24
- const thresholdRatio = 0.2; // Percentage to be inside
25
-
26
- const insideThreshold = 0.7;
27
- const customCollisionDetection = (activeId, visibleItemsDictionary, setDropIndicatorPosition, maxDragAndDropLevel, lastPosition, setLastPosition) => (rects, rect) => {
28
- const originalRect = rects.find(([rectId]) => rectId === activeId); // We first check if the item was moved up or down
29
- // This modifies how to search the matching colliding rect
30
-
31
- let isUp = lastPosition === 'up';
32
-
33
- if (originalRect) {
34
- isUp = originalRect[1].offsetTop > rect.top;
35
- } // Threshold
36
-
37
-
38
- const threshold = rect.height * thresholdRatio;
39
- let collidingRect = null;
40
-
41
- if (isUp) {
42
- // Up -- We need to find the first rectangle downwards
43
- collidingRect = rects.reduce((acc, [rectID, rectData]) => {
44
- if (rectData.offsetTop + threshold > rect.top && rectData.offsetTop < acc[1].offsetTop) {
45
- return [rectID, rectData];
46
- }
47
-
48
- return acc;
49
- }, [DUMMY_ID, RECT_DOWN]);
50
- } else {
51
- // Down -- We need to find the first rectangle upwards
52
- collidingRect = rects.reduce((acc, [rectID, rectData]) => {
53
- if (rectData.offsetTop - threshold < rect.top && rectData.offsetTop > acc[1].offsetTop) {
54
- return [rectID, rectData];
55
- }
56
-
57
- return acc;
58
- }, [DUMMY_ID, RECT_UP]);
59
- } // If we didn't find a match, return null
60
-
61
-
62
- if (collidingRect[0] === DUMMY_ID) {
63
- return null;
64
- } // Calculate the intersection interval
65
-
66
-
67
- const [top, bottom] = [Math.max(rect.top, collidingRect[1].offsetTop), Math.min(rect.bottom, collidingRect[1].offsetTop + collidingRect[1].height)]; // Calculate the percentage of intersection
68
-
69
- const intersectionPercentage = Math.abs(bottom - top) / collidingRect[1].height;
70
-
71
- if (intersectionPercentage > insideThreshold && visibleItemsDictionary[collidingRect[0]].depth + 1 <= maxDragAndDropLevel && collidingRect[0] !== activeId) {
72
- setDropIndicatorPosition(DropIndicatorPosition.Inside);
73
- } else {
74
- setDropIndicatorPosition(isUp ? DropIndicatorPosition.Before : DropIndicatorPosition.After);
75
- }
76
-
77
- if (isUp && lastPosition !== 'up') setLastPosition('up');else if (!isUp && lastPosition !== 'down') setLastPosition('down'); // Return the id of the match rectangle
78
-
79
- return collidingRect[0];
80
- };
81
-
82
- export { customCollisionDetection };
@@ -1,118 +0,0 @@
1
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
- import { KeyboardCode, getViewRect, closestCorners } from '@dnd-kit/core';
3
- import { DropIndicatorPosition } from '../../../parts/HoC/SortableItemContext.js';
4
-
5
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
6
-
7
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
8
- const directions = [KeyboardCode.Down, KeyboardCode.Right, KeyboardCode.Up, KeyboardCode.Left];
9
- const horizontal = [KeyboardCode.Left, KeyboardCode.Right]; // const vertical: string[] = [KeyboardCode.Up, KeyboardCode.Down];
10
-
11
- const getVerticalKeyboardCoordinates = ({
12
- items,
13
- active,
14
- over,
15
- event,
16
- currentCoordinates,
17
- droppableContainers,
18
- translatedRect,
19
- dropIndicatorPosition,
20
- maxDragAndDropLevel
21
- }) => {
22
- if (horizontal.includes(event.code)) return undefined;
23
- const activeRect = droppableContainers[active].rect.current;
24
- const overRect = over.rect;
25
- const layoutRects = []; // Get the reacheable rects depending on the arrow key pressed
26
-
27
- Object.entries(droppableContainers).forEach(([id, container]) => {
28
- if (container !== null && container !== void 0 && container.disabled || !overRect) {
29
- return;
30
- }
31
-
32
- const node = container === null || container === void 0 ? void 0 : container.node.current;
33
-
34
- if (!node) {
35
- return;
36
- }
37
-
38
- const rect = getViewRect(node);
39
-
40
- if (event.code === KeyboardCode.Down && translatedRect.top - 2 <= rect.top) {
41
- layoutRects.push([id, rect]);
42
- } else if (event.code === KeyboardCode.Up && translatedRect.top >= rect.top) {
43
- layoutRects.push([id, rect]);
44
- }
45
- });
46
- const closestId = closestCorners(layoutRects, translatedRect);
47
- if (!closestId) return undefined;
48
- const closestItem = items.find(item => item.uid === closestId);
49
- const closestRect = getViewRect(droppableContainers[closestId].node.current);
50
-
51
- if (event.code === KeyboardCode.Up) {
52
- // If the drop indicator is inside (or over ourselves)
53
- // We are gonna go to the before position
54
- // Else we are gonna go inside the over rect
55
- if (dropIndicatorPosition === DropIndicatorPosition.Inside || closestId === active || closestItem.depth + 1 > maxDragAndDropLevel) {
56
- return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
57
- y: closestRect.top - translatedRect.height / 2
58
- });
59
- }
60
-
61
- return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
62
- y: closestRect.top + Math.abs(closestRect.height - activeRect.height) / 2
63
- });
64
- } // If the drop indicator is inside (or over ourselves)
65
- // We are gonna go to the after position
66
- // Else we are gonna go inside the over rect
67
-
68
-
69
- if (dropIndicatorPosition === DropIndicatorPosition.Inside || closestId === active || closestItem.depth + 1 > maxDragAndDropLevel) {
70
- return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
71
- y: closestRect.top + translatedRect.height / 2
72
- });
73
- }
74
-
75
- return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
76
- y: closestRect.top + Math.abs(closestRect.height - activeRect.height) / 2
77
- });
78
- };
79
-
80
- const getTreeKeyboardCoordinates = (context, isHorizontalDnD, maxDragAndDropLevel) => (event, {
81
- active,
82
- currentCoordinates,
83
- context: {
84
- over,
85
- translatedRect,
86
- droppableContainers
87
- }
88
- }) => {
89
- if (directions.includes(event.code)) {
90
- if (!translatedRect) {
91
- return undefined;
92
- }
93
-
94
- const {
95
- current: {
96
- items,
97
- dropIndicatorPosition
98
- }
99
- } = context;
100
- const args = {
101
- items,
102
- active,
103
- over,
104
- event,
105
- currentCoordinates,
106
- droppableContainers,
107
- translatedRect,
108
- dropIndicatorPosition,
109
- maxDragAndDropLevel
110
- };
111
- if (isHorizontalDnD) return undefined;
112
- return getVerticalKeyboardCoordinates(args);
113
- }
114
-
115
- return undefined;
116
- };
117
-
118
- export { getTreeKeyboardCoordinates };
@@ -1 +0,0 @@
1
-
@@ -1,70 +0,0 @@
1
- import { arrayMove } from '@dnd-kit/sortable';
2
- import { cloneDeep } from 'lodash';
3
- import { useCallback } from 'react';
4
- import { DropIndicatorPosition } from '../../../parts/HoC/SortableItemContext.js';
5
-
6
- const useTreeActionHandlers = ({
7
- handlePreviewDragStart,
8
- handlePreviewDragMove,
9
- handlePreviewDragOver,
10
- handlePreviewDragEnd,
11
- handlePreviewDragCancel,
12
- onReorder,
13
- flattenedItems,
14
- projected,
15
- dropIndicatorPosition
16
- }) => {
17
- const onDragStart = useCallback(e => {
18
- handlePreviewDragStart(e);
19
- }, [handlePreviewDragStart]);
20
- const onDragMove = useCallback(e => {
21
- handlePreviewDragMove(e);
22
- }, [handlePreviewDragMove]);
23
- const onDragOver = useCallback(e => {
24
- handlePreviewDragOver(e);
25
- }, [handlePreviewDragOver]);
26
- const onDragEnd = useCallback(e => {
27
- handlePreviewDragEnd(e);
28
- const {
29
- active,
30
- over
31
- } = e;
32
- if (over === null) return;
33
- const activeIndex = flattenedItems.findIndex(item => item.uid === active.id);
34
- let considerExpanding = null;
35
- let overIndex = flattenedItems.findIndex(item => item.uid === over.id); // If drop indicator is inside, then put it last,
36
- // It will be reconstructed well later
37
-
38
- if (dropIndicatorPosition === DropIndicatorPosition.Inside) {
39
- var _flattenedItems$overI;
40
-
41
- considerExpanding = over.id;
42
- overIndex = flattenedItems[overIndex].realIndex + (((_flattenedItems$overI = flattenedItems[overIndex].original.subRows) === null || _flattenedItems$overI === void 0 ? void 0 : _flattenedItems$overI.length) ?? 0) + 1;
43
- } // If we are dropping the item in a new position, or new depth
44
-
45
-
46
- if (activeIndex !== overIndex || flattenedItems[activeIndex].depth !== projected.depth) {
47
- // Change parent and depth from projected data
48
- flattenedItems[activeIndex].parentId = projected.parentId;
49
- flattenedItems[activeIndex].depth = projected.depth; // If same index, don't move the array, just copy it
50
-
51
- const newFlattenedData = activeIndex !== overIndex ? arrayMove(flattenedItems, activeIndex, overIndex) : cloneDeep(flattenedItems);
52
- onReorder(newFlattenedData, {
53
- targetIndex: overIndex,
54
- fromIndex: activeIndex
55
- }, considerExpanding);
56
- }
57
- }, [handlePreviewDragEnd, flattenedItems, projected, onReorder, dropIndicatorPosition]);
58
- const onDragCancel = useCallback(e => {
59
- handlePreviewDragCancel(e);
60
- }, [handlePreviewDragCancel]);
61
- return {
62
- onDragStart,
63
- onDragMove,
64
- onDragOver,
65
- onDragEnd,
66
- onDragCancel
67
- };
68
- };
69
-
70
- export { useTreeActionHandlers };
@@ -1,51 +0,0 @@
1
- import { useCallback } from 'react';
2
- import { DropIndicatorPosition } from '../../../parts/HoC/SortableItemContext.js';
3
-
4
- const useTreeAnnouncements = (visibleItemsDictionary, dropIndicatorPosition) => {
5
- const onDragStart = useCallback(id => `Picked up draggable item from position ${visibleItemsDictionary[id].realIndex + 1}.`, [visibleItemsDictionary]);
6
- const onDragMove = useCallback((id, overId) => {
7
- if (overId) {
8
- const overIndex = visibleItemsDictionary[overId].realIndex + 1;
9
-
10
- if (dropIndicatorPosition === DropIndicatorPosition.Inside) {
11
- return `Draggable item was moved inside the item at position ${overIndex}.`;
12
- }
13
-
14
- if (dropIndicatorPosition === DropIndicatorPosition.Before) {
15
- return `Draggable item was moved to position ${overIndex - 1}.`;
16
- }
17
-
18
- return `Draggable item was moved to position ${overIndex}.`;
19
- }
20
-
21
- return `Draggable item is no longer over a droppable area.`;
22
- }, [visibleItemsDictionary, dropIndicatorPosition]);
23
- const onDragOver = onDragMove;
24
- const onDragEnd = useCallback((id, overId) => {
25
- if (overId) {
26
- const overIndex = visibleItemsDictionary[overId].realIndex + 1;
27
-
28
- if (dropIndicatorPosition === DropIndicatorPosition.Inside) {
29
- return `Draggable item was dropped inside the item at position ${overIndex}.`;
30
- }
31
-
32
- if (dropIndicatorPosition === DropIndicatorPosition.Before) {
33
- return `Draggable item was dropped over position ${overIndex - 1}.`;
34
- }
35
-
36
- return `Draggable item was dropped over position ${overIndex}.`;
37
- }
38
-
39
- return `Draggable item was dropped at it's original position.`;
40
- }, [dropIndicatorPosition, visibleItemsDictionary]);
41
- const onDragCancel = useCallback(id => `Dragging was cancelled. Draggable item from position ${visibleItemsDictionary[id].realIndex + 1} was dropped at it's initial position.`, [visibleItemsDictionary]);
42
- return {
43
- onDragStart,
44
- onDragOver,
45
- onDragMove,
46
- onDragEnd,
47
- onDragCancel
48
- };
49
- };
50
-
51
- export { useTreeAnnouncements };
@@ -1,121 +0,0 @@
1
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
- import { useState, useMemo, useRef, useEffect } from 'react';
3
- import { LayoutMeasuringStrategy, useSensors, useSensor, PointerSensor, KeyboardSensor } from '@dnd-kit/core';
4
- import { horizontalListSortingStrategy, verticalListSortingStrategy } from '@dnd-kit/sortable';
5
- import { useTreePreviewHandlers } from './useTreePreviewHandlers.js';
6
- import { getTreeKeyboardCoordinates } from './getTreeKeyboardCoordinates.js';
7
- import { removeChildrenOf, getProjection } from '../utilities.js';
8
- import { useTreeActionHandlers } from './useTreeActionHandlers.js';
9
- import { customCollisionDetection } from './customCollisionDetection.js';
10
- import { useTreeAnnouncements } from './useTreeAnnouncements.js';
11
-
12
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
13
-
14
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
- // if second parameter is true, the space will be done on the horizontal axis
16
-
17
- const adjustTranslate = ({
18
- transform
19
- }, isHorizontalDnD = false) => {
20
- const newTransform = _objectSpread({}, transform);
21
-
22
- if (isHorizontalDnD) {
23
- newTransform.x = transform.x + 25;
24
- } else {
25
- newTransform.x = transform.x + 15;
26
- }
27
-
28
- return newTransform;
29
- };
30
-
31
- const layoutMeasuring = {
32
- strategy: LayoutMeasuringStrategy.BeforeDragging
33
- };
34
-
35
- const useTreeDndkitConfig = ({
36
- flattenedItems,
37
- visibleItems: preVisibleItems,
38
- isHorizontalDnD = false,
39
- isExpandable = false,
40
- onReorder,
41
- maxDragAndDropLevel
42
- }) => {
43
- var _visibleItemsDictiona;
44
-
45
- const [activeId, setActiveId] = useState(null);
46
- const [overId, setOverId] = useState(null);
47
- const [dropIndicatorPosition, setDropIndicatorPosition] = useState(null);
48
- const [lastPosition, setLastPosition] = useState(null); // Remove activeId's children
49
-
50
- const visibleItems = useMemo(() => removeChildrenOf(preVisibleItems, activeId), [preVisibleItems, activeId]); // Sorted ids for the library
51
-
52
- const sortedIds = useMemo(() => visibleItems.map(item => item.uid), [visibleItems]);
53
- /**
54
- * Dictionary from UID to ITEM
55
- * This dictionary is computed since on every DnD move, I need to know the
56
- * depth of a particular row, so O(1) per DnD move instead of O(#ITEMS)
57
- */
58
-
59
- const visibleItemsDictionary = useMemo(() => {
60
- // Using plain for to achieve O(#ITEMS) performance
61
- const dictionary = {};
62
- visibleItems.forEach(item => {
63
- dictionary[item.uid] = item;
64
- });
65
- return dictionary;
66
- }, [visibleItems]);
67
- const modifiers = useMemo(() => [options => adjustTranslate(options, isHorizontalDnD)], [isHorizontalDnD]);
68
- const sensorContext = useRef({
69
- items: visibleItems,
70
- dropIndicatorPosition,
71
- setDropIndicatorPosition
72
- });
73
- useEffect(() => {
74
- sensorContext.current = {
75
- items: visibleItems,
76
- dropIndicatorPosition,
77
- setDropIndicatorPosition
78
- };
79
- }, [visibleItems, dropIndicatorPosition, setDropIndicatorPosition]);
80
- const coordinateGetter = useMemo(() => getTreeKeyboardCoordinates(sensorContext, isHorizontalDnD, maxDragAndDropLevel), [sensorContext, isHorizontalDnD, maxDragAndDropLevel]);
81
- const sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor, {
82
- coordinateGetter
83
- })); // where is the activeItem being positioned (depth and parent)
84
-
85
- const projected = useMemo(() => overId ? getProjection(visibleItems, visibleItemsDictionary, overId, dropIndicatorPosition, isExpandable) : null, [overId, visibleItems, visibleItemsDictionary, dropIndicatorPosition, isExpandable]);
86
- const dragPreviewHandlers = useTreePreviewHandlers({
87
- setActiveId,
88
- setOverId,
89
- setDropIndicatorPosition
90
- });
91
- const dragActionHandlers = useTreeActionHandlers(_objectSpread(_objectSpread({}, dragPreviewHandlers), {}, {
92
- onReorder,
93
- projected,
94
- flattenedItems,
95
- dropIndicatorPosition
96
- }));
97
- const announcements = useTreeAnnouncements(visibleItemsDictionary, dropIndicatorPosition);
98
- const dndContextProps = useMemo(() => _objectSpread({
99
- announcements,
100
- modifiers,
101
- sensors,
102
- layoutMeasuring,
103
- collisionDetection: customCollisionDetection(activeId, visibleItemsDictionary, setDropIndicatorPosition, maxDragAndDropLevel, lastPosition, setLastPosition)
104
- }, dragActionHandlers), [announcements, modifiers, sensors, dragActionHandlers, visibleItemsDictionary, setDropIndicatorPosition, activeId, maxDragAndDropLevel, lastPosition, setLastPosition]);
105
- const sortableContextProps = useMemo(() => ({
106
- items: sortedIds,
107
- strategy: isHorizontalDnD ? horizontalListSortingStrategy : verticalListSortingStrategy
108
- }), [sortedIds, isHorizontalDnD]);
109
- return {
110
- dndContextProps,
111
- sortableContextProps,
112
- activeId,
113
- activeIndex: ((_visibleItemsDictiona = visibleItemsDictionary[activeId]) === null || _visibleItemsDictiona === void 0 ? void 0 : _visibleItemsDictiona.realIndex) ?? -1,
114
- overId,
115
- depth: projected ? projected.depth : 0,
116
- dropIndicatorPosition,
117
- visibleItems
118
- };
119
- };
120
-
121
- export { useTreeDndkitConfig as default };
@@ -1,45 +0,0 @@
1
- import { useCallback } from 'react';
2
- import { DropIndicatorPosition } from '../../../parts/HoC/SortableItemContext.js';
3
-
4
- const useTreePreviewHandlers = ({
5
- setOverId,
6
- setActiveId,
7
- setDropIndicatorPosition
8
- }) => {
9
- const resetState = useCallback(() => {
10
- setOverId(null);
11
- setActiveId(null);
12
- document.body.style.setProperty('cursor', '');
13
- }, [setOverId, setActiveId]);
14
- const handlePreviewDragStart = useCallback(({
15
- active: {
16
- id
17
- }
18
- }) => {
19
- setActiveId(id);
20
- setOverId(id);
21
- setDropIndicatorPosition(DropIndicatorPosition.Inside);
22
- document.body.style.setProperty('cursor', 'grabbing');
23
- }, [setActiveId, setDropIndicatorPosition, setOverId]);
24
- const handlePreviewDragMove = useCallback(() => null, []);
25
- const handlePreviewDragOver = useCallback(({
26
- over
27
- }) => {
28
- setOverId((over === null || over === void 0 ? void 0 : over.id) ?? null);
29
- }, [setOverId]);
30
- const handlePreviewDragEnd = useCallback(() => {
31
- resetState();
32
- }, [resetState]);
33
- const handlePreviewDragCancel = useCallback(() => {
34
- resetState();
35
- }, [resetState]);
36
- return {
37
- handlePreviewDragStart,
38
- handlePreviewDragMove,
39
- handlePreviewDragOver,
40
- handlePreviewDragEnd,
41
- handlePreviewDragCancel
42
- };
43
- };
44
-
45
- export { useTreePreviewHandlers };
@@ -1 +0,0 @@
1
-