@elliemae/ds-legacy-shuttle-v2 1.0.0-rc.1

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/dist/cjs/DSShuttleV2.js +46 -0
  2. package/dist/cjs/DSShuttleV2.js.map +7 -0
  3. package/dist/cjs/config/DSShuttleV2Definitions.js +74 -0
  4. package/dist/cjs/config/DSShuttleV2Definitions.js.map +7 -0
  5. package/dist/cjs/config/itemMovementHelpers.js +133 -0
  6. package/dist/cjs/config/itemMovementHelpers.js.map +7 -0
  7. package/dist/cjs/config/useAutoCalculated/index.js +43 -0
  8. package/dist/cjs/config/useAutoCalculated/index.js.map +7 -0
  9. package/dist/cjs/config/useAutoCalculated/useDataStructure.js +182 -0
  10. package/dist/cjs/config/useAutoCalculated/useDataStructure.js.map +7 -0
  11. package/dist/cjs/config/useAutoCalculated/useShuttleVirtualized.js +51 -0
  12. package/dist/cjs/config/useAutoCalculated/useShuttleVirtualized.js.map +7 -0
  13. package/dist/cjs/config/useFocusTracker/index.js +42 -0
  14. package/dist/cjs/config/useFocusTracker/index.js.map +7 -0
  15. package/dist/cjs/config/useFocusTracker/useFocusActionTrackers.js +149 -0
  16. package/dist/cjs/config/useFocusTracker/useFocusActionTrackers.js.map +7 -0
  17. package/dist/cjs/config/useFocusTracker/useFocusItemTracker.js +103 -0
  18. package/dist/cjs/config/useFocusTracker/useFocusItemTracker.js.map +7 -0
  19. package/dist/cjs/config/useFocusTracker/useFocusRegionTrackers.js +87 -0
  20. package/dist/cjs/config/useFocusTracker/useFocusRegionTrackers.js.map +7 -0
  21. package/dist/cjs/config/useFocusTracker/useFocusTracker.js +52 -0
  22. package/dist/cjs/config/useFocusTracker/useFocusTracker.js.map +7 -0
  23. package/dist/cjs/config/useStore/focusAndTabIndexManager.js +77 -0
  24. package/dist/cjs/config/useStore/focusAndTabIndexManager.js.map +7 -0
  25. package/dist/cjs/config/useStore/index.js +30 -0
  26. package/dist/cjs/config/useStore/index.js.map +7 -0
  27. package/dist/cjs/config/useStore/useStore.js +86 -0
  28. package/dist/cjs/config/useStore/useStore.js.map +7 -0
  29. package/dist/cjs/config/useValidateProps.js +40 -0
  30. package/dist/cjs/config/useValidateProps.js.map +7 -0
  31. package/dist/cjs/constants/index.js +69 -0
  32. package/dist/cjs/constants/index.js.map +7 -0
  33. package/dist/cjs/exported-related/ShuttleItem.js +60 -0
  34. package/dist/cjs/exported-related/ShuttleItem.js.map +7 -0
  35. package/dist/cjs/exported-related/index.js +36 -0
  36. package/dist/cjs/exported-related/index.js.map +7 -0
  37. package/dist/cjs/index.js +43 -0
  38. package/dist/cjs/index.js.map +7 -0
  39. package/dist/cjs/package.json +7 -0
  40. package/dist/cjs/parts/Dnd/DndHandle.js +89 -0
  41. package/dist/cjs/parts/Dnd/DndHandle.js.map +7 -0
  42. package/dist/cjs/parts/Dnd/DragOverlay.js +51 -0
  43. package/dist/cjs/parts/Dnd/DragOverlay.js.map +7 -0
  44. package/dist/cjs/parts/Dnd/DropIndicator.js +92 -0
  45. package/dist/cjs/parts/Dnd/DropIndicator.js.map +7 -0
  46. package/dist/cjs/parts/Header.js +91 -0
  47. package/dist/cjs/parts/Header.js.map +7 -0
  48. package/dist/cjs/parts/HoC/withConditionalDnDRowContext.js +121 -0
  49. package/dist/cjs/parts/HoC/withConditionalDnDRowContext.js.map +7 -0
  50. package/dist/cjs/parts/HoC/withConditionalUseSortable.js +43 -0
  51. package/dist/cjs/parts/HoC/withConditionalUseSortable.js.map +7 -0
  52. package/dist/cjs/parts/Item/Item.js +222 -0
  53. package/dist/cjs/parts/Item/Item.js.map +7 -0
  54. package/dist/cjs/parts/Item/ItemActions/ItemActions.js +164 -0
  55. package/dist/cjs/parts/Item/ItemActions/ItemActions.js.map +7 -0
  56. package/dist/cjs/parts/Item/ItemActions/index.js +30 -0
  57. package/dist/cjs/parts/Item/ItemActions/index.js.map +7 -0
  58. package/dist/cjs/parts/Item/ItemActions/useActionsHandlers.js +54 -0
  59. package/dist/cjs/parts/Item/ItemActions/useActionsHandlers.js.map +7 -0
  60. package/dist/cjs/parts/Item/ItemActions/useActionsLogicHandlers.js +82 -0
  61. package/dist/cjs/parts/Item/ItemActions/useActionsLogicHandlers.js.map +7 -0
  62. package/dist/cjs/parts/Item/ItemActions/useInnerRefHandlers.js +69 -0
  63. package/dist/cjs/parts/Item/ItemActions/useInnerRefHandlers.js.map +7 -0
  64. package/dist/cjs/parts/Item/ItemMiddleSection.js +140 -0
  65. package/dist/cjs/parts/Item/ItemMiddleSection.js.map +7 -0
  66. package/dist/cjs/parts/Item/ItemOverlay.js +76 -0
  67. package/dist/cjs/parts/Item/ItemOverlay.js.map +7 -0
  68. package/dist/cjs/parts/Item/ItemSelection.js +70 -0
  69. package/dist/cjs/parts/Item/ItemSelection.js.map +7 -0
  70. package/dist/cjs/parts/Item/TextSection.js +56 -0
  71. package/dist/cjs/parts/Item/TextSection.js.map +7 -0
  72. package/dist/cjs/parts/Item/useItemArrowNavigation.js +104 -0
  73. package/dist/cjs/parts/Item/useItemArrowNavigation.js.map +7 -0
  74. package/dist/cjs/parts/Item/useItemKeyboardSelection.js +61 -0
  75. package/dist/cjs/parts/Item/useItemKeyboardSelection.js.map +7 -0
  76. package/dist/cjs/parts/Item/useSelectionLogic.js +128 -0
  77. package/dist/cjs/parts/Item/useSelectionLogic.js.map +7 -0
  78. package/dist/cjs/parts/Item/useThisItemIsFocused.js +47 -0
  79. package/dist/cjs/parts/Item/useThisItemIsFocused.js.map +7 -0
  80. package/dist/cjs/parts/MainContent.js +116 -0
  81. package/dist/cjs/parts/MainContent.js.map +7 -0
  82. package/dist/cjs/parts/Panel/bottom/LoadMoreBtn.js +81 -0
  83. package/dist/cjs/parts/Panel/bottom/LoadMoreBtn.js.map +7 -0
  84. package/dist/cjs/parts/Panel/bottom/LoadingMore.js +59 -0
  85. package/dist/cjs/parts/Panel/bottom/LoadingMore.js.map +7 -0
  86. package/dist/cjs/parts/Panel/bottom/PanelContentBottomSection.js +97 -0
  87. package/dist/cjs/parts/Panel/bottom/PanelContentBottomSection.js.map +7 -0
  88. package/dist/cjs/parts/Panel/bottom/useInnerRefHandlers.js +51 -0
  89. package/dist/cjs/parts/Panel/bottom/useInnerRefHandlers.js.map +7 -0
  90. package/dist/cjs/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js +77 -0
  91. package/dist/cjs/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js.map +7 -0
  92. package/dist/cjs/parts/Panel/middle/EmptyItems.js +58 -0
  93. package/dist/cjs/parts/Panel/middle/EmptyItems.js.map +7 -0
  94. package/dist/cjs/parts/Panel/middle/ItemListWrapper/Index.js +93 -0
  95. package/dist/cjs/parts/Panel/middle/ItemListWrapper/Index.js.map +7 -0
  96. package/dist/cjs/parts/Panel/middle/ItemListWrapper/getDatumFlags.js +48 -0
  97. package/dist/cjs/parts/Panel/middle/ItemListWrapper/getDatumFlags.js.map +7 -0
  98. package/dist/cjs/parts/Panel/middle/ItemListWrapper/useGetDatumHydratables.js +60 -0
  99. package/dist/cjs/parts/Panel/middle/ItemListWrapper/useGetDatumHydratables.js.map +7 -0
  100. package/dist/cjs/parts/Panel/middle/LoadingItems.js +68 -0
  101. package/dist/cjs/parts/Panel/middle/LoadingItems.js.map +7 -0
  102. package/dist/cjs/parts/Panel/middle/MultipleSelectionAction.js +186 -0
  103. package/dist/cjs/parts/Panel/middle/MultipleSelectionAction.js.map +7 -0
  104. package/dist/cjs/parts/Panel/middle/PanelContentMiddleSection.js +174 -0
  105. package/dist/cjs/parts/Panel/middle/PanelContentMiddleSection.js.map +7 -0
  106. package/dist/cjs/parts/Panel/top/PanelContentTopSection.js +71 -0
  107. package/dist/cjs/parts/Panel/top/PanelContentTopSection.js.map +7 -0
  108. package/dist/cjs/parts/Panel/top/PanelFilterSection.js +79 -0
  109. package/dist/cjs/parts/Panel/top/PanelFilterSection.js.map +7 -0
  110. package/dist/cjs/parts/Panel/top/SelectionHeader.js +137 -0
  111. package/dist/cjs/parts/Panel/top/SelectionHeader.js.map +7 -0
  112. package/dist/cjs/parts/PanelWrapper.js +83 -0
  113. package/dist/cjs/parts/PanelWrapper.js.map +7 -0
  114. package/dist/cjs/react-desc-prop-types.js +157 -0
  115. package/dist/cjs/react-desc-prop-types.js.map +7 -0
  116. package/dist/cjs/tests/configs/basic.js +164 -0
  117. package/dist/cjs/tests/configs/basic.js.map +7 -0
  118. package/dist/cjs/tests/configs/filter.js +199 -0
  119. package/dist/cjs/tests/configs/filter.js.map +7 -0
  120. package/dist/cjs/tests/configs/loadMore.js +179 -0
  121. package/dist/cjs/tests/configs/loadMore.js.map +7 -0
  122. package/dist/esm/DSShuttleV2.js +16 -0
  123. package/dist/esm/DSShuttleV2.js.map +7 -0
  124. package/dist/esm/config/DSShuttleV2Definitions.js +44 -0
  125. package/dist/esm/config/DSShuttleV2Definitions.js.map +7 -0
  126. package/dist/esm/config/itemMovementHelpers.js +103 -0
  127. package/dist/esm/config/itemMovementHelpers.js.map +7 -0
  128. package/dist/esm/config/useAutoCalculated/index.js +13 -0
  129. package/dist/esm/config/useAutoCalculated/index.js.map +7 -0
  130. package/dist/esm/config/useAutoCalculated/useDataStructure.js +152 -0
  131. package/dist/esm/config/useAutoCalculated/useDataStructure.js.map +7 -0
  132. package/dist/esm/config/useAutoCalculated/useShuttleVirtualized.js +21 -0
  133. package/dist/esm/config/useAutoCalculated/useShuttleVirtualized.js.map +7 -0
  134. package/dist/esm/config/useFocusTracker/index.js +12 -0
  135. package/dist/esm/config/useFocusTracker/index.js.map +7 -0
  136. package/dist/esm/config/useFocusTracker/useFocusActionTrackers.js +119 -0
  137. package/dist/esm/config/useFocusTracker/useFocusActionTrackers.js.map +7 -0
  138. package/dist/esm/config/useFocusTracker/useFocusItemTracker.js +73 -0
  139. package/dist/esm/config/useFocusTracker/useFocusItemTracker.js.map +7 -0
  140. package/dist/esm/config/useFocusTracker/useFocusRegionTrackers.js +57 -0
  141. package/dist/esm/config/useFocusTracker/useFocusRegionTrackers.js.map +7 -0
  142. package/dist/esm/config/useFocusTracker/useFocusTracker.js +22 -0
  143. package/dist/esm/config/useFocusTracker/useFocusTracker.js.map +7 -0
  144. package/dist/esm/config/useStore/focusAndTabIndexManager.js +47 -0
  145. package/dist/esm/config/useStore/focusAndTabIndexManager.js.map +7 -0
  146. package/dist/esm/config/useStore/index.js +3 -0
  147. package/dist/esm/config/useStore/index.js.map +7 -0
  148. package/dist/esm/config/useStore/useStore.js +56 -0
  149. package/dist/esm/config/useStore/useStore.js.map +7 -0
  150. package/dist/esm/config/useValidateProps.js +10 -0
  151. package/dist/esm/config/useValidateProps.js.map +7 -0
  152. package/dist/esm/constants/index.js +39 -0
  153. package/dist/esm/constants/index.js.map +7 -0
  154. package/dist/esm/exported-related/ShuttleItem.js +30 -0
  155. package/dist/esm/exported-related/ShuttleItem.js.map +7 -0
  156. package/dist/esm/exported-related/index.js +6 -0
  157. package/dist/esm/exported-related/index.js.map +7 -0
  158. package/dist/esm/index.js +13 -0
  159. package/dist/esm/index.js.map +7 -0
  160. package/dist/esm/package.json +7 -0
  161. package/dist/esm/parts/Dnd/DndHandle.js +59 -0
  162. package/dist/esm/parts/Dnd/DndHandle.js.map +7 -0
  163. package/dist/esm/parts/Dnd/DragOverlay.js +21 -0
  164. package/dist/esm/parts/Dnd/DragOverlay.js.map +7 -0
  165. package/dist/esm/parts/Dnd/DropIndicator.js +62 -0
  166. package/dist/esm/parts/Dnd/DropIndicator.js.map +7 -0
  167. package/dist/esm/parts/Header.js +63 -0
  168. package/dist/esm/parts/Header.js.map +7 -0
  169. package/dist/esm/parts/HoC/withConditionalDnDRowContext.js +91 -0
  170. package/dist/esm/parts/HoC/withConditionalDnDRowContext.js.map +7 -0
  171. package/dist/esm/parts/HoC/withConditionalUseSortable.js +13 -0
  172. package/dist/esm/parts/HoC/withConditionalUseSortable.js.map +7 -0
  173. package/dist/esm/parts/Item/Item.js +192 -0
  174. package/dist/esm/parts/Item/Item.js.map +7 -0
  175. package/dist/esm/parts/Item/ItemActions/ItemActions.js +134 -0
  176. package/dist/esm/parts/Item/ItemActions/ItemActions.js.map +7 -0
  177. package/dist/esm/parts/Item/ItemActions/index.js +3 -0
  178. package/dist/esm/parts/Item/ItemActions/index.js.map +7 -0
  179. package/dist/esm/parts/Item/ItemActions/useActionsHandlers.js +24 -0
  180. package/dist/esm/parts/Item/ItemActions/useActionsHandlers.js.map +7 -0
  181. package/dist/esm/parts/Item/ItemActions/useActionsLogicHandlers.js +52 -0
  182. package/dist/esm/parts/Item/ItemActions/useActionsLogicHandlers.js.map +7 -0
  183. package/dist/esm/parts/Item/ItemActions/useInnerRefHandlers.js +39 -0
  184. package/dist/esm/parts/Item/ItemActions/useInnerRefHandlers.js.map +7 -0
  185. package/dist/esm/parts/Item/ItemMiddleSection.js +110 -0
  186. package/dist/esm/parts/Item/ItemMiddleSection.js.map +7 -0
  187. package/dist/esm/parts/Item/ItemOverlay.js +46 -0
  188. package/dist/esm/parts/Item/ItemOverlay.js.map +7 -0
  189. package/dist/esm/parts/Item/ItemSelection.js +40 -0
  190. package/dist/esm/parts/Item/ItemSelection.js.map +7 -0
  191. package/dist/esm/parts/Item/TextSection.js +26 -0
  192. package/dist/esm/parts/Item/TextSection.js.map +7 -0
  193. package/dist/esm/parts/Item/useItemArrowNavigation.js +78 -0
  194. package/dist/esm/parts/Item/useItemArrowNavigation.js.map +7 -0
  195. package/dist/esm/parts/Item/useItemKeyboardSelection.js +31 -0
  196. package/dist/esm/parts/Item/useItemKeyboardSelection.js.map +7 -0
  197. package/dist/esm/parts/Item/useSelectionLogic.js +98 -0
  198. package/dist/esm/parts/Item/useSelectionLogic.js.map +7 -0
  199. package/dist/esm/parts/Item/useThisItemIsFocused.js +17 -0
  200. package/dist/esm/parts/Item/useThisItemIsFocused.js.map +7 -0
  201. package/dist/esm/parts/MainContent.js +86 -0
  202. package/dist/esm/parts/MainContent.js.map +7 -0
  203. package/dist/esm/parts/Panel/bottom/LoadMoreBtn.js +51 -0
  204. package/dist/esm/parts/Panel/bottom/LoadMoreBtn.js.map +7 -0
  205. package/dist/esm/parts/Panel/bottom/LoadingMore.js +29 -0
  206. package/dist/esm/parts/Panel/bottom/LoadingMore.js.map +7 -0
  207. package/dist/esm/parts/Panel/bottom/PanelContentBottomSection.js +67 -0
  208. package/dist/esm/parts/Panel/bottom/PanelContentBottomSection.js.map +7 -0
  209. package/dist/esm/parts/Panel/bottom/useInnerRefHandlers.js +21 -0
  210. package/dist/esm/parts/Panel/bottom/useInnerRefHandlers.js.map +7 -0
  211. package/dist/esm/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js +51 -0
  212. package/dist/esm/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js.map +7 -0
  213. package/dist/esm/parts/Panel/middle/EmptyItems.js +28 -0
  214. package/dist/esm/parts/Panel/middle/EmptyItems.js.map +7 -0
  215. package/dist/esm/parts/Panel/middle/ItemListWrapper/Index.js +63 -0
  216. package/dist/esm/parts/Panel/middle/ItemListWrapper/Index.js.map +7 -0
  217. package/dist/esm/parts/Panel/middle/ItemListWrapper/getDatumFlags.js +18 -0
  218. package/dist/esm/parts/Panel/middle/ItemListWrapper/getDatumFlags.js.map +7 -0
  219. package/dist/esm/parts/Panel/middle/ItemListWrapper/useGetDatumHydratables.js +30 -0
  220. package/dist/esm/parts/Panel/middle/ItemListWrapper/useGetDatumHydratables.js.map +7 -0
  221. package/dist/esm/parts/Panel/middle/LoadingItems.js +38 -0
  222. package/dist/esm/parts/Panel/middle/LoadingItems.js.map +7 -0
  223. package/dist/esm/parts/Panel/middle/MultipleSelectionAction.js +156 -0
  224. package/dist/esm/parts/Panel/middle/MultipleSelectionAction.js.map +7 -0
  225. package/dist/esm/parts/Panel/middle/PanelContentMiddleSection.js +144 -0
  226. package/dist/esm/parts/Panel/middle/PanelContentMiddleSection.js.map +7 -0
  227. package/dist/esm/parts/Panel/top/PanelContentTopSection.js +41 -0
  228. package/dist/esm/parts/Panel/top/PanelContentTopSection.js.map +7 -0
  229. package/dist/esm/parts/Panel/top/PanelFilterSection.js +49 -0
  230. package/dist/esm/parts/Panel/top/PanelFilterSection.js.map +7 -0
  231. package/dist/esm/parts/Panel/top/SelectionHeader.js +107 -0
  232. package/dist/esm/parts/Panel/top/SelectionHeader.js.map +7 -0
  233. package/dist/esm/parts/PanelWrapper.js +53 -0
  234. package/dist/esm/parts/PanelWrapper.js.map +7 -0
  235. package/dist/esm/react-desc-prop-types.js +132 -0
  236. package/dist/esm/react-desc-prop-types.js.map +7 -0
  237. package/dist/esm/tests/configs/basic.js +134 -0
  238. package/dist/esm/tests/configs/basic.js.map +7 -0
  239. package/dist/esm/tests/configs/filter.js +169 -0
  240. package/dist/esm/tests/configs/filter.js.map +7 -0
  241. package/dist/esm/tests/configs/loadMore.js +149 -0
  242. package/dist/esm/tests/configs/loadMore.js.map +7 -0
  243. package/dist/types/DSShuttleV2.d.ts +4 -0
  244. package/dist/types/config/DSShuttleV2Definitions.d.ts +36 -0
  245. package/dist/types/config/itemMovementHelpers.d.ts +7 -0
  246. package/dist/types/config/useAutoCalculated/index.d.ts +32 -0
  247. package/dist/types/config/useAutoCalculated/useDataStructure.d.ts +25 -0
  248. package/dist/types/config/useAutoCalculated/useShuttleVirtualized.d.ts +9 -0
  249. package/dist/types/config/useFocusTracker/index.d.ts +4 -0
  250. package/dist/types/config/useFocusTracker/useFocusActionTrackers.d.ts +10 -0
  251. package/dist/types/config/useFocusTracker/useFocusItemTracker.d.ts +11 -0
  252. package/dist/types/config/useFocusTracker/useFocusRegionTrackers.d.ts +18 -0
  253. package/dist/types/config/useFocusTracker/useFocusTracker.d.ts +33 -0
  254. package/dist/types/config/useStore/focusAndTabIndexManager.d.ts +10 -0
  255. package/dist/types/config/useStore/index.d.ts +1 -0
  256. package/dist/types/config/useStore/useStore.d.ts +301 -0
  257. package/dist/types/config/useValidateProps.d.ts +3 -0
  258. package/dist/types/constants/index.d.ts +32 -0
  259. package/dist/types/exported-related/ShuttleItem.d.ts +8 -0
  260. package/dist/types/exported-related/index.d.ts +1 -0
  261. package/dist/types/index.d.ts +3 -0
  262. package/dist/types/parts/Dnd/DndHandle.d.ts +15 -0
  263. package/dist/types/parts/Dnd/DragOverlay.d.ts +6 -0
  264. package/dist/types/parts/Dnd/DropIndicator.d.ts +15 -0
  265. package/dist/types/parts/Header.d.ts +3 -0
  266. package/dist/types/parts/HoC/withConditionalDnDRowContext.d.ts +10 -0
  267. package/dist/types/parts/HoC/withConditionalUseSortable.d.ts +8 -0
  268. package/dist/types/parts/Item/Item.d.ts +6 -0
  269. package/dist/types/parts/Item/ItemActions/ItemActions.d.ts +3 -0
  270. package/dist/types/parts/Item/ItemActions/index.d.ts +1 -0
  271. package/dist/types/parts/Item/ItemActions/useActionsHandlers.d.ts +7 -0
  272. package/dist/types/parts/Item/ItemActions/useActionsLogicHandlers.d.ts +7 -0
  273. package/dist/types/parts/Item/ItemActions/useInnerRefHandlers.d.ts +6 -0
  274. package/dist/types/parts/Item/ItemMiddleSection.d.ts +5 -0
  275. package/dist/types/parts/Item/ItemOverlay.d.ts +5 -0
  276. package/dist/types/parts/Item/ItemSelection.d.ts +3 -0
  277. package/dist/types/parts/Item/TextSection.d.ts +3 -0
  278. package/dist/types/parts/Item/useItemArrowNavigation.d.ts +5 -0
  279. package/dist/types/parts/Item/useItemKeyboardSelection.d.ts +5 -0
  280. package/dist/types/parts/Item/useSelectionLogic.d.ts +6 -0
  281. package/dist/types/parts/Item/useThisItemIsFocused.d.ts +4 -0
  282. package/dist/types/parts/MainContent.d.ts +2 -0
  283. package/dist/types/parts/Panel/bottom/LoadMoreBtn.d.ts +2 -0
  284. package/dist/types/parts/Panel/bottom/LoadingMore.d.ts +2 -0
  285. package/dist/types/parts/Panel/bottom/PanelContentBottomSection.d.ts +3 -0
  286. package/dist/types/parts/Panel/bottom/useInnerRefHandlers.d.ts +4 -0
  287. package/dist/types/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.d.ts +5 -0
  288. package/dist/types/parts/Panel/middle/EmptyItems.d.ts +2 -0
  289. package/dist/types/parts/Panel/middle/ItemListWrapper/Index.d.ts +4 -0
  290. package/dist/types/parts/Panel/middle/ItemListWrapper/getDatumFlags.d.ts +15 -0
  291. package/dist/types/parts/Panel/middle/ItemListWrapper/useGetDatumHydratables.d.ts +11 -0
  292. package/dist/types/parts/Panel/middle/LoadingItems.d.ts +2 -0
  293. package/dist/types/parts/Panel/middle/MultipleSelectionAction.d.ts +3 -0
  294. package/dist/types/parts/Panel/middle/PanelContentMiddleSection.d.ts +3 -0
  295. package/dist/types/parts/Panel/top/PanelContentTopSection.d.ts +2 -0
  296. package/dist/types/parts/Panel/top/PanelFilterSection.d.ts +2 -0
  297. package/dist/types/parts/Panel/top/SelectionHeader.d.ts +3 -0
  298. package/dist/types/parts/PanelWrapper.d.ts +3 -0
  299. package/dist/types/react-desc-prop-types.d.ts +199 -0
  300. package/dist/types/tests/configs/basic.d.ts +25 -0
  301. package/dist/types/tests/configs/filter.d.ts +29 -0
  302. package/dist/types/tests/configs/loadMore.d.ts +29 -0
  303. package/dist/types/tests/shuttle-v2.basic.test.d.ts +1 -0
  304. package/dist/types/tests/shuttle-v2.filter.test.d.ts +1 -0
  305. package/dist/types/tests/shuttle-v2.load-more.test.d.ts +1 -0
  306. package/package.json +87 -0
@@ -0,0 +1,39 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ import { useInternalStore } from "../../../config/useStore/index.js";
4
+ import { REGIONS_FOCUSES, ACTIONS_FOCUSES } from "../../../constants/index.js";
5
+ const useInnerRefHandlers = ({ datumInternalMeta, isDestinationPanel }) => {
6
+ const setZustandRef = useInternalStore((state) => state.setZustandRef);
7
+ const currRegion = isDestinationPanel ? REGIONS_FOCUSES.DESTINATION_PANEL_ITEM : REGIONS_FOCUSES.SOURCE_PANEL_ITEM;
8
+ const currItemId = datumInternalMeta.hydratedId;
9
+ const innerRefHandlerDrilldown = React2.useCallback(
10
+ (node) => {
11
+ setZustandRef([currRegion, currItemId, ACTIONS_FOCUSES.DRILLDOWN_BTN], node);
12
+ },
13
+ [currItemId, currRegion, setZustandRef]
14
+ );
15
+ const innerRefHandlerMove = React2.useCallback(
16
+ (node) => {
17
+ setZustandRef([currRegion, currItemId, ACTIONS_FOCUSES.MOVE_BTN], node);
18
+ },
19
+ [currItemId, currRegion, setZustandRef]
20
+ );
21
+ const innerRefHandlerDnd = React2.useCallback(
22
+ (node) => {
23
+ setZustandRef([currRegion, currItemId, ACTIONS_FOCUSES.DRAG_N_DROP], node);
24
+ },
25
+ [currItemId, currRegion, setZustandRef]
26
+ );
27
+ return React2.useMemo(
28
+ () => ({
29
+ innerRefHandlerDnd,
30
+ innerRefHandlerDrilldown,
31
+ innerRefHandlerMove
32
+ }),
33
+ [innerRefHandlerDrilldown, innerRefHandlerDnd, innerRefHandlerMove]
34
+ );
35
+ };
36
+ export {
37
+ useInnerRefHandlers
38
+ };
39
+ //# sourceMappingURL=useInnerRefHandlers.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/Item/ItemActions/useInnerRefHandlers.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { type DSShuttleV2T } from '../../../react-desc-prop-types.js';\nimport { useInternalStore } from '../../../config/useStore/index.js';\nimport { REGIONS_FOCUSES, ACTIONS_FOCUSES } from '../../../constants/index.js';\n\nexport const useInnerRefHandlers = ({ datumInternalMeta, isDestinationPanel }: DSShuttleV2T.ItemMeta) => {\n const setZustandRef = useInternalStore((state) => state.setZustandRef);\n const currRegion = isDestinationPanel ? REGIONS_FOCUSES.DESTINATION_PANEL_ITEM : REGIONS_FOCUSES.SOURCE_PANEL_ITEM;\n const currItemId = datumInternalMeta.hydratedId;\n const innerRefHandlerDrilldown = React.useCallback(\n (node: HTMLButtonElement) => {\n setZustandRef([currRegion, currItemId, ACTIONS_FOCUSES.DRILLDOWN_BTN], node);\n },\n [currItemId, currRegion, setZustandRef],\n );\n const innerRefHandlerMove = React.useCallback(\n (node: HTMLButtonElement) => {\n setZustandRef([currRegion, currItemId, ACTIONS_FOCUSES.MOVE_BTN], node);\n },\n [currItemId, currRegion, setZustandRef],\n );\n const innerRefHandlerDnd = React.useCallback(\n (node: HTMLDivElement | null) => {\n setZustandRef([currRegion, currItemId, ACTIONS_FOCUSES.DRAG_N_DROP], node);\n },\n [currItemId, currRegion, setZustandRef],\n );\n return React.useMemo(\n () => ({\n innerRefHandlerDnd,\n innerRefHandlerDrilldown,\n innerRefHandlerMove,\n }),\n [innerRefHandlerDrilldown, innerRefHandlerDnd, innerRefHandlerMove],\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,OAAOA,YAAW;AAElB,SAAS,wBAAwB;AACjC,SAAS,iBAAiB,uBAAuB;AAE1C,MAAM,sBAAsB,CAAC,EAAE,mBAAmB,mBAAmB,MAA6B;AACvG,QAAM,gBAAgB,iBAAiB,CAAC,UAAU,MAAM,aAAa;AACrE,QAAM,aAAa,qBAAqB,gBAAgB,yBAAyB,gBAAgB;AACjG,QAAM,aAAa,kBAAkB;AACrC,QAAM,2BAA2BA,OAAM;AAAA,IACrC,CAAC,SAA4B;AAC3B,oBAAc,CAAC,YAAY,YAAY,gBAAgB,aAAa,GAAG,IAAI;AAAA,IAC7E;AAAA,IACA,CAAC,YAAY,YAAY,aAAa;AAAA,EACxC;AACA,QAAM,sBAAsBA,OAAM;AAAA,IAChC,CAAC,SAA4B;AAC3B,oBAAc,CAAC,YAAY,YAAY,gBAAgB,QAAQ,GAAG,IAAI;AAAA,IACxE;AAAA,IACA,CAAC,YAAY,YAAY,aAAa;AAAA,EACxC;AACA,QAAM,qBAAqBA,OAAM;AAAA,IAC/B,CAAC,SAAgC;AAC/B,oBAAc,CAAC,YAAY,YAAY,gBAAgB,WAAW,GAAG,IAAI;AAAA,IAC3E;AAAA,IACA,CAAC,YAAY,YAAY,aAAa;AAAA,EACxC;AACA,SAAOA,OAAM;AAAA,IACX,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,0BAA0B,oBAAoB,mBAAmB;AAAA,EACpE;AACF;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,110 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import React2 from "react";
4
+ import { styled } from "@elliemae/ds-legacy-system";
5
+ import { Grid } from "@elliemae/ds-legacy-grid";
6
+ import { DSShuttleV2Name, DSShuttleV2Slots } from "../../config/DSShuttleV2Definitions.js";
7
+ import { TextSection } from "./TextSection.js";
8
+ import { useThisItemIsFocused } from "./useThisItemIsFocused.js";
9
+ import { usePropsStore } from "../../config/useStore/useStore.js";
10
+ const IconWrapper = styled(Grid, { name: DSShuttleV2Name, slot: DSShuttleV2Slots.ITEM_ICON_WRAPPER })`
11
+ min-height: 1rem;
12
+ `;
13
+ const MidSection = styled(Grid, {
14
+ name: DSShuttleV2Name,
15
+ slot: DSShuttleV2Slots.ITEM_MIDSECTION_WRAPPER
16
+ })`
17
+ min-height: 1rem;
18
+ ${(props) => {
19
+ if (props.$softDeleted)
20
+ return `
21
+ color: ${props.theme.colors.neutral[500]};
22
+ svg {
23
+ fill: ${props.theme.colors.neutral[400]};
24
+ }
25
+ `;
26
+ return "";
27
+ }};
28
+ `;
29
+ const customMidSectionCols = ["1fr"];
30
+ const customMidSectionRows = ["1fr"];
31
+ const ItemMiddleSection = React2.memo(
32
+ (props) => {
33
+ const { tooltipHelpers, ...itemMeta } = props;
34
+ const { datum, datumHydratables, datumInternalMeta, isDestinationPanel, hasMultipleSelection } = itemMeta;
35
+ const { Icon, CustomRenderer, ...componentlessHydratables } = datumHydratables;
36
+ const { softDeleted, hydratedId } = datumInternalMeta;
37
+ const thisItemIsFocused = useThisItemIsFocused(itemMeta);
38
+ const customComponentProps = React2.useMemo(
39
+ () => ({
40
+ datum,
41
+ tooltipHelpers,
42
+ thisItemIsFocused,
43
+ panelMetaInfo: { isDestinationPanel, hasMultipleSelection },
44
+ datumInternalMeta,
45
+ datumHydratables: { ...componentlessHydratables, id: hydratedId }
46
+ }),
47
+ [
48
+ componentlessHydratables,
49
+ datum,
50
+ datumInternalMeta,
51
+ hasMultipleSelection,
52
+ hydratedId,
53
+ isDestinationPanel,
54
+ thisItemIsFocused,
55
+ tooltipHelpers
56
+ ]
57
+ );
58
+ const cols = React2.useMemo(() => {
59
+ if (CustomRenderer)
60
+ return [];
61
+ const dynamicCols = [];
62
+ if (Icon)
63
+ dynamicCols.push("auto");
64
+ dynamicCols.push("1fr");
65
+ return dynamicCols;
66
+ }, [CustomRenderer, Icon]);
67
+ const getOwnerProps = usePropsStore((store) => store.get);
68
+ const getOwnerPropsArguments = React2.useCallback(() => props, [props]);
69
+ if (CustomRenderer)
70
+ return /* @__PURE__ */ jsx(
71
+ MidSection,
72
+ {
73
+ cols: customMidSectionCols,
74
+ rows: customMidSectionRows,
75
+ $softDeleted: Boolean(softDeleted),
76
+ getOwnerProps,
77
+ getOwnerPropsArguments,
78
+ children: /* @__PURE__ */ jsx(CustomRenderer, { ...customComponentProps })
79
+ }
80
+ );
81
+ return /* @__PURE__ */ jsxs(
82
+ MidSection,
83
+ {
84
+ cols,
85
+ alignItems: "center",
86
+ ml: "xxs",
87
+ $softDeleted: Boolean(softDeleted),
88
+ getOwnerProps,
89
+ getOwnerPropsArguments,
90
+ children: [
91
+ Icon ? /* @__PURE__ */ jsx(
92
+ IconWrapper,
93
+ {
94
+ alignItems: "center",
95
+ mr: "xxs",
96
+ getOwnerProps,
97
+ getOwnerPropsArguments,
98
+ children: /* @__PURE__ */ jsx(Icon, { ...customComponentProps })
99
+ }
100
+ ) : null,
101
+ /* @__PURE__ */ jsx(TextSection, { ...itemMeta })
102
+ ]
103
+ }
104
+ );
105
+ }
106
+ );
107
+ export {
108
+ ItemMiddleSection
109
+ };
110
+ //# sourceMappingURL=ItemMiddleSection.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Item/ItemMiddleSection.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { styled } from '@elliemae/ds-legacy-system';\nimport { Grid } from '@elliemae/ds-legacy-grid';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types.js';\nimport { DSShuttleV2Name, DSShuttleV2Slots } from '../../config/DSShuttleV2Definitions.js';\nimport { TextSection } from './TextSection.js';\nimport { useThisItemIsFocused } from './useThisItemIsFocused.js';\nimport { usePropsStore } from '../../config/useStore/useStore.js';\n\nconst IconWrapper = styled(Grid, { name: DSShuttleV2Name, slot: DSShuttleV2Slots.ITEM_ICON_WRAPPER })`\n min-height: 1rem;\n`;\n\nconst MidSection = styled(Grid, {\n name: DSShuttleV2Name,\n slot: DSShuttleV2Slots.ITEM_MIDSECTION_WRAPPER,\n})<{ $softDeleted: boolean }>`\n min-height: 1rem;\n ${(props) => {\n if (props.$softDeleted)\n return `\n color: ${props.theme.colors.neutral[500]};\n svg {\n fill: ${props.theme.colors.neutral[400]};\n }\n `;\n return '';\n }};\n`;\nconst customMidSectionCols = ['1fr'];\nconst customMidSectionRows = ['1fr'];\n\nexport const ItemMiddleSection = React.memo(\n (props: DSShuttleV2T.ItemMeta & { tooltipHelpers?: DSShuttleV2T.ComponentProps['tooltipHelpers'] }) => {\n const { tooltipHelpers, ...itemMeta } = props;\n const { datum, datumHydratables, datumInternalMeta, isDestinationPanel, hasMultipleSelection } = itemMeta;\n const { Icon, CustomRenderer, ...componentlessHydratables } = datumHydratables;\n const { softDeleted, hydratedId } = datumInternalMeta;\n const thisItemIsFocused = useThisItemIsFocused(itemMeta);\n const customComponentProps = React.useMemo<DSShuttleV2T.ComponentProps>(\n () => ({\n datum,\n tooltipHelpers,\n thisItemIsFocused,\n panelMetaInfo: { isDestinationPanel, hasMultipleSelection },\n datumInternalMeta,\n datumHydratables: { ...componentlessHydratables, id: hydratedId },\n }),\n [\n componentlessHydratables,\n datum,\n datumInternalMeta,\n hasMultipleSelection,\n hydratedId,\n isDestinationPanel,\n thisItemIsFocused,\n tooltipHelpers,\n ],\n );\n const cols = React.useMemo(() => {\n // if CustomRenderer is defined, shortcircuit\n if (CustomRenderer) return [];\n const dynamicCols = [];\n if (Icon) dynamicCols.push('auto');\n dynamicCols.push('1fr');\n return dynamicCols;\n }, [CustomRenderer, Icon]);\n\n const getOwnerProps = usePropsStore((store) => store.get);\n const getOwnerPropsArguments = React.useCallback(() => props, [props]);\n\n if (CustomRenderer)\n return (\n <MidSection\n cols={customMidSectionCols}\n rows={customMidSectionRows}\n $softDeleted={Boolean(softDeleted)}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n <CustomRenderer {...customComponentProps} />\n </MidSection>\n );\n\n // if we ever need to do something for truncation and showing a tooltip in the future,\n // check out what has been done in exported-related/ShuttleItem.tsx\n // also, be aware that we have the headless logic alread inside tooltipHelpers\n // when this comment has been written, the logic was working with keyboard and mouse as per tooltip-v3\n // integrated with all the shuttle-v2 custom focus navigation\n return (\n <MidSection\n cols={cols}\n alignItems=\"center\"\n ml=\"xxs\"\n $softDeleted={Boolean(softDeleted)}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n {Icon ? (\n <IconWrapper\n alignItems=\"center\"\n mr=\"xxs\"\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n <Icon {...customComponentProps} />\n </IconWrapper>\n ) : null}\n <TextSection {...itemMeta} />\n </MidSection>\n );\n },\n);\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACgFb,cAUJ,YAVI;AAhFV,OAAOA,YAAW;AAClB,SAAS,cAAc;AACvB,SAAS,YAAY;AAErB,SAAS,iBAAiB,wBAAwB;AAClD,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAE9B,MAAM,cAAc,OAAO,MAAM,EAAE,MAAM,iBAAiB,MAAM,iBAAiB,kBAAkB,CAAC;AAAA;AAAA;AAIpG,MAAM,aAAa,OAAO,MAAM;AAAA,EAC9B,MAAM;AAAA,EACN,MAAM,iBAAiB;AACzB,CAAC;AAAA;AAAA,IAEG,CAAC,UAAU;AACX,MAAI,MAAM;AACR,WAAO;AAAA,eACE,MAAM,MAAM,OAAO,QAAQ,GAAG;AAAA;AAAA,gBAE7B,MAAM,MAAM,OAAO,QAAQ,GAAG;AAAA;AAAA;AAG1C,SAAO;AACT;AAAA;AAEF,MAAM,uBAAuB,CAAC,KAAK;AACnC,MAAM,uBAAuB,CAAC,KAAK;AAE5B,MAAM,oBAAoBA,OAAM;AAAA,EACrC,CAAC,UAAsG;AACrG,UAAM,EAAE,gBAAgB,GAAG,SAAS,IAAI;AACxC,UAAM,EAAE,OAAO,kBAAkB,mBAAmB,oBAAoB,qBAAqB,IAAI;AACjG,UAAM,EAAE,MAAM,gBAAgB,GAAG,yBAAyB,IAAI;AAC9D,UAAM,EAAE,aAAa,WAAW,IAAI;AACpC,UAAM,oBAAoB,qBAAqB,QAAQ;AACvD,UAAM,uBAAuBA,OAAM;AAAA,MACjC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,EAAE,oBAAoB,qBAAqB;AAAA,QAC1D;AAAA,QACA,kBAAkB,EAAE,GAAG,0BAA0B,IAAI,WAAW;AAAA,MAClE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,UAAM,OAAOA,OAAM,QAAQ,MAAM;AAE/B,UAAI;AAAgB,eAAO,CAAC;AAC5B,YAAM,cAAc,CAAC;AACrB,UAAI;AAAM,oBAAY,KAAK,MAAM;AACjC,kBAAY,KAAK,KAAK;AACtB,aAAO;AAAA,IACT,GAAG,CAAC,gBAAgB,IAAI,CAAC;AAEzB,UAAM,gBAAgB,cAAc,CAAC,UAAU,MAAM,GAAG;AACxD,UAAM,yBAAyBA,OAAM,YAAY,MAAM,OAAO,CAAC,KAAK,CAAC;AAErE,QAAI;AACF,aACE;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,MAAM;AAAA,UACN,cAAc,QAAQ,WAAW;AAAA,UACjC;AAAA,UACA;AAAA,UAEA,8BAAC,kBAAgB,GAAG,sBAAsB;AAAA;AAAA,MAC5C;AAQJ,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,YAAW;AAAA,QACX,IAAG;AAAA,QACH,cAAc,QAAQ,WAAW;AAAA,QACjC;AAAA,QACA;AAAA,QAEC;AAAA,iBACC;AAAA,YAAC;AAAA;AAAA,cACC,YAAW;AAAA,cACX,IAAG;AAAA,cACH;AAAA,cACA;AAAA,cAEA,8BAAC,QAAM,GAAG,sBAAsB;AAAA;AAAA,UAClC,IACE;AAAA,UACJ,oBAAC,eAAa,GAAG,UAAU;AAAA;AAAA;AAAA,IAC7B;AAAA,EAEJ;AACF;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,46 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import React2 from "react";
4
+ import { styled } from "@elliemae/ds-legacy-system";
5
+ import { Grid } from "@elliemae/ds-legacy-grid";
6
+ import { useInternalStore } from "../../config/useStore/index.js";
7
+ import { ItemMiddleSection } from "./ItemMiddleSection.js";
8
+ import { DragOverlay } from "../Dnd/DragOverlay.js";
9
+ import { DSShuttleV2Name } from "../../config/DSShuttleV2Definitions.js";
10
+ const ItemWrapper = styled(Grid, { name: DSShuttleV2Name, slot: "item-wrapper-overlay" })`
11
+ min-height: 2.769rem;
12
+ position: relative;
13
+ background-color: white;
14
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.5);
15
+ padding-right: 5px;
16
+
17
+ &:focus {
18
+ outline: 2px solid brand-700;
19
+ outline-offset: -2px;
20
+ }
21
+ border-bottom: 1px solid neutral-100;
22
+ `;
23
+ const ItemOverlay = React2.memo(
24
+ (itemMeta) => {
25
+ const { datumInternalMeta } = itemMeta;
26
+ const { isSelected, hydratedId } = datumInternalMeta;
27
+ const getIsDragAndDropHappening = useInternalStore((state) => state.getIsDragAndDropHappening);
28
+ const isDragAndDropHappening = getIsDragAndDropHappening();
29
+ const dndDraggingItem = useInternalStore((state) => state.dndDraggingItem);
30
+ return /* @__PURE__ */ jsxs(ItemWrapper, { cols: ["auto", "auto"], alignItems: "center", role: "checkbox", "aria-checked": isSelected, children: [
31
+ /* @__PURE__ */ jsx(
32
+ DragOverlay,
33
+ {
34
+ id: `${hydratedId}-overlay`,
35
+ isDndActive: isDragAndDropHappening,
36
+ isDragging: dndDraggingItem?.hydratedId === hydratedId
37
+ }
38
+ ),
39
+ /* @__PURE__ */ jsx(ItemMiddleSection, { ...itemMeta })
40
+ ] });
41
+ }
42
+ );
43
+ export {
44
+ ItemOverlay
45
+ };
46
+ //# sourceMappingURL=ItemOverlay.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Item/ItemOverlay.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { styled } from '@elliemae/ds-legacy-system';\nimport { Grid } from '@elliemae/ds-legacy-grid';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types.js';\nimport { useInternalStore } from '../../config/useStore/index.js';\nimport { ItemMiddleSection } from './ItemMiddleSection.js';\nimport { DragOverlay } from '../Dnd/DragOverlay.js';\nimport { DSShuttleV2Name } from '../../config/DSShuttleV2Definitions.js';\n\n// we are using the class-name added via slot for the children `:hover` styling of icon colors\n\nconst ItemWrapper = styled(Grid, { name: DSShuttleV2Name, slot: 'item-wrapper-overlay' })`\n min-height: 2.769rem;\n position: relative;\n background-color: white;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.5);\n padding-right: 5px;\n\n &:focus {\n outline: 2px solid brand-700;\n outline-offset: -2px;\n }\n border-bottom: 1px solid neutral-100;\n`;\n\nexport const ItemOverlay = React.memo(\n (itemMeta: DSShuttleV2T.ItemMeta & { tooltipHelpers?: DSShuttleV2T.ComponentProps['tooltipHelpers'] }) => {\n const { datumInternalMeta } = itemMeta;\n const { isSelected, hydratedId } = datumInternalMeta;\n\n const getIsDragAndDropHappening = useInternalStore((state) => state.getIsDragAndDropHappening);\n const isDragAndDropHappening = getIsDragAndDropHappening();\n const dndDraggingItem = useInternalStore((state) => state.dndDraggingItem);\n\n return (\n <ItemWrapper cols={['auto', 'auto']} alignItems=\"center\" role=\"checkbox\" aria-checked={isSelected}>\n <DragOverlay\n id={`${hydratedId}-overlay`}\n isDndActive={isDragAndDropHappening}\n isDragging={dndDraggingItem?.hydratedId === hydratedId}\n />\n <ItemMiddleSection {...itemMeta} />\n </ItemWrapper>\n );\n },\n);\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACmCjB,SACE,KADF;AAnCN,OAAOA,YAAW;AAClB,SAAS,cAAc;AACvB,SAAS,YAAY;AAErB,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAC5B,SAAS,uBAAuB;AAIhC,MAAM,cAAc,OAAO,MAAM,EAAE,MAAM,iBAAiB,MAAM,uBAAuB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcjF,MAAM,cAAcA,OAAM;AAAA,EAC/B,CAAC,aAAyG;AACxG,UAAM,EAAE,kBAAkB,IAAI;AAC9B,UAAM,EAAE,YAAY,WAAW,IAAI;AAEnC,UAAM,4BAA4B,iBAAiB,CAAC,UAAU,MAAM,yBAAyB;AAC7F,UAAM,yBAAyB,0BAA0B;AACzD,UAAM,kBAAkB,iBAAiB,CAAC,UAAU,MAAM,eAAe;AAEzE,WACE,qBAAC,eAAY,MAAM,CAAC,QAAQ,MAAM,GAAG,YAAW,UAAS,MAAK,YAAW,gBAAc,YACrF;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,IAAI,GAAG;AAAA,UACP,aAAa;AAAA,UACb,YAAY,iBAAiB,eAAe;AAAA;AAAA,MAC9C;AAAA,MACA,oBAAC,qBAAmB,GAAG,UAAU;AAAA,OACnC;AAAA,EAEJ;AACF;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,40 @@
1
+ import * as React from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import React2 from "react";
4
+ import { styled } from "@elliemae/ds-legacy-system";
5
+ import { Grid } from "@elliemae/ds-legacy-grid";
6
+ import { DSShuttleV2Name, DSShuttleV2Slots } from "../../config/DSShuttleV2Definitions.js";
7
+ import { usePropsStore } from "../../config/useStore/useStore.js";
8
+ const StyledItemSelection = styled(Grid, { name: DSShuttleV2Name, slot: DSShuttleV2Slots.ITEM_SELECTION })`
9
+ width: 5px;
10
+ height: 100%;
11
+ box-sizing: border-box;
12
+ background-color: ${(props) => {
13
+ if (props.$isSelected)
14
+ return props.theme.colors.brand[600];
15
+ if (props.$selectionPrevented === true)
16
+ return props.theme.colors.neutral["080"];
17
+ return props.theme.colors.brand[300];
18
+ }};
19
+ `;
20
+ const ItemSelection = React2.memo((itemMeta) => {
21
+ const {
22
+ datumInternalMeta: { isSelected },
23
+ datumRenderFlags: { selectionPrevented }
24
+ } = itemMeta;
25
+ const getOwnerProps = usePropsStore((store) => store.get);
26
+ const getOwnerPropsArguments = React2.useCallback(() => itemMeta, [itemMeta]);
27
+ return /* @__PURE__ */ jsx(
28
+ StyledItemSelection,
29
+ {
30
+ $isSelected: isSelected,
31
+ $selectionPrevented: selectionPrevented,
32
+ getOwnerProps,
33
+ getOwnerPropsArguments
34
+ }
35
+ );
36
+ });
37
+ export {
38
+ ItemSelection
39
+ };
40
+ //# sourceMappingURL=ItemSelection.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Item/ItemSelection.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { styled } from '@elliemae/ds-legacy-system';\nimport { Grid } from '@elliemae/ds-legacy-grid';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types.js';\nimport { DSShuttleV2Name, DSShuttleV2Slots } from '../../config/DSShuttleV2Definitions.js';\nimport { usePropsStore } from '../../config/useStore/useStore.js';\n\n// border-right: ${(props) => {\n// if (props.$selectionPrevented === true) return `1px solid ${props.theme.colors.neutral['200']}`;\n// return '';\n// }};\n// border-bottom: ${(props) => {\n// if (props.$selectionPrevented === true) return `1px solid ${props.theme.colors.neutral['200']}`;\n// return '';\n// }};\n\nconst StyledItemSelection = styled(Grid, { name: DSShuttleV2Name, slot: DSShuttleV2Slots.ITEM_SELECTION })<{\n $isSelected: boolean;\n $selectionPrevented?: boolean;\n}>`\n width: 5px;\n height: 100%;\n box-sizing: border-box;\n background-color: ${(props) => {\n if (props.$isSelected) return props.theme.colors.brand[600];\n if (props.$selectionPrevented === true) return props.theme.colors.neutral['080'];\n return props.theme.colors.brand[300];\n }};\n`;\n\nexport const ItemSelection = React.memo((itemMeta: DSShuttleV2T.ItemMeta) => {\n const {\n datumInternalMeta: { isSelected },\n datumRenderFlags: { selectionPrevented },\n } = itemMeta;\n const getOwnerProps = usePropsStore((store) => store.get);\n const getOwnerPropsArguments = React.useCallback(() => itemMeta, [itemMeta]);\n\n return (\n <StyledItemSelection\n $isSelected={isSelected}\n $selectionPrevented={selectionPrevented}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n />\n );\n});\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACuCnB;AAvCJ,OAAOA,YAAW;AAClB,SAAS,cAAc;AACvB,SAAS,YAAY;AAErB,SAAS,iBAAiB,wBAAwB;AAClD,SAAS,qBAAqB;AAW9B,MAAM,sBAAsB,OAAO,MAAM,EAAE,MAAM,iBAAiB,MAAM,iBAAiB,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA,sBAOnF,CAAC,UAAU;AAC7B,MAAI,MAAM;AAAa,WAAO,MAAM,MAAM,OAAO,MAAM,GAAG;AAC1D,MAAI,MAAM,wBAAwB;AAAM,WAAO,MAAM,MAAM,OAAO,QAAQ,KAAK;AAC/E,SAAO,MAAM,MAAM,OAAO,MAAM,GAAG;AACrC;AAAA;AAGK,MAAM,gBAAgBA,OAAM,KAAK,CAAC,aAAoC;AAC3E,QAAM;AAAA,IACJ,mBAAmB,EAAE,WAAW;AAAA,IAChC,kBAAkB,EAAE,mBAAmB;AAAA,EACzC,IAAI;AACJ,QAAM,gBAAgB,cAAc,CAAC,UAAU,MAAM,GAAG;AACxD,QAAM,yBAAyBA,OAAM,YAAY,MAAM,UAAU,CAAC,QAAQ,CAAC;AAE3E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB;AAAA,MACA;AAAA;AAAA,EACF;AAEJ,CAAC;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,26 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import React2 from "react";
4
+ import { Grid } from "@elliemae/ds-legacy-grid";
5
+ import { styled } from "@elliemae/ds-legacy-system";
6
+ import { DSTypography } from "@elliemae/ds-legacy-typography";
7
+ import { DSShuttleV2Name, DSShuttleV2Slots } from "../../config/DSShuttleV2Definitions.js";
8
+ import { usePropsStore } from "../../config/useStore/useStore.js";
9
+ const withSubtitleRows = ["auto", "auto"];
10
+ const LabelWrapper = styled(Grid, { name: DSShuttleV2Name, slot: DSShuttleV2Slots.ITEM_LABEL_WRAPPER })`
11
+ min-height: 1rem;
12
+ `;
13
+ const TextSection = React2.memo((props) => {
14
+ const getOwnerProps = usePropsStore((store) => store.get);
15
+ const getOwnerPropsArguments = React2.useCallback(() => props, [props]);
16
+ const { label, subtitle, id } = props.datumHydratables;
17
+ const { softDeleted } = props.datum;
18
+ return /* @__PURE__ */ jsx(Grid, { id: `${id}-text-section${softDeleted ? "-soft-deleted" : ""}`, children: subtitle === void 0 ? /* @__PURE__ */ jsx(LabelWrapper, { alignItems: "center", getOwnerProps, getOwnerPropsArguments, children: /* @__PURE__ */ jsx(DSTypography, { variant: "b1", children: label }) }) : /* @__PURE__ */ jsxs(Grid, { alignItems: "center", rows: withSubtitleRows, gutter: "1px", children: [
19
+ /* @__PURE__ */ jsx(DSTypography, { variant: "b1", children: label }),
20
+ /* @__PURE__ */ jsx(DSTypography, { variant: "b4", children: subtitle })
21
+ ] }) });
22
+ });
23
+ export {
24
+ TextSection
25
+ };
26
+ //# sourceMappingURL=TextSection.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Item/TextSection.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { Grid } from '@elliemae/ds-legacy-grid';\nimport { styled } from '@elliemae/ds-legacy-system';\nimport { DSTypography } from '@elliemae/ds-legacy-typography';\nimport { DSShuttleV2Name, DSShuttleV2Slots } from '../../config/DSShuttleV2Definitions.js';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types.js';\nimport { usePropsStore } from '../../config/useStore/useStore.js';\n\nconst withSubtitleRows = ['auto', 'auto'];\nconst LabelWrapper = styled(Grid, { name: DSShuttleV2Name, slot: DSShuttleV2Slots.ITEM_LABEL_WRAPPER })`\n min-height: 1rem;\n`;\nexport const TextSection = React.memo((props: DSShuttleV2T.ItemMeta) => {\n const getOwnerProps = usePropsStore((store) => store.get);\n const getOwnerPropsArguments = React.useCallback(() => props, [props]);\n\n const { label, subtitle, id } = props.datumHydratables;\n const { softDeleted } = props.datum;\n return (\n <Grid id={`${id}-text-section${softDeleted ? '-soft-deleted' : ''}`}>\n {subtitle === undefined ? (\n <LabelWrapper alignItems=\"center\" getOwnerProps={getOwnerProps} getOwnerPropsArguments={getOwnerPropsArguments}>\n <DSTypography variant=\"b1\">{label}</DSTypography>\n </LabelWrapper>\n ) : (\n <Grid alignItems=\"center\" rows={withSubtitleRows} gutter=\"1px\">\n <DSTypography variant=\"b1\">{label}</DSTypography>\n <DSTypography variant=\"b4\">{subtitle}</DSTypography>\n </Grid>\n )}\n </Grid>\n );\n});\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACsBb,cAGF,YAHE;AAtBV,OAAOA,YAAW;AAClB,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB,wBAAwB;AAElD,SAAS,qBAAqB;AAE9B,MAAM,mBAAmB,CAAC,QAAQ,MAAM;AACxC,MAAM,eAAe,OAAO,MAAM,EAAE,MAAM,iBAAiB,MAAM,iBAAiB,mBAAmB,CAAC;AAAA;AAAA;AAG/F,MAAM,cAAcA,OAAM,KAAK,CAAC,UAAiC;AACtE,QAAM,gBAAgB,cAAc,CAAC,UAAU,MAAM,GAAG;AACxD,QAAM,yBAAyBA,OAAM,YAAY,MAAM,OAAO,CAAC,KAAK,CAAC;AAErE,QAAM,EAAE,OAAO,UAAU,GAAG,IAAI,MAAM;AACtC,QAAM,EAAE,YAAY,IAAI,MAAM;AAC9B,SACE,oBAAC,QAAK,IAAI,GAAG,kBAAkB,cAAc,kBAAkB,MAC5D,uBAAa,SACZ,oBAAC,gBAAa,YAAW,UAAS,eAA8B,wBAC9D,8BAAC,gBAAa,SAAQ,MAAM,iBAAM,GACpC,IAEA,qBAAC,QAAK,YAAW,UAAS,MAAM,kBAAkB,QAAO,OACvD;AAAA,wBAAC,gBAAa,SAAQ,MAAM,iBAAM;AAAA,IAClC,oBAAC,gBAAa,SAAQ,MAAM,oBAAS;AAAA,KACvC,GAEJ;AAEJ,CAAC;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,78 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ import {
4
+ useFocusItemTracker,
5
+ useFocusActionTrackers,
6
+ useFocusRegionTrackers
7
+ } from "../../config/useFocusTracker/index.js";
8
+ import { useInternalStore } from "../../config/useStore/index.js";
9
+ const useItemArrowNavigation = (itemMeta) => {
10
+ const { trackFocusRegionPanelFocusMoveAll } = useFocusRegionTrackers();
11
+ const { trackFocusPrevItem, trackFocusNextItem, trackFocusItemReset } = useFocusItemTracker();
12
+ const { trackFocusNextAction, trackFocusPrevAction, trackFocusActionParent, trackFocusActionReset } = useFocusActionTrackers();
13
+ const { hasMultipleSelection, isDestinationPanel } = itemMeta;
14
+ const getIsDragAndDropHappening = useInternalStore((state) => state.getIsDragAndDropHappening);
15
+ const onItemContainerKeyDown = React2.useCallback(
16
+ (e) => {
17
+ const { key } = e;
18
+ const isDragAndDropHappening = getIsDragAndDropHappening();
19
+ if (isDragAndDropHappening) {
20
+ e.preventDefault();
21
+ return;
22
+ }
23
+ if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"].includes(key))
24
+ e.preventDefault();
25
+ if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"].includes(key))
26
+ e.stopPropagation();
27
+ if (key === "ArrowLeft") {
28
+ if (hasMultipleSelection) {
29
+ trackFocusRegionPanelFocusMoveAll(isDestinationPanel);
30
+ trackFocusItemReset();
31
+ trackFocusActionReset();
32
+ return;
33
+ }
34
+ trackFocusPrevAction(itemMeta);
35
+ return;
36
+ }
37
+ if (key === "ArrowRight") {
38
+ if (hasMultipleSelection) {
39
+ trackFocusRegionPanelFocusMoveAll(isDestinationPanel);
40
+ trackFocusItemReset();
41
+ trackFocusActionReset();
42
+ return;
43
+ }
44
+ trackFocusNextAction(itemMeta);
45
+ return;
46
+ }
47
+ if (key === "ArrowUp") {
48
+ trackFocusPrevItem(itemMeta);
49
+ trackFocusActionParent();
50
+ return;
51
+ }
52
+ if (key === "ArrowDown") {
53
+ trackFocusNextItem(itemMeta);
54
+ trackFocusActionParent();
55
+ return;
56
+ }
57
+ },
58
+ [
59
+ getIsDragAndDropHappening,
60
+ hasMultipleSelection,
61
+ trackFocusPrevAction,
62
+ itemMeta,
63
+ trackFocusRegionPanelFocusMoveAll,
64
+ isDestinationPanel,
65
+ trackFocusItemReset,
66
+ trackFocusActionReset,
67
+ trackFocusNextAction,
68
+ trackFocusPrevItem,
69
+ trackFocusActionParent,
70
+ trackFocusNextItem
71
+ ]
72
+ );
73
+ return React2.useMemo(() => ({ onItemContainerKeyDown }), [onItemContainerKeyDown]);
74
+ };
75
+ export {
76
+ useItemArrowNavigation
77
+ };
78
+ //# sourceMappingURL=useItemArrowNavigation.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Item/useItemArrowNavigation.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React from 'react';\nimport {\n useFocusItemTracker,\n useFocusActionTrackers,\n useFocusRegionTrackers,\n} from '../../config/useFocusTracker/index.js';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types.js';\nimport { useInternalStore } from '../../config/useStore/index.js';\n\nexport const useItemArrowNavigation = (itemMeta: DSShuttleV2T.ItemMeta) => {\n const { trackFocusRegionPanelFocusMoveAll } = useFocusRegionTrackers();\n const { trackFocusPrevItem, trackFocusNextItem, trackFocusItemReset } = useFocusItemTracker();\n const { trackFocusNextAction, trackFocusPrevAction, trackFocusActionParent, trackFocusActionReset } =\n useFocusActionTrackers();\n const { hasMultipleSelection, isDestinationPanel } = itemMeta;\n\n const getIsDragAndDropHappening = useInternalStore((state) => state.getIsDragAndDropHappening);\n\n const onItemContainerKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (e) => {\n const { key } = e;\n const isDragAndDropHappening = getIsDragAndDropHappening();\n if (isDragAndDropHappening) {\n e.preventDefault();\n return;\n }\n // stopping prepagation it's required to avoid \"ArrowUp/ArrowDown\" to trigger parents logic\n // preventDefault it's just me thinking it's good idea when stopping propagation\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) e.preventDefault();\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) e.stopPropagation();\n if (key === 'ArrowLeft') {\n if (hasMultipleSelection) {\n trackFocusRegionPanelFocusMoveAll(isDestinationPanel);\n trackFocusItemReset();\n trackFocusActionReset();\n return;\n }\n\n trackFocusPrevAction(itemMeta);\n return;\n }\n if (key === 'ArrowRight') {\n if (hasMultipleSelection) {\n trackFocusRegionPanelFocusMoveAll(isDestinationPanel);\n trackFocusItemReset();\n trackFocusActionReset();\n return;\n }\n trackFocusNextAction(itemMeta);\n return;\n }\n if (key === 'ArrowUp') {\n trackFocusPrevItem(itemMeta);\n trackFocusActionParent();\n return;\n }\n if (key === 'ArrowDown') {\n trackFocusNextItem(itemMeta);\n trackFocusActionParent();\n return;\n }\n },\n [\n getIsDragAndDropHappening,\n hasMultipleSelection,\n trackFocusPrevAction,\n itemMeta,\n trackFocusRegionPanelFocusMoveAll,\n isDestinationPanel,\n trackFocusItemReset,\n trackFocusActionReset,\n trackFocusNextAction,\n trackFocusPrevItem,\n trackFocusActionParent,\n trackFocusNextItem,\n ],\n );\n\n return React.useMemo(() => ({ onItemContainerKeyDown }), [onItemContainerKeyDown]);\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACEvB,OAAOA,YAAW;AAClB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,wBAAwB;AAE1B,MAAM,yBAAyB,CAAC,aAAoC;AACzE,QAAM,EAAE,kCAAkC,IAAI,uBAAuB;AACrE,QAAM,EAAE,oBAAoB,oBAAoB,oBAAoB,IAAI,oBAAoB;AAC5F,QAAM,EAAE,sBAAsB,sBAAsB,wBAAwB,sBAAsB,IAChG,uBAAuB;AACzB,QAAM,EAAE,sBAAsB,mBAAmB,IAAI;AAErD,QAAM,4BAA4B,iBAAiB,CAAC,UAAU,MAAM,yBAAyB;AAE7F,QAAM,yBAAyBA,OAAM;AAAA,IACnC,CAAC,MAAM;AACL,YAAM,EAAE,IAAI,IAAI;AAChB,YAAM,yBAAyB,0BAA0B;AACzD,UAAI,wBAAwB;AAC1B,UAAE,eAAe;AACjB;AAAA,MACF;AAGA,UAAI,CAAC,WAAW,aAAa,aAAa,YAAY,EAAE,SAAS,GAAG;AAAG,UAAE,eAAe;AACxF,UAAI,CAAC,WAAW,aAAa,aAAa,YAAY,EAAE,SAAS,GAAG;AAAG,UAAE,gBAAgB;AACzF,UAAI,QAAQ,aAAa;AACvB,YAAI,sBAAsB;AACxB,4CAAkC,kBAAkB;AACpD,8BAAoB;AACpB,gCAAsB;AACtB;AAAA,QACF;AAEA,6BAAqB,QAAQ;AAC7B;AAAA,MACF;AACA,UAAI,QAAQ,cAAc;AACxB,YAAI,sBAAsB;AACxB,4CAAkC,kBAAkB;AACpD,8BAAoB;AACpB,gCAAsB;AACtB;AAAA,QACF;AACA,6BAAqB,QAAQ;AAC7B;AAAA,MACF;AACA,UAAI,QAAQ,WAAW;AACrB,2BAAmB,QAAQ;AAC3B,+BAAuB;AACvB;AAAA,MACF;AACA,UAAI,QAAQ,aAAa;AACvB,2BAAmB,QAAQ;AAC3B,+BAAuB;AACvB;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAOA,OAAM,QAAQ,OAAO,EAAE,uBAAuB,IAAI,CAAC,sBAAsB,CAAC;AACnF;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,31 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ import { useInternalStore } from "../../config/useStore/index.js";
4
+ import { useSelectionLogic } from "./useSelectionLogic.js";
5
+ const useItemKeyboardSelection = (itemMeta) => {
6
+ const { datumInternalMeta } = itemMeta;
7
+ const { hydratedId } = datumInternalMeta;
8
+ const { selectItem } = useSelectionLogic(itemMeta);
9
+ const getIsDragAndDropHappening = useInternalStore((state) => state.getIsDragAndDropHappening);
10
+ const onItemKeyDownSelection = React2.useCallback(
11
+ (event) => {
12
+ const { key } = event;
13
+ if (["Spacebar", " ", "Enter"].includes(key)) {
14
+ const isDragNDroping = getIsDragAndDropHappening();
15
+ if (isDragNDroping || event.target.id === `${hydratedId}-drag-handle`) {
16
+ event.preventDefault();
17
+ return;
18
+ }
19
+ event.preventDefault();
20
+ event.stopPropagation();
21
+ selectItem(event);
22
+ }
23
+ },
24
+ [getIsDragAndDropHappening, hydratedId, selectItem]
25
+ );
26
+ return React2.useMemo(() => ({ onItemKeyDownSelection }), [onItemKeyDownSelection]);
27
+ };
28
+ export {
29
+ useItemKeyboardSelection
30
+ };
31
+ //# sourceMappingURL=useItemKeyboardSelection.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Item/useItemKeyboardSelection.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types.js';\nimport { useInternalStore } from '../../config/useStore/index.js';\nimport { useSelectionLogic } from './useSelectionLogic.js';\n\nexport const useItemKeyboardSelection = (itemMeta: DSShuttleV2T.ItemMeta) => {\n const { datumInternalMeta } = itemMeta;\n const { hydratedId } = datumInternalMeta;\n const { selectItem } = useSelectionLogic(itemMeta);\n const getIsDragAndDropHappening = useInternalStore((state) => state.getIsDragAndDropHappening);\n const onItemKeyDownSelection = React.useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n const { key } = event;\n\n // Spacebar AND ' ' are cross-browser compatibility thing\n if (['Spacebar', ' ', 'Enter'].includes(key)) {\n // we need to invoke \"getIsDragAndDropHappening\" here to ensure we have the latest info at the moment of the event\n const isDragNDroping = getIsDragAndDropHappening();\n if (isDragNDroping || (event.target as HTMLElement).id === `${hydratedId}-drag-handle`) {\n event.preventDefault();\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n selectItem(event);\n }\n },\n [getIsDragAndDropHappening, hydratedId, selectItem],\n );\n return React.useMemo(() => ({ onItemKeyDownSelection }), [onItemKeyDownSelection]);\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,OAAOA,YAAW;AAElB,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAE3B,MAAM,2BAA2B,CAAC,aAAoC;AAC3E,QAAM,EAAE,kBAAkB,IAAI;AAC9B,QAAM,EAAE,WAAW,IAAI;AACvB,QAAM,EAAE,WAAW,IAAI,kBAAkB,QAAQ;AACjD,QAAM,4BAA4B,iBAAiB,CAAC,UAAU,MAAM,yBAAyB;AAC7F,QAAM,yBAAyBA,OAAM;AAAA,IACnC,CAAC,UAAU;AACT,YAAM,EAAE,IAAI,IAAI;AAGhB,UAAI,CAAC,YAAY,KAAK,OAAO,EAAE,SAAS,GAAG,GAAG;AAE5C,cAAM,iBAAiB,0BAA0B;AACjD,YAAI,kBAAmB,MAAM,OAAuB,OAAO,GAAG,0BAA0B;AACtF,gBAAM,eAAe;AACrB;AAAA,QACF;AACA,cAAM,eAAe;AACrB,cAAM,gBAAgB;AACtB,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,IACA,CAAC,2BAA2B,YAAY,UAAU;AAAA,EACpD;AACA,SAAOA,OAAM,QAAQ,OAAO,EAAE,uBAAuB,IAAI,CAAC,sBAAsB,CAAC;AACnF;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,98 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ import { useInternalStore, usePropsStore } from "../../config/useStore/index.js";
4
+ import { useFocusItemTracker, useFocusActionTrackers, useFocusTracker } from "../../config/useFocusTracker/index.js";
5
+ const useSelectionLogic = ({
6
+ isDestinationPanel,
7
+ datumInternalMeta,
8
+ datum,
9
+ datumRenderFlags
10
+ }) => {
11
+ const { trackFocusItem } = useFocusItemTracker();
12
+ const { trackFocusActionParent } = useFocusActionTrackers();
13
+ const { trackFocusRegionPanelItem } = useFocusTracker();
14
+ const getPanelLastSelectedItem = useInternalStore((store) => store.getPanelLastSelectedItem);
15
+ const setPanelLastSelectedItem = useInternalStore(
16
+ (store) => isDestinationPanel ? store.setDestinationPanelLastSelectedItem : store.setSourcePanelLastSelectedItem
17
+ );
18
+ const panelSelectionableDataIds = usePropsStore(
19
+ (store) => isDestinationPanel ? store.destinationSelectionableDataIds : store.sourceSelectionableDataIds
20
+ );
21
+ const onSelectionChange = usePropsStore(
22
+ (state) => isDestinationPanel ? state.onDestinationSelectionChange : state.onSourceSelectionChange
23
+ );
24
+ const panelSelectedItems = usePropsStore(
25
+ (state) => isDestinationPanel ? state.destinationSelectedItems : state.sourceSelectedItems
26
+ );
27
+ const selectItem = React2.useCallback(
28
+ (event) => {
29
+ const { selectionPrevented } = datumRenderFlags;
30
+ const { hydratedId } = datumInternalMeta;
31
+ const { shiftKey } = event;
32
+ const lastSelectedItem = getPanelLastSelectedItem(isDestinationPanel);
33
+ if (!selectionPrevented) {
34
+ let newSelection = {};
35
+ if (shiftKey && lastSelectedItem) {
36
+ const startSelIndx = panelSelectionableDataIds.findIndex((id) => id === lastSelectedItem);
37
+ const endSelIndx = panelSelectionableDataIds.findIndex((id) => id === hydratedId);
38
+ if (startSelIndx !== -1 && endSelIndx !== -1) {
39
+ const ordererIndexes = [startSelIndx, endSelIndx].sort();
40
+ const shiftSelectedIdsArray = panelSelectionableDataIds.slice(ordererIndexes[0], ordererIndexes[1] + 1);
41
+ let shouldShiftDeSelect = true;
42
+ const allSelected = {};
43
+ const allDeSelected = {};
44
+ shiftSelectedIdsArray.forEach((id) => {
45
+ allSelected[id] = true;
46
+ allDeSelected[id] = false;
47
+ if (panelSelectedItems[id] !== true)
48
+ shouldShiftDeSelect = false;
49
+ });
50
+ if (shouldShiftDeSelect)
51
+ newSelection = { ...panelSelectedItems, ...allDeSelected };
52
+ else
53
+ newSelection = { ...panelSelectedItems, ...allSelected };
54
+ }
55
+ } else {
56
+ newSelection = { ...panelSelectedItems };
57
+ const isAddition = newSelection[hydratedId] !== true;
58
+ if (isAddition) {
59
+ newSelection[hydratedId] = true;
60
+ } else
61
+ delete newSelection[hydratedId];
62
+ }
63
+ setPanelLastSelectedItem(hydratedId);
64
+ onSelectionChange(newSelection, { event, item: datum });
65
+ }
66
+ trackFocusRegionPanelItem(isDestinationPanel);
67
+ trackFocusItem({ original: datum, ...datumInternalMeta });
68
+ trackFocusActionParent();
69
+ },
70
+ [
71
+ datum,
72
+ datumInternalMeta,
73
+ datumRenderFlags,
74
+ getPanelLastSelectedItem,
75
+ isDestinationPanel,
76
+ onSelectionChange,
77
+ panelSelectedItems,
78
+ panelSelectionableDataIds,
79
+ setPanelLastSelectedItem,
80
+ trackFocusActionParent,
81
+ trackFocusItem,
82
+ trackFocusRegionPanelItem
83
+ ]
84
+ );
85
+ const onShiftMouseDownPreventTextSelection = React2.useCallback((event) => {
86
+ const { shiftKey } = event;
87
+ if (shiftKey)
88
+ event.preventDefault();
89
+ }, []);
90
+ return React2.useMemo(
91
+ () => ({ selectItem, onShiftMouseDownPreventTextSelection }),
92
+ [selectItem, onShiftMouseDownPreventTextSelection]
93
+ );
94
+ };
95
+ export {
96
+ useSelectionLogic
97
+ };
98
+ //# sourceMappingURL=useSelectionLogic.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Item/useSelectionLogic.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\nimport React from 'react';\nimport { useInternalStore, usePropsStore } from '../../config/useStore/index.js';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types.js';\nimport { useFocusItemTracker, useFocusActionTrackers, useFocusTracker } from '../../config/useFocusTracker/index.js';\nexport const useSelectionLogic = ({\n isDestinationPanel,\n datumInternalMeta,\n datum,\n datumRenderFlags,\n}: DSShuttleV2T.ItemMeta) => {\n const { trackFocusItem } = useFocusItemTracker();\n const { trackFocusActionParent } = useFocusActionTrackers();\n const { trackFocusRegionPanelItem } = useFocusTracker();\n\n const getPanelLastSelectedItem = useInternalStore((store) => store.getPanelLastSelectedItem);\n const setPanelLastSelectedItem = useInternalStore((store) =>\n isDestinationPanel ? store.setDestinationPanelLastSelectedItem : store.setSourcePanelLastSelectedItem,\n );\n\n const panelSelectionableDataIds = usePropsStore((store) =>\n isDestinationPanel ? store.destinationSelectionableDataIds : store.sourceSelectionableDataIds,\n );\n\n const onSelectionChange = usePropsStore((state) =>\n isDestinationPanel ? state.onDestinationSelectionChange : state.onSourceSelectionChange,\n );\n const panelSelectedItems = usePropsStore((state) =>\n isDestinationPanel ? state.destinationSelectedItems : state.sourceSelectedItems,\n );\n const selectItem = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement | HTMLButtonElement>) => {\n const { selectionPrevented } = datumRenderFlags;\n const { hydratedId } = datumInternalMeta;\n const { shiftKey } = event;\n const lastSelectedItem = getPanelLastSelectedItem(isDestinationPanel);\n if (!selectionPrevented) {\n let newSelection: Record<string, boolean> = {};\n // shift select logic\n if (shiftKey && lastSelectedItem) {\n const startSelIndx = panelSelectionableDataIds.findIndex((id) => id === lastSelectedItem);\n const endSelIndx = panelSelectionableDataIds.findIndex((id) => id === hydratedId);\n if (startSelIndx !== -1 && endSelIndx !== -1) {\n const ordererIndexes = [startSelIndx, endSelIndx].sort();\n const shiftSelectedIdsArray = panelSelectionableDataIds.slice(ordererIndexes[0], ordererIndexes[1] + 1);\n let shouldShiftDeSelect = true;\n // I track both \"all Select\"/\"all unselect\" so I can \".forEach\" only once and apply either version after\n const allSelected: Record<string, boolean> = {};\n const allDeSelected: Record<string, boolean> = {};\n shiftSelectedIdsArray.forEach((id) => {\n allSelected[id] = true;\n allDeSelected[id] = false;\n // if anything inside the shift-select was not selected, shift-select will \"select\"\n if (panelSelectedItems[id] !== true) shouldShiftDeSelect = false;\n });\n if (shouldShiftDeSelect) newSelection = { ...panelSelectedItems, ...allDeSelected };\n else newSelection = { ...panelSelectedItems, ...allSelected };\n }\n } else {\n // single selection logic\n newSelection = { ...panelSelectedItems };\n const isAddition = newSelection[hydratedId] !== true;\n if (isAddition) {\n newSelection[hydratedId] = true;\n } else delete newSelection[hydratedId];\n }\n // we track the item for \"shift select\" purposes\n // this must happen AFTER shift select logic!\n setPanelLastSelectedItem(hydratedId);\n onSelectionChange(newSelection, { event, item: datum });\n }\n // focus tracking logic\n trackFocusRegionPanelItem(isDestinationPanel);\n trackFocusItem({ original: datum, ...datumInternalMeta });\n trackFocusActionParent();\n },\n [\n datum,\n datumInternalMeta,\n datumRenderFlags,\n getPanelLastSelectedItem,\n isDestinationPanel,\n onSelectionChange,\n panelSelectedItems,\n panelSelectionableDataIds,\n setPanelLastSelectedItem,\n trackFocusActionParent,\n trackFocusItem,\n trackFocusRegionPanelItem,\n ],\n );\n\n const onShiftMouseDownPreventTextSelection = React.useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n const { shiftKey } = event;\n if (shiftKey) event.preventDefault();\n }, []);\n return React.useMemo(\n () => ({ selectItem, onShiftMouseDownPreventTextSelection }),\n [selectItem, onShiftMouseDownPreventTextSelection],\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACCvB,OAAOA,YAAW;AAClB,SAAS,kBAAkB,qBAAqB;AAEhD,SAAS,qBAAqB,wBAAwB,uBAAuB;AACtE,MAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6B;AAC3B,QAAM,EAAE,eAAe,IAAI,oBAAoB;AAC/C,QAAM,EAAE,uBAAuB,IAAI,uBAAuB;AAC1D,QAAM,EAAE,0BAA0B,IAAI,gBAAgB;AAEtD,QAAM,2BAA2B,iBAAiB,CAAC,UAAU,MAAM,wBAAwB;AAC3F,QAAM,2BAA2B;AAAA,IAAiB,CAAC,UACjD,qBAAqB,MAAM,sCAAsC,MAAM;AAAA,EACzE;AAEA,QAAM,4BAA4B;AAAA,IAAc,CAAC,UAC/C,qBAAqB,MAAM,kCAAkC,MAAM;AAAA,EACrE;AAEA,QAAM,oBAAoB;AAAA,IAAc,CAAC,UACvC,qBAAqB,MAAM,+BAA+B,MAAM;AAAA,EAClE;AACA,QAAM,qBAAqB;AAAA,IAAc,CAAC,UACxC,qBAAqB,MAAM,2BAA2B,MAAM;AAAA,EAC9D;AACA,QAAM,aAAaA,OAAM;AAAA,IACvB,CAAC,UAAsG;AACrG,YAAM,EAAE,mBAAmB,IAAI;AAC/B,YAAM,EAAE,WAAW,IAAI;AACvB,YAAM,EAAE,SAAS,IAAI;AACrB,YAAM,mBAAmB,yBAAyB,kBAAkB;AACpE,UAAI,CAAC,oBAAoB;AACvB,YAAI,eAAwC,CAAC;AAE7C,YAAI,YAAY,kBAAkB;AAChC,gBAAM,eAAe,0BAA0B,UAAU,CAAC,OAAO,OAAO,gBAAgB;AACxF,gBAAM,aAAa,0BAA0B,UAAU,CAAC,OAAO,OAAO,UAAU;AAChF,cAAI,iBAAiB,MAAM,eAAe,IAAI;AAC5C,kBAAM,iBAAiB,CAAC,cAAc,UAAU,EAAE,KAAK;AACvD,kBAAM,wBAAwB,0BAA0B,MAAM,eAAe,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC;AACtG,gBAAI,sBAAsB;AAE1B,kBAAM,cAAuC,CAAC;AAC9C,kBAAM,gBAAyC,CAAC;AAChD,kCAAsB,QAAQ,CAAC,OAAO;AACpC,0BAAY,EAAE,IAAI;AAClB,4BAAc,EAAE,IAAI;AAEpB,kBAAI,mBAAmB,EAAE,MAAM;AAAM,sCAAsB;AAAA,YAC7D,CAAC;AACD,gBAAI;AAAqB,6BAAe,EAAE,GAAG,oBAAoB,GAAG,cAAc;AAAA;AAC7E,6BAAe,EAAE,GAAG,oBAAoB,GAAG,YAAY;AAAA,UAC9D;AAAA,QACF,OAAO;AAEL,yBAAe,EAAE,GAAG,mBAAmB;AACvC,gBAAM,aAAa,aAAa,UAAU,MAAM;AAChD,cAAI,YAAY;AACd,yBAAa,UAAU,IAAI;AAAA,UAC7B;AAAO,mBAAO,aAAa,UAAU;AAAA,QACvC;AAGA,iCAAyB,UAAU;AACnC,0BAAkB,cAAc,EAAE,OAAO,MAAM,MAAM,CAAC;AAAA,MACxD;AAEA,gCAA0B,kBAAkB;AAC5C,qBAAe,EAAE,UAAU,OAAO,GAAG,kBAAkB,CAAC;AACxD,6BAAuB;AAAA,IACzB;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,uCAAuCA,OAAM,YAAY,CAAC,UAA4C;AAC1G,UAAM,EAAE,SAAS,IAAI;AACrB,QAAI;AAAU,YAAM,eAAe;AAAA,EACrC,GAAG,CAAC,CAAC;AACL,SAAOA,OAAM;AAAA,IACX,OAAO,EAAE,YAAY,qCAAqC;AAAA,IAC1D,CAAC,YAAY,oCAAoC;AAAA,EACnD;AACF;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { useInternalStore } from "../../config/useStore/index.js";
3
+ import { REGIONS_FOCUSES } from "../../constants/index.js";
4
+ const useThisItemIsFocused = (itemMeta) => {
5
+ const { datumInternalMeta, isDestinationPanel } = itemMeta;
6
+ const { hydratedId } = datumInternalMeta;
7
+ const currRegion = isDestinationPanel ? REGIONS_FOCUSES.DESTINATION_PANEL_ITEM : REGIONS_FOCUSES.SOURCE_PANEL_ITEM;
8
+ const currItemId = hydratedId;
9
+ const thisItemIsFocused = useInternalStore(
10
+ (state) => currRegion === state.focusRegion && currItemId === state.focusItem && "parent" === state.focusItemAction
11
+ );
12
+ return thisItemIsFocused;
13
+ };
14
+ export {
15
+ useThisItemIsFocused
16
+ };
17
+ //# sourceMappingURL=useThisItemIsFocused.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Item/useThisItemIsFocused.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { type DSShuttleV2T } from '../../react-desc-prop-types.js';\nimport { useInternalStore } from '../../config/useStore/index.js';\nimport { REGIONS_FOCUSES } from '../../constants/index.js';\n\n// Define a generic type for the useThisItemIsFocused hook to ensure type safety\ntype UseThisItemIsFocused = (itemMeta: DSShuttleV2T.ItemMeta) => boolean;\n\nexport const useThisItemIsFocused: UseThisItemIsFocused = (itemMeta) => {\n const { datumInternalMeta, isDestinationPanel } = itemMeta;\n const { hydratedId } = datumInternalMeta;\n\n const currRegion = isDestinationPanel ? REGIONS_FOCUSES.DESTINATION_PANEL_ITEM : REGIONS_FOCUSES.SOURCE_PANEL_ITEM;\n const currItemId = hydratedId;\n const thisItemIsFocused = useInternalStore(\n (state) => currRegion === state.focusRegion && currItemId === state.focusItem && 'parent' === state.focusItemAction,\n );\n\n return thisItemIsFocused;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAKzB,MAAM,uBAA6C,CAAC,aAAa;AACtE,QAAM,EAAE,mBAAmB,mBAAmB,IAAI;AAClD,QAAM,EAAE,WAAW,IAAI;AAEvB,QAAM,aAAa,qBAAqB,gBAAgB,yBAAyB,gBAAgB;AACjG,QAAM,aAAa;AACnB,QAAM,oBAAoB;AAAA,IACxB,CAAC,UAAU,eAAe,MAAM,eAAe,eAAe,MAAM,aAAa,aAAa,MAAM;AAAA,EACtG;AAEA,SAAO;AACT;",
6
+ "names": []
7
+ }