@elliemae/ds-shuttle-v2 3.11.0-next.6 → 3.11.0-next.7

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 (147) hide show
  1. package/dist/cjs/DSShuttleV2.js +9 -5
  2. package/dist/cjs/DSShuttleV2.js.map +2 -2
  3. package/dist/cjs/config/configureAutoCalculated.js +1 -4
  4. package/dist/cjs/config/configureAutoCalculated.js.map +2 -2
  5. package/dist/cjs/config/itemMovementHelpers.js +11 -48
  6. package/dist/cjs/config/itemMovementHelpers.js.map +2 -2
  7. package/dist/cjs/config/useFocusTracker/useFocusActionTrackers.js +4 -4
  8. package/dist/cjs/config/useFocusTracker/useFocusActionTrackers.js.map +2 -2
  9. package/dist/cjs/config/useFocusTracker/useFocusItemTracker.js +59 -27
  10. package/dist/cjs/config/useFocusTracker/useFocusItemTracker.js.map +2 -2
  11. package/dist/cjs/config/useFocusTracker/useFocusRegionTrackers.js +10 -2
  12. package/dist/cjs/config/useFocusTracker/useFocusRegionTrackers.js.map +2 -2
  13. package/dist/cjs/config/useShuttleV2.js +7 -3
  14. package/dist/cjs/config/useShuttleV2.js.map +2 -2
  15. package/dist/cjs/config/useStore/useStore.js +29 -9
  16. package/dist/cjs/config/useStore/useStore.js.map +2 -2
  17. package/dist/cjs/constants/index.js +10 -0
  18. package/dist/cjs/constants/index.js.map +2 -2
  19. package/dist/cjs/parts/Header.js +3 -3
  20. package/dist/cjs/parts/Header.js.map +2 -2
  21. package/dist/cjs/parts/Item/Item.js +7 -4
  22. package/dist/cjs/parts/Item/Item.js.map +2 -2
  23. package/dist/cjs/parts/Item/ItemActions/ItemActions.js +5 -8
  24. package/dist/cjs/parts/Item/ItemActions/ItemActions.js.map +2 -2
  25. package/dist/cjs/parts/Item/ItemActions/useActionsHandlers.js +45 -0
  26. package/dist/cjs/parts/Item/ItemActions/useActionsHandlers.js.map +7 -0
  27. package/dist/cjs/parts/Item/ItemActions/useActionsLogicHandlers.js +75 -0
  28. package/dist/cjs/parts/Item/ItemActions/useActionsLogicHandlers.js.map +7 -0
  29. package/dist/cjs/parts/Item/ItemActions/useInnerRefHandlers.js +3 -3
  30. package/dist/cjs/parts/Item/ItemActions/useInnerRefHandlers.js.map +2 -2
  31. package/dist/cjs/parts/Item/ItemMiddleSection.js.map +1 -1
  32. package/dist/cjs/parts/Item/ItemSelection.js.map +1 -1
  33. package/dist/cjs/parts/Item/useItemArrowNavigation.js.map +2 -2
  34. package/dist/cjs/parts/Item/useSelectionLogic.js +4 -4
  35. package/dist/cjs/parts/Item/useSelectionLogic.js.map +2 -2
  36. package/dist/cjs/parts/MainContent.js.map +1 -1
  37. package/dist/cjs/parts/Panel/bottom/LoadMoreBtn.js +72 -0
  38. package/dist/cjs/parts/Panel/bottom/LoadMoreBtn.js.map +7 -0
  39. package/dist/cjs/parts/Panel/bottom/LoadingMore.js +43 -0
  40. package/dist/cjs/parts/Panel/bottom/LoadingMore.js.map +7 -0
  41. package/dist/cjs/parts/Panel/bottom/PanelContentBottomSection.js +80 -0
  42. package/dist/cjs/parts/Panel/bottom/PanelContentBottomSection.js.map +7 -0
  43. package/dist/cjs/parts/Panel/bottom/useInnerRefHandlers.js +49 -0
  44. package/dist/cjs/parts/Panel/bottom/useInnerRefHandlers.js.map +7 -0
  45. package/dist/cjs/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js +59 -0
  46. package/dist/cjs/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js.map +7 -0
  47. package/dist/cjs/parts/{EmptyItems.js → Panel/middle/EmptyItems.js} +5 -8
  48. package/dist/cjs/parts/Panel/middle/EmptyItems.js.map +7 -0
  49. package/dist/cjs/parts/{ItemListWrapper.js → Panel/middle/ItemListWrapper.js} +30 -14
  50. package/dist/cjs/parts/Panel/middle/ItemListWrapper.js.map +7 -0
  51. package/dist/cjs/parts/Panel/middle/LoadingItems.js +46 -0
  52. package/dist/cjs/parts/Panel/middle/LoadingItems.js.map +7 -0
  53. package/dist/cjs/parts/{MultipleSelectionAction.js → Panel/middle/MultipleSelectionAction.js} +6 -10
  54. package/dist/cjs/parts/Panel/middle/MultipleSelectionAction.js.map +7 -0
  55. package/dist/cjs/parts/Panel/middle/PanelContentMiddleSection.js +69 -0
  56. package/dist/cjs/parts/Panel/middle/PanelContentMiddleSection.js.map +7 -0
  57. package/dist/cjs/parts/Panel/top/PanelContentTopSection.js +63 -0
  58. package/dist/cjs/parts/Panel/top/PanelContentTopSection.js.map +7 -0
  59. package/dist/cjs/parts/{PanelFilterSection.js → Panel/top/PanelFilterSection.js} +3 -3
  60. package/dist/cjs/parts/Panel/top/PanelFilterSection.js.map +7 -0
  61. package/dist/cjs/parts/{SelectionHeader.js → Panel/top/SelectionHeader.js} +6 -6
  62. package/dist/cjs/parts/Panel/top/SelectionHeader.js.map +7 -0
  63. package/dist/cjs/parts/PanelWrapper.js +8 -24
  64. package/dist/cjs/parts/PanelWrapper.js.map +2 -2
  65. package/dist/cjs/react-desc-prop-types.js +11 -1
  66. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  67. package/dist/esm/DSShuttleV2.js +15 -6
  68. package/dist/esm/DSShuttleV2.js.map +2 -2
  69. package/dist/esm/config/configureAutoCalculated.js +1 -4
  70. package/dist/esm/config/configureAutoCalculated.js.map +2 -2
  71. package/dist/esm/config/itemMovementHelpers.js +12 -49
  72. package/dist/esm/config/itemMovementHelpers.js.map +2 -2
  73. package/dist/esm/config/useFocusTracker/useFocusActionTrackers.js +5 -5
  74. package/dist/esm/config/useFocusTracker/useFocusActionTrackers.js.map +2 -2
  75. package/dist/esm/config/useFocusTracker/useFocusItemTracker.js +60 -28
  76. package/dist/esm/config/useFocusTracker/useFocusItemTracker.js.map +2 -2
  77. package/dist/esm/config/useFocusTracker/useFocusRegionTrackers.js +11 -3
  78. package/dist/esm/config/useFocusTracker/useFocusRegionTrackers.js.map +2 -2
  79. package/dist/esm/config/useShuttleV2.js +8 -4
  80. package/dist/esm/config/useShuttleV2.js.map +2 -2
  81. package/dist/esm/config/useStore/useStore.js +29 -9
  82. package/dist/esm/config/useStore/useStore.js.map +2 -2
  83. package/dist/esm/constants/index.js +10 -0
  84. package/dist/esm/constants/index.js.map +2 -2
  85. package/dist/esm/parts/Header.js +4 -4
  86. package/dist/esm/parts/Header.js.map +2 -2
  87. package/dist/esm/parts/Item/Item.js +8 -5
  88. package/dist/esm/parts/Item/Item.js.map +2 -2
  89. package/dist/esm/parts/Item/ItemActions/ItemActions.js +5 -8
  90. package/dist/esm/parts/Item/ItemActions/ItemActions.js.map +2 -2
  91. package/dist/esm/parts/Item/ItemActions/useActionsHandlers.js +19 -0
  92. package/dist/esm/parts/Item/ItemActions/useActionsHandlers.js.map +7 -0
  93. package/dist/esm/parts/Item/ItemActions/useActionsLogicHandlers.js +49 -0
  94. package/dist/esm/parts/Item/ItemActions/useActionsLogicHandlers.js.map +7 -0
  95. package/dist/esm/parts/Item/ItemActions/useInnerRefHandlers.js +4 -4
  96. package/dist/esm/parts/Item/ItemActions/useInnerRefHandlers.js.map +2 -2
  97. package/dist/esm/parts/Item/ItemMiddleSection.js.map +1 -1
  98. package/dist/esm/parts/Item/ItemSelection.js.map +1 -1
  99. package/dist/esm/parts/Item/useItemArrowNavigation.js.map +2 -2
  100. package/dist/esm/parts/Item/useSelectionLogic.js +5 -5
  101. package/dist/esm/parts/Item/useSelectionLogic.js.map +2 -2
  102. package/dist/esm/parts/MainContent.js.map +1 -1
  103. package/dist/esm/parts/Panel/bottom/LoadMoreBtn.js +46 -0
  104. package/dist/esm/parts/Panel/bottom/LoadMoreBtn.js.map +7 -0
  105. package/dist/esm/parts/Panel/bottom/LoadingMore.js +17 -0
  106. package/dist/esm/parts/Panel/bottom/LoadingMore.js.map +7 -0
  107. package/dist/esm/parts/Panel/bottom/PanelContentBottomSection.js +54 -0
  108. package/dist/esm/parts/Panel/bottom/PanelContentBottomSection.js.map +7 -0
  109. package/dist/esm/parts/Panel/bottom/useInnerRefHandlers.js +23 -0
  110. package/dist/esm/parts/Panel/bottom/useInnerRefHandlers.js.map +7 -0
  111. package/dist/esm/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js +33 -0
  112. package/dist/esm/parts/Panel/bottom/useLoadMoreBtnArrowNavigation.js.map +7 -0
  113. package/dist/esm/parts/{EmptyItems.js → Panel/middle/EmptyItems.js} +5 -8
  114. package/dist/esm/parts/Panel/middle/EmptyItems.js.map +7 -0
  115. package/dist/esm/parts/{ItemListWrapper.js → Panel/middle/ItemListWrapper.js} +30 -14
  116. package/dist/esm/parts/Panel/middle/ItemListWrapper.js.map +7 -0
  117. package/dist/esm/parts/Panel/middle/LoadingItems.js +20 -0
  118. package/dist/esm/parts/Panel/middle/LoadingItems.js.map +7 -0
  119. package/dist/esm/parts/{MultipleSelectionAction.js → Panel/middle/MultipleSelectionAction.js} +6 -10
  120. package/dist/esm/parts/Panel/middle/MultipleSelectionAction.js.map +7 -0
  121. package/dist/esm/parts/Panel/middle/PanelContentMiddleSection.js +43 -0
  122. package/dist/esm/parts/Panel/middle/PanelContentMiddleSection.js.map +7 -0
  123. package/dist/esm/parts/Panel/top/PanelContentTopSection.js +37 -0
  124. package/dist/esm/parts/Panel/top/PanelContentTopSection.js.map +7 -0
  125. package/dist/esm/parts/{PanelFilterSection.js → Panel/top/PanelFilterSection.js} +3 -3
  126. package/dist/esm/parts/Panel/top/PanelFilterSection.js.map +7 -0
  127. package/dist/esm/parts/{SelectionHeader.js → Panel/top/SelectionHeader.js} +6 -6
  128. package/dist/esm/parts/Panel/top/SelectionHeader.js.map +7 -0
  129. package/dist/esm/parts/PanelWrapper.js +8 -24
  130. package/dist/esm/parts/PanelWrapper.js.map +2 -2
  131. package/dist/esm/react-desc-prop-types.js +12 -5
  132. package/dist/esm/react-desc-prop-types.js.map +2 -2
  133. package/package.json +13 -12
  134. package/dist/cjs/parts/EmptyItems.js.map +0 -7
  135. package/dist/cjs/parts/ItemListWrapper.js.map +0 -7
  136. package/dist/cjs/parts/MultipleSelectionAction.js.map +0 -7
  137. package/dist/cjs/parts/PanelFilterSection.js.map +0 -7
  138. package/dist/cjs/parts/SelectionHeader.js.map +0 -7
  139. package/dist/cjs/sharedTypes.js +0 -24
  140. package/dist/cjs/sharedTypes.js.map +0 -7
  141. package/dist/esm/parts/EmptyItems.js.map +0 -7
  142. package/dist/esm/parts/ItemListWrapper.js.map +0 -7
  143. package/dist/esm/parts/MultipleSelectionAction.js.map +0 -7
  144. package/dist/esm/parts/PanelFilterSection.js.map +0 -7
  145. package/dist/esm/parts/SelectionHeader.js.map +0 -7
  146. package/dist/esm/sharedTypes.js +0 -2
  147. package/dist/esm/sharedTypes.js.map +0 -7
@@ -38,11 +38,15 @@ const ConfiguredComponent = import_react.default.memo((props) => {
38
38
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_MainContent.MainContent, {});
39
39
  });
40
40
  const DSShuttleV2 = (props) => {
41
- const createStore = (0, import_useStore.useShuttleV2StoreConfig)(props);
42
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_useStore.Provider, {
43
- createStore,
44
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ConfiguredComponent, {
45
- userProps: props
41
+ const createInternalStore = (0, import_useStore.useShuttleV2InternalStoreConfig)(props);
42
+ const createPropsStore = (0, import_useStore.useShuttleV2PropsStoreConfig)(props);
43
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_useStore.PropsProvider, {
44
+ createStore: createPropsStore,
45
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_useStore.InternalProvider, {
46
+ createStore: createInternalStore,
47
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ConfiguredComponent, {
48
+ userProps: props
49
+ })
46
50
  })
47
51
  });
48
52
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/DSShuttleV2.tsx", "../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React, { useEffect } from 'react';\nimport { useShuttleV2 } from './config/useShuttleV2';\nimport { Provider, useShuttleV2StoreConfig, useStore } from './config/useStore';\nimport { type DSShuttleV2T } from './react-desc-prop-types';\nimport { MainContent } from './parts/MainContent';\n\nconst ConfiguredComponent = React.memo((props: { userProps: DSShuttleV2T.Props }) => {\n useShuttleV2(props.userProps);\n // const store = useStore((state) => state);\n // useEffect(() => {\n // console.group('-----------------------------------------');\n // console.groupCollapsed('Full Store');\n // console.log(store);\n // console.groupEnd();\n // console.groupEnd();\n // }, [store]);\n\n return <MainContent />;\n});\n\nexport const DSShuttleV2 = (props: DSShuttleV2T.Props) => {\n const createStore = useShuttleV2StoreConfig(props);\n\n return (\n <Provider createStore={createStore}>\n <ConfiguredComponent userProps={props} />\n </Provider>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAiC;AACjC,0BAA6B;AAC7B,sBAA4D;AAE5D,yBAA4B;AAE5B,MAAM,sBAAsB,aAAAA,QAAM,KAAK,CAAC,UAA6C;AACnF,wCAAa,MAAM,SAAS;AAU5B,SAAO,4CAAC,kCAAY;AACtB,CAAC;AAEM,MAAM,cAAc,CAAC,UAA8B;AACxD,QAAM,kBAAc,yCAAwB,KAAK;AAEjD,SACE,4CAAC;AAAA,IAAS;AAAA,IACR,sDAAC;AAAA,MAAoB,WAAW;AAAA,KAAO;AAAA,GACzC;AAEJ;",
4
+ "sourcesContent": ["import React from 'react';\nimport { useShuttleV2 } from './config/useShuttleV2';\nimport {\n InternalProvider,\n PropsProvider,\n useShuttleV2InternalStoreConfig,\n useShuttleV2PropsStoreConfig,\n // useInternalStore,\n} from './config/useStore';\nimport { type DSShuttleV2T } from './react-desc-prop-types';\nimport { MainContent } from './parts/MainContent';\n\nconst ConfiguredComponent = React.memo((props: { userProps: DSShuttleV2T.Props }) => {\n useShuttleV2(props.userProps);\n // const store = useInternalStore((state) => state);\n // React.useEffect(() => {\n // console.group('-----------------------------------------');\n // console.groupCollapsed('Full Store');\n // console.log(store);\n // console.groupEnd();\n // console.groupEnd();\n // }, [store]);\n\n return <MainContent />;\n});\n\nexport const DSShuttleV2 = (props: DSShuttleV2T.Props) => {\n const createInternalStore = useShuttleV2InternalStoreConfig(props);\n const createPropsStore = useShuttleV2PropsStoreConfig(props);\n\n return (\n <PropsProvider createStore={createPropsStore}>\n <InternalProvider createStore={createInternalStore}>\n <ConfiguredComponent userProps={props} />\n </InternalProvider>\n </PropsProvider>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADuBd;AAvBT,mBAAkB;AAClB,0BAA6B;AAC7B,sBAMO;AAEP,yBAA4B;AAE5B,MAAM,sBAAsB,aAAAA,QAAM,KAAK,CAAC,UAA6C;AACnF,wCAAa,MAAM,SAAS;AAU5B,SAAO,4CAAC,kCAAY;AACtB,CAAC;AAEM,MAAM,cAAc,CAAC,UAA8B;AACxD,QAAM,0BAAsB,iDAAgC,KAAK;AACjE,QAAM,uBAAmB,8CAA6B,KAAK;AAE3D,SACE,4CAAC;AAAA,IAAc,aAAa;AAAA,IAC1B,sDAAC;AAAA,MAAiB,aAAa;AAAA,MAC7B,sDAAC;AAAA,QAAoB,WAAW;AAAA,OAAO;AAAA,KACzC;AAAA,GACF;AAEJ;",
6
6
  "names": ["React"]
7
7
  }
@@ -119,10 +119,7 @@ const configureSource = ({ sourceData, sourceSelectedItems }) => {
119
119
  };
120
120
  };
121
121
  const configureAutoCalculated = (propsFromUser) => {
122
- const { sourceData } = propsFromUser;
123
- const { sourceSelectedItems } = propsFromUser;
124
- const { destinationData } = propsFromUser;
125
- const { destinationSelectedItems } = propsFromUser;
122
+ const { sourceData, sourceSelectedItems, destinationData, destinationSelectedItems } = propsFromUser;
126
123
  return {
127
124
  ...configureSource({ sourceData, sourceSelectedItems }),
128
125
  ...configureDestination({ destinationData, destinationSelectedItems })
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/config/configureAutoCalculated.ts", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { type DSShuttleV2T } from '../react-desc-prop-types';\n\nconst getDatumFlags = (datum: DSShuttleV2T.Datum) => ({\n selectionPrevented: Boolean(datum.softDeleted || datum.preventMove),\n withActions: !datum.softDeleted,\n withMoveBtn: !datum.softDeleted && !datum.preventMove,\n withDrilldownBtn: !datum.softDeleted && !datum.preventDrilldown,\n});\n\ntype ConfigureDestinationConfig = {\n destinationData: DSShuttleV2T.Datum[];\n destinationSelectedItems: Record<DSShuttleV2T.Datum['id'], boolean>;\n};\nconst configureDestination = ({ destinationData, destinationSelectedItems }: ConfigureDestinationConfig) => {\n const destinationSelectedItemsMap: Record<string, { datum: DSShuttleV2T.Datum; index: number }> = {};\n const destinationSelectionItemArray: DSShuttleV2T.Datum[] = [];\n const destinationSelectionArray: DSShuttleV2T.Datum['id'][] = [];\n const destinationConfiguredData: DSShuttleV2T.ConfiguredDatum[] = [];\n const destinationSelectionableData: DSShuttleV2T.ConfiguredDatum[] = [];\n const destinationSelectionableDataIds: DSShuttleV2T.Datum['id'][] = [];\n destinationData.forEach((datum, i) => {\n let isSelected = false;\n if (destinationSelectedItems[datum.id] === true) {\n destinationSelectionItemArray.push(datum);\n destinationSelectionArray.push(datum.id);\n isSelected = true;\n }\n destinationSelectedItemsMap[datum.id] = { datum, index: i };\n const configuredItem = {\n isSelected,\n ...getDatumFlags(datum),\n original: datum,\n localIndex: i,\n isFirst: i === 0,\n isLast: i === destinationData.length - 1,\n };\n destinationConfiguredData.push(configuredItem);\n if (!datum.preventMove) {\n destinationSelectionableData.push(configuredItem);\n destinationSelectionableDataIds.push(datum.id);\n }\n });\n const destinationHasMultipleSelectedItems = destinationSelectionArray.length >= 1;\n const destinationSelectionableIds = destinationSelectionableDataIds.join(' ');\n return {\n destinationSelectedItemsMap,\n destinationSelectionItemArray,\n destinationSelectionArray,\n destinationHasMultipleSelectedItems,\n destinationConfiguredData,\n destinationSelectionableData,\n destinationSelectionableDataIds,\n destinationSelectionableIds,\n };\n};\ntype ConfigureSourceConfig = {\n sourceData: DSShuttleV2T.Datum[];\n sourceSelectedItems: Record<DSShuttleV2T.Datum['id'], boolean>;\n};\n\nconst configureSource = ({ sourceData, sourceSelectedItems }: ConfigureSourceConfig) => {\n const sourceSelectedItemsMap: Record<string, { datum: DSShuttleV2T.Datum; index: number }> = {};\n const sourceSelectionItemArray: DSShuttleV2T.Datum[] = [];\n const sourceSelectionArray: DSShuttleV2T.Datum['id'][] = [];\n const sourceConfiguredData: DSShuttleV2T.ConfiguredDatum[] = [];\n const sourceSelectionableData: DSShuttleV2T.ConfiguredDatum[] = [];\n const sourceSelectionableDataIds: DSShuttleV2T.Datum['id'][] = [];\n sourceData.forEach((datum, i) => {\n let isSelected = false;\n if (sourceSelectedItems[datum.id] === true) {\n sourceSelectionItemArray.push(datum);\n sourceSelectionArray.push(datum.id);\n isSelected = true;\n }\n\n sourceSelectedItemsMap[datum.id] = { datum, index: i };\n const configuredItem = {\n isSelected,\n ...getDatumFlags(datum),\n original: datum,\n localIndex: i,\n isFirst: i === 0,\n isLast: i === sourceData.length - 1,\n };\n sourceConfiguredData.push(configuredItem);\n if (!datum.preventMove) {\n sourceSelectionableData.push(configuredItem);\n sourceSelectionableDataIds.push(datum.id);\n }\n });\n const sourceHasMultipleSelectedItems = sourceSelectionArray.length >= 1;\n const sourceSelectionableIds = sourceSelectionableDataIds.join(' ');\n return {\n sourceConfiguredData,\n sourceSelectedItemsMap,\n sourceSelectionItemArray,\n sourceSelectionArray,\n sourceHasMultipleSelectedItems,\n sourceSelectionableData,\n sourceSelectionableDataIds,\n sourceSelectionableIds,\n };\n};\n\nexport const configureAutoCalculated = (propsFromUser: DSShuttleV2T.InternalProps) => {\n const { sourceData } = propsFromUser;\n const { sourceSelectedItems } = propsFromUser;\n const { destinationData } = propsFromUser;\n const { destinationSelectedItems } = propsFromUser;\n return {\n ...configureSource({ sourceData, sourceSelectedItems }),\n ...configureDestination({ destinationData, destinationSelectedItems }),\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type DSShuttleV2T } from '../react-desc-prop-types';\n\nconst getDatumFlags = (datum: DSShuttleV2T.Datum) => ({\n selectionPrevented: Boolean(datum.softDeleted || datum.preventMove),\n withActions: !datum.softDeleted,\n withMoveBtn: !datum.softDeleted && !datum.preventMove,\n withDrilldownBtn: !datum.softDeleted && !datum.preventDrilldown,\n});\n\ntype ConfigureDestinationConfig = {\n destinationData: DSShuttleV2T.Datum[];\n destinationSelectedItems: Record<DSShuttleV2T.Datum['id'], boolean>;\n};\nconst configureDestination = ({ destinationData, destinationSelectedItems }: ConfigureDestinationConfig) => {\n const destinationSelectedItemsMap: Record<string, { datum: DSShuttleV2T.Datum; index: number }> = {};\n const destinationSelectionItemArray: DSShuttleV2T.Datum[] = [];\n const destinationSelectionArray: DSShuttleV2T.Datum['id'][] = [];\n const destinationConfiguredData: DSShuttleV2T.ConfiguredDatum[] = [];\n const destinationSelectionableData: DSShuttleV2T.ConfiguredDatum[] = [];\n const destinationSelectionableDataIds: DSShuttleV2T.Datum['id'][] = [];\n destinationData.forEach((datum, i) => {\n let isSelected = false;\n if (destinationSelectedItems[datum.id] === true) {\n destinationSelectionItemArray.push(datum);\n destinationSelectionArray.push(datum.id);\n isSelected = true;\n }\n destinationSelectedItemsMap[datum.id] = { datum, index: i };\n const configuredItem = {\n isSelected,\n ...getDatumFlags(datum),\n original: datum,\n localIndex: i,\n isFirst: i === 0,\n isLast: i === destinationData.length - 1,\n };\n destinationConfiguredData.push(configuredItem);\n if (!datum.preventMove) {\n destinationSelectionableData.push(configuredItem);\n destinationSelectionableDataIds.push(datum.id);\n }\n });\n const destinationHasMultipleSelectedItems = destinationSelectionArray.length >= 1;\n const destinationSelectionableIds = destinationSelectionableDataIds.join(' ');\n return {\n destinationSelectedItemsMap,\n destinationSelectionItemArray,\n destinationSelectionArray,\n destinationHasMultipleSelectedItems,\n destinationConfiguredData,\n destinationSelectionableData,\n destinationSelectionableDataIds,\n destinationSelectionableIds,\n };\n};\ntype ConfigureSourceConfig = {\n sourceData: DSShuttleV2T.Datum[];\n sourceSelectedItems: Record<DSShuttleV2T.Datum['id'], boolean>;\n};\n\nconst configureSource = ({ sourceData, sourceSelectedItems }: ConfigureSourceConfig) => {\n const sourceSelectedItemsMap: Record<string, { datum: DSShuttleV2T.Datum; index: number }> = {};\n const sourceSelectionItemArray: DSShuttleV2T.Datum[] = [];\n const sourceSelectionArray: DSShuttleV2T.Datum['id'][] = [];\n const sourceConfiguredData: DSShuttleV2T.ConfiguredDatum[] = [];\n const sourceSelectionableData: DSShuttleV2T.ConfiguredDatum[] = [];\n const sourceSelectionableDataIds: DSShuttleV2T.Datum['id'][] = [];\n sourceData.forEach((datum, i) => {\n let isSelected = false;\n if (sourceSelectedItems[datum.id] === true) {\n sourceSelectionItemArray.push(datum);\n sourceSelectionArray.push(datum.id);\n isSelected = true;\n }\n\n sourceSelectedItemsMap[datum.id] = { datum, index: i };\n const configuredItem = {\n isSelected,\n ...getDatumFlags(datum),\n original: datum,\n localIndex: i,\n isFirst: i === 0,\n isLast: i === sourceData.length - 1,\n };\n sourceConfiguredData.push(configuredItem);\n if (!datum.preventMove) {\n sourceSelectionableData.push(configuredItem);\n sourceSelectionableDataIds.push(datum.id);\n }\n });\n const sourceHasMultipleSelectedItems = sourceSelectionArray.length >= 1;\n const sourceSelectionableIds = sourceSelectionableDataIds.join(' ');\n return {\n sourceConfiguredData,\n sourceSelectedItemsMap,\n sourceSelectionItemArray,\n sourceSelectionArray,\n sourceHasMultipleSelectedItems,\n sourceSelectionableData,\n sourceSelectionableDataIds,\n sourceSelectionableIds,\n };\n};\n\nexport const configureAutoCalculated = (propsFromUser: DSShuttleV2T.InternalProps) => {\n const { sourceData, sourceSelectedItems, destinationData, destinationSelectedItems } = propsFromUser;\n return {\n ...configureSource({ sourceData, sourceSelectedItems }),\n ...configureDestination({ destinationData, destinationSelectedItems }),\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -24,7 +24,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var itemMovementHelpers_exports = {};
26
26
  __export(itemMovementHelpers_exports, {
27
- useActionsClickHandlers: () => useActionsClickHandlers,
27
+ getNewDatasWithItemMoved: () => getNewDatasWithItemMoved,
28
28
  useHandleMoveSelection: () => useHandleMoveSelection
29
29
  });
30
30
  module.exports = __toCommonJS(itemMovementHelpers_exports);
@@ -67,20 +67,22 @@ const getNewDatasWithItemMoved = ({
67
67
  };
68
68
  };
69
69
  const useHandleMoveSelection = ({ isDestinationPanel }) => {
70
- const currData = (0, import_useStore.useStore)((state) => isDestinationPanel ? state.destinationData : state.sourceData);
71
- const currWithSoftDelete = (0, import_useStore.useStore)(
70
+ const currData = (0, import_useStore.usePropsStore)((state) => isDestinationPanel ? state.destinationData : state.sourceData);
71
+ const currWithSoftDelete = (0, import_useStore.usePropsStore)(
72
72
  (state) => isDestinationPanel ? state.destinationWithSoftDelete : state.sourceWithSoftDelete
73
73
  );
74
- const currOnChange = (0, import_useStore.useStore)((state) => isDestinationPanel ? state.onDestinationChange : state.onSourceChange);
75
- const onSelectionChange = (0, import_useStore.useStore)(
74
+ const currOnChange = (0, import_useStore.usePropsStore)(
75
+ (state) => isDestinationPanel ? state.onDestinationChange : state.onSourceChange
76
+ );
77
+ const onSelectionChange = (0, import_useStore.usePropsStore)(
76
78
  (state) => isDestinationPanel ? state.onDestinationSelectionChange : state.onSourceSelectionChange
77
79
  );
78
- const otherData = (0, import_useStore.useStore)((state) => isDestinationPanel ? state.sourceData : state.destinationData);
79
- const otherPanelOnChange = (0, import_useStore.useStore)(
80
+ const otherData = (0, import_useStore.usePropsStore)((state) => isDestinationPanel ? state.sourceData : state.destinationData);
81
+ const otherPanelOnChange = (0, import_useStore.usePropsStore)(
80
82
  (state) => isDestinationPanel ? state.onSourceChange : state.onDestinationChange
81
83
  );
82
- const destinationSelectionArray = (0, import_useStore.useStore)((store) => store.destinationSelectionItemArray);
83
- const sourceSelectionArray = (0, import_useStore.useStore)((store) => store.sourceSelectionItemArray);
84
+ const destinationSelectionArray = (0, import_useStore.useInternalStore)((store) => store.destinationSelectionItemArray);
85
+ const sourceSelectionArray = (0, import_useStore.useInternalStore)((store) => store.sourceSelectionItemArray);
84
86
  const selectedItems = isDestinationPanel ? destinationSelectionArray : sourceSelectionArray;
85
87
  const moveSelection = import_react.default.useCallback(
86
88
  (event) => {
@@ -106,43 +108,4 @@ const useHandleMoveSelection = ({ isDestinationPanel }) => {
106
108
  );
107
109
  return import_react.default.useMemo(() => ({ moveSelection }), [moveSelection]);
108
110
  };
109
- const useActionsClickHandlers = (itemMeta) => {
110
- const { item, isDestinationPanel } = itemMeta;
111
- const currData = (0, import_useStore.useStore)((state) => isDestinationPanel ? state.destinationData : state.sourceData);
112
- const currWithSoftDelete = (0, import_useStore.useStore)(
113
- (state) => isDestinationPanel ? state.destinationWithSoftDelete : state.sourceWithSoftDelete
114
- );
115
- const currOnChange = (0, import_useStore.useStore)((state) => isDestinationPanel ? state.onDestinationChange : state.onSourceChange);
116
- const currDrilldown = (0, import_useStore.useStore)(
117
- (state) => isDestinationPanel ? state.onDestinationDrilldown : state.onSourceDrilldown
118
- );
119
- const otherData = (0, import_useStore.useStore)((state) => isDestinationPanel ? state.sourceData : state.destinationData);
120
- const otherPanelOnChange = (0, import_useStore.useStore)(
121
- (state) => isDestinationPanel ? state.onSourceChange : state.onDestinationChange
122
- );
123
- const handleDrilldown = import_react.default.useCallback(
124
- (event) => {
125
- event.preventDefault();
126
- event.stopPropagation();
127
- currDrilldown(item.original, { event });
128
- },
129
- [currDrilldown, item]
130
- );
131
- const handleSingleMove = import_react.default.useCallback(
132
- (event) => {
133
- event.preventDefault();
134
- event.stopPropagation();
135
- const { newCurrData, newOtherData } = getNewDatasWithItemMoved({
136
- item: item.original,
137
- currData,
138
- currWithSoftDelete,
139
- otherData
140
- });
141
- currOnChange(newCurrData, { item: item.original, event });
142
- otherPanelOnChange(newOtherData, { item: item.original, event });
143
- },
144
- [currData, currOnChange, currWithSoftDelete, item, otherData, otherPanelOnChange]
145
- );
146
- return import_react.default.useMemo(() => ({ handleDrilldown, handleSingleMove }), [handleDrilldown, handleSingleMove]);
147
- };
148
111
  //# sourceMappingURL=itemMovementHelpers.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/config/itemMovementHelpers.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable max-statements */\nimport React from 'react';\nimport { type DSShuttleV2T } from '../react-desc-prop-types';\nimport { useStore } from './useStore';\n\nconst getNewDatasWithItemMoved = ({\n item,\n currData,\n currWithSoftDelete,\n otherData,\n}: {\n item: DSShuttleV2T.Datum;\n currData: DSShuttleV2T.Datum[];\n currWithSoftDelete: boolean;\n otherData: DSShuttleV2T.Datum[];\n}) => {\n const { id, softDeleted } = item;\n const newCurrData = [...currData];\n const newOtherData = [...otherData];\n const currListIndex = newCurrData.findIndex((datum) => datum.id === id);\n const otherListIndex = newOtherData.findIndex((datum) => datum.id === id);\n const isCurrDataItemOriginalList = otherListIndex === -1 || (otherListIndex !== -1 && softDeleted);\n let currRemoveAtIndex = -1;\n /**\n * current data management\n * soft-deletion\n * if enabled\n * hard deletion\n * if not enabled\n * or\n * if we are \"moving back\" an item\n */\n if (currListIndex !== -1) {\n if (isCurrDataItemOriginalList) {\n // if curr data is the item's original list\n // soft-delete if users asks for soft-deletion\n if (currWithSoftDelete) newCurrData[currListIndex].softDeleted = true;\n // else hard delete\n else currRemoveAtIndex = currListIndex;\n } else {\n // else hard delete because we are moving back a soft-deleted element\n currRemoveAtIndex = currListIndex;\n }\n }\n // if hard-deletion was configured to be carried out -> hard delete in curr-data\n if (currRemoveAtIndex !== -1) newCurrData.splice(currRemoveAtIndex, 1);\n\n // we append to other data when it was not already present\n const shouldAppendToOtherData = otherListIndex === -1;\n // in the new list we don't treat the item as soft-deleted\n if (shouldAppendToOtherData) newOtherData.push({ ...item, softDeleted: false });\n // if it is already present we remove the soft-deleted status instead\n else newOtherData[otherListIndex].softDeleted = false;\n\n return {\n newCurrData,\n newOtherData,\n };\n};\nexport const useHandleMoveSelection = ({ isDestinationPanel }: { isDestinationPanel: boolean }) => {\n const currData = useStore((state) => (isDestinationPanel ? state.destinationData : state.sourceData));\n const currWithSoftDelete = useStore((state) =>\n isDestinationPanel ? state.destinationWithSoftDelete : state.sourceWithSoftDelete,\n );\n const currOnChange = useStore((state) => (isDestinationPanel ? state.onDestinationChange : state.onSourceChange));\n const onSelectionChange = useStore((state) =>\n isDestinationPanel ? state.onDestinationSelectionChange : state.onSourceSelectionChange,\n );\n\n const otherData = useStore((state) => (isDestinationPanel ? state.sourceData : state.destinationData));\n const otherPanelOnChange = useStore((state) =>\n isDestinationPanel ? state.onSourceChange : state.onDestinationChange,\n );\n const destinationSelectionArray = useStore((store) => store.destinationSelectionItemArray);\n const sourceSelectionArray = useStore((store) => store.sourceSelectionItemArray);\n const selectedItems = isDestinationPanel ? destinationSelectionArray : sourceSelectionArray;\n\n const moveSelection = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n let iteratedNewCurrData = [...currData];\n let iteratedNewOtherData = [...otherData];\n selectedItems.forEach((datum) => {\n const { newCurrData, newOtherData } = getNewDatasWithItemMoved({\n item: datum,\n currData: iteratedNewCurrData,\n currWithSoftDelete,\n otherData: iteratedNewOtherData,\n });\n iteratedNewCurrData = newCurrData;\n iteratedNewOtherData = newOtherData;\n });\n currOnChange(iteratedNewCurrData, { event, selectedItems });\n otherPanelOnChange(iteratedNewOtherData, { event, selectedItems });\n onSelectionChange({}, { event });\n },\n [currData, otherData, selectedItems, currOnChange, otherPanelOnChange, onSelectionChange, currWithSoftDelete],\n );\n return React.useMemo(() => ({ moveSelection }), [moveSelection]);\n};\n\nexport const useActionsClickHandlers = (itemMeta: DSShuttleV2T.ItemMeta) => {\n const { item, isDestinationPanel } = itemMeta;\n\n const currData = useStore((state) => (isDestinationPanel ? state.destinationData : state.sourceData));\n const currWithSoftDelete = useStore((state) =>\n isDestinationPanel ? state.destinationWithSoftDelete : state.sourceWithSoftDelete,\n );\n const currOnChange = useStore((state) => (isDestinationPanel ? state.onDestinationChange : state.onSourceChange));\n const currDrilldown = useStore((state) =>\n isDestinationPanel ? state.onDestinationDrilldown : state.onSourceDrilldown,\n );\n\n const otherData = useStore((state) => (isDestinationPanel ? state.sourceData : state.destinationData));\n const otherPanelOnChange = useStore((state) =>\n isDestinationPanel ? state.onSourceChange : state.onDestinationChange,\n );\n\n const handleDrilldown: React.MouseEventHandler<HTMLButtonElement> = React.useCallback(\n (event) => {\n event.preventDefault();\n event.stopPropagation();\n currDrilldown(item.original, { event });\n },\n [currDrilldown, item],\n );\n\n const handleSingleMove: React.MouseEventHandler<HTMLButtonElement> = React.useCallback(\n (event) => {\n event.preventDefault();\n event.stopPropagation();\n const { newCurrData, newOtherData } = getNewDatasWithItemMoved({\n item: item.original,\n currData,\n currWithSoftDelete,\n otherData,\n });\n\n currOnChange(newCurrData, { item: item.original, event });\n otherPanelOnChange(newOtherData, { item: item.original, event });\n },\n [currData, currOnChange, currWithSoftDelete, item, otherData, otherPanelOnChange],\n );\n return React.useMemo(() => ({ handleDrilldown, handleSingleMove }), [handleDrilldown, handleSingleMove]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable max-statements */\nimport React from 'react';\nimport { type DSButtonT } from '@elliemae/ds-button';\nimport { type DSShuttleV2T } from '../react-desc-prop-types';\nimport { usePropsStore, useInternalStore } from './useStore';\n\nexport const getNewDatasWithItemMoved = ({\n item,\n currData,\n currWithSoftDelete,\n otherData,\n}: {\n item: DSShuttleV2T.Datum;\n currData: DSShuttleV2T.Datum[];\n currWithSoftDelete: boolean;\n otherData: DSShuttleV2T.Datum[];\n}) => {\n const { id, softDeleted } = item;\n const newCurrData = [...currData];\n const newOtherData = [...otherData];\n const currListIndex = newCurrData.findIndex((datum) => datum.id === id);\n const otherListIndex = newOtherData.findIndex((datum) => datum.id === id);\n const isCurrDataItemOriginalList = otherListIndex === -1 || (otherListIndex !== -1 && softDeleted);\n let currRemoveAtIndex = -1;\n /**\n * current data management\n * soft-deletion\n * if enabled\n * hard deletion\n * if not enabled\n * or\n * if we are \"moving back\" an item\n */\n if (currListIndex !== -1) {\n if (isCurrDataItemOriginalList) {\n // if curr data is the item's original list\n // soft-delete if users asks for soft-deletion\n if (currWithSoftDelete) newCurrData[currListIndex].softDeleted = true;\n // else hard delete\n else currRemoveAtIndex = currListIndex;\n } else {\n // else hard delete because we are moving back a soft-deleted element\n currRemoveAtIndex = currListIndex;\n }\n }\n // if hard-deletion was configured to be carried out -> hard delete in curr-data\n if (currRemoveAtIndex !== -1) newCurrData.splice(currRemoveAtIndex, 1);\n\n // we append to other data when it was not already present\n const shouldAppendToOtherData = otherListIndex === -1;\n // in the new list we don't treat the item as soft-deleted\n if (shouldAppendToOtherData) newOtherData.push({ ...item, softDeleted: false });\n // if it is already present we remove the soft-deleted status instead\n else newOtherData[otherListIndex].softDeleted = false;\n\n return {\n newCurrData,\n newOtherData,\n };\n};\nexport const useHandleMoveSelection = ({ isDestinationPanel }: { isDestinationPanel: boolean }) => {\n const currData = usePropsStore((state) => (isDestinationPanel ? state.destinationData : state.sourceData));\n const currWithSoftDelete = usePropsStore((state) =>\n isDestinationPanel ? state.destinationWithSoftDelete : state.sourceWithSoftDelete,\n );\n const currOnChange = usePropsStore((state) =>\n isDestinationPanel ? state.onDestinationChange : state.onSourceChange,\n );\n const onSelectionChange = usePropsStore((state) =>\n isDestinationPanel ? state.onDestinationSelectionChange : state.onSourceSelectionChange,\n );\n\n const otherData = usePropsStore((state) => (isDestinationPanel ? state.sourceData : state.destinationData));\n const otherPanelOnChange = usePropsStore((state) =>\n isDestinationPanel ? state.onSourceChange : state.onDestinationChange,\n );\n const destinationSelectionArray = useInternalStore((store) => store.destinationSelectionItemArray);\n const sourceSelectionArray = useInternalStore((store) => store.sourceSelectionItemArray);\n const selectedItems = isDestinationPanel ? destinationSelectionArray : sourceSelectionArray;\n\n const moveSelection = React.useCallback(\n (event: Parameters<Required<DSButtonT.Props>['onClick']>[0]) => {\n event.preventDefault();\n event.stopPropagation();\n let iteratedNewCurrData = [...currData];\n let iteratedNewOtherData = [...otherData];\n selectedItems.forEach((datum) => {\n const { newCurrData, newOtherData } = getNewDatasWithItemMoved({\n item: datum,\n currData: iteratedNewCurrData,\n currWithSoftDelete,\n otherData: iteratedNewOtherData,\n });\n iteratedNewCurrData = newCurrData;\n iteratedNewOtherData = newOtherData;\n });\n currOnChange(iteratedNewCurrData, { event, selectedItems });\n otherPanelOnChange(iteratedNewOtherData, { event, selectedItems });\n onSelectionChange({}, { event });\n },\n [currData, otherData, selectedItems, currOnChange, otherPanelOnChange, onSelectionChange, currWithSoftDelete],\n );\n return React.useMemo(() => ({ moveSelection }), [moveSelection]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEvB,mBAAkB;AAGlB,sBAAgD;AAEzC,MAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAKM;AACJ,QAAM,EAAE,IAAI,YAAY,IAAI;AAC5B,QAAM,cAAc,CAAC,GAAG,QAAQ;AAChC,QAAM,eAAe,CAAC,GAAG,SAAS;AAClC,QAAM,gBAAgB,YAAY,UAAU,CAAC,UAAU,MAAM,OAAO,EAAE;AACtE,QAAM,iBAAiB,aAAa,UAAU,CAAC,UAAU,MAAM,OAAO,EAAE;AACxE,QAAM,6BAA6B,mBAAmB,MAAO,mBAAmB,MAAM;AACtF,MAAI,oBAAoB;AAUxB,MAAI,kBAAkB,IAAI;AACxB,QAAI,4BAA4B;AAG9B,UAAI;AAAoB,oBAAY,eAAe,cAAc;AAAA;AAE5D,4BAAoB;AAAA,IAC3B,OAAO;AAEL,0BAAoB;AAAA,IACtB;AAAA,EACF;AAEA,MAAI,sBAAsB;AAAI,gBAAY,OAAO,mBAAmB,CAAC;AAGrE,QAAM,0BAA0B,mBAAmB;AAEnD,MAAI;AAAyB,iBAAa,KAAK,EAAE,GAAG,MAAM,aAAa,MAAM,CAAC;AAAA;AAEzE,iBAAa,gBAAgB,cAAc;AAEhD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AACO,MAAM,yBAAyB,CAAC,EAAE,mBAAmB,MAAuC;AACjG,QAAM,eAAW,+BAAc,CAAC,UAAW,qBAAqB,MAAM,kBAAkB,MAAM,UAAW;AACzG,QAAM,yBAAqB;AAAA,IAAc,CAAC,UACxC,qBAAqB,MAAM,4BAA4B,MAAM;AAAA,EAC/D;AACA,QAAM,mBAAe;AAAA,IAAc,CAAC,UAClC,qBAAqB,MAAM,sBAAsB,MAAM;AAAA,EACzD;AACA,QAAM,wBAAoB;AAAA,IAAc,CAAC,UACvC,qBAAqB,MAAM,+BAA+B,MAAM;AAAA,EAClE;AAEA,QAAM,gBAAY,+BAAc,CAAC,UAAW,qBAAqB,MAAM,aAAa,MAAM,eAAgB;AAC1G,QAAM,yBAAqB;AAAA,IAAc,CAAC,UACxC,qBAAqB,MAAM,iBAAiB,MAAM;AAAA,EACpD;AACA,QAAM,gCAA4B,kCAAiB,CAAC,UAAU,MAAM,6BAA6B;AACjG,QAAM,2BAAuB,kCAAiB,CAAC,UAAU,MAAM,wBAAwB;AACvF,QAAM,gBAAgB,qBAAqB,4BAA4B;AAEvE,QAAM,gBAAgB,aAAAA,QAAM;AAAA,IAC1B,CAAC,UAA+D;AAC9D,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,UAAI,sBAAsB,CAAC,GAAG,QAAQ;AACtC,UAAI,uBAAuB,CAAC,GAAG,SAAS;AACxC,oBAAc,QAAQ,CAAC,UAAU;AAC/B,cAAM,EAAE,aAAa,aAAa,IAAI,yBAAyB;AAAA,UAC7D,MAAM;AAAA,UACN,UAAU;AAAA,UACV;AAAA,UACA,WAAW;AAAA,QACb,CAAC;AACD,8BAAsB;AACtB,+BAAuB;AAAA,MACzB,CAAC;AACD,mBAAa,qBAAqB,EAAE,OAAO,cAAc,CAAC;AAC1D,yBAAmB,sBAAsB,EAAE,OAAO,cAAc,CAAC;AACjE,wBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC;AAAA,IACjC;AAAA,IACA,CAAC,UAAU,WAAW,eAAe,cAAc,oBAAoB,mBAAmB,kBAAkB;AAAA,EAC9G;AACA,SAAO,aAAAA,QAAM,QAAQ,OAAO,EAAE,cAAc,IAAI,CAAC,aAAa,CAAC;AACjE;",
6
6
  "names": ["React"]
7
7
  }
@@ -100,11 +100,11 @@ const getActionByProxymity = ({ flags, currentAction }) => {
100
100
  return getParenBtnActionByProxymity(flags);
101
101
  };
102
102
  const useFocusActionTrackers = () => {
103
- const focusItemAction = (0, import_useStore.useStore)((state) => state.focusItemAction);
103
+ const focusItemAction = (0, import_useStore.useInternalStore)((state) => state.focusItemAction);
104
104
  const mutableFocusItemAction = (0, import_ds_utilities.useMakeMutable)(focusItemAction);
105
- const setFocusItemAction = (0, import_useStore.useStore)((state) => state.setFocusItemAction);
106
- const addDragAndDropToDestiantion = (0, import_useStore.useStore)((state) => state.addDragAndDropToDestiantion);
107
- const removeDragAndDropFromSource = (0, import_useStore.useStore)((state) => state.removeDragAndDropFromSource);
105
+ const setFocusItemAction = (0, import_useStore.useInternalStore)((state) => state.setFocusItemAction);
106
+ const addDragAndDropToDestiantion = (0, import_useStore.usePropsStore)((state) => state.addDragAndDropToDestiantion);
107
+ const removeDragAndDropFromSource = (0, import_useStore.usePropsStore)((state) => state.removeDragAndDropFromSource);
108
108
  const trackFocusPrevAction = (0, import_react.useCallback)(
109
109
  ({ isDestinationPanel, item }) => {
110
110
  const preventMove = Boolean(item.original.preventMove);
@@ -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 { useStore } 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 = useStore((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 = useStore((state) => state.setFocusItemAction);\n const addDragAndDropToDestiantion = useStore((state) => state.addDragAndDropToDestiantion);\n const removeDragAndDropFromSource = useStore((state) => state.removeDragAndDropFromSource);\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 && addDragAndDropToDestiantion) || (!isDestinationPanel && !removeDragAndDropFromSource);\n const { prevAction } = getActionByProxymity({\n flags: { preventMove, preventDrilldown, withDragAndDrop },\n currentAction: mutableFocusItemAction.current,\n });\n setFocusItemAction(prevAction);\n },\n [addDragAndDropToDestiantion, mutableFocusItemAction, removeDragAndDropFromSource, 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 && addDragAndDropToDestiantion) || (!isDestinationPanel && !removeDragAndDropFromSource);\n const { nextAction } = getActionByProxymity({\n flags: { preventMove, preventDrilldown, withDragAndDrop },\n currentAction: mutableFocusItemAction.current,\n });\n setFocusItemAction(nextAction);\n },\n [addDragAndDropToDestiantion, mutableFocusItemAction, removeDragAndDropFromSource, 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 addDragAndDropToDestiantion = usePropsStore((state) => state.addDragAndDropToDestiantion);\n const removeDragAndDropFromSource = usePropsStore((state) => state.removeDragAndDropFromSource);\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 && addDragAndDropToDestiantion) || (!isDestinationPanel && !removeDragAndDropFromSource);\n const { prevAction } = getActionByProxymity({\n flags: { preventMove, preventDrilldown, withDragAndDrop },\n currentAction: mutableFocusItemAction.current,\n });\n setFocusItemAction(prevAction);\n },\n [addDragAndDropToDestiantion, mutableFocusItemAction, removeDragAndDropFromSource, 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 && addDragAndDropToDestiantion) || (!isDestinationPanel && !removeDragAndDropFromSource);\n const { nextAction } = getActionByProxymity({\n flags: { preventMove, preventDrilldown, withDragAndDrop },\n currentAction: mutableFocusItemAction.current,\n });\n setFocusItemAction(nextAction);\n },\n [addDragAndDropToDestiantion, mutableFocusItemAction, removeDragAndDropFromSource, 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
  }
@@ -31,61 +31,93 @@ var React = __toESM(require("react"));
31
31
  var import_react = require("react");
32
32
  var import_ds_utilities = require("@elliemae/ds-utilities");
33
33
  var import_useStore = require("../useStore");
34
+ var import_constants = require("../../constants/index");
34
35
  const useFocusItemTracker = () => {
35
- const focusItem = (0, import_useStore.useStore)((state) => state.focusItem);
36
+ const focusItem = (0, import_useStore.useInternalStore)((state) => state.focusItem);
36
37
  const mutableFocusItem = (0, import_ds_utilities.useMakeMutable)(focusItem);
37
- const setFocusItem = (0, import_useStore.useStore)((state) => state.setFocusItem);
38
- const sourceData = (0, import_useStore.useStore)((state) => state.sourceData);
39
- const destinationData = (0, import_useStore.useStore)((state) => state.destinationData);
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);
41
+ const sourceWithLoadMore = (0, import_useStore.usePropsStore)((state) => state.sourceWithLoadMore);
42
+ const destinationWithLoadMore = (0, import_useStore.usePropsStore)((state) => state.destinationWithLoadMore);
40
43
  const trackFocusPrevItem = (0, import_react.useCallback)(
41
44
  ({ isDestinationPanel }) => {
42
45
  const referenceData = isDestinationPanel ? destinationData : sourceData;
43
- if (mutableFocusItem.current === "first") {
44
- setFocusItem(referenceData[referenceData.length > 1 ? referenceData.length - 1 : 0]?.id);
46
+ const withLoadMore = isDestinationPanel ? destinationWithLoadMore : sourceWithLoadMore;
47
+ if (mutableFocusItem.current === import_constants.ITEMS_FOCUSES.FIRST) {
48
+ if (withLoadMore)
49
+ setFocusItem(import_constants.ITEMS_FOCUSES.LOAD_MORE_BTN);
50
+ else {
51
+ const prevItemIndex = referenceData.length > 1 ? referenceData.length - 1 : 0;
52
+ const prevItem = referenceData[prevItemIndex];
53
+ setFocusItem(import_constants.ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));
54
+ }
45
55
  return;
46
56
  }
47
- if (mutableFocusItem.current === "last") {
48
- setFocusItem(referenceData[referenceData.length > 2 ? referenceData.length - 2 : 0]?.id);
57
+ if (mutableFocusItem.current === import_constants.ITEMS_FOCUSES.LAST) {
58
+ const prevItemIndex = referenceData.length > 2 ? referenceData.length - 2 : 0;
59
+ const prevItem = referenceData[prevItemIndex];
60
+ setFocusItem(import_constants.ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));
49
61
  return;
50
62
  }
51
- const currentItemId = referenceData.findIndex((currItem) => currItem.id === mutableFocusItem.current);
52
- if (currentItemId !== -1) {
53
- const prevItemIndex = currentItemId === 0 ? referenceData.length - 1 : currentItemId - 1;
54
- setFocusItem(referenceData[prevItemIndex].id);
63
+ const currentItemIndex = referenceData.findIndex((currItem) => currItem.id === mutableFocusItem.current);
64
+ if (currentItemIndex === 0 && withLoadMore)
65
+ setFocusItem(import_constants.ITEMS_FOCUSES.LOAD_MORE_BTN);
66
+ else if (currentItemIndex !== -1) {
67
+ const prevItemIndex = currentItemIndex === 0 ? referenceData.length - 1 : currentItemIndex - 1;
68
+ const prevItem = referenceData[prevItemIndex];
69
+ setFocusItem(import_constants.ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));
55
70
  } else {
56
- setFocusItem(referenceData[0].id);
71
+ const prevItemIndex = 0;
72
+ const prevItem = referenceData[prevItemIndex];
73
+ setFocusItem(import_constants.ITEMS_FOCUSES.GET_SPECIFIC_ITEM(prevItem));
57
74
  }
58
75
  },
59
- [destinationData, mutableFocusItem, setFocusItem, sourceData]
76
+ [destinationData, destinationWithLoadMore, mutableFocusItem, setFocusItem, sourceData, sourceWithLoadMore]
60
77
  );
61
78
  const trackFocusNextItem = (0, import_react.useCallback)(
62
79
  ({ isDestinationPanel }) => {
63
80
  const referenceData = isDestinationPanel ? destinationData : sourceData;
64
- if (mutableFocusItem.current === "first") {
65
- setFocusItem(referenceData[referenceData.length > 1 ? 1 : 0]?.id);
81
+ const withLoadMore = isDestinationPanel ? destinationWithLoadMore : sourceWithLoadMore;
82
+ if (mutableFocusItem.current === import_constants.ITEMS_FOCUSES.FIRST) {
83
+ const nextItemIndex = referenceData.length > 1 ? 1 : 0;
84
+ const nextItem = referenceData[nextItemIndex];
85
+ setFocusItem(import_constants.ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));
66
86
  return;
67
87
  }
68
- if (mutableFocusItem.current === "last") {
69
- setFocusItem(referenceData[0]?.id);
88
+ if (mutableFocusItem.current === import_constants.ITEMS_FOCUSES.LAST) {
89
+ if (withLoadMore)
90
+ setFocusItem(import_constants.ITEMS_FOCUSES.LOAD_MORE_BTN);
91
+ else {
92
+ const nextItemIndex = 0;
93
+ const nextItem = referenceData[nextItemIndex];
94
+ setFocusItem(import_constants.ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));
95
+ }
70
96
  return;
71
97
  }
72
- const currentItemId = referenceData.findIndex((currItem) => currItem.id === mutableFocusItem.current);
73
- if (currentItemId !== -1) {
74
- const nextItemIndex = currentItemId === referenceData.length - 1 ? 0 : currentItemId + 1;
75
- setFocusItem(referenceData[nextItemIndex]?.id);
98
+ const currentItemIndex = referenceData.findIndex((currItem) => currItem.id === mutableFocusItem.current);
99
+ if (currentItemIndex === referenceData.length - 1 && withLoadMore)
100
+ setFocusItem(import_constants.ITEMS_FOCUSES.LOAD_MORE_BTN);
101
+ else if (currentItemIndex !== -1) {
102
+ const nextItemIndex = currentItemIndex === referenceData.length - 1 ? 0 : currentItemIndex + 1;
103
+ const nextItem = referenceData[nextItemIndex];
104
+ setFocusItem(import_constants.ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));
76
105
  } else {
77
- setFocusItem(referenceData[referenceData.length - 1]?.id);
106
+ const nextItemIndex = referenceData.length - 1;
107
+ const nextItem = referenceData[nextItemIndex];
108
+ setFocusItem(import_constants.ITEMS_FOCUSES.GET_SPECIFIC_ITEM(nextItem));
78
109
  }
79
110
  },
80
- [destinationData, mutableFocusItem, setFocusItem, sourceData]
111
+ [destinationData, destinationWithLoadMore, mutableFocusItem, setFocusItem, sourceData, sourceWithLoadMore]
81
112
  );
82
113
  return (0, import_react.useMemo)(
83
114
  () => ({
84
115
  mutableFocusItem,
85
116
  trackFocusItem: (item) => setFocusItem(item.original.id),
86
- trackFocusItemReset: () => setFocusItem(""),
87
- trackFocusItemFirst: () => setFocusItem("first"),
88
- trackFocusItemLast: () => setFocusItem("last"),
117
+ trackFocusItemReset: () => setFocusItem(import_constants.ITEMS_FOCUSES.RESET),
118
+ trackFocusItemFirst: () => setFocusItem(import_constants.ITEMS_FOCUSES.FIRST),
119
+ trackFocusItemLast: () => setFocusItem(import_constants.ITEMS_FOCUSES.LAST),
120
+ trackFocusLoadMoreBtn: () => setFocusItem(import_constants.ITEMS_FOCUSES.LOAD_MORE_BTN),
89
121
  trackFocusPrevItem,
90
122
  trackFocusNextItem
91
123
  }),
@@ -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": ["import { useMemo, useCallback } from 'react';\nimport { useMakeMutable } from '@elliemae/ds-utilities';\nimport { type DSShuttleV2T } from '../../react-desc-prop-types';\nimport { useStore } from '../useStore';\n\nexport const useFocusItemTracker = () => {\n const focusItem = useStore((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 = useStore((state) => state.setFocusItem);\n const sourceData = useStore((state) => state.sourceData);\n const destinationData = useStore((state) => state.destinationData);\n const trackFocusPrevItem = useCallback(\n ({ isDestinationPanel }: DSShuttleV2T.ItemMeta) => {\n const referenceData = isDestinationPanel ? destinationData : sourceData;\n if (mutableFocusItem.current === 'first') {\n setFocusItem(referenceData[referenceData.length > 1 ? referenceData.length - 1 : 0]?.id);\n return;\n }\n if (mutableFocusItem.current === 'last') {\n setFocusItem(referenceData[referenceData.length > 2 ? referenceData.length - 2 : 0]?.id);\n return;\n }\n const currentItemId = referenceData.findIndex((currItem) => currItem.id === mutableFocusItem.current);\n if (currentItemId !== -1) {\n const prevItemIndex = currentItemId === 0 ? referenceData.length - 1 : currentItemId - 1;\n setFocusItem(referenceData[prevItemIndex].id);\n } else {\n setFocusItem(referenceData[0].id);\n }\n },\n [destinationData, mutableFocusItem, setFocusItem, sourceData],\n );\n const trackFocusNextItem = useCallback(\n ({ isDestinationPanel }: DSShuttleV2T.ItemMeta) => {\n const referenceData = isDestinationPanel ? destinationData : sourceData;\n if (mutableFocusItem.current === 'first') {\n setFocusItem(referenceData[referenceData.length > 1 ? 1 : 0]?.id);\n return;\n }\n if (mutableFocusItem.current === 'last') {\n setFocusItem(referenceData[0]?.id);\n return;\n }\n const currentItemId = referenceData.findIndex((currItem) => currItem.id === mutableFocusItem.current);\n if (currentItemId !== -1) {\n const nextItemIndex = currentItemId === referenceData.length - 1 ? 0 : currentItemId + 1;\n setFocusItem(referenceData[nextItemIndex]?.id);\n } else {\n setFocusItem(referenceData[referenceData.length - 1]?.id);\n }\n },\n [destinationData, mutableFocusItem, setFocusItem, sourceData],\n );\n return useMemo(\n () => ({\n mutableFocusItem,\n trackFocusItem: (item: DSShuttleV2T.ConfiguredDatum) => setFocusItem(item.original.id),\n trackFocusItemReset: () => setFocusItem(''),\n trackFocusItemFirst: () => setFocusItem('first'),\n trackFocusItemLast: () => setFocusItem('last'),\n trackFocusPrevItem,\n trackFocusNextItem,\n }),\n [mutableFocusItem, setFocusItem, trackFocusNextItem, trackFocusPrevItem],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAqC;AACrC,0BAA+B;AAE/B,sBAAyB;AAElB,MAAM,sBAAsB,MAAM;AACvC,QAAM,gBAAY,0BAAS,CAAC,UAAU,MAAM,SAAS;AAKrD,QAAM,uBAAmB,oCAAe,SAAS;AACjD,QAAM,mBAAe,0BAAS,CAAC,UAAU,MAAM,YAAY;AAC3D,QAAM,iBAAa,0BAAS,CAAC,UAAU,MAAM,UAAU;AACvD,QAAM,sBAAkB,0BAAS,CAAC,UAAU,MAAM,eAAe;AACjE,QAAM,yBAAqB;AAAA,IACzB,CAAC,EAAE,mBAAmB,MAA6B;AACjD,YAAM,gBAAgB,qBAAqB,kBAAkB;AAC7D,UAAI,iBAAiB,YAAY,SAAS;AACxC,qBAAa,cAAc,cAAc,SAAS,IAAI,cAAc,SAAS,IAAI,IAAI,EAAE;AACvF;AAAA,MACF;AACA,UAAI,iBAAiB,YAAY,QAAQ;AACvC,qBAAa,cAAc,cAAc,SAAS,IAAI,cAAc,SAAS,IAAI,IAAI,EAAE;AACvF;AAAA,MACF;AACA,YAAM,gBAAgB,cAAc,UAAU,CAAC,aAAa,SAAS,OAAO,iBAAiB,OAAO;AACpG,UAAI,kBAAkB,IAAI;AACxB,cAAM,gBAAgB,kBAAkB,IAAI,cAAc,SAAS,IAAI,gBAAgB;AACvF,qBAAa,cAAc,eAAe,EAAE;AAAA,MAC9C,OAAO;AACL,qBAAa,cAAc,GAAG,EAAE;AAAA,MAClC;AAAA,IACF;AAAA,IACA,CAAC,iBAAiB,kBAAkB,cAAc,UAAU;AAAA,EAC9D;AACA,QAAM,yBAAqB;AAAA,IACzB,CAAC,EAAE,mBAAmB,MAA6B;AACjD,YAAM,gBAAgB,qBAAqB,kBAAkB;AAC7D,UAAI,iBAAiB,YAAY,SAAS;AACxC,qBAAa,cAAc,cAAc,SAAS,IAAI,IAAI,IAAI,EAAE;AAChE;AAAA,MACF;AACA,UAAI,iBAAiB,YAAY,QAAQ;AACvC,qBAAa,cAAc,IAAI,EAAE;AACjC;AAAA,MACF;AACA,YAAM,gBAAgB,cAAc,UAAU,CAAC,aAAa,SAAS,OAAO,iBAAiB,OAAO;AACpG,UAAI,kBAAkB,IAAI;AACxB,cAAM,gBAAgB,kBAAkB,cAAc,SAAS,IAAI,IAAI,gBAAgB;AACvF,qBAAa,cAAc,gBAAgB,EAAE;AAAA,MAC/C,OAAO;AACL,qBAAa,cAAc,cAAc,SAAS,IAAI,EAAE;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,CAAC,iBAAiB,kBAAkB,cAAc,UAAU;AAAA,EAC9D;AACA,aAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA,gBAAgB,CAAC,SAAuC,aAAa,KAAK,SAAS,EAAE;AAAA,MACrF,qBAAqB,MAAM,aAAa,EAAE;AAAA,MAC1C,qBAAqB,MAAM,aAAa,OAAO;AAAA,MAC/C,oBAAoB,MAAM,aAAa,MAAM;AAAA,MAC7C;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,cAAc,oBAAoB,kBAAkB;AAAA,EACzE;AACF;",
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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",
6
6
  "names": []
7
7
  }
@@ -33,18 +33,20 @@ var import_ds_utilities = require("@elliemae/ds-utilities");
33
33
  var import_useStore = require("../useStore");
34
34
  var import_constants = require("../../constants/index");
35
35
  const useFocusRegionTrackers = () => {
36
- const focusRegion = (0, import_useStore.useStore)((state) => state.focusRegion);
36
+ const focusRegion = (0, import_useStore.useInternalStore)((state) => state.focusRegion);
37
37
  const mutableFocusRegion = (0, import_ds_utilities.useMakeMutable)(focusRegion);
38
- const setFocusRegion = (0, import_useStore.useStore)((state) => state.setFocusRegion);
38
+ const setFocusRegion = (0, import_useStore.useInternalStore)((state) => state.setFocusRegion);
39
39
  return (0, import_react.useMemo)(
40
40
  () => ({
41
41
  mutableFocusRegion,
42
42
  trackFocusRegionSourceHeader: () => setFocusRegion(import_constants.REGIONS_FOCUSES.SOURCE_HEADER),
43
43
  trackFocusRegionSourcePanel: () => setFocusRegion(import_constants.REGIONS_FOCUSES.SOURCE_PANEL),
44
+ trackFocusRegionSourceBottom: () => setFocusRegion(import_constants.REGIONS_FOCUSES.SOURCE_BOTTOM),
44
45
  trackFocusRegionSourcePanelItem: () => setFocusRegion(import_constants.REGIONS_FOCUSES.SOURCE_PANEL_ITEM),
45
46
  trackFocusRegionSourcePanelFocusAll: () => setFocusRegion(import_constants.REGIONS_FOCUSES.SOURCE_PANEL_ITEM_MOVE_ALL),
46
47
  trackFocusRegionDestinationHeader: () => setFocusRegion(import_constants.REGIONS_FOCUSES.DESTINATION_HEADER),
47
48
  trackFocusRegionDestinationPanel: () => setFocusRegion(import_constants.REGIONS_FOCUSES.DESTINATION_PANEL),
49
+ trackFocusRegionDestinationBottom: () => setFocusRegion(import_constants.REGIONS_FOCUSES.DESTINATION_BOTTOM),
48
50
  trackFocusRegionDestinationPanelItem: () => setFocusRegion(import_constants.REGIONS_FOCUSES.DESTINATION_PANEL_ITEM),
49
51
  trackFocusRegionDestinationPanelFocusAll: () => setFocusRegion(import_constants.REGIONS_FOCUSES.DESTINATION_PANEL_ITEM_MOVE_ALL),
50
52
  trackFocusRegionHeader: (isDestinationPanel) => {
@@ -53,6 +55,12 @@ const useFocusRegionTrackers = () => {
53
55
  else
54
56
  setFocusRegion(import_constants.REGIONS_FOCUSES.SOURCE_HEADER);
55
57
  },
58
+ trackFocusRegionBottom: (isDestinationPanel) => {
59
+ if (isDestinationPanel)
60
+ setFocusRegion(import_constants.REGIONS_FOCUSES.DESTINATION_BOTTOM);
61
+ else
62
+ setFocusRegion(import_constants.REGIONS_FOCUSES.SOURCE_BOTTOM);
63
+ },
56
64
  trackFocusRegionPanel: (isDestinationPanel) => {
57
65
  if (isDestinationPanel)
58
66
  setFocusRegion(import_constants.REGIONS_FOCUSES.DESTINATION_PANEL);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/config/useFocusTracker/useFocusRegionTrackers.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { useMemo } from 'react';\nimport { useMakeMutable } from '@elliemae/ds-utilities';\nimport { useStore } from '../useStore';\nimport { REGIONS_FOCUSES } from '../../constants/index';\n\nexport const useFocusRegionTrackers = () => {\n const focusRegion = useStore((state) => state.focusRegion);\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 mutableFocusRegion = useMakeMutable(focusRegion);\n const setFocusRegion = useStore((state) => state.setFocusRegion);\n return useMemo(\n () => ({\n mutableFocusRegion,\n trackFocusRegionSourceHeader: () => setFocusRegion(REGIONS_FOCUSES.SOURCE_HEADER),\n trackFocusRegionSourcePanel: () => setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL),\n trackFocusRegionSourcePanelItem: () => setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL_ITEM),\n trackFocusRegionSourcePanelFocusAll: () => setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL_ITEM_MOVE_ALL),\n trackFocusRegionDestinationHeader: () => setFocusRegion(REGIONS_FOCUSES.DESTINATION_HEADER),\n trackFocusRegionDestinationPanel: () => setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL),\n trackFocusRegionDestinationPanelItem: () => setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL_ITEM),\n trackFocusRegionDestinationPanelFocusAll: () => setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL_ITEM_MOVE_ALL),\n trackFocusRegionHeader: (isDestinationPanel: boolean) => {\n if (isDestinationPanel) setFocusRegion(REGIONS_FOCUSES.DESTINATION_HEADER);\n else setFocusRegion(REGIONS_FOCUSES.SOURCE_HEADER);\n },\n trackFocusRegionPanel: (isDestinationPanel: boolean) => {\n if (isDestinationPanel) setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL);\n else setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL);\n },\n trackFocusRegionPanelItem: (isDestinationPanel: boolean) => {\n if (isDestinationPanel) setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL_ITEM);\n else setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL_ITEM);\n },\n trackFocusRegionPanelFocusAll: (isDestinationPanel: boolean) => {\n if (isDestinationPanel) setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL_ITEM_MOVE_ALL);\n else setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL_ITEM_MOVE_ALL);\n },\n trackFocusRegionReset: () => setFocusRegion(''),\n }),\n [mutableFocusRegion, setFocusRegion],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAwB;AACxB,0BAA+B;AAC/B,sBAAyB;AACzB,uBAAgC;AAEzB,MAAM,yBAAyB,MAAM;AAC1C,QAAM,kBAAc,0BAAS,CAAC,UAAU,MAAM,WAAW;AAKzD,QAAM,yBAAqB,oCAAe,WAAW;AACrD,QAAM,qBAAiB,0BAAS,CAAC,UAAU,MAAM,cAAc;AAC/D,aAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA,8BAA8B,MAAM,eAAe,iCAAgB,aAAa;AAAA,MAChF,6BAA6B,MAAM,eAAe,iCAAgB,YAAY;AAAA,MAC9E,iCAAiC,MAAM,eAAe,iCAAgB,iBAAiB;AAAA,MACvF,qCAAqC,MAAM,eAAe,iCAAgB,0BAA0B;AAAA,MACpG,mCAAmC,MAAM,eAAe,iCAAgB,kBAAkB;AAAA,MAC1F,kCAAkC,MAAM,eAAe,iCAAgB,iBAAiB;AAAA,MACxF,sCAAsC,MAAM,eAAe,iCAAgB,sBAAsB;AAAA,MACjG,0CAA0C,MAAM,eAAe,iCAAgB,+BAA+B;AAAA,MAC9G,wBAAwB,CAAC,uBAAgC;AACvD,YAAI;AAAoB,yBAAe,iCAAgB,kBAAkB;AAAA;AACpE,yBAAe,iCAAgB,aAAa;AAAA,MACnD;AAAA,MACA,uBAAuB,CAAC,uBAAgC;AACtD,YAAI;AAAoB,yBAAe,iCAAgB,iBAAiB;AAAA;AACnE,yBAAe,iCAAgB,YAAY;AAAA,MAClD;AAAA,MACA,2BAA2B,CAAC,uBAAgC;AAC1D,YAAI;AAAoB,yBAAe,iCAAgB,sBAAsB;AAAA;AACxE,yBAAe,iCAAgB,iBAAiB;AAAA,MACvD;AAAA,MACA,+BAA+B,CAAC,uBAAgC;AAC9D,YAAI;AAAoB,yBAAe,iCAAgB,+BAA+B;AAAA;AACjF,yBAAe,iCAAgB,0BAA0B;AAAA,MAChE;AAAA,MACA,uBAAuB,MAAM,eAAe,EAAE;AAAA,IAChD;AAAA,IACA,CAAC,oBAAoB,cAAc;AAAA,EACrC;AACF;",
4
+ "sourcesContent": ["import { useMemo } from 'react';\nimport { useMakeMutable } from '@elliemae/ds-utilities';\nimport { useInternalStore } from '../useStore';\nimport { REGIONS_FOCUSES } from '../../constants/index';\n\nexport const useFocusRegionTrackers = () => {\n const focusRegion = useInternalStore((state) => state.focusRegion);\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 mutableFocusRegion = useMakeMutable(focusRegion);\n const setFocusRegion = useInternalStore((state) => state.setFocusRegion);\n return useMemo(\n () => ({\n mutableFocusRegion,\n trackFocusRegionSourceHeader: () => setFocusRegion(REGIONS_FOCUSES.SOURCE_HEADER),\n trackFocusRegionSourcePanel: () => setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL),\n trackFocusRegionSourceBottom: () => setFocusRegion(REGIONS_FOCUSES.SOURCE_BOTTOM),\n trackFocusRegionSourcePanelItem: () => setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL_ITEM),\n trackFocusRegionSourcePanelFocusAll: () => setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL_ITEM_MOVE_ALL),\n trackFocusRegionDestinationHeader: () => setFocusRegion(REGIONS_FOCUSES.DESTINATION_HEADER),\n trackFocusRegionDestinationPanel: () => setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL),\n trackFocusRegionDestinationBottom: () => setFocusRegion(REGIONS_FOCUSES.DESTINATION_BOTTOM),\n trackFocusRegionDestinationPanelItem: () => setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL_ITEM),\n trackFocusRegionDestinationPanelFocusAll: () => setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL_ITEM_MOVE_ALL),\n trackFocusRegionHeader: (isDestinationPanel: boolean) => {\n if (isDestinationPanel) setFocusRegion(REGIONS_FOCUSES.DESTINATION_HEADER);\n else setFocusRegion(REGIONS_FOCUSES.SOURCE_HEADER);\n },\n trackFocusRegionBottom: (isDestinationPanel: boolean) => {\n if (isDestinationPanel) setFocusRegion(REGIONS_FOCUSES.DESTINATION_BOTTOM);\n else setFocusRegion(REGIONS_FOCUSES.SOURCE_BOTTOM);\n },\n trackFocusRegionPanel: (isDestinationPanel: boolean) => {\n if (isDestinationPanel) setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL);\n else setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL);\n },\n trackFocusRegionPanelItem: (isDestinationPanel: boolean) => {\n if (isDestinationPanel) setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL_ITEM);\n else setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL_ITEM);\n },\n trackFocusRegionPanelFocusAll: (isDestinationPanel: boolean) => {\n if (isDestinationPanel) setFocusRegion(REGIONS_FOCUSES.DESTINATION_PANEL_ITEM_MOVE_ALL);\n else setFocusRegion(REGIONS_FOCUSES.SOURCE_PANEL_ITEM_MOVE_ALL);\n },\n trackFocusRegionReset: () => setFocusRegion(''),\n }),\n [mutableFocusRegion, setFocusRegion],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAwB;AACxB,0BAA+B;AAC/B,sBAAiC;AACjC,uBAAgC;AAEzB,MAAM,yBAAyB,MAAM;AAC1C,QAAM,kBAAc,kCAAiB,CAAC,UAAU,MAAM,WAAW;AAKjE,QAAM,yBAAqB,oCAAe,WAAW;AACrD,QAAM,qBAAiB,kCAAiB,CAAC,UAAU,MAAM,cAAc;AACvE,aAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA,8BAA8B,MAAM,eAAe,iCAAgB,aAAa;AAAA,MAChF,6BAA6B,MAAM,eAAe,iCAAgB,YAAY;AAAA,MAC9E,8BAA8B,MAAM,eAAe,iCAAgB,aAAa;AAAA,MAChF,iCAAiC,MAAM,eAAe,iCAAgB,iBAAiB;AAAA,MACvF,qCAAqC,MAAM,eAAe,iCAAgB,0BAA0B;AAAA,MACpG,mCAAmC,MAAM,eAAe,iCAAgB,kBAAkB;AAAA,MAC1F,kCAAkC,MAAM,eAAe,iCAAgB,iBAAiB;AAAA,MACxF,mCAAmC,MAAM,eAAe,iCAAgB,kBAAkB;AAAA,MAC1F,sCAAsC,MAAM,eAAe,iCAAgB,sBAAsB;AAAA,MACjG,0CAA0C,MAAM,eAAe,iCAAgB,+BAA+B;AAAA,MAC9G,wBAAwB,CAAC,uBAAgC;AACvD,YAAI;AAAoB,yBAAe,iCAAgB,kBAAkB;AAAA;AACpE,yBAAe,iCAAgB,aAAa;AAAA,MACnD;AAAA,MACA,wBAAwB,CAAC,uBAAgC;AACvD,YAAI;AAAoB,yBAAe,iCAAgB,kBAAkB;AAAA;AACpE,yBAAe,iCAAgB,aAAa;AAAA,MACnD;AAAA,MACA,uBAAuB,CAAC,uBAAgC;AACtD,YAAI;AAAoB,yBAAe,iCAAgB,iBAAiB;AAAA;AACnE,yBAAe,iCAAgB,YAAY;AAAA,MAClD;AAAA,MACA,2BAA2B,CAAC,uBAAgC;AAC1D,YAAI;AAAoB,yBAAe,iCAAgB,sBAAsB;AAAA;AACxE,yBAAe,iCAAgB,iBAAiB;AAAA,MACvD;AAAA,MACA,+BAA+B,CAAC,uBAAgC;AAC9D,YAAI;AAAoB,yBAAe,iCAAgB,+BAA+B;AAAA;AACjF,yBAAe,iCAAgB,0BAA0B;AAAA,MAChE;AAAA,MACA,uBAAuB,MAAM,eAAe,EAAE;AAAA,IAChD;AAAA,IACA,CAAC,oBAAoB,cAAc;AAAA,EACrC;AACF;",
6
6
  "names": []
7
7
  }
@@ -34,10 +34,14 @@ var import_react_desc_prop_types = require("../react-desc-prop-types");
34
34
  var import_useStore = require("./useStore");
35
35
  var import_configureAutoCalculated = require("./configureAutoCalculated");
36
36
  const useShuttleV2 = (propsFromUser) => {
37
- const set = (0, import_useStore.useStore)((state) => state.set);
38
37
  const propsWithDefaults = (0, import_ds_utilities.useMemoMergePropsWithDefault)(propsFromUser, import_react_desc_prop_types.defaultProps);
38
+ const setProps = (0, import_useStore.usePropsStore)((state) => state.set);
39
+ const setAutoCalculated = (0, import_useStore.useInternalStore)((state) => state.set);
39
40
  (0, import_react.useEffect)(() => {
40
- set({ ...propsWithDefaults, ...(0, import_configureAutoCalculated.configureAutoCalculated)(propsWithDefaults) });
41
- }, [set, propsWithDefaults]);
41
+ setProps({ ...propsWithDefaults });
42
+ setAutoCalculated({
43
+ ...(0, import_configureAutoCalculated.configureAutoCalculated)(propsWithDefaults)
44
+ });
45
+ }, [propsWithDefaults, setProps, setAutoCalculated]);
42
46
  };
43
47
  //# sourceMappingURL=useShuttleV2.js.map
@@ -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';\nimport { type DSShuttleV2T, defaultProps } from '../react-desc-prop-types';\nimport { useStore } from './useStore';\nimport { configureAutoCalculated } from './configureAutoCalculated';\n\nexport const useShuttleV2 = (propsFromUser: DSShuttleV2T.Props) => {\n const set = useStore((state) => state.set);\n const propsWithDefaults = useMemoMergePropsWithDefault<DSShuttleV2T.InternalProps>(propsFromUser, defaultProps);\n useEffect(() => {\n set({ ...propsWithDefaults, ...configureAutoCalculated(propsWithDefaults) });\n }, [set, propsWithDefaults]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA0B;AAC1B,0BAA6C;AAC7C,mCAAgD;AAChD,sBAAyB;AACzB,qCAAwC;AAEjC,MAAM,eAAe,CAAC,kBAAsC;AACjE,QAAM,UAAM,0BAAS,CAAC,UAAU,MAAM,GAAG;AACzC,QAAM,wBAAoB,kDAAyD,eAAe,yCAAY;AAC9G,8BAAU,MAAM;AACd,QAAI,EAAE,GAAG,mBAAmB,OAAG,wDAAwB,iBAAiB,EAAE,CAAC;AAAA,EAC7E,GAAG,CAAC,KAAK,iBAAiB,CAAC;AAC7B;",
4
+ "sourcesContent": ["import { useEffect } from 'react';\nimport { useMemoMergePropsWithDefault } from '@elliemae/ds-utilities';\nimport { type DSShuttleV2T, defaultProps } from '../react-desc-prop-types';\nimport { usePropsStore, useInternalStore } from './useStore';\nimport { configureAutoCalculated } from './configureAutoCalculated';\n\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 useEffect(() => {\n setProps({ ...propsWithDefaults });\n setAutoCalculated({\n ...configureAutoCalculated(propsWithDefaults),\n });\n }, [propsWithDefaults, setProps, setAutoCalculated]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA0B;AAC1B,0BAA6C;AAC7C,mCAAgD;AAChD,sBAAgD;AAChD,qCAAwC;AAEjC,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,8BAAU,MAAM;AACd,aAAS,EAAE,GAAG,kBAAkB,CAAC;AACjC,sBAAkB;AAAA,MAChB,OAAG,wDAAwB,iBAAiB;AAAA,IAC9C,CAAC;AAAA,EACH,GAAG,CAAC,mBAAmB,UAAU,iBAAiB,CAAC;AACrD;",
6
6
  "names": []
7
7
  }