@elliemae/ds-shuttle-v2 3.14.0-next.6 → 3.14.0-next.8

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 (138) hide show
  1. package/dist/cjs/DSShuttleV2.js.map +2 -2
  2. package/dist/cjs/config/DSShuttleV2Definitions.js.map +1 -1
  3. package/dist/cjs/config/itemMovementHelpers.js +99 -74
  4. package/dist/cjs/config/itemMovementHelpers.js.map +2 -2
  5. package/dist/cjs/config/useAutoCalculated/useDataStructure.js +55 -34
  6. package/dist/cjs/config/useAutoCalculated/useDataStructure.js.map +2 -2
  7. package/dist/cjs/config/useAutoCalculated/useShuttleVirtualized.js.map +2 -2
  8. package/dist/cjs/config/useFocusTracker/useFocusActionTrackers.js +6 -6
  9. package/dist/cjs/config/useFocusTracker/useFocusActionTrackers.js.map +2 -2
  10. package/dist/cjs/config/useFocusTracker/useFocusItemTracker.js +5 -5
  11. package/dist/cjs/config/useFocusTracker/useFocusItemTracker.js.map +2 -2
  12. package/dist/cjs/config/useShuttleV2.js +2 -0
  13. package/dist/cjs/config/useShuttleV2.js.map +2 -2
  14. package/dist/cjs/config/useStore/createAtomInStore.bak +18 -0
  15. package/dist/cjs/config/useStore/useStore.js +8 -0
  16. package/dist/cjs/config/useStore/useStore.js.map +2 -2
  17. package/dist/cjs/config/{useStore/createAtomInStore.js → useValidateProps.js} +9 -13
  18. package/dist/cjs/config/useValidateProps.js.map +7 -0
  19. package/dist/cjs/constants/index.js +3 -1
  20. package/dist/cjs/constants/index.js.map +2 -2
  21. package/dist/cjs/parts/Dnd/DndHandle.js +5 -5
  22. package/dist/cjs/parts/Dnd/DndHandle.js.map +2 -2
  23. package/dist/cjs/parts/Dnd/DragOverlay.js +47 -0
  24. package/dist/cjs/parts/Dnd/DragOverlay.js.map +7 -0
  25. package/dist/cjs/parts/Header.js +3 -3
  26. package/dist/cjs/parts/Header.js.map +2 -2
  27. package/dist/cjs/parts/HoC/withConditionalDnDRowContext.js +42 -17
  28. package/dist/cjs/parts/HoC/withConditionalDnDRowContext.js.map +3 -3
  29. package/dist/cjs/parts/HoC/withConditionalUseSortable.js +4 -3
  30. package/dist/cjs/parts/HoC/withConditionalUseSortable.js.map +2 -2
  31. package/dist/cjs/parts/Item/Item.js +38 -22
  32. package/dist/cjs/parts/Item/Item.js.map +2 -2
  33. package/dist/cjs/parts/Item/ItemActions/ItemActions.js +7 -7
  34. package/dist/cjs/parts/Item/ItemActions/ItemActions.js.map +2 -2
  35. package/dist/cjs/parts/Item/ItemActions/useActionsLogicHandlers.js +6 -38
  36. package/dist/cjs/parts/Item/ItemActions/useActionsLogicHandlers.js.map +2 -2
  37. package/dist/cjs/parts/Item/ItemActions/useInnerRefHandlers.js +2 -2
  38. package/dist/cjs/parts/Item/ItemActions/useInnerRefHandlers.js.map +2 -2
  39. package/dist/cjs/parts/Item/ItemMiddleSection.js +20 -8
  40. package/dist/cjs/parts/Item/ItemMiddleSection.js.map +2 -2
  41. package/dist/cjs/parts/Item/ItemOverlay.js +15 -7
  42. package/dist/cjs/parts/Item/ItemOverlay.js.map +2 -2
  43. package/dist/cjs/parts/Item/ItemSelection.js +3 -1
  44. package/dist/cjs/parts/Item/ItemSelection.js.map +2 -2
  45. package/dist/cjs/parts/Item/useItemArrowNavigation.js +21 -17
  46. package/dist/cjs/parts/Item/useItemArrowNavigation.js.map +2 -2
  47. package/dist/cjs/parts/Item/useSelectionLogic.js +16 -9
  48. package/dist/cjs/parts/Item/useSelectionLogic.js.map +2 -2
  49. package/dist/cjs/parts/Panel/bottom/LoadingMore.js +1 -1
  50. package/dist/cjs/parts/Panel/bottom/LoadingMore.js.map +2 -2
  51. package/dist/cjs/parts/Panel/bottom/PanelContentBottomSection.js +1 -1
  52. package/dist/cjs/parts/Panel/bottom/PanelContentBottomSection.js.map +1 -1
  53. package/dist/cjs/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js +4 -3
  54. package/dist/cjs/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js.map +2 -2
  55. package/dist/cjs/parts/Panel/middle/{ItemListWrapper.js → ItemListWrapper/Index.js} +26 -19
  56. package/dist/cjs/parts/Panel/middle/ItemListWrapper/Index.js.map +7 -0
  57. package/dist/cjs/parts/Panel/middle/ItemListWrapper/getDatumFlags.js +37 -0
  58. package/dist/cjs/parts/Panel/middle/ItemListWrapper/getDatumFlags.js.map +7 -0
  59. package/dist/cjs/parts/Panel/middle/ItemListWrapper/useGetDatumHydratables.js +57 -0
  60. package/dist/cjs/parts/Panel/middle/ItemListWrapper/useGetDatumHydratables.js.map +7 -0
  61. package/dist/cjs/parts/Panel/middle/MultipleSelectionAction.js +2 -2
  62. package/dist/cjs/parts/Panel/middle/MultipleSelectionAction.js.map +2 -2
  63. package/dist/cjs/parts/Panel/middle/PanelContentMiddleSection.js +10 -17
  64. package/dist/cjs/parts/Panel/middle/PanelContentMiddleSection.js.map +2 -2
  65. package/dist/cjs/react-desc-prop-types.js +31 -14
  66. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  67. package/dist/esm/DSShuttleV2.js.map +2 -2
  68. package/dist/esm/config/DSShuttleV2Definitions.js.map +1 -1
  69. package/dist/esm/config/itemMovementHelpers.js +99 -74
  70. package/dist/esm/config/itemMovementHelpers.js.map +2 -2
  71. package/dist/esm/config/useAutoCalculated/useDataStructure.js +55 -34
  72. package/dist/esm/config/useAutoCalculated/useDataStructure.js.map +2 -2
  73. package/dist/esm/config/useAutoCalculated/useShuttleVirtualized.js.map +2 -2
  74. package/dist/esm/config/useFocusTracker/useFocusActionTrackers.js +6 -6
  75. package/dist/esm/config/useFocusTracker/useFocusActionTrackers.js.map +2 -2
  76. package/dist/esm/config/useFocusTracker/useFocusItemTracker.js +5 -5
  77. package/dist/esm/config/useFocusTracker/useFocusItemTracker.js.map +2 -2
  78. package/dist/esm/config/useShuttleV2.js +3 -1
  79. package/dist/esm/config/useShuttleV2.js.map +2 -2
  80. package/dist/esm/config/useStore/createAtomInStore.bak +18 -0
  81. package/dist/esm/config/useStore/useStore.js +8 -0
  82. package/dist/esm/config/useStore/useStore.js.map +2 -2
  83. package/dist/esm/config/useValidateProps.js +10 -0
  84. package/dist/esm/config/useValidateProps.js.map +7 -0
  85. package/dist/esm/constants/index.js +3 -1
  86. package/dist/esm/constants/index.js.map +2 -2
  87. package/dist/esm/parts/Dnd/DndHandle.js +5 -5
  88. package/dist/esm/parts/Dnd/DndHandle.js.map +2 -2
  89. package/dist/esm/parts/Dnd/DragOverlay.js +21 -0
  90. package/dist/esm/parts/Dnd/DragOverlay.js.map +7 -0
  91. package/dist/esm/parts/Header.js +3 -3
  92. package/dist/esm/parts/Header.js.map +2 -2
  93. package/dist/esm/parts/HoC/withConditionalDnDRowContext.js +43 -18
  94. package/dist/esm/parts/HoC/withConditionalDnDRowContext.js.map +3 -3
  95. package/dist/esm/parts/HoC/withConditionalUseSortable.js +4 -3
  96. package/dist/esm/parts/HoC/withConditionalUseSortable.js.map +2 -2
  97. package/dist/esm/parts/Item/Item.js +38 -22
  98. package/dist/esm/parts/Item/Item.js.map +2 -2
  99. package/dist/esm/parts/Item/ItemActions/ItemActions.js +7 -7
  100. package/dist/esm/parts/Item/ItemActions/ItemActions.js.map +2 -2
  101. package/dist/esm/parts/Item/ItemActions/useActionsLogicHandlers.js +7 -39
  102. package/dist/esm/parts/Item/ItemActions/useActionsLogicHandlers.js.map +2 -2
  103. package/dist/esm/parts/Item/ItemActions/useInnerRefHandlers.js +2 -2
  104. package/dist/esm/parts/Item/ItemActions/useInnerRefHandlers.js.map +2 -2
  105. package/dist/esm/parts/Item/ItemMiddleSection.js +20 -8
  106. package/dist/esm/parts/Item/ItemMiddleSection.js.map +2 -2
  107. package/dist/esm/parts/Item/ItemOverlay.js +15 -7
  108. package/dist/esm/parts/Item/ItemOverlay.js.map +2 -2
  109. package/dist/esm/parts/Item/ItemSelection.js +3 -1
  110. package/dist/esm/parts/Item/ItemSelection.js.map +2 -2
  111. package/dist/esm/parts/Item/useItemArrowNavigation.js +21 -17
  112. package/dist/esm/parts/Item/useItemArrowNavigation.js.map +2 -2
  113. package/dist/esm/parts/Item/useSelectionLogic.js +16 -9
  114. package/dist/esm/parts/Item/useSelectionLogic.js.map +2 -2
  115. package/dist/esm/parts/Panel/bottom/LoadingMore.js +1 -1
  116. package/dist/esm/parts/Panel/bottom/LoadingMore.js.map +2 -2
  117. package/dist/esm/parts/Panel/bottom/PanelContentBottomSection.js +1 -1
  118. package/dist/esm/parts/Panel/bottom/PanelContentBottomSection.js.map +1 -1
  119. package/dist/esm/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js +4 -3
  120. package/dist/esm/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js.map +2 -2
  121. package/dist/esm/parts/Panel/middle/{ItemListWrapper.js → ItemListWrapper/Index.js} +23 -16
  122. package/dist/esm/parts/Panel/middle/ItemListWrapper/Index.js.map +7 -0
  123. package/dist/esm/parts/Panel/middle/ItemListWrapper/getDatumFlags.js +11 -0
  124. package/dist/esm/parts/Panel/middle/ItemListWrapper/getDatumFlags.js.map +7 -0
  125. package/dist/esm/parts/Panel/middle/ItemListWrapper/useGetDatumHydratables.js +31 -0
  126. package/dist/esm/parts/Panel/middle/ItemListWrapper/useGetDatumHydratables.js.map +7 -0
  127. package/dist/esm/parts/Panel/middle/MultipleSelectionAction.js +2 -2
  128. package/dist/esm/parts/Panel/middle/MultipleSelectionAction.js.map +2 -2
  129. package/dist/esm/parts/Panel/middle/PanelContentMiddleSection.js +9 -16
  130. package/dist/esm/parts/Panel/middle/PanelContentMiddleSection.js.map +2 -2
  131. package/dist/esm/react-desc-prop-types.js +32 -15
  132. package/dist/esm/react-desc-prop-types.js.map +2 -2
  133. package/package.json +12 -12
  134. package/dist/cjs/config/useStore/createAtomInStore.js.map +0 -7
  135. package/dist/cjs/parts/Panel/middle/ItemListWrapper.js.map +0 -7
  136. package/dist/esm/config/useStore/createAtomInStore.js +0 -14
  137. package/dist/esm/config/useStore/createAtomInStore.js.map +0 -7
  138. package/dist/esm/parts/Panel/middle/ItemListWrapper.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/config/useFocusTracker/useFocusActionTrackers.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { useMemo, useCallback } from 'react';\nimport { useMakeMutable } from '@elliemae/ds-utilities';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types';\nimport { ACTIONS_FOCUSES } from '../../constants';\nimport { useInternalStore, usePropsStore } from '../useStore';\n\ntype ActionFlags = {\n preventDrilldown: boolean;\n withDragAndDrop: boolean;\n preventMove: boolean;\n};\ntype ActionByProxymity = {\n prevAction: typeof ACTIONS_FOCUSES[keyof typeof ACTIONS_FOCUSES];\n nextAction: typeof ACTIONS_FOCUSES[keyof typeof ACTIONS_FOCUSES];\n};\nconst getMoveBtnActionByProxymity = (flags: ActionFlags) => {\n // move button\n const { preventDrilldown, withDragAndDrop } = flags;\n const actionMap = { prevAction: '', nextAction: '' } as ActionByProxymity;\n // prev\n // drilldown if it exist\n // else drag n drop if it exist\n // else parent\n if (!preventDrilldown) actionMap.prevAction = ACTIONS_FOCUSES.DRILLDOWN_BTN;\n else if (withDragAndDrop) actionMap.prevAction = ACTIONS_FOCUSES.DRAG_N_DROP;\n else actionMap.prevAction = ACTIONS_FOCUSES.PARENT;\n // next\n // drag n drop if it exist\n // else parent\n if (withDragAndDrop) actionMap.nextAction = ACTIONS_FOCUSES.DRAG_N_DROP;\n else actionMap.nextAction = ACTIONS_FOCUSES.PARENT;\n return actionMap;\n};\nconst getDragAndDropBtnActionByProxymity = (flags: ActionFlags) => {\n // Drag and drop handler\n const { preventMove, preventDrilldown } = flags;\n // next\n // always parent\n const actionMap = { prevAction: '', nextAction: ACTIONS_FOCUSES.PARENT } as ActionByProxymity;\n // prev\n // move if it exist\n // else drilldown if it exist\n // else parent\n if (!preventMove) actionMap.prevAction = ACTIONS_FOCUSES.MOVE_BTN;\n else if (!preventDrilldown) actionMap.prevAction = ACTIONS_FOCUSES.DRILLDOWN_BTN;\n else actionMap.prevAction = ACTIONS_FOCUSES.PARENT;\n return actionMap;\n};\nconst getDrilldownBtnActionByProxymity = (flags: ActionFlags) => {\n // Drilldown handler\n const { withDragAndDrop, preventMove } = flags;\n // prev\n // always parent\n const actionMap = { prevAction: ACTIONS_FOCUSES.PARENT, nextAction: '' } as ActionByProxymity;\n // next\n // move if it exist\n // else drag n drop if it exist\n // else parent\n if (!preventMove) actionMap.nextAction = ACTIONS_FOCUSES.MOVE_BTN;\n else if (withDragAndDrop) actionMap.nextAction = ACTIONS_FOCUSES.DRAG_N_DROP;\n else actionMap.nextAction = ACTIONS_FOCUSES.PARENT;\n return actionMap;\n};\nconst getParenBtnActionByProxymity = (flags: ActionFlags) => {\n // Parent handler\n const { preventDrilldown, withDragAndDrop, preventMove } = flags;\n const actionMap = { prevAction: '', nextAction: '' } as ActionByProxymity;\n // prev\n // drag n drop if it exist\n // else move if it exist\n // else drilldown if it exist\n // else parent\n if (withDragAndDrop) actionMap.prevAction = ACTIONS_FOCUSES.DRAG_N_DROP;\n else if (!preventMove) actionMap.prevAction = ACTIONS_FOCUSES.MOVE_BTN;\n else if (!preventDrilldown) actionMap.prevAction = ACTIONS_FOCUSES.DRILLDOWN_BTN;\n else actionMap.prevAction = ACTIONS_FOCUSES.PARENT;\n // next\n // drilldown if it exist\n // else move if it exist\n // else drag n drop if it exist\n // else parent\n if (!preventDrilldown) actionMap.nextAction = ACTIONS_FOCUSES.DRILLDOWN_BTN;\n else if (!preventMove) actionMap.nextAction = ACTIONS_FOCUSES.MOVE_BTN;\n else if (withDragAndDrop) actionMap.nextAction = ACTIONS_FOCUSES.DRAG_N_DROP;\n else actionMap.nextAction = ACTIONS_FOCUSES.PARENT;\n return actionMap;\n};\nconst getActionByProxymity = ({ flags, currentAction }: { flags: ActionFlags; currentAction: string }) => {\n if (currentAction === ACTIONS_FOCUSES.MOVE_BTN) return getMoveBtnActionByProxymity(flags);\n if (currentAction === ACTIONS_FOCUSES.DRAG_N_DROP) return getDragAndDropBtnActionByProxymity(flags);\n if (currentAction === ACTIONS_FOCUSES.DRILLDOWN_BTN) return getDrilldownBtnActionByProxymity(flags);\n return getParenBtnActionByProxymity(flags);\n};\nexport const useFocusActionTrackers = () => {\n const focusItemAction = useInternalStore((state) => state.focusItemAction);\n // tracking actions are always triggered as user action callbacks\n // this means it should always be invoked after all the useEffect execute\n // since this is the case, we can avoid re-declaring the function with mutable pattern\n // this way we avoid useless re-renders\n const mutableFocusItemAction = useMakeMutable(focusItemAction);\n const setFocusItemAction = useInternalStore((state) => state.setFocusItemAction);\n const removeDragAndDropFromDestination = usePropsStore((state) => state.removeDragAndDropFromDestination);\n const addDragAndDropFromSource = usePropsStore((state) => state.addDragAndDropFromSource);\n const trackFocusPrevAction = useCallback(\n ({ isDestinationPanel, item }: DSShuttleV2T.ItemMeta) => {\n const preventMove = Boolean(item.original.preventMove);\n const preventDrilldown = Boolean(item.original.preventDrilldown);\n const withDragAndDrop =\n (isDestinationPanel && !removeDragAndDropFromDestination) || (!isDestinationPanel && addDragAndDropFromSource);\n const { prevAction } = getActionByProxymity({\n flags: { preventMove, preventDrilldown, withDragAndDrop },\n currentAction: mutableFocusItemAction.current,\n });\n setFocusItemAction(prevAction);\n },\n [addDragAndDropFromSource, mutableFocusItemAction, removeDragAndDropFromDestination, setFocusItemAction],\n );\n const trackFocusNextAction = useCallback(\n ({ isDestinationPanel, item }: DSShuttleV2T.ItemMeta) => {\n const preventMove = Boolean(item.original.preventMove);\n const preventDrilldown = Boolean(item.original.preventDrilldown);\n const withDragAndDrop =\n (isDestinationPanel && !removeDragAndDropFromDestination) || (!isDestinationPanel && addDragAndDropFromSource);\n const { nextAction } = getActionByProxymity({\n flags: { preventMove, preventDrilldown, withDragAndDrop },\n currentAction: mutableFocusItemAction.current,\n });\n setFocusItemAction(nextAction);\n },\n [addDragAndDropFromSource, mutableFocusItemAction, removeDragAndDropFromDestination, setFocusItemAction],\n );\n return useMemo(\n () => ({\n mutableFocusItemAction,\n trackFocusActionMove: () => setFocusItemAction('move-btn'),\n trackFocusActionDrilldown: () => setFocusItemAction('drilldown-btn'),\n trackFocusActionDragAndDrop: () => setFocusItemAction('drag-n-drop'),\n trackFocusActionParent: () => setFocusItemAction('parent'),\n trackFocusActionReset: () => setFocusItemAction(''),\n trackFocusPrevAction,\n trackFocusNextAction,\n }),\n [mutableFocusItemAction, setFocusItemAction, trackFocusNextAction, trackFocusPrevAction],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useMemo, useCallback } from 'react';\nimport { useMakeMutable } from '@elliemae/ds-utilities';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types';\nimport { ACTIONS_FOCUSES } from '../../constants';\nimport { useInternalStore, usePropsStore } from '../useStore';\n\ntype ActionFlags = {\n preventDrilldown: boolean;\n withDragAndDrop: boolean;\n preventMove: boolean;\n};\ntype ActionByProxymity = {\n prevAction: (typeof ACTIONS_FOCUSES)[keyof typeof ACTIONS_FOCUSES];\n nextAction: (typeof ACTIONS_FOCUSES)[keyof typeof ACTIONS_FOCUSES];\n};\nconst getMoveBtnActionByProxymity = (flags: ActionFlags) => {\n // move button\n const { preventDrilldown, withDragAndDrop } = flags;\n const actionMap = { prevAction: '', nextAction: '' } as ActionByProxymity;\n // prev\n // drilldown if it exist\n // else drag n drop if it exist\n // else parent\n if (!preventDrilldown) actionMap.prevAction = ACTIONS_FOCUSES.DRILLDOWN_BTN;\n else if (withDragAndDrop) actionMap.prevAction = ACTIONS_FOCUSES.DRAG_N_DROP;\n else actionMap.prevAction = ACTIONS_FOCUSES.PARENT;\n // next\n // drag n drop if it exist\n // else parent\n if (withDragAndDrop) actionMap.nextAction = ACTIONS_FOCUSES.DRAG_N_DROP;\n else actionMap.nextAction = ACTIONS_FOCUSES.PARENT;\n return actionMap;\n};\nconst getDragAndDropBtnActionByProxymity = (flags: ActionFlags) => {\n // Drag and drop handler\n const { preventMove, preventDrilldown } = flags;\n // next\n // always parent\n const actionMap = { prevAction: '', nextAction: ACTIONS_FOCUSES.PARENT } as ActionByProxymity;\n // prev\n // move if it exist\n // else drilldown if it exist\n // else parent\n if (!preventMove) actionMap.prevAction = ACTIONS_FOCUSES.MOVE_BTN;\n else if (!preventDrilldown) actionMap.prevAction = ACTIONS_FOCUSES.DRILLDOWN_BTN;\n else actionMap.prevAction = ACTIONS_FOCUSES.PARENT;\n return actionMap;\n};\nconst getDrilldownBtnActionByProxymity = (flags: ActionFlags) => {\n // Drilldown handler\n const { withDragAndDrop, preventMove } = flags;\n // prev\n // always parent\n const actionMap = { prevAction: ACTIONS_FOCUSES.PARENT, nextAction: '' } as ActionByProxymity;\n // next\n // move if it exist\n // else drag n drop if it exist\n // else parent\n if (!preventMove) actionMap.nextAction = ACTIONS_FOCUSES.MOVE_BTN;\n else if (withDragAndDrop) actionMap.nextAction = ACTIONS_FOCUSES.DRAG_N_DROP;\n else actionMap.nextAction = ACTIONS_FOCUSES.PARENT;\n return actionMap;\n};\nconst getParenBtnActionByProxymity = (flags: ActionFlags) => {\n // Parent handler\n const { preventDrilldown, withDragAndDrop, preventMove } = flags;\n const actionMap = { prevAction: '', nextAction: '' } as ActionByProxymity;\n // prev\n // drag n drop if it exist\n // else move if it exist\n // else drilldown if it exist\n // else parent\n if (withDragAndDrop) actionMap.prevAction = ACTIONS_FOCUSES.DRAG_N_DROP;\n else if (!preventMove) actionMap.prevAction = ACTIONS_FOCUSES.MOVE_BTN;\n else if (!preventDrilldown) actionMap.prevAction = ACTIONS_FOCUSES.DRILLDOWN_BTN;\n else actionMap.prevAction = ACTIONS_FOCUSES.PARENT;\n // next\n // drilldown if it exist\n // else move if it exist\n // else drag n drop if it exist\n // else parent\n if (!preventDrilldown) actionMap.nextAction = ACTIONS_FOCUSES.DRILLDOWN_BTN;\n else if (!preventMove) actionMap.nextAction = ACTIONS_FOCUSES.MOVE_BTN;\n else if (withDragAndDrop) actionMap.nextAction = ACTIONS_FOCUSES.DRAG_N_DROP;\n else actionMap.nextAction = ACTIONS_FOCUSES.PARENT;\n return actionMap;\n};\nconst getActionByProxymity = ({ flags, currentAction }: { flags: ActionFlags; currentAction: string }) => {\n if (currentAction === ACTIONS_FOCUSES.MOVE_BTN) return getMoveBtnActionByProxymity(flags);\n if (currentAction === ACTIONS_FOCUSES.DRAG_N_DROP) return getDragAndDropBtnActionByProxymity(flags);\n if (currentAction === ACTIONS_FOCUSES.DRILLDOWN_BTN) return getDrilldownBtnActionByProxymity(flags);\n return getParenBtnActionByProxymity(flags);\n};\nexport const useFocusActionTrackers = () => {\n const focusItemAction = useInternalStore((state) => state.focusItemAction);\n // tracking actions are always triggered as user action callbacks\n // this means it should always be invoked after all the useEffect execute\n // since this is the case, we can avoid re-declaring the function with mutable pattern\n // this way we avoid useless re-renders\n const mutableFocusItemAction = useMakeMutable(focusItemAction);\n const setFocusItemAction = useInternalStore((state) => state.setFocusItemAction);\n const removeDragAndDropFromDestination = usePropsStore((state) => state.removeDragAndDropFromDestination);\n const addDragAndDropFromSource = usePropsStore((state) => state.addDragAndDropFromSource);\n const trackFocusPrevAction = useCallback(\n ({ isDestinationPanel, datumHydratables }: DSShuttleV2T.ItemMeta) => {\n const preventMove = Boolean(datumHydratables.preventMove);\n const preventDrilldown = Boolean(datumHydratables.preventDrilldown);\n const withDragAndDrop =\n (isDestinationPanel && !removeDragAndDropFromDestination) || (!isDestinationPanel && addDragAndDropFromSource);\n const { prevAction } = getActionByProxymity({\n flags: { preventMove, preventDrilldown, withDragAndDrop },\n currentAction: mutableFocusItemAction.current,\n });\n setFocusItemAction(prevAction);\n },\n [addDragAndDropFromSource, mutableFocusItemAction, removeDragAndDropFromDestination, setFocusItemAction],\n );\n const trackFocusNextAction = useCallback(\n ({ isDestinationPanel, datumHydratables }: DSShuttleV2T.ItemMeta) => {\n const preventMove = Boolean(datumHydratables.preventMove);\n const preventDrilldown = Boolean(datumHydratables.preventDrilldown);\n const withDragAndDrop =\n (isDestinationPanel && !removeDragAndDropFromDestination) || (!isDestinationPanel && addDragAndDropFromSource);\n const { nextAction } = getActionByProxymity({\n flags: { preventMove, preventDrilldown, withDragAndDrop },\n currentAction: mutableFocusItemAction.current,\n });\n setFocusItemAction(nextAction);\n },\n [addDragAndDropFromSource, mutableFocusItemAction, removeDragAndDropFromDestination, setFocusItemAction],\n );\n return useMemo(\n () => ({\n mutableFocusItemAction,\n trackFocusActionMove: () => setFocusItemAction('move-btn'),\n trackFocusActionDrilldown: () => setFocusItemAction('drilldown-btn'),\n trackFocusActionDragAndDrop: () => setFocusItemAction('drag-n-drop'),\n trackFocusActionParent: () => setFocusItemAction('parent'),\n trackFocusActionReset: () => setFocusItemAction(''),\n trackFocusPrevAction,\n trackFocusNextAction,\n }),\n [mutableFocusItemAction, setFocusItemAction, trackFocusNextAction, trackFocusPrevAction],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -36,8 +36,8 @@ const useFocusItemTracker = () => {
36
36
  const focusItem = (0, import_useStore.useInternalStore)((state) => state.focusItem);
37
37
  const mutableFocusItem = (0, import_ds_utilities.useMakeMutable)(focusItem);
38
38
  const setFocusItem = (0, import_useStore.useInternalStore)((state) => state.setFocusItem);
39
- const sourceData = (0, import_useStore.usePropsStore)((state) => state.sourceData);
40
- const destinationData = (0, import_useStore.usePropsStore)((state) => state.destinationData);
39
+ const sourceData = (0, import_useStore.useInternalStore)((state) => state.sourceConfiguredData);
40
+ const destinationData = (0, import_useStore.useInternalStore)((state) => state.destinationConfiguredData);
41
41
  const sourceWithLoadMore = (0, import_useStore.usePropsStore)((state) => state.sourceWithLoadMore);
42
42
  const destinationWithLoadMore = (0, import_useStore.usePropsStore)((state) => state.destinationWithLoadMore);
43
43
  const trackFocusPrevItem = (0, import_react.useCallback)(
@@ -60,7 +60,7 @@ const useFocusItemTracker = () => {
60
60
  setFocusItem(import_constants.ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));
61
61
  return;
62
62
  }
63
- const currentItemIndex = referenceData.findIndex((currItem) => currItem.id === mutableFocusItem.current);
63
+ const currentItemIndex = referenceData.findIndex((currItem) => currItem.hydratedId === mutableFocusItem.current);
64
64
  if (currentItemIndex === 0 && withLoadMore)
65
65
  setFocusItem(import_constants.ITEMS_FOCUSES.LOAD_MORE_BTN);
66
66
  else if (currentItemIndex !== -1) {
@@ -95,7 +95,7 @@ const useFocusItemTracker = () => {
95
95
  }
96
96
  return;
97
97
  }
98
- const currentItemIndex = referenceData.findIndex((currItem) => currItem.id === mutableFocusItem.current);
98
+ const currentItemIndex = referenceData.findIndex((currItem) => currItem.hydratedId === mutableFocusItem.current);
99
99
  if (currentItemIndex === referenceData.length - 1 && withLoadMore)
100
100
  setFocusItem(import_constants.ITEMS_FOCUSES.LOAD_MORE_BTN);
101
101
  else if (currentItemIndex !== -1) {
@@ -113,7 +113,7 @@ const useFocusItemTracker = () => {
113
113
  return (0, import_react.useMemo)(
114
114
  () => ({
115
115
  mutableFocusItem,
116
- trackFocusItem: (item) => setFocusItem(item.original.id),
116
+ trackFocusItem: (item) => setFocusItem(item.hydratedId),
117
117
  trackFocusItemReset: () => setFocusItem(import_constants.ITEMS_FOCUSES.RESET),
118
118
  trackFocusItemFirst: () => setFocusItem(import_constants.ITEMS_FOCUSES.FIRST),
119
119
  trackFocusItemLast: () => setFocusItem(import_constants.ITEMS_FOCUSES.LAST),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/config/useFocusTracker/useFocusItemTracker.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport { useMemo, useCallback } from 'react';\nimport { useMakeMutable } from '@elliemae/ds-utilities';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types';\nimport { useInternalStore, usePropsStore } from '../useStore';\nimport { ITEMS_FOCUSES } from '../../constants/index';\n\nexport const useFocusItemTracker = () => {\n const focusItem = useInternalStore((state) => state.focusItem);\n // tracking actions are always triggered as user action callbacks\n // this means it should always be invoked after all the useEffect execute\n // since this is the case, we can avoid re-declaring the function with mutable pattern\n // this way we avoid useless re-renders\n const mutableFocusItem = useMakeMutable(focusItem);\n\n const setFocusItem = useInternalStore((state) => state.setFocusItem);\n const sourceData = usePropsStore((state) => state.sourceData);\n const destinationData = usePropsStore((state) => state.destinationData);\n const sourceWithLoadMore = usePropsStore((state) => state.sourceWithLoadMore);\n const destinationWithLoadMore = usePropsStore((state) => state.destinationWithLoadMore);\n const trackFocusPrevItem = useCallback(\n ({ isDestinationPanel }: DSShuttleV2T.PanelMetaInfo) => {\n const referenceData = isDestinationPanel ? destinationData : sourceData;\n const withLoadMore = isDestinationPanel ? destinationWithLoadMore : sourceWithLoadMore;\n if (mutableFocusItem.current === ITEMS_FOCUSES.FIRST) {\n if (withLoadMore) setFocusItem(ITEMS_FOCUSES.LOAD_MORE_BTN);\n else {\n const prevItemIndex = referenceData.length > 1 ? referenceData.length - 1 : 0;\n const prevItem = referenceData[prevItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));\n }\n return;\n }\n if (mutableFocusItem.current === ITEMS_FOCUSES.LAST) {\n const prevItemIndex = referenceData.length > 2 ? referenceData.length - 2 : 0;\n const prevItem = referenceData[prevItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));\n return;\n }\n // loop logic\n const currentItemIndex = referenceData.findIndex((currItem) => currItem.id === mutableFocusItem.current);\n if (currentItemIndex === 0 && withLoadMore) setFocusItem(ITEMS_FOCUSES.LOAD_MORE_BTN);\n else if (currentItemIndex !== -1) {\n const prevItemIndex = currentItemIndex === 0 ? referenceData.length - 1 : currentItemIndex - 1;\n const prevItem = referenceData[prevItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));\n } else {\n const prevItemIndex = 0;\n const prevItem = referenceData[prevItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));\n }\n },\n [destinationData, destinationWithLoadMore, mutableFocusItem, setFocusItem, sourceData, sourceWithLoadMore],\n );\n const trackFocusNextItem = useCallback(\n ({ isDestinationPanel }: DSShuttleV2T.PanelMetaInfo) => {\n const referenceData = isDestinationPanel ? destinationData : sourceData;\n const withLoadMore = isDestinationPanel ? destinationWithLoadMore : sourceWithLoadMore;\n if (mutableFocusItem.current === ITEMS_FOCUSES.FIRST) {\n // \"next\" after the first is position 1,\n // if position 1 exist,\n // else is the \"first\" (position 0) looped back\n const nextItemIndex = referenceData.length > 1 ? 1 : 0;\n const nextItem = referenceData[nextItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));\n return;\n }\n if (mutableFocusItem.current === ITEMS_FOCUSES.LAST) {\n if (withLoadMore) setFocusItem(ITEMS_FOCUSES.LOAD_MORE_BTN);\n else {\n const nextItemIndex = 0;\n const nextItem = referenceData[nextItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));\n }\n return;\n }\n // loop logic\n const currentItemIndex = referenceData.findIndex((currItem) => currItem.id === mutableFocusItem.current);\n if (currentItemIndex === referenceData.length - 1 && withLoadMore) setFocusItem(ITEMS_FOCUSES.LOAD_MORE_BTN);\n else if (currentItemIndex !== -1) {\n const nextItemIndex = currentItemIndex === referenceData.length - 1 ? 0 : currentItemIndex + 1;\n const nextItem = referenceData[nextItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));\n } else {\n const nextItemIndex = referenceData.length - 1;\n const nextItem = referenceData[nextItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));\n }\n },\n [destinationData, destinationWithLoadMore, mutableFocusItem, setFocusItem, sourceData, sourceWithLoadMore],\n );\n return useMemo(\n () => ({\n mutableFocusItem,\n trackFocusItem: (item: DSShuttleV2T.ConfiguredDatum) => setFocusItem(item.original.id),\n trackFocusItemReset: () => setFocusItem(ITEMS_FOCUSES.RESET),\n trackFocusItemFirst: () => setFocusItem(ITEMS_FOCUSES.FIRST),\n trackFocusItemLast: () => setFocusItem(ITEMS_FOCUSES.LAST),\n trackFocusLoadMoreBtn: () => setFocusItem(ITEMS_FOCUSES.LOAD_MORE_BTN),\n trackFocusPrevItem,\n trackFocusNextItem,\n }),\n [mutableFocusItem, setFocusItem, trackFocusNextItem, trackFocusPrevItem],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport { useMemo, useCallback } from 'react';\nimport { useMakeMutable } from '@elliemae/ds-utilities';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types';\nimport { useInternalStore, usePropsStore } from '../useStore';\nimport { ITEMS_FOCUSES } from '../../constants/index';\n\nexport const useFocusItemTracker = () => {\n const focusItem = useInternalStore((state) => state.focusItem);\n // tracking actions are always triggered as user action callbacks\n // this means it should always be invoked after all the useEffect execute\n // since this is the case, we can avoid re-declaring the function with mutable pattern\n // this way we avoid useless re-renders\n const mutableFocusItem = useMakeMutable(focusItem);\n const setFocusItem = useInternalStore((state) => state.setFocusItem);\n const sourceData = useInternalStore((state) => state.sourceConfiguredData);\n const destinationData = useInternalStore((state) => state.destinationConfiguredData);\n const sourceWithLoadMore = usePropsStore((state) => state.sourceWithLoadMore);\n const destinationWithLoadMore = usePropsStore((state) => state.destinationWithLoadMore);\n const trackFocusPrevItem = useCallback(\n ({ isDestinationPanel }: DSShuttleV2T.PanelMetaInfo) => {\n const referenceData = isDestinationPanel ? destinationData : sourceData;\n const withLoadMore = isDestinationPanel ? destinationWithLoadMore : sourceWithLoadMore;\n if (mutableFocusItem.current === ITEMS_FOCUSES.FIRST) {\n if (withLoadMore) setFocusItem(ITEMS_FOCUSES.LOAD_MORE_BTN);\n else {\n const prevItemIndex = referenceData.length > 1 ? referenceData.length - 1 : 0;\n const prevItem = referenceData[prevItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));\n }\n return;\n }\n if (mutableFocusItem.current === ITEMS_FOCUSES.LAST) {\n const prevItemIndex = referenceData.length > 2 ? referenceData.length - 2 : 0;\n const prevItem = referenceData[prevItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));\n return;\n }\n // loop logic\n const currentItemIndex = referenceData.findIndex((currItem) => currItem.hydratedId === mutableFocusItem.current);\n if (currentItemIndex === 0 && withLoadMore) setFocusItem(ITEMS_FOCUSES.LOAD_MORE_BTN);\n else if (currentItemIndex !== -1) {\n const prevItemIndex = currentItemIndex === 0 ? referenceData.length - 1 : currentItemIndex - 1;\n const prevItem = referenceData[prevItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));\n } else {\n const prevItemIndex = 0;\n const prevItem = referenceData[prevItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));\n }\n },\n [destinationData, destinationWithLoadMore, mutableFocusItem, setFocusItem, sourceData, sourceWithLoadMore],\n );\n const trackFocusNextItem = useCallback(\n ({ isDestinationPanel }: DSShuttleV2T.PanelMetaInfo) => {\n const referenceData = isDestinationPanel ? destinationData : sourceData;\n const withLoadMore = isDestinationPanel ? destinationWithLoadMore : sourceWithLoadMore;\n if (mutableFocusItem.current === ITEMS_FOCUSES.FIRST) {\n // \"next\" after the first is position 1,\n // if position 1 exist,\n // else is the \"first\" (position 0) looped back\n const nextItemIndex = referenceData.length > 1 ? 1 : 0;\n const nextItem = referenceData[nextItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));\n return;\n }\n if (mutableFocusItem.current === ITEMS_FOCUSES.LAST) {\n if (withLoadMore) setFocusItem(ITEMS_FOCUSES.LOAD_MORE_BTN);\n else {\n const nextItemIndex = 0;\n const nextItem = referenceData[nextItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));\n }\n return;\n }\n // focus loop logic\n const currentItemIndex = referenceData.findIndex((currItem) => currItem.hydratedId === mutableFocusItem.current);\n if (currentItemIndex === referenceData.length - 1 && withLoadMore) setFocusItem(ITEMS_FOCUSES.LOAD_MORE_BTN);\n else if (currentItemIndex !== -1) {\n const nextItemIndex = currentItemIndex === referenceData.length - 1 ? 0 : currentItemIndex + 1;\n const nextItem = referenceData[nextItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));\n } else {\n const nextItemIndex = referenceData.length - 1;\n const nextItem = referenceData[nextItemIndex];\n setFocusItem(ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));\n }\n },\n [destinationData, destinationWithLoadMore, mutableFocusItem, setFocusItem, sourceData, sourceWithLoadMore],\n );\n return useMemo(\n () => ({\n mutableFocusItem,\n trackFocusItem: (item: DSShuttleV2T.ConfiguredDatum) => setFocusItem(item.hydratedId),\n trackFocusItemReset: () => setFocusItem(ITEMS_FOCUSES.RESET),\n trackFocusItemFirst: () => setFocusItem(ITEMS_FOCUSES.FIRST),\n trackFocusItemLast: () => setFocusItem(ITEMS_FOCUSES.LAST),\n trackFocusLoadMoreBtn: () => setFocusItem(ITEMS_FOCUSES.LOAD_MORE_BTN),\n trackFocusPrevItem,\n trackFocusNextItem,\n }),\n [mutableFocusItem, setFocusItem, trackFocusNextItem, trackFocusPrevItem],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -32,9 +32,11 @@ var import_react = require("react");
32
32
  var import_ds_utilities = require("@elliemae/ds-utilities");
33
33
  var import_react_desc_prop_types = require("../react-desc-prop-types");
34
34
  var import_useStore = require("./useStore");
35
+ var import_useValidateProps = require("./useValidateProps");
35
36
  var import_useAutoCalculated = require("./useAutoCalculated");
36
37
  const useShuttleV2 = (propsFromUser) => {
37
38
  const propsWithDefaults = (0, import_ds_utilities.useMemoMergePropsWithDefault)(propsFromUser, import_react_desc_prop_types.defaultProps);
39
+ (0, import_useValidateProps.useValidateProps)(propsWithDefaults, import_react_desc_prop_types.DSShuttleV2PropTypesSchema);
38
40
  const setProps = (0, import_useStore.usePropsStore)((state) => state.set);
39
41
  const setAutoCalculated = (0, import_useStore.useInternalStore)((state) => state.set);
40
42
  const autoCalculatedConfig = (0, import_useAutoCalculated.useAutoCalculated)(propsWithDefaults);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/config/useShuttleV2.ts", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { useEffect } from 'react';\nimport { useMemoMergePropsWithDefault } from '@elliemae/ds-utilities';\n\nimport { type DSShuttleV2T, defaultProps } from '../react-desc-prop-types';\nimport { usePropsStore, useInternalStore } from './useStore';\nimport { useAutoCalculated } from './useAutoCalculated';\nexport const useShuttleV2 = (propsFromUser: DSShuttleV2T.Props) => {\n // auto-update props-store and auto-calculated when props changes\n const propsWithDefaults = useMemoMergePropsWithDefault<DSShuttleV2T.InternalProps>(propsFromUser, defaultProps);\n const setProps = usePropsStore((state) => state.set);\n const setAutoCalculated = useInternalStore((state) => state.set);\n\n const autoCalculatedConfig = useAutoCalculated(propsWithDefaults);\n useEffect(() => {\n setProps({ ...propsWithDefaults });\n setAutoCalculated(autoCalculatedConfig);\n }, [propsWithDefaults, setProps, setAutoCalculated, autoCalculatedConfig]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA0B;AAC1B,0BAA6C;AAE7C,mCAAgD;AAChD,sBAAgD;AAChD,+BAAkC;AAC3B,MAAM,eAAe,CAAC,kBAAsC;AAEjE,QAAM,wBAAoB,kDAAyD,eAAe,yCAAY;AAC9G,QAAM,eAAW,+BAAc,CAAC,UAAU,MAAM,GAAG;AACnD,QAAM,wBAAoB,kCAAiB,CAAC,UAAU,MAAM,GAAG;AAE/D,QAAM,2BAAuB,4CAAkB,iBAAiB;AAChE,8BAAU,MAAM;AACd,aAAS,EAAE,GAAG,kBAAkB,CAAC;AACjC,sBAAkB,oBAAoB;AAAA,EACxC,GAAG,CAAC,mBAAmB,UAAU,mBAAmB,oBAAoB,CAAC;AAC3E;",
4
+ "sourcesContent": ["import { useEffect } from 'react';\nimport { useMemoMergePropsWithDefault } from '@elliemae/ds-utilities';\n\nimport { type DSShuttleV2T, defaultProps, DSShuttleV2PropTypesSchema } from '../react-desc-prop-types';\nimport { usePropsStore, useInternalStore } from './useStore';\nimport { useValidateProps } from './useValidateProps';\nimport { useAutoCalculated } from './useAutoCalculated';\nexport const useShuttleV2 = (propsFromUser: DSShuttleV2T.Props) => {\n // =============================================================================\n // MERGE WITH DEFAULT AND VALIDATE PROPS\n // =============================================================================\n const propsWithDefaults = useMemoMergePropsWithDefault<DSShuttleV2T.InternalProps>(propsFromUser, defaultProps);\n useValidateProps(propsWithDefaults, DSShuttleV2PropTypesSchema);\n // auto-update props-store and auto-calculated when props changes\n const setProps = usePropsStore((state) => state.set);\n const setAutoCalculated = useInternalStore((state) => state.set);\n\n const autoCalculatedConfig = useAutoCalculated(propsWithDefaults);\n useEffect(() => {\n setProps({ ...propsWithDefaults });\n setAutoCalculated(autoCalculatedConfig);\n }, [propsWithDefaults, setProps, setAutoCalculated, autoCalculatedConfig]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA0B;AAC1B,0BAA6C;AAE7C,mCAA4E;AAC5E,sBAAgD;AAChD,8BAAiC;AACjC,+BAAkC;AAC3B,MAAM,eAAe,CAAC,kBAAsC;AAIjE,QAAM,wBAAoB,kDAAyD,eAAe,yCAAY;AAC9G,gDAAiB,mBAAmB,uDAA0B;AAE9D,QAAM,eAAW,+BAAc,CAAC,UAAU,MAAM,GAAG;AACnD,QAAM,wBAAoB,kCAAiB,CAAC,UAAU,MAAM,GAAG;AAE/D,QAAM,2BAAuB,4CAAkB,iBAAiB;AAChE,8BAAU,MAAM;AACd,aAAS,EAAE,GAAG,kBAAkB,CAAC;AACjC,sBAAkB,oBAAoB;AAAA,EACxC,GAAG,CAAC,mBAAmB,UAAU,mBAAmB,oBAAoB,CAAC;AAC3E;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,18 @@
1
+ import { type StoreApi } from 'zustand';
2
+ import type { InternalAtoms, Store } from './useStore';
3
+
4
+ type StateSetterNewVal =
5
+ | InternalAtoms[keyof InternalAtoms][0]
6
+ | ((oldVal: InternalAtoms[keyof InternalAtoms][0]) => InternalAtoms[keyof InternalAtoms][0]);
7
+ export const createAtomInStore = (
8
+ defaultVal: InternalAtoms[keyof InternalAtoms][0],
9
+ stateKey: keyof InternalAtoms,
10
+ set: StoreApi<Store>['setState'],
11
+ get: StoreApi<Store>['getState'],
12
+ ) => {
13
+ const stateSetter = (newVal: StateSetterNewVal) => {
14
+ if (typeof newVal === 'function') set({ [stateKey]: [newVal(get()[stateKey][0]), stateSetter] });
15
+ else set({ [stateKey]: [newVal, stateSetter] });
16
+ };
17
+ return [defaultVal, stateSetter] as const;
18
+ };
@@ -73,12 +73,20 @@ const internalStoreCreatorFunc = (autoCalculatedData) => (0, import_zustand.defa
73
73
  setOverId: (overId) => set({ overId }),
74
74
  lastActiveId: "",
75
75
  setLastActiveId: (lastActiveId) => set({ lastActiveId }),
76
+ dndDraggingItem: null,
77
+ setDndDraggingItem: (dndDraggingItem) => set({ dndDraggingItem }),
78
+ dndDraggingItemMeta: null,
79
+ setDndDraggingItemMeta: (dndDraggingItemMeta) => set({ dndDraggingItemMeta }),
76
80
  isDropValid: false,
77
81
  setIsDropValid: (isDropValid) => set({ isDropValid })
78
82
  };
83
+ const composedInformation = {
84
+ getIsDragAndDropHappening: () => Boolean(get()?.lastActiveId) && get()?.lastActiveId !== ""
85
+ };
79
86
  return {
80
87
  ...constants,
81
88
  ...internalAtoms,
89
+ ...composedInformation,
82
90
  ...autoCalculatedData
83
91
  };
84
92
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/config/useStore/useStore.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { useCallback } from 'react';\nimport create, { type StoreApi } from 'zustand';\nimport createContext from 'zustand/context';\nimport { useMemoMergePropsWithDefault } from '@elliemae/ds-utilities';\nimport { type useShuttleVirtualized } from '../useAutoCalculated/useShuttleVirtualized';\nimport { type DSShuttleV2T, defaultProps } from '../../react-desc-prop-types';\nimport type { REGIONS_FOCUSES, ACTIONS_FOCUSES, ITEMS_FOCUSES } from '../../constants';\nimport { useAutoCalculated } from '../useAutoCalculated';\n\ntype FocusRegion = typeof REGIONS_FOCUSES[keyof typeof REGIONS_FOCUSES];\ntype FocusRegionSetter = (newVal: FocusRegion | ((arg: FocusRegion, store: InternalStore) => FocusRegion)) => void;\n\ntype FocusItem = Omit<typeof ITEMS_FOCUSES[keyof typeof ITEMS_FOCUSES], 'GET_SPECIFIC_ITEM'> & string;\ntype FocusItemSetter = (newVal: FocusItem | ((arg: FocusItem, store: InternalStore) => FocusItem)) => void;\n\ntype FocusItemAction = typeof ACTIONS_FOCUSES[keyof typeof ACTIONS_FOCUSES];\ntype FocusItemActionSetter = (\n newVal: FocusItemAction | ((arg: FocusItemAction, store: InternalStore) => FocusItemAction),\n) => void;\n\ntype UseShuttleVirtualizedT = ReturnType<typeof useShuttleVirtualized>;\nexport interface InternalAtoms {\n focusRegion: FocusRegion;\n setFocusRegion: FocusRegionSetter;\n focusItem: FocusItem;\n setFocusItem: FocusItemSetter;\n focusItemAction: FocusItemAction;\n setFocusItemAction: FocusItemActionSetter;\n dropIndicatorPosition: number;\n setDropIndicatorPosition: (newVal: number) => void;\n overId: string;\n setOverId: (newVal: string) => void;\n lastActiveId: string;\n setLastActiveId: (newVal: string) => void;\n isDropValid: boolean;\n setIsDropValid: (newVal: boolean) => void;\n}\nexport interface StoreConstants {\n set: StoreApi<InternalStore>['setState'];\n}\n\nexport interface InternalStore\n extends InternalAtoms,\n UseShuttleVirtualizedT,\n StoreConstants,\n ReturnType<typeof useAutoCalculated> {}\nexport interface PropsStore extends DSShuttleV2T.InternalProps {\n set: StoreApi<PropsStore>['setState'];\n}\n\nconst internalStoreCreatorFunc = (autoCalculatedData: ReturnType<typeof useAutoCalculated>) =>\n create<InternalStore>((set, get) => {\n const constants: StoreConstants = {\n set,\n };\n const internalAtoms: InternalAtoms = {\n focusRegion: '',\n setFocusRegion: (focusRegion) => {\n if (typeof focusRegion === 'function') set({ focusRegion: focusRegion(get().focusRegion, get()) });\n else set({ focusRegion });\n },\n focusItem: '',\n setFocusItem: (focusItem) => {\n if (typeof focusItem === 'function') set({ focusItem: focusItem(get().focusItem, get()) });\n else set({ focusItem });\n },\n focusItemAction: '',\n setFocusItemAction: (focusItemAction) => {\n if (typeof focusItemAction === 'function')\n set({ focusItemAction: focusItemAction(get().focusItemAction, get()) });\n else set({ focusItemAction });\n },\n dropIndicatorPosition: 0,\n setDropIndicatorPosition: (dropIndicatorPosition) => set({ dropIndicatorPosition }),\n overId: '',\n setOverId: (overId) => set({ overId }),\n lastActiveId: '',\n setLastActiveId: (lastActiveId) => set({ lastActiveId }),\n isDropValid: false,\n setIsDropValid: (isDropValid) => set({ isDropValid }),\n };\n\n return {\n ...constants,\n ...internalAtoms,\n ...autoCalculatedData,\n };\n });\nconst propsStoreCreatorFunc = (propsWithDefaults: DSShuttleV2T.InternalProps) =>\n create<PropsStore>((set) => ({\n set,\n ...propsWithDefaults,\n }));\n\nconst {\n Provider: InternalProvider,\n useStore: useInternalStore,\n useStoreApi: useInternalStoreApi,\n} = createContext<ReturnType<typeof internalStoreCreatorFunc>>();\nconst {\n Provider: PropsProvider,\n useStore: usePropsStore,\n useStoreApi: usePropsStoreApi,\n} = createContext<ReturnType<typeof propsStoreCreatorFunc>>();\n\nconst useShuttleV2InternalStoreConfig = (propsFromUser: DSShuttleV2T.Props) => {\n const propsWithDefaults = useMemoMergePropsWithDefault<DSShuttleV2T.InternalProps>(propsFromUser, defaultProps);\n const autoCalculatedData = useAutoCalculated(propsWithDefaults);\n return useCallback(() => internalStoreCreatorFunc(autoCalculatedData), [autoCalculatedData]);\n};\nconst useShuttleV2PropsStoreConfig = (propsFromUser: DSShuttleV2T.Props) => {\n const propsWithDefaults = useMemoMergePropsWithDefault<DSShuttleV2T.InternalProps>(propsFromUser, defaultProps);\n\n return useCallback(() => propsStoreCreatorFunc(propsWithDefaults), [propsWithDefaults]);\n};\n\nexport {\n useInternalStore,\n usePropsStore,\n useInternalStoreApi,\n usePropsStoreApi,\n InternalProvider,\n PropsProvider,\n useShuttleV2InternalStoreConfig,\n useShuttleV2PropsStoreConfig,\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA4B;AAC5B,qBAAsC;AACtC,qBAA0B;AAC1B,0BAA6C;AAE7C,mCAAgD;AAEhD,+BAAkC;AA2ClC,MAAM,2BAA2B,CAAC,2BAChC,eAAAA,SAAsB,CAAC,KAAK,QAAQ;AAClC,QAAM,YAA4B;AAAA,IAChC;AAAA,EACF;AACA,QAAM,gBAA+B;AAAA,IACnC,aAAa;AAAA,IACb,gBAAgB,CAAC,gBAAgB;AAC/B,UAAI,OAAO,gBAAgB;AAAY,YAAI,EAAE,aAAa,YAAY,IAAI,EAAE,aAAa,IAAI,CAAC,EAAE,CAAC;AAAA;AAC5F,YAAI,EAAE,YAAY,CAAC;AAAA,IAC1B;AAAA,IACA,WAAW;AAAA,IACX,cAAc,CAAC,cAAc;AAC3B,UAAI,OAAO,cAAc;AAAY,YAAI,EAAE,WAAW,UAAU,IAAI,EAAE,WAAW,IAAI,CAAC,EAAE,CAAC;AAAA;AACpF,YAAI,EAAE,UAAU,CAAC;AAAA,IACxB;AAAA,IACA,iBAAiB;AAAA,IACjB,oBAAoB,CAAC,oBAAoB;AACvC,UAAI,OAAO,oBAAoB;AAC7B,YAAI,EAAE,iBAAiB,gBAAgB,IAAI,EAAE,iBAAiB,IAAI,CAAC,EAAE,CAAC;AAAA;AACnE,YAAI,EAAE,gBAAgB,CAAC;AAAA,IAC9B;AAAA,IACA,uBAAuB;AAAA,IACvB,0BAA0B,CAAC,0BAA0B,IAAI,EAAE,sBAAsB,CAAC;AAAA,IAClF,QAAQ;AAAA,IACR,WAAW,CAAC,WAAW,IAAI,EAAE,OAAO,CAAC;AAAA,IACrC,cAAc;AAAA,IACd,iBAAiB,CAAC,iBAAiB,IAAI,EAAE,aAAa,CAAC;AAAA,IACvD,aAAa;AAAA,IACb,gBAAgB,CAAC,gBAAgB,IAAI,EAAE,YAAY,CAAC;AAAA,EACtD;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF,CAAC;AACH,MAAM,wBAAwB,CAAC,0BAC7B,eAAAA,SAAmB,CAAC,SAAS;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,EAAE;AAEJ,MAAM;AAAA,EACJ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AACf,QAAI,eAAAC,SAA2D;AAC/D,MAAM;AAAA,EACJ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AACf,QAAI,eAAAA,SAAwD;AAE5D,MAAM,kCAAkC,CAAC,kBAAsC;AAC7E,QAAM,wBAAoB,kDAAyD,eAAe,yCAAY;AAC9G,QAAM,yBAAqB,4CAAkB,iBAAiB;AAC9D,aAAO,0BAAY,MAAM,yBAAyB,kBAAkB,GAAG,CAAC,kBAAkB,CAAC;AAC7F;AACA,MAAM,+BAA+B,CAAC,kBAAsC;AAC1E,QAAM,wBAAoB,kDAAyD,eAAe,yCAAY;AAE9G,aAAO,0BAAY,MAAM,sBAAsB,iBAAiB,GAAG,CAAC,iBAAiB,CAAC;AACxF;",
4
+ "sourcesContent": ["/* @typescript-eslint/eslint no-use-before-define: ['error',{ typedefs: false }] */\nimport { useCallback } from 'react';\nimport create, { type StoreApi } from 'zustand';\nimport createContext from 'zustand/context';\nimport { useMemoMergePropsWithDefault } from '@elliemae/ds-utilities';\nimport { type useShuttleVirtualized } from '../useAutoCalculated/useShuttleVirtualized';\nimport { type DSShuttleV2T, defaultProps } from '../../react-desc-prop-types';\nimport type { REGIONS_FOCUSES, ACTIONS_FOCUSES, ITEMS_FOCUSES } from '../../constants';\nimport { useAutoCalculated } from '../useAutoCalculated';\n\ntype FocusRegion = (typeof REGIONS_FOCUSES)[keyof typeof REGIONS_FOCUSES];\ntype FocusRegionSetter = (newVal: FocusRegion | ((arg: FocusRegion, store: InternalStore) => FocusRegion)) => void;\n\ntype FocusItem = Omit<(typeof ITEMS_FOCUSES)[keyof typeof ITEMS_FOCUSES], 'GET_SPECIFIC_ITEM'> & string;\ntype FocusItemSetter = (newVal: FocusItem | ((arg: FocusItem, store: InternalStore) => FocusItem)) => void;\n\ntype FocusItemAction = (typeof ACTIONS_FOCUSES)[keyof typeof ACTIONS_FOCUSES];\ntype FocusItemActionSetter = (\n newVal: FocusItemAction | ((arg: FocusItemAction, store: InternalStore) => FocusItemAction),\n) => void;\n\ntype UseShuttleVirtualizedT = ReturnType<typeof useShuttleVirtualized>;\nexport type InternalAtoms = {\n focusRegion: FocusRegion;\n setFocusRegion: FocusRegionSetter;\n focusItem: FocusItem;\n setFocusItem: FocusItemSetter;\n focusItemAction: FocusItemAction;\n setFocusItemAction: FocusItemActionSetter;\n dropIndicatorPosition: number;\n setDropIndicatorPosition: (newVal: number) => void;\n overId: string;\n setOverId: (newVal: string) => void;\n dndDraggingItem: DSShuttleV2T.ConfiguredDatum | null;\n setDndDraggingItem: (newVal: DSShuttleV2T.ConfiguredDatum | null) => void;\n dndDraggingItemMeta: DSShuttleV2T.ItemMeta | null;\n setDndDraggingItemMeta: (newVal: DSShuttleV2T.ItemMeta | null) => void;\n lastActiveId: string;\n setLastActiveId: (newVal: string) => void;\n isDropValid: boolean;\n setIsDropValid: (newVal: boolean) => void;\n};\nexport type ComposedInformation = {\n getIsDragAndDropHappening: () => boolean;\n};\n\nexport type StoreConstants = {\n set: StoreApi<InternalStore>['setState'];\n};\n\nexport interface InternalStore\n extends InternalAtoms,\n UseShuttleVirtualizedT,\n StoreConstants,\n ComposedInformation,\n ReturnType<typeof useAutoCalculated> {}\nexport interface PropsStore extends DSShuttleV2T.InternalProps {\n set: StoreApi<PropsStore>['setState'];\n}\n\nconst internalStoreCreatorFunc = (autoCalculatedData: ReturnType<typeof useAutoCalculated>) =>\n create<InternalStore>((set, get) => {\n const constants: StoreConstants = {\n set,\n };\n const internalAtoms: InternalAtoms = {\n focusRegion: '',\n setFocusRegion: (focusRegion) => {\n if (typeof focusRegion === 'function') set({ focusRegion: focusRegion(get().focusRegion, get()) });\n else set({ focusRegion });\n },\n focusItem: '',\n setFocusItem: (focusItem) => {\n if (typeof focusItem === 'function') set({ focusItem: focusItem(get().focusItem, get()) });\n else set({ focusItem });\n },\n focusItemAction: '',\n setFocusItemAction: (focusItemAction) => {\n if (typeof focusItemAction === 'function')\n set({ focusItemAction: focusItemAction(get().focusItemAction, get()) });\n else set({ focusItemAction });\n },\n dropIndicatorPosition: 0,\n setDropIndicatorPosition: (dropIndicatorPosition) => set({ dropIndicatorPosition }),\n overId: '',\n setOverId: (overId) => set({ overId }),\n lastActiveId: '',\n setLastActiveId: (lastActiveId) => set({ lastActiveId }),\n dndDraggingItem: null,\n setDndDraggingItem: (dndDraggingItem) => set({ dndDraggingItem }),\n dndDraggingItemMeta: null,\n setDndDraggingItemMeta: (dndDraggingItemMeta) => set({ dndDraggingItemMeta }),\n isDropValid: false,\n setIsDropValid: (isDropValid) => set({ isDropValid }),\n };\n\n const composedInformation: ComposedInformation = {\n getIsDragAndDropHappening: () => Boolean(get()?.lastActiveId) && get()?.lastActiveId !== '',\n };\n\n return {\n ...constants,\n ...internalAtoms,\n ...composedInformation,\n ...autoCalculatedData,\n };\n });\nconst propsStoreCreatorFunc = (propsWithDefaults: DSShuttleV2T.InternalProps) =>\n create<PropsStore>((set) => ({\n set,\n ...propsWithDefaults,\n }));\n\nconst {\n Provider: InternalProvider,\n useStore: useInternalStore,\n useStoreApi: useInternalStoreApi,\n} = createContext<ReturnType<typeof internalStoreCreatorFunc>>();\nconst {\n Provider: PropsProvider,\n useStore: usePropsStore,\n useStoreApi: usePropsStoreApi,\n} = createContext<ReturnType<typeof propsStoreCreatorFunc>>();\n\nconst useShuttleV2InternalStoreConfig = (propsFromUser: DSShuttleV2T.Props) => {\n const propsWithDefaults = useMemoMergePropsWithDefault<DSShuttleV2T.InternalProps>(propsFromUser, defaultProps);\n const autoCalculatedData = useAutoCalculated(propsWithDefaults);\n return useCallback(() => internalStoreCreatorFunc(autoCalculatedData), [autoCalculatedData]);\n};\nconst useShuttleV2PropsStoreConfig = (propsFromUser: DSShuttleV2T.Props) => {\n const propsWithDefaults = useMemoMergePropsWithDefault<DSShuttleV2T.InternalProps>(propsFromUser, defaultProps);\n\n return useCallback(() => propsStoreCreatorFunc(propsWithDefaults), [propsWithDefaults]);\n};\n\nexport {\n useInternalStore,\n usePropsStore,\n useInternalStoreApi,\n usePropsStoreApi,\n InternalProvider,\n PropsProvider,\n useShuttleV2InternalStoreConfig,\n useShuttleV2PropsStoreConfig,\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAA4B;AAC5B,qBAAsC;AACtC,qBAA0B;AAC1B,0BAA6C;AAE7C,mCAAgD;AAEhD,+BAAkC;AAoDlC,MAAM,2BAA2B,CAAC,2BAChC,eAAAA,SAAsB,CAAC,KAAK,QAAQ;AAClC,QAAM,YAA4B;AAAA,IAChC;AAAA,EACF;AACA,QAAM,gBAA+B;AAAA,IACnC,aAAa;AAAA,IACb,gBAAgB,CAAC,gBAAgB;AAC/B,UAAI,OAAO,gBAAgB;AAAY,YAAI,EAAE,aAAa,YAAY,IAAI,EAAE,aAAa,IAAI,CAAC,EAAE,CAAC;AAAA;AAC5F,YAAI,EAAE,YAAY,CAAC;AAAA,IAC1B;AAAA,IACA,WAAW;AAAA,IACX,cAAc,CAAC,cAAc;AAC3B,UAAI,OAAO,cAAc;AAAY,YAAI,EAAE,WAAW,UAAU,IAAI,EAAE,WAAW,IAAI,CAAC,EAAE,CAAC;AAAA;AACpF,YAAI,EAAE,UAAU,CAAC;AAAA,IACxB;AAAA,IACA,iBAAiB;AAAA,IACjB,oBAAoB,CAAC,oBAAoB;AACvC,UAAI,OAAO,oBAAoB;AAC7B,YAAI,EAAE,iBAAiB,gBAAgB,IAAI,EAAE,iBAAiB,IAAI,CAAC,EAAE,CAAC;AAAA;AACnE,YAAI,EAAE,gBAAgB,CAAC;AAAA,IAC9B;AAAA,IACA,uBAAuB;AAAA,IACvB,0BAA0B,CAAC,0BAA0B,IAAI,EAAE,sBAAsB,CAAC;AAAA,IAClF,QAAQ;AAAA,IACR,WAAW,CAAC,WAAW,IAAI,EAAE,OAAO,CAAC;AAAA,IACrC,cAAc;AAAA,IACd,iBAAiB,CAAC,iBAAiB,IAAI,EAAE,aAAa,CAAC;AAAA,IACvD,iBAAiB;AAAA,IACjB,oBAAoB,CAAC,oBAAoB,IAAI,EAAE,gBAAgB,CAAC;AAAA,IAChE,qBAAqB;AAAA,IACrB,wBAAwB,CAAC,wBAAwB,IAAI,EAAE,oBAAoB,CAAC;AAAA,IAC5E,aAAa;AAAA,IACb,gBAAgB,CAAC,gBAAgB,IAAI,EAAE,YAAY,CAAC;AAAA,EACtD;AAEA,QAAM,sBAA2C;AAAA,IAC/C,2BAA2B,MAAM,QAAQ,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,iBAAiB;AAAA,EAC3F;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF,CAAC;AACH,MAAM,wBAAwB,CAAC,0BAC7B,eAAAA,SAAmB,CAAC,SAAS;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,EAAE;AAEJ,MAAM;AAAA,EACJ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AACf,QAAI,eAAAC,SAA2D;AAC/D,MAAM;AAAA,EACJ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AACf,QAAI,eAAAA,SAAwD;AAE5D,MAAM,kCAAkC,CAAC,kBAAsC;AAC7E,QAAM,wBAAoB,kDAAyD,eAAe,yCAAY;AAC9G,QAAM,yBAAqB,4CAAkB,iBAAiB;AAC9D,aAAO,0BAAY,MAAM,yBAAyB,kBAAkB,GAAG,CAAC,kBAAkB,CAAC;AAC7F;AACA,MAAM,+BAA+B,CAAC,kBAAsC;AAC1E,QAAM,wBAAoB,kDAAyD,eAAe,yCAAY;AAE9G,aAAO,0BAAY,MAAM,sBAAsB,iBAAiB,GAAG,CAAC,iBAAiB,CAAC;AACxF;",
6
6
  "names": ["create", "createContext"]
7
7
  }
@@ -22,19 +22,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
22
22
  mod
23
23
  ));
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
- var createAtomInStore_exports = {};
26
- __export(createAtomInStore_exports, {
27
- createAtomInStore: () => createAtomInStore
25
+ var useValidateProps_exports = {};
26
+ __export(useValidateProps_exports, {
27
+ useValidateProps: () => useValidateProps
28
28
  });
29
- module.exports = __toCommonJS(createAtomInStore_exports);
29
+ module.exports = __toCommonJS(useValidateProps_exports);
30
30
  var React = __toESM(require("react"));
31
- const createAtomInStore = (defaultVal, stateKey, set, get) => {
32
- const stateSetter = (newVal) => {
33
- if (typeof newVal === "function")
34
- set({ [stateKey]: [newVal(get()[stateKey][0]), stateSetter] });
35
- else
36
- set({ [stateKey]: [newVal, stateSetter] });
37
- };
38
- return [defaultVal, stateSetter];
31
+ var import_ds_utilities = require("@elliemae/ds-utilities");
32
+ var import_constants = require("../constants");
33
+ const useValidateProps = (props, propTypes) => {
34
+ (0, import_ds_utilities.useValidateTypescriptPropTypes)(props, propTypes, import_constants.DSShuttleV2Name);
39
35
  };
40
- //# sourceMappingURL=createAtomInStore.js.map
36
+ //# sourceMappingURL=useValidateProps.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/config/useValidateProps.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { useValidateTypescriptPropTypes } from '@elliemae/ds-utilities';\nimport type { WeakValidationMap } from 'react';\nimport { DSShuttleV2Name } from '../constants';\nimport type { DSShuttleV2T } from '../react-desc-prop-types';\n\nexport const useValidateProps = (props: DSShuttleV2T.Props, propTypes: WeakValidationMap<unknown>): void => {\n // we validate the \"required if\" via 'isRequiredIf from our custom PropTypes\n useValidateTypescriptPropTypes(props, propTypes, DSShuttleV2Name);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,0BAA+C;AAE/C,uBAAgC;AAGzB,MAAM,mBAAmB,CAAC,OAA2B,cAAgD;AAE1G,0DAA+B,OAAO,WAAW,gCAAe;AAClE;",
6
+ "names": []
7
+ }
@@ -26,11 +26,13 @@ var constants_exports = {};
26
26
  __export(constants_exports, {
27
27
  ACTIONS_FOCUSES: () => ACTIONS_FOCUSES,
28
28
  DATA_TESTID: () => DATA_TESTID,
29
+ DSShuttleV2Name: () => DSShuttleV2Name,
29
30
  ITEMS_FOCUSES: () => ITEMS_FOCUSES,
30
31
  REGIONS_FOCUSES: () => REGIONS_FOCUSES
31
32
  });
32
33
  module.exports = __toCommonJS(constants_exports);
33
34
  var React = __toESM(require("react"));
35
+ const DSShuttleV2Name = "ds-shuttle-v2";
34
36
  const REGIONS_FOCUSES = {
35
37
  SOURCE_HEADER: "source-header",
36
38
  SOURCE_PANEL: "source-panel",
@@ -55,7 +57,7 @@ const ITEMS_FOCUSES = {
55
57
  FIRST: "first",
56
58
  LAST: "last",
57
59
  LOAD_MORE_BTN: "load-more-btn",
58
- GET_SPECIFIC_ITEM: ({ id }) => id,
60
+ GET_SPECIFIC_ITEM: ({ hydratedId }) => hydratedId,
59
61
  RESET: ""
60
62
  };
61
63
  const DATA_TESTID = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/constants/index.ts", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["export const REGIONS_FOCUSES = {\n SOURCE_HEADER: 'source-header',\n SOURCE_PANEL: 'source-panel',\n SOURCE_PANEL_ITEM: 'source-panel-item',\n SOURCE_PANEL_ITEM_MOVE_ALL: 'source-panel-move-all',\n SOURCE_BOTTOM: 'source-bottom',\n DESTINATION_HEADER: 'destination-header',\n DESTINATION_PANEL: 'destination-panel',\n DESTINATION_PANEL_ITEM: 'destination-panel-item',\n DESTINATION_PANEL_ITEM_MOVE_ALL: 'destination-panel-move-all',\n DESTINATION_BOTTOM: 'destination-bottom',\n RESET: '',\n} as const;\n\nexport const ACTIONS_FOCUSES = {\n MOVE_BTN: 'move-btn',\n DRILLDOWN_BTN: 'drilldown-btn',\n DRAG_N_DROP: 'drag-n-drop',\n PARENT: 'parent',\n RESET: '',\n} as const;\n\nexport const ITEMS_FOCUSES = {\n FIRST: 'first',\n LAST: 'last',\n LOAD_MORE_BTN: 'load-more-btn',\n GET_SPECIFIC_ITEM: ({ id }: { id: string }) => id,\n RESET: '',\n} as const;\n\nexport const DATA_TESTID = {\n SHUTTLE_DRAG_HANDLE: 'shuttle-drag-handle',\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAhB,MAAM,kBAAkB;AAAA,EAC7B,eAAe;AAAA,EACf,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,4BAA4B;AAAA,EAC5B,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iCAAiC;AAAA,EACjC,oBAAoB;AAAA,EACpB,OAAO;AACT;AAEO,MAAM,kBAAkB;AAAA,EAC7B,UAAU;AAAA,EACV,eAAe;AAAA,EACf,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,OAAO;AACT;AAEO,MAAM,gBAAgB;AAAA,EAC3B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,eAAe;AAAA,EACf,mBAAmB,CAAC,EAAE,GAAG,MAAsB;AAAA,EAC/C,OAAO;AACT;AAEO,MAAM,cAAc;AAAA,EACzB,qBAAqB;AACvB;",
4
+ "sourcesContent": ["export const DSShuttleV2Name = 'ds-shuttle-v2' as const;\nexport const REGIONS_FOCUSES = {\n SOURCE_HEADER: 'source-header',\n SOURCE_PANEL: 'source-panel',\n SOURCE_PANEL_ITEM: 'source-panel-item',\n SOURCE_PANEL_ITEM_MOVE_ALL: 'source-panel-move-all',\n SOURCE_BOTTOM: 'source-bottom',\n DESTINATION_HEADER: 'destination-header',\n DESTINATION_PANEL: 'destination-panel',\n DESTINATION_PANEL_ITEM: 'destination-panel-item',\n DESTINATION_PANEL_ITEM_MOVE_ALL: 'destination-panel-move-all',\n DESTINATION_BOTTOM: 'destination-bottom',\n RESET: '',\n} as const;\n\nexport const ACTIONS_FOCUSES = {\n MOVE_BTN: 'move-btn',\n DRILLDOWN_BTN: 'drilldown-btn',\n DRAG_N_DROP: 'drag-n-drop',\n PARENT: 'parent',\n RESET: '',\n} as const;\n\nexport const ITEMS_FOCUSES = {\n FIRST: 'first',\n LAST: 'last',\n LOAD_MORE_BTN: 'load-more-btn',\n GET_SPECIFIC_ITEM: ({ hydratedId }: { hydratedId: string }) => hydratedId,\n RESET: '',\n} as const;\n\nexport const DATA_TESTID = {\n SHUTTLE_DRAG_HANDLE: 'shuttle-drag-handle',\n} as const;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAhB,MAAM,kBAAkB;AACxB,MAAM,kBAAkB;AAAA,EAC7B,eAAe;AAAA,EACf,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,4BAA4B;AAAA,EAC5B,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iCAAiC;AAAA,EACjC,oBAAoB;AAAA,EACpB,OAAO;AACT;AAEO,MAAM,kBAAkB;AAAA,EAC7B,UAAU;AAAA,EACV,eAAe;AAAA,EACf,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,OAAO;AACT;AAEO,MAAM,gBAAgB;AAAA,EAC3B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,eAAe;AAAA,EACf,mBAAmB,CAAC,EAAE,WAAW,MAA8B;AAAA,EAC/D,OAAO;AACT;AAEO,MAAM,cAAc;AAAA,EACzB,qBAAqB;AACvB;",
6
6
  "names": []
7
7
  }
@@ -24,7 +24,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var DndHandle_exports = {};
26
26
  __export(DndHandle_exports, {
27
- DragHandle: () => DragHandle
27
+ DragHandle: () => DragHandle,
28
+ StyledGripperButtonOrOverlay: () => StyledGripperButtonOrOverlay
28
29
  });
29
30
  module.exports = __toCommonJS(DndHandle_exports);
30
31
  var React = __toESM(require("react"));
@@ -34,7 +35,7 @@ var import_ds_icons = require("@elliemae/ds-icons");
34
35
  var import_ds_system = require("@elliemae/ds-system");
35
36
  var import_ds_utilities = require("@elliemae/ds-utilities");
36
37
  var import_constants = require("../../constants");
37
- const StyledGripperButton = import_ds_system.styled.div`
38
+ const StyledGripperButtonOrOverlay = import_ds_system.styled.div`
38
39
  cursor: ${({ isActive, isDragOverlay }) => isActive || isDragOverlay ? "grabbing" : "grab"};
39
40
  outline: none;
40
41
  display: flex;
@@ -44,15 +45,14 @@ const StyledGripperButton = import_ds_system.styled.div`
44
45
  outline: 1px solid brand-700;
45
46
  }
46
47
  `;
47
- const DragHandle = ({ id, isDndActive, isDragging, isDragOverlay, innerRef, useSortableHelpers }) => /* @__PURE__ */ (0, import_react.createElement)(
48
- StyledGripperButton,
48
+ const DragHandle = ({ id, isDndActive, isDragging, innerRef, useSortableHelpers }) => /* @__PURE__ */ (0, import_react.createElement)(
49
+ StyledGripperButtonOrOverlay,
49
50
  {
50
51
  ...useSortableHelpers && {
51
52
  ...useSortableHelpers.listeners,
52
53
  ...useSortableHelpers.attributes
53
54
  },
54
55
  isActive: isDndActive,
55
- isDragOverlay,
56
56
  ref: (0, import_ds_utilities.mergeRefs)(innerRef, useSortableHelpers?.setActivatorNodeRef),
57
57
  tabIndex: -1,
58
58
  "data-testid": import_constants.DATA_TESTID.SHUTTLE_DRAG_HANDLE,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/Dnd/DndHandle.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React from 'react';\nimport { GripperVertical } from '@elliemae/ds-icons';\nimport type { useSortable } from '@elliemae/ds-drag-and-drop';\n\nimport { styled } from '@elliemae/ds-system';\nimport { mergeRefs } from '@elliemae/ds-utilities';\nimport { DATA_TESTID } from '../../constants';\n\nconst StyledGripperButton = styled.div<{\n isActive: boolean;\n isDragOverlay: boolean;\n}>`\n cursor: ${({ isActive, isDragOverlay }) => (isActive || isDragOverlay ? 'grabbing' : 'grab')};\n outline: none;\n display: flex;\n align-items: center;\n touch-action: none;\n &:focus {\n outline: 1px solid brand-700;\n }\n`;\n\nexport const DragHandle: React.ComponentType<{\n id: string;\n isDragOverlay?: boolean;\n innerRef: React.RefObject<HTMLDivElement> | React.RefCallback<HTMLDivElement>;\n useSortableHelpers: ReturnType<typeof useSortable>;\n isDndActive: boolean;\n isDragging: boolean;\n}> = ({ id, isDndActive, isDragging, isDragOverlay, innerRef, useSortableHelpers }) => (\n <StyledGripperButton\n {...(useSortableHelpers && {\n ...useSortableHelpers.listeners,\n ...useSortableHelpers.attributes,\n })}\n isActive={isDndActive}\n isDragOverlay={isDragOverlay}\n ref={mergeRefs(innerRef, useSortableHelpers?.setActivatorNodeRef)}\n tabIndex={-1}\n data-testid={DATA_TESTID.SHUTTLE_DRAG_HANDLE}\n id={`${id}-drag-handle`}\n key={`${id}-drag-handle`}\n >\n <GripperVertical size=\"s\" color={isDragging ? ['neutral', '500'] : ['brand-primary', '800']} />\n </StyledGripperButton>\n);\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD2CnB;AAbF;AA7BF,sBAAgC;AAGhC,uBAAuB;AACvB,0BAA0B;AAC1B,uBAA4B;AAE5B,MAAM,sBAAsB,wBAAO;AAAA,YAIvB,CAAC,EAAE,UAAU,cAAc,MAAO,YAAY,gBAAgB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUhF,MAAM,aAOR,CAAC,EAAE,IAAI,aAAa,YAAY,eAAe,UAAU,mBAAmB,MAC/E;AAAA,EAAC;AAAA;AAAA,IACE,GAAI,sBAAsB;AAAA,MACzB,GAAG,mBAAmB;AAAA,MACtB,GAAG,mBAAmB;AAAA,IACxB;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,SAAK,+BAAU,UAAU,oBAAoB,mBAAmB;AAAA,IAChE,UAAU;AAAA,IACV,eAAa,6BAAY;AAAA,IACzB,IAAI,GAAG;AAAA,IACP,KAAK,GAAG;AAAA;AAAA,EAER,4CAAC,mCAAgB,MAAK,KAAI,OAAO,aAAa,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,KAAK,GAAG;AAC/F;",
4
+ "sourcesContent": ["import React from 'react';\nimport { GripperVertical } from '@elliemae/ds-icons';\nimport type { useSortable } from '@elliemae/ds-drag-and-drop';\n\nimport { styled } from '@elliemae/ds-system';\nimport { mergeRefs } from '@elliemae/ds-utilities';\nimport { DATA_TESTID } from '../../constants';\n\nexport const StyledGripperButtonOrOverlay = styled.div<{\n isActive: boolean;\n isDragOverlay: boolean;\n}>`\n cursor: ${({ isActive, isDragOverlay }) => (isActive || isDragOverlay ? 'grabbing' : 'grab')};\n outline: none;\n display: flex;\n align-items: center;\n touch-action: none;\n &:focus {\n outline: 1px solid brand-700;\n }\n`;\n\nexport const DragHandle: React.ComponentType<{\n id: string;\n innerRef: React.RefObject<HTMLDivElement> | React.RefCallback<HTMLDivElement>;\n useSortableHelpers: ReturnType<typeof useSortable>;\n isDndActive: boolean;\n isDragging: boolean;\n}> = ({ id, isDndActive, isDragging, innerRef, useSortableHelpers }) => (\n <StyledGripperButtonOrOverlay\n {...(useSortableHelpers && {\n ...useSortableHelpers.listeners,\n ...useSortableHelpers.attributes,\n })}\n isActive={isDndActive}\n ref={mergeRefs(innerRef, useSortableHelpers?.setActivatorNodeRef)}\n tabIndex={-1}\n data-testid={DATA_TESTID.SHUTTLE_DRAG_HANDLE}\n id={`${id}-drag-handle`}\n key={`${id}-drag-handle`}\n >\n <GripperVertical size=\"s\" color={isDragging ? ['neutral', '500'] : ['brand-primary', '800']} />\n </StyledGripperButtonOrOverlay>\n);\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADyCnB;AAZF;AA5BF,sBAAgC;AAGhC,uBAAuB;AACvB,0BAA0B;AAC1B,uBAA4B;AAErB,MAAM,+BAA+B,wBAAO;AAAA,YAIvC,CAAC,EAAE,UAAU,cAAc,MAAO,YAAY,gBAAgB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUhF,MAAM,aAMR,CAAC,EAAE,IAAI,aAAa,YAAY,UAAU,mBAAmB,MAChE;AAAA,EAAC;AAAA;AAAA,IACE,GAAI,sBAAsB;AAAA,MACzB,GAAG,mBAAmB;AAAA,MACtB,GAAG,mBAAmB;AAAA,IACxB;AAAA,IACA,UAAU;AAAA,IACV,SAAK,+BAAU,UAAU,oBAAoB,mBAAmB;AAAA,IAChE,UAAU;AAAA,IACV,eAAa,6BAAY;AAAA,IACzB,IAAI,GAAG;AAAA,IACP,KAAK,GAAG;AAAA;AAAA,EAER,4CAAC,mCAAgB,MAAK,KAAI,OAAO,aAAa,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,KAAK,GAAG;AAC/F;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var DragOverlay_exports = {};
26
+ __export(DragOverlay_exports, {
27
+ DragOverlay: () => DragOverlay
28
+ });
29
+ module.exports = __toCommonJS(DragOverlay_exports);
30
+ var React = __toESM(require("react"));
31
+ var import_jsx_runtime = require("react/jsx-runtime");
32
+ var import_ds_icons = require("@elliemae/ds-icons");
33
+ var import_constants = require("../../constants");
34
+ var import_DndHandle = require("./DndHandle");
35
+ const DragOverlay = ({ id, isDragging, isDndActive }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
36
+ import_DndHandle.StyledGripperButtonOrOverlay,
37
+ {
38
+ isDragOverlay: true,
39
+ isActive: isDndActive,
40
+ tabIndex: -1,
41
+ "data-testid": import_constants.DATA_TESTID.SHUTTLE_DRAG_HANDLE,
42
+ id: `${id}-drag-overlay`,
43
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.GripperVertical, { size: "s", color: isDragging ? ["neutral", "500"] : ["brand-primary", "800"] })
44
+ },
45
+ `${id}-drag-overlay`
46
+ );
47
+ //# sourceMappingURL=DragOverlay.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/parts/Dnd/DragOverlay.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React from 'react';\nimport { GripperVertical } from '@elliemae/ds-icons';\nimport { DATA_TESTID } from '../../constants';\nimport { StyledGripperButtonOrOverlay } from './DndHandle';\n\nexport const DragOverlay: React.ComponentType<{\n id: string;\n isDndActive: boolean;\n isDragging: boolean;\n}> = ({ id, isDragging, isDndActive }) => (\n <StyledGripperButtonOrOverlay\n isDragOverlay\n isActive={isDndActive}\n tabIndex={-1}\n data-testid={DATA_TESTID.SHUTTLE_DRAG_HANDLE}\n id={`${id}-drag-overlay`}\n key={`${id}-drag-overlay`}\n >\n <GripperVertical size=\"s\" color={isDragging ? ['neutral', '500'] : ['brand-primary', '800']} />\n </StyledGripperButtonOrOverlay>\n);\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADkBnB;AAjBJ,sBAAgC;AAChC,uBAA4B;AAC5B,uBAA6C;AAEtC,MAAM,cAIR,CAAC,EAAE,IAAI,YAAY,YAAY,MAClC;AAAA,EAAC;AAAA;AAAA,IACC,eAAa;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,IACV,eAAa,6BAAY;AAAA,IACzB,IAAI,GAAG;AAAA,IAGP,sDAAC,mCAAgB,MAAK,KAAI,OAAO,aAAa,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,KAAK,GAAG;AAAA;AAAA,EAFxF,GAAG;AAGV;",
6
+ "names": []
7
+ }
@@ -38,8 +38,8 @@ var import_DSShuttleV2Definitions = require("../config/DSShuttleV2Definitions");
38
38
  var import_useStore = require("../config/useStore");
39
39
  var import_useFocusTracker = require("../config/useFocusTracker");
40
40
  const StyledIconButton = (0, import_ds_system.styled)(import_ds_button.DSButtonV2, { name: import_DSShuttleV2Definitions.DSShuttleV2Name, slot: import_DSShuttleV2Definitions.DSShuttleV2Slots.HEADER_SEARCH_ICON })`
41
- width: 16px;
42
- height: 16px;
41
+ width: 1.231rem;
42
+ height: 1.231rem;
43
43
  `;
44
44
  const Header = import_react.default.memo(({ isDestinationPanel }) => {
45
45
  const HeaderRenderer = (0, import_useStore.usePropsStore)((state) => isDestinationPanel ? state.DestinationHeader : state.SourceHeader);
@@ -69,7 +69,7 @@ const Header = import_react.default.memo(({ isDestinationPanel }) => {
69
69
  }, [onSearchBarOpen]);
70
70
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_grid.Grid, { onFocus: onHeaderFocus, cols, children: [
71
71
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HeaderRenderer, {}),
72
- onSearchBarOpen ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledIconButton, { buttonType: "icon", onClick: handleFilterClick, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.Search, { width: "14px", height: "14px" }) }) : null
72
+ onSearchBarOpen ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledIconButton, { buttonType: "icon", onClick: handleFilterClick, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.Search, { width: "1.077rem", height: "1.077rem" }) }) : null
73
73
  ] });
74
74
  });
75
75
  //# sourceMappingURL=Header.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/parts/Header.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { Search } from '@elliemae/ds-icons';\nimport {\n DSButtonV2,\n type DSButtonT,\n // BUTTON_SIZES\n} from '@elliemae/ds-button';\nimport { styled } from '@elliemae/ds-system';\nimport { DSShuttleV2Name, DSShuttleV2Slots } from '../config/DSShuttleV2Definitions';\nimport { usePropsStore } from '../config/useStore';\nimport { useFocusTracker } from '../config/useFocusTracker';\nimport { type DSShuttleV2T } from '../react-desc-prop-types';\n\nconst StyledIconButton = styled(DSButtonV2, { name: DSShuttleV2Name, slot: DSShuttleV2Slots.HEADER_SEARCH_ICON })`\n width: 16px;\n height: 16px;\n`;\nexport const Header = React.memo(({ isDestinationPanel }: DSShuttleV2T.PanelMetaInfo) => {\n const HeaderRenderer = usePropsStore((state) => (isDestinationPanel ? state.DestinationHeader : state.SourceHeader));\n const onSearchBarOpen = usePropsStore((state) =>\n isDestinationPanel ? state.onDesinationOpenSearchbar : state.onSourceOpenSearchbar,\n );\n const isSearchBarOpen = usePropsStore((state) =>\n isDestinationPanel ? state.destinationShowSearchbar : state.sourceShowSearchbar,\n );\n const { trackFocusRegionHeader, trackFocusItemReset, trackFocusActionReset } = useFocusTracker();\n const onHeaderFocus = React.useCallback(() => {\n trackFocusRegionHeader(isDestinationPanel);\n trackFocusItemReset();\n trackFocusActionReset();\n }, [isDestinationPanel, trackFocusActionReset, trackFocusItemReset, trackFocusRegionHeader]);\n\n const handleFilterClick = React.useCallback(\n (event: Parameters<Required<DSButtonT.Props>['onClick']>[0]) => {\n onSearchBarOpen?.(!isSearchBarOpen, { event });\n },\n [isSearchBarOpen, onSearchBarOpen],\n );\n\n const cols = React.useMemo(() => {\n const finalCols = ['1fr'];\n if (onSearchBarOpen) finalCols.push('auto');\n return finalCols;\n }, [onSearchBarOpen]);\n\n return (\n <Grid onFocus={onHeaderFocus} cols={cols}>\n <HeaderRenderer />\n {onSearchBarOpen ? (\n <StyledIconButton buttonType=\"icon\" onClick={handleFilterClick}>\n <Search width=\"14px\" height=\"14px\" />\n </StyledIconButton>\n ) : null}\n </Grid>\n );\n});\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD+CnB;AA/CJ,mBAAkB;AAClB,qBAAqB;AACrB,sBAAuB;AACvB,uBAIO;AACP,uBAAuB;AACvB,oCAAkD;AAClD,sBAA8B;AAC9B,6BAAgC;AAGhC,MAAM,uBAAmB,yBAAO,6BAAY,EAAE,MAAM,+CAAiB,MAAM,+CAAiB,mBAAmB,CAAC;AAAA;AAAA;AAAA;AAIzG,MAAM,SAAS,aAAAA,QAAM,KAAK,CAAC,EAAE,mBAAmB,MAAkC;AACvF,QAAM,qBAAiB,+BAAc,CAAC,UAAW,qBAAqB,MAAM,oBAAoB,MAAM,YAAa;AACnH,QAAM,sBAAkB;AAAA,IAAc,CAAC,UACrC,qBAAqB,MAAM,4BAA4B,MAAM;AAAA,EAC/D;AACA,QAAM,sBAAkB;AAAA,IAAc,CAAC,UACrC,qBAAqB,MAAM,2BAA2B,MAAM;AAAA,EAC9D;AACA,QAAM,EAAE,wBAAwB,qBAAqB,sBAAsB,QAAI,wCAAgB;AAC/F,QAAM,gBAAgB,aAAAA,QAAM,YAAY,MAAM;AAC5C,2BAAuB,kBAAkB;AACzC,wBAAoB;AACpB,0BAAsB;AAAA,EACxB,GAAG,CAAC,oBAAoB,uBAAuB,qBAAqB,sBAAsB,CAAC;AAE3F,QAAM,oBAAoB,aAAAA,QAAM;AAAA,IAC9B,CAAC,UAA+D;AAC9D,wBAAkB,CAAC,iBAAiB,EAAE,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,CAAC,iBAAiB,eAAe;AAAA,EACnC;AAEA,QAAM,OAAO,aAAAA,QAAM,QAAQ,MAAM;AAC/B,UAAM,YAAY,CAAC,KAAK;AACxB,QAAI;AAAiB,gBAAU,KAAK,MAAM;AAC1C,WAAO;AAAA,EACT,GAAG,CAAC,eAAe,CAAC;AAEpB,SACE,6CAAC,uBAAK,SAAS,eAAe,MAC5B;AAAA,gDAAC,kBAAe;AAAA,IACf,kBACC,4CAAC,oBAAiB,YAAW,QAAO,SAAS,mBAC3C,sDAAC,0BAAO,OAAM,QAAO,QAAO,QAAO,GACrC,IACE;AAAA,KACN;AAEJ,CAAC;",
4
+ "sourcesContent": ["import React from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { Search } from '@elliemae/ds-icons';\nimport {\n DSButtonV2,\n type DSButtonT,\n // BUTTON_SIZES\n} from '@elliemae/ds-button';\nimport { styled } from '@elliemae/ds-system';\nimport { DSShuttleV2Name, DSShuttleV2Slots } from '../config/DSShuttleV2Definitions';\nimport { usePropsStore } from '../config/useStore';\nimport { useFocusTracker } from '../config/useFocusTracker';\nimport { type DSShuttleV2T } from '../react-desc-prop-types';\n\nconst StyledIconButton = styled(DSButtonV2, { name: DSShuttleV2Name, slot: DSShuttleV2Slots.HEADER_SEARCH_ICON })`\n width: 1.231rem;\n height: 1.231rem;\n`;\nexport const Header = React.memo(({ isDestinationPanel }: DSShuttleV2T.PanelMetaInfo) => {\n const HeaderRenderer = usePropsStore((state) => (isDestinationPanel ? state.DestinationHeader : state.SourceHeader));\n const onSearchBarOpen = usePropsStore((state) =>\n isDestinationPanel ? state.onDesinationOpenSearchbar : state.onSourceOpenSearchbar,\n );\n const isSearchBarOpen = usePropsStore((state) =>\n isDestinationPanel ? state.destinationShowSearchbar : state.sourceShowSearchbar,\n );\n const { trackFocusRegionHeader, trackFocusItemReset, trackFocusActionReset } = useFocusTracker();\n const onHeaderFocus = React.useCallback(() => {\n trackFocusRegionHeader(isDestinationPanel);\n trackFocusItemReset();\n trackFocusActionReset();\n }, [isDestinationPanel, trackFocusActionReset, trackFocusItemReset, trackFocusRegionHeader]);\n\n const handleFilterClick = React.useCallback(\n (event: Parameters<Required<DSButtonT.Props>['onClick']>[0]) => {\n onSearchBarOpen?.(!isSearchBarOpen, { event });\n },\n [isSearchBarOpen, onSearchBarOpen],\n );\n\n const cols = React.useMemo(() => {\n const finalCols = ['1fr'];\n if (onSearchBarOpen) finalCols.push('auto');\n return finalCols;\n }, [onSearchBarOpen]);\n\n return (\n <Grid onFocus={onHeaderFocus} cols={cols}>\n <HeaderRenderer />\n {onSearchBarOpen ? (\n <StyledIconButton buttonType=\"icon\" onClick={handleFilterClick}>\n <Search width=\"1.077rem\" height=\"1.077rem\" />\n </StyledIconButton>\n ) : null}\n </Grid>\n );\n});\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD+CnB;AA/CJ,mBAAkB;AAClB,qBAAqB;AACrB,sBAAuB;AACvB,uBAIO;AACP,uBAAuB;AACvB,oCAAkD;AAClD,sBAA8B;AAC9B,6BAAgC;AAGhC,MAAM,uBAAmB,yBAAO,6BAAY,EAAE,MAAM,+CAAiB,MAAM,+CAAiB,mBAAmB,CAAC;AAAA;AAAA;AAAA;AAIzG,MAAM,SAAS,aAAAA,QAAM,KAAK,CAAC,EAAE,mBAAmB,MAAkC;AACvF,QAAM,qBAAiB,+BAAc,CAAC,UAAW,qBAAqB,MAAM,oBAAoB,MAAM,YAAa;AACnH,QAAM,sBAAkB;AAAA,IAAc,CAAC,UACrC,qBAAqB,MAAM,4BAA4B,MAAM;AAAA,EAC/D;AACA,QAAM,sBAAkB;AAAA,IAAc,CAAC,UACrC,qBAAqB,MAAM,2BAA2B,MAAM;AAAA,EAC9D;AACA,QAAM,EAAE,wBAAwB,qBAAqB,sBAAsB,QAAI,wCAAgB;AAC/F,QAAM,gBAAgB,aAAAA,QAAM,YAAY,MAAM;AAC5C,2BAAuB,kBAAkB;AACzC,wBAAoB;AACpB,0BAAsB;AAAA,EACxB,GAAG,CAAC,oBAAoB,uBAAuB,qBAAqB,sBAAsB,CAAC;AAE3F,QAAM,oBAAoB,aAAAA,QAAM;AAAA,IAC9B,CAAC,UAA+D;AAC9D,wBAAkB,CAAC,iBAAiB,EAAE,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,CAAC,iBAAiB,eAAe;AAAA,EACnC;AAEA,QAAM,OAAO,aAAAA,QAAM,QAAQ,MAAM;AAC/B,UAAM,YAAY,CAAC,KAAK;AACxB,QAAI;AAAiB,gBAAU,KAAK,MAAM;AAC1C,WAAO;AAAA,EACT,GAAG,CAAC,eAAe,CAAC;AAEpB,SACE,6CAAC,uBAAK,SAAS,eAAe,MAC5B;AAAA,gDAAC,kBAAe;AAAA,IACf,kBACC,4CAAC,oBAAiB,YAAW,QAAO,SAAS,mBAC3C,sDAAC,0BAAO,OAAM,YAAW,QAAO,YAAW,GAC7C,IACE;AAAA,KACN;AAEJ,CAAC;",
6
6
  "names": ["React"]
7
7
  }
@@ -29,7 +29,7 @@ __export(withConditionalDnDRowContext_exports, {
29
29
  module.exports = __toCommonJS(withConditionalDnDRowContext_exports);
30
30
  var React = __toESM(require("react"));
31
31
  var import_jsx_runtime = require("react/jsx-runtime");
32
- var import_react = require("react");
32
+ var import_react = __toESM(require("react"));
33
33
  var import_ds_drag_and_drop = require("@elliemae/ds-drag-and-drop");
34
34
  var import_react_dom = require("react-dom");
35
35
  var import_useStore = require("../../config/useStore");
@@ -42,28 +42,47 @@ const withConditionalDnDRowContext = (Component) => (props) => {
42
42
  const withDragNDrop = (0, import_useStore.usePropsStore)(
43
43
  (state) => isDestinationPanel ? !state.removeDragAndDropFromDestination : state.addDragAndDropFromSource
44
44
  );
45
+ const setDndDraggingItemMeta = (0, import_useStore.useInternalStore)((state) => state.setDndDraggingItemMeta);
46
+ const dndDraggingItemMeta = (0, import_useStore.useInternalStore)((state) => state.dndDraggingItemMeta);
45
47
  const setOverId = (0, import_useStore.useInternalStore)((state) => state.setOverId);
46
48
  const setIsDropValid = (0, import_useStore.useInternalStore)((state) => state.setIsDropValid);
49
+ const setDndDraggingItem = (0, import_useStore.useInternalStore)((state) => state.setDndDraggingItem);
47
50
  const setLastActiveId = (0, import_useStore.useInternalStore)((state) => state.setLastActiveId);
48
51
  const setDropIndicatorPosition = (0, import_useStore.useInternalStore)((state) => state.setDropIndicatorPosition);
49
52
  const onItemsReorder = (0, import_useStore.usePropsStore)(
50
53
  (state) => isDestinationPanel ? state.onDestinationReorder : state.onSourceReorder
51
54
  );
52
55
  const onReorder = (0, import_react.useCallback)(
53
- (newData, metadata) => {
54
- onItemsReorder(newData, { active: metadata.active.original, targetIndex: metadata.targetIndex });
56
+ (_newData, metadata) => {
57
+ const { considerExpanding, active: dndActive, over: dndOver, ...dndData } = metadata;
58
+ const over = dndOver.original.original;
59
+ const active = dndActive.original.original;
60
+ const cleanedMetaData = { ...dndData, over, active };
61
+ onItemsReorder(active, cleanedMetaData);
55
62
  },
56
63
  [onItemsReorder]
57
64
  );
58
- const { dndContextProps, sortableContextProps, activeId, overId, dropIndicatorPosition, isDropValid } = (0, import_ds_drag_and_drop.useTreeDndkitConfig)({
59
- flattenedItems: itemList,
60
- visibleItems: itemList,
61
- isHorizontalDnD: false,
62
- isExpandable: false,
63
- onReorder,
64
- maxDragAndDropLevel: 0,
65
- getIsDropValid: () => true
66
- });
65
+ const treeConfig = import_react.default.useMemo(() => {
66
+ const configuredItemList = itemList.map((item, i) => ({
67
+ uid: item.hydratedId,
68
+ depth: 0,
69
+ parentId: null,
70
+ realIndex: i,
71
+ visibleIndex: i,
72
+ childrenCount: 0,
73
+ original: item
74
+ }));
75
+ return {
76
+ flattenedItems: configuredItemList,
77
+ visibleItems: configuredItemList,
78
+ isHorizontalDnD: false,
79
+ isExpandable: false,
80
+ onReorder,
81
+ maxDragAndDropLevel: 0,
82
+ getIsDropValid: () => true
83
+ };
84
+ }, [itemList, onReorder]);
85
+ const { dndContextProps, sortableContextProps, activeItem, activeId, overId, dropIndicatorPosition, isDropValid } = (0, import_ds_drag_and_drop.useTreeDndkitConfig)(treeConfig);
67
86
  (0, import_react.useEffect)(() => {
68
87
  setLastActiveId(activeId);
69
88
  }, [activeId, setLastActiveId]);
@@ -73,18 +92,24 @@ const withConditionalDnDRowContext = (Component) => (props) => {
73
92
  (0, import_react.useEffect)(() => {
74
93
  setIsDropValid(isDropValid);
75
94
  }, [isDropValid, setIsDropValid]);
95
+ (0, import_react.useEffect)(() => {
96
+ setDndDraggingItem(activeItem?.original ?? null);
97
+ }, [activeItem, setDndDraggingItem]);
76
98
  (0, import_react.useEffect)(() => {
77
99
  setDropIndicatorPosition(dropIndicatorPosition);
78
100
  }, [dropIndicatorPosition, setDropIndicatorPosition]);
79
- const item = itemList.find((currentItem) => currentItem.original.id === activeId);
101
+ (0, import_react.useEffect)(() => {
102
+ if (!Boolean(activeId) || activeId === "")
103
+ setDndDraggingItemMeta(null);
104
+ }, [activeId, setDndDraggingItemMeta]);
80
105
  if (withDragNDrop)
81
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_drag_and_drop.DndContext, { ...dndContextProps, children: [
82
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_drag_and_drop.SortableContext, { ...sortableContextProps, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...props }) }),
106
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_drag_and_drop.DndContext, { ...dndContextProps, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_drag_and_drop.SortableContext, { ...sortableContextProps, children: [
107
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...props }),
83
108
  (0, import_react_dom.createPortal)(
84
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_drag_and_drop.DragOverlay, { style: { width: "auto" }, children: activeId ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ItemOverlay.ItemOverlay, { item, ...props }) : null }),
109
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_drag_and_drop.DragOverlay, { style: { width: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: dndDraggingItemMeta ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ItemOverlay.ItemOverlay, { ...dndDraggingItemMeta }) : null }) }),
85
110
  document.body
86
111
  )
87
- ] });
112
+ ] }) });
88
113
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...props });
89
114
  };
90
115
  //# sourceMappingURL=withConditionalDnDRowContext.js.map