@wavemaker/react-runtime 11.14.1-15.6409

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 (402) hide show
  1. package/actions/base-action.js +32 -0
  2. package/actions/login-action.js +53 -0
  3. package/actions/logout-action.js +41 -0
  4. package/actions/navigation-action.js +145 -0
  5. package/actions/notification-action.js +147 -0
  6. package/actions/timer-action.js +164 -0
  7. package/actions/toast-provider.js +111 -0
  8. package/actions/toast.js +115 -0
  9. package/actions/toast.service.js +94 -0
  10. package/actions/types/index.js +11 -0
  11. package/components/advanced/carousel/index.js +456 -0
  12. package/components/advanced/carousel/props.js +5 -0
  13. package/components/advanced/carousel/template.js +72 -0
  14. package/components/advanced/login/index.js +307 -0
  15. package/components/advanced/login/props.js +5 -0
  16. package/components/advanced/marquee/index.js +158 -0
  17. package/components/advanced/marquee/props.js +5 -0
  18. package/components/basic/anchor/index.js +239 -0
  19. package/components/basic/anchor/props.js +5 -0
  20. package/components/basic/audio/index.js +61 -0
  21. package/components/basic/html/index.js +158 -0
  22. package/components/basic/icon/index.js +85 -0
  23. package/components/basic/iframe/iframe.utils.js +10 -0
  24. package/components/basic/iframe/index.js +95 -0
  25. package/components/basic/label/index.js +139 -0
  26. package/components/basic/message/index.js +120 -0
  27. package/components/basic/message/props.js +5 -0
  28. package/components/basic/picture/index.js +117 -0
  29. package/components/basic/picture/props.js +5 -0
  30. package/components/basic/progress-bar/index.js +168 -0
  31. package/components/basic/progress-bar/props.js +18 -0
  32. package/components/basic/progress-circle/index.js +196 -0
  33. package/components/basic/progress-circle/props.js +16 -0
  34. package/components/basic/richtexteditor/index.js +533 -0
  35. package/components/basic/richtexteditor/props.js +5 -0
  36. package/components/basic/search/index.js +1023 -0
  37. package/components/basic/search/props.js +5 -0
  38. package/components/basic/search/providers.js +350 -0
  39. package/components/basic/spinner/index.js +202 -0
  40. package/components/basic/spinner/props.js +12 -0
  41. package/components/basic/tile/index.js +91 -0
  42. package/components/basic/tree/Components/TreeNodeComponent.js +142 -0
  43. package/components/basic/tree/index.js +503 -0
  44. package/components/basic/tree/props.js +5 -0
  45. package/components/basic/tree/utils.js +154 -0
  46. package/components/basic/video/index.js +85 -0
  47. package/components/basic/video/props.js +5 -0
  48. package/components/chart/components/barColumnChart/index.js +132 -0
  49. package/components/chart/components/barColumnChart/props.js +5 -0
  50. package/components/chart/components/bubbleChart/index.js +176 -0
  51. package/components/chart/components/bubbleChart/props.js +5 -0
  52. package/components/chart/components/chartLegend/components/ClassicLegendItem.js +39 -0
  53. package/components/chart/components/chartLegend/components/FuriousLegendItem.js +81 -0
  54. package/components/chart/components/chartLegend/index.js +69 -0
  55. package/components/chart/components/chartLegend/props.js +5 -0
  56. package/components/chart/components/chartLegend/utils.js +31 -0
  57. package/components/chart/components/chartTooltip/index.js +53 -0
  58. package/components/chart/components/chartTooltip/styles.js +37 -0
  59. package/components/chart/components/chartTooltip/utils.js +23 -0
  60. package/components/chart/components/cumulativeLineChart/index.js +113 -0
  61. package/components/chart/components/cumulativeLineChart/props.js +5 -0
  62. package/components/chart/components/cumulativeLineChart/utils.js +34 -0
  63. package/components/chart/components/index.js +40 -0
  64. package/components/chart/components/lineAreaChart/index.js +140 -0
  65. package/components/chart/components/lineAreaChart/props.js +5 -0
  66. package/components/chart/components/noDataMessage/index.js +27 -0
  67. package/components/chart/components/pieDonutChart/index.js +171 -0
  68. package/components/chart/components/pieDonutChart/props.js +5 -0
  69. package/components/chart/constant.js +72 -0
  70. package/components/chart/index.js +930 -0
  71. package/components/chart/props.js +5 -0
  72. package/components/chart/utils.js +691 -0
  73. package/components/common/AppSpinner.js +36 -0
  74. package/components/common/app-spinner.js +26 -0
  75. package/components/common/index.js +12 -0
  76. package/components/constants.js +1208 -0
  77. package/components/container/accordion/accordion-pane/index.js +108 -0
  78. package/components/container/accordion/accordion-pane/props.js +11 -0
  79. package/components/container/accordion/index.js +232 -0
  80. package/components/container/accordion/props.js +13 -0
  81. package/components/container/alignment-utils.js +183 -0
  82. package/components/container/index.js +188 -0
  83. package/components/container/layout-grid/grid-column/index.js +34 -0
  84. package/components/container/layout-grid/grid-row/index.js +24 -0
  85. package/components/container/layout-grid/index.js +33 -0
  86. package/components/container/linear-layout/index.js +72 -0
  87. package/components/container/linear-layout/linear-layout-item/index.js +43 -0
  88. package/components/container/panel/components/panel-header/index.js +144 -0
  89. package/components/container/panel/components/panel-header/props.js +5 -0
  90. package/components/container/panel/hooks.js +144 -0
  91. package/components/container/panel/index.js +286 -0
  92. package/components/container/panel/props.js +5 -0
  93. package/components/container/props.js +5 -0
  94. package/components/container/tabs/index.js +379 -0
  95. package/components/container/tabs/props.js +20 -0
  96. package/components/container/tabs/tab-pane/index.js +42 -0
  97. package/components/container/tabs/tab-pane/props.js +5 -0
  98. package/components/container/wizard/WizardContext.js +16 -0
  99. package/components/container/wizard/components/StepComponents.js +100 -0
  100. package/components/container/wizard/components/WizardStep.js +89 -0
  101. package/components/container/wizard/index.js +710 -0
  102. package/components/container/wizard/props.js +5 -0
  103. package/components/container/wizard/utils.js +133 -0
  104. package/components/container/wizard/wizard-action/index.js +22 -0
  105. package/components/container/wizard/wizard-step/index.js +94 -0
  106. package/components/data/card/card-actions/index.js +24 -0
  107. package/components/data/card/card-content/index.js +38 -0
  108. package/components/data/card/card-footer/index.js +24 -0
  109. package/components/data/card/index.js +246 -0
  110. package/components/data/card/props.js +5 -0
  111. package/components/data/form/base-form/constant.js +39 -0
  112. package/components/data/form/base-form/index.js +460 -0
  113. package/components/data/form/base-form/props.js +29 -0
  114. package/components/data/form/base-form/utils.js +42 -0
  115. package/components/data/form/dynamic-fields/index.js +196 -0
  116. package/components/data/form/dynamic-fields/props.js +5 -0
  117. package/components/data/form/dynamic-fields/utils.js +237 -0
  118. package/components/data/form/form-action/index.js +71 -0
  119. package/components/data/form/form-body/index.js +26 -0
  120. package/components/data/form/form-context.js +34 -0
  121. package/components/data/form/form-controller/props.js +19 -0
  122. package/components/data/form/form-controller/validation-contrustor.js +313 -0
  123. package/components/data/form/form-controller/withFormController.js +320 -0
  124. package/components/data/form/form-field/base-field.js +138 -0
  125. package/components/data/form/form-field/index.js +36 -0
  126. package/components/data/form/form-field/props.js +5 -0
  127. package/components/data/form/form-footer/index.js +26 -0
  128. package/components/data/form/form-header/index.js +56 -0
  129. package/components/data/form/index.js +39 -0
  130. package/components/data/form/props.js +5 -0
  131. package/components/data/list/components/GroupHeader.js +35 -0
  132. package/components/data/list/components/GroupedListItems.js +98 -0
  133. package/components/data/list/components/ListContainer.js +27 -0
  134. package/components/data/list/components/ListDND.js +241 -0
  135. package/components/data/list/components/ListHeader.js +59 -0
  136. package/components/data/list/components/ListItem.js +148 -0
  137. package/components/data/list/components/ListItemWithTemplate.js +59 -0
  138. package/components/data/list/components/ListItems.js +231 -0
  139. package/components/data/list/components/ListPagination.js +165 -0
  140. package/components/data/list/components/LoadMoreButton.js +39 -0
  141. package/components/data/list/components/NoDataMessage.js +22 -0
  142. package/components/data/list/components/StandardListItems.js +84 -0
  143. package/components/data/list/components/index.js +119 -0
  144. package/components/data/list/components/props.js +5 -0
  145. package/components/data/list/hooks/index.js +75 -0
  146. package/components/data/list/hooks/props.js +5 -0
  147. package/components/data/list/hooks/useCurrentPageItems.js +48 -0
  148. package/components/data/list/hooks/useGroupedData.js +37 -0
  149. package/components/data/list/hooks/useListData.js +60 -0
  150. package/components/data/list/hooks/useListEffects.js +285 -0
  151. package/components/data/list/hooks/useListEventHandlers.js +291 -0
  152. package/components/data/list/hooks/useListPagination.js +168 -0
  153. package/components/data/list/hooks/useListState.js +98 -0
  154. package/components/data/list/hooks/useListStateManager.js +195 -0
  155. package/components/data/list/hooks/usePaginatedGroupedData.js +121 -0
  156. package/components/data/list/index.js +611 -0
  157. package/components/data/list/props.js +5 -0
  158. package/components/data/list/templates/media-template.js +53 -0
  159. package/components/data/list/utils/constants.js +81 -0
  160. package/components/data/list/utils/list-helpers.js +173 -0
  161. package/components/data/list/utils/list-widget-methods.js +114 -0
  162. package/components/data/live-filter/index.js +279 -0
  163. package/components/data/live-filter/props.js +12 -0
  164. package/components/data/live-form/index.js +93 -0
  165. package/components/data/live-form/props.js +16 -0
  166. package/components/data/pagination/components/BasicPagination.js +77 -0
  167. package/components/data/pagination/components/ClassicPagination.js +191 -0
  168. package/components/data/pagination/components/InlinePagination.js +99 -0
  169. package/components/data/pagination/components/LoadingComponent.js +31 -0
  170. package/components/data/pagination/components/PageSizeSelector.js +175 -0
  171. package/components/data/pagination/components/PagerNavigation.js +105 -0
  172. package/components/data/pagination/components/TotalRecords.js +52 -0
  173. package/components/data/pagination/components/index.js +47 -0
  174. package/components/data/pagination/components/props.js +5 -0
  175. package/components/data/pagination/hooks/index.js +19 -0
  176. package/components/data/pagination/hooks/props.js +5 -0
  177. package/components/data/pagination/hooks/useNavigationSize.js +44 -0
  178. package/components/data/pagination/hooks/usePagination.js +796 -0
  179. package/components/data/pagination/index.js +322 -0
  180. package/components/data/table/components/AddNewRow.js +190 -0
  181. package/components/data/table/components/EditableCell.js +91 -0
  182. package/components/data/table/components/FieldValidationError.js +24 -0
  183. package/components/data/table/components/RowExpansionButton.js +74 -0
  184. package/components/data/table/components/TableBody.js +279 -0
  185. package/components/data/table/components/TableFilters.js +325 -0
  186. package/components/data/table/components/TableFooterActions.js +48 -0
  187. package/components/data/table/components/TableHeader.js +174 -0
  188. package/components/data/table/components/TablePanelHeading.js +68 -0
  189. package/components/data/table/components/index.js +74 -0
  190. package/components/data/table/hooks/index.js +219 -0
  191. package/components/data/table/hooks/useCellState.js +117 -0
  192. package/components/data/table/hooks/useDynamicColumns.js +85 -0
  193. package/components/data/table/hooks/useEditingState.js +47 -0
  194. package/components/data/table/hooks/useFormWidget.js +184 -0
  195. package/components/data/table/hooks/usePaginationState.js +60 -0
  196. package/components/data/table/hooks/usePanelStructure.js +40 -0
  197. package/components/data/table/hooks/useResponsiveColumns.js +34 -0
  198. package/components/data/table/hooks/useRowExpansion.js +110 -0
  199. package/components/data/table/hooks/useRowHandlers.js +38 -0
  200. package/components/data/table/hooks/useRowSelection.js +213 -0
  201. package/components/data/table/hooks/useServerSideSorting.js +165 -0
  202. package/components/data/table/hooks/useTableColumns.js +263 -0
  203. package/components/data/table/hooks/useTableData.js +154 -0
  204. package/components/data/table/hooks/useTableEdit.js +467 -0
  205. package/components/data/table/hooks/useTableEffects.js +139 -0
  206. package/components/data/table/hooks/useTableFilter.js +389 -0
  207. package/components/data/table/hooks/useTableInitialization.js +103 -0
  208. package/components/data/table/hooks/useTableState.js +69 -0
  209. package/components/data/table/hooks/useTableStateManager.js +558 -0
  210. package/components/data/table/index.js +1295 -0
  211. package/components/data/table/live-table/index.js +232 -0
  212. package/components/data/table/props.js +5 -0
  213. package/components/data/table/table-action/index.js +78 -0
  214. package/components/data/table/table-column/index.js +35 -0
  215. package/components/data/table/table-row/index.js +49 -0
  216. package/components/data/table/table-row-action/index.js +74 -0
  217. package/components/data/table/utils/buildSelectionColumns.js +173 -0
  218. package/components/data/table/utils/columnBuilder.js +209 -0
  219. package/components/data/table/utils/columnProxy.js +48 -0
  220. package/components/data/table/utils/columnWidthDistribution.js +98 -0
  221. package/components/data/table/utils/constants.js +80 -0
  222. package/components/data/table/utils/crud-handlers.js +518 -0
  223. package/components/data/table/utils/dynamic-columns.js +118 -0
  224. package/components/data/table/utils/index.js +607 -0
  225. package/components/data/table/utils/renderDisplayCell.js +183 -0
  226. package/components/data/table/utils/selectionUtils.js +166 -0
  227. package/components/data/table/utils/table-helpers.js +100 -0
  228. package/components/data/table/utils/validation.js +124 -0
  229. package/components/data/types.js +113 -0
  230. package/components/data/utils/field-data-utils.js +66 -0
  231. package/components/data/utils/filter-field-util.js +81 -0
  232. package/components/data/utils/index.js +216 -0
  233. package/components/dialogs/alert-dialog/index.js +80 -0
  234. package/components/dialogs/confirm-dialog/index.js +105 -0
  235. package/components/dialogs/dialog/index.js +56 -0
  236. package/components/dialogs/dialog-actions/index.js +18 -0
  237. package/components/dialogs/dialog-body/index.js +21 -0
  238. package/components/dialogs/dialog-content/index.js +30 -0
  239. package/components/dialogs/dialog-header/index.js +93 -0
  240. package/components/dialogs/iframe-dialog/index.js +114 -0
  241. package/components/dialogs/index.js +129 -0
  242. package/components/dialogs/login-dialog/index.js +369 -0
  243. package/components/dialogs/login-dialog/props.js +5 -0
  244. package/components/dialogs/page-dialog/index.js +96 -0
  245. package/components/dialogs/withDialogWrapper.js +108 -0
  246. package/components/form/button/index.js +216 -0
  247. package/components/form/button-group/index.js +60 -0
  248. package/components/input/calendar/index.js +546 -0
  249. package/components/input/calendar/props.js +5 -0
  250. package/components/input/calendar/utils.js +340 -0
  251. package/components/input/chips/SortableChip/index.js +115 -0
  252. package/components/input/chips/SortableChip/props.js +5 -0
  253. package/components/input/chips/index.js +488 -0
  254. package/components/input/chips/props.js +5 -0
  255. package/components/input/chips/utils.js +259 -0
  256. package/components/input/color-picker/index.js +678 -0
  257. package/components/input/color-picker/props.js +5 -0
  258. package/components/input/composite/index.js +137 -0
  259. package/components/input/currency/index.js +263 -0
  260. package/components/input/currency/props.js +5 -0
  261. package/components/input/default/checkbox/index.js +230 -0
  262. package/components/input/default/checkbox/props.js +5 -0
  263. package/components/input/default/checkboxset/index.js +476 -0
  264. package/components/input/default/checkboxset/props.js +5 -0
  265. package/components/input/default/radioset/index.js +379 -0
  266. package/components/input/default/radioset/props.js +5 -0
  267. package/components/input/default/switch/index.js +490 -0
  268. package/components/input/default/switch/prop.js +5 -0
  269. package/components/input/epoch/date/components/DatePickerPopover.js +220 -0
  270. package/components/input/epoch/date/index.js +520 -0
  271. package/components/input/epoch/date/props.js +5 -0
  272. package/components/input/epoch/date/styled.js +70 -0
  273. package/components/input/epoch/date/utils.js +108 -0
  274. package/components/input/epoch/datetime/index.js +656 -0
  275. package/components/input/epoch/datetime/props.js +5 -0
  276. package/components/input/epoch/datetime/styled.js +90 -0
  277. package/components/input/epoch/datetime/utils.js +244 -0
  278. package/components/input/epoch/time/index.js +412 -0
  279. package/components/input/epoch/time/props.js +5 -0
  280. package/components/input/epoch/time/utils.js +209 -0
  281. package/components/input/fileupload/Utils.js +134 -0
  282. package/components/input/fileupload/components/ListItems.js +140 -0
  283. package/components/input/fileupload/components/MultiUpload.js +85 -0
  284. package/components/input/fileupload/components/SingleUpload.js +65 -0
  285. package/components/input/fileupload/index.js +170 -0
  286. package/components/input/fileupload/props.js +5 -0
  287. package/components/input/fileupload/useFileUpload.js +400 -0
  288. package/components/input/number/index.js +295 -0
  289. package/components/input/number/props.js +5 -0
  290. package/components/input/rating/index.js +368 -0
  291. package/components/input/rating/props.js +5 -0
  292. package/components/input/select/index.js +344 -0
  293. package/components/input/select/props.js +5 -0
  294. package/components/input/slider/index.js +167 -0
  295. package/components/input/slider/props.js +5 -0
  296. package/components/input/text/index.js +434 -0
  297. package/components/input/text/props.js +5 -0
  298. package/components/input/text/util.js +179 -0
  299. package/components/input/textarea/index.js +347 -0
  300. package/components/input/textarea/props.js +5 -0
  301. package/components/layout/footer/index.js +30 -0
  302. package/components/layout/header/index.js +30 -0
  303. package/components/layout/leftnav/index.js +44 -0
  304. package/components/layout/rightnav/index.js +32 -0
  305. package/components/layout/topnav/index.js +34 -0
  306. package/components/navbar/index.js +41 -0
  307. package/components/navbar/nav/index.js +102 -0
  308. package/components/navbar/nav/props.js +5 -0
  309. package/components/navbar/nav-item/index.js +44 -0
  310. package/components/navigation/breadcrumb/index.js +56 -0
  311. package/components/navigation/breadcrumb/props.js +5 -0
  312. package/components/navigation/menu/components/ListItems.js +66 -0
  313. package/components/navigation/menu/constants.js +101 -0
  314. package/components/navigation/menu/index.js +807 -0
  315. package/components/navigation/menu/props.js +5 -0
  316. package/components/navigation/popover/index.js +209 -0
  317. package/components/navigation/popover/props.js +15 -0
  318. package/components/page/content/index.js +28 -0
  319. package/components/page/error-boundary/index.js +108 -0
  320. package/components/page/index.js +137 -0
  321. package/components/page/page-content/index.js +23 -0
  322. package/components/page/partial/index.js +36 -0
  323. package/components/page/partial-container/index.js +48 -0
  324. package/components/page/props.js +5 -0
  325. package/components/page/toast-container/index.js +33 -0
  326. package/components/prefab/container/index.js +46 -0
  327. package/components/prefab/index.js +67 -0
  328. package/context/AppContext.js +25 -0
  329. package/context/AppSpinnerProvider.js +43 -0
  330. package/context/LocalizationProvider.js +79 -0
  331. package/context/PrefabContext.js +66 -0
  332. package/context/WidgetProvider.js +187 -0
  333. package/core/app-config.js +1 -0
  334. package/core/app.service.js +357 -0
  335. package/core/appVariablesStore.js +20 -0
  336. package/core/appstore.js +88 -0
  337. package/core/constants/currency-constant.js +1071 -0
  338. package/core/constants/events.js +34 -0
  339. package/core/constants/index.js +27 -0
  340. package/core/dialog.service.js +76 -0
  341. package/core/event-notifier.js +151 -0
  342. package/core/formatter/date-formatters.js +222 -0
  343. package/core/formatter/index.js +131 -0
  344. package/core/formatter/number-formatters.js +142 -0
  345. package/core/formatter/security-formatters.js +323 -0
  346. package/core/formatter/string-formatters.js +52 -0
  347. package/core/formatter/types.js +18 -0
  348. package/core/formatters.js +24 -0
  349. package/core/proxy-service.js +412 -0
  350. package/core/script-registry.js +63 -0
  351. package/core/security.service.js +11 -0
  352. package/core/util/common.js +33 -0
  353. package/core/util/dom.js +107 -0
  354. package/core/util/index.js +136 -0
  355. package/core/util/security.js +184 -0
  356. package/core/util/utils.js +189 -0
  357. package/core/widget-observer.js +98 -0
  358. package/higherOrder/BaseApp.js +430 -0
  359. package/higherOrder/BaseAppProps.js +5 -0
  360. package/higherOrder/BaseDateTime.js +251 -0
  361. package/higherOrder/BasePage.js +715 -0
  362. package/higherOrder/BasePartial.js +124 -0
  363. package/higherOrder/BasePrefab.js +145 -0
  364. package/higherOrder/DataNav.js +377 -0
  365. package/higherOrder/helper.js +43 -0
  366. package/higherOrder/props.js +5 -0
  367. package/higherOrder/withBaseWrapper.js +183 -0
  368. package/hooks/useAccess.js +308 -0
  369. package/hooks/useAppConfig.js +42 -0
  370. package/hooks/useAuth.js +562 -0
  371. package/hooks/useDataSourceSubscription.js +125 -0
  372. package/hooks/useDebounce.js +76 -0
  373. package/hooks/useDeviceVisibility.js +49 -0
  374. package/hooks/useHttp.js +338 -0
  375. package/libs/index.js +20 -0
  376. package/mui-config/theme-provider.js +17 -0
  377. package/mui-config/theme.js +371 -0
  378. package/package-lock.json +10177 -0
  379. package/package.json +95 -0
  380. package/store/index.js +33 -0
  381. package/store/middleware/navigationMiddleware.js +48 -0
  382. package/store/slices/appConfigSlice.js +103 -0
  383. package/store/slices/authSlice.js +508 -0
  384. package/store/slices/i18nSlice.js +206 -0
  385. package/types/index.js +15 -0
  386. package/utils/dataset-util.js +174 -0
  387. package/utils/eval-expression.js +32 -0
  388. package/utils/form-state.util.js +140 -0
  389. package/utils/form-utils.js +187 -0
  390. package/utils/format-util.js +260 -0
  391. package/utils/page-params-util.js +24 -0
  392. package/utils/resource-url.js +27 -0
  393. package/utils/state-persistance.js +343 -0
  394. package/utils/style-utils.js +73 -0
  395. package/utils/transformedDataset-utils.js +633 -0
  396. package/utils/widget-cleanup-util.js +84 -0
  397. package/utils/widgets.js +99 -0
  398. package/variables/base-variable.js +173 -0
  399. package/variables/constants.js +27 -0
  400. package/variables/live-variable.js +166 -0
  401. package/variables/model-variable.js +77 -0
  402. package/variables/service-variable.js +307 -0
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useTableState = void 0;
7
+ var _react = require("react");
8
+ var useTableState = exports.useTableState = function useTableState(_ref) {
9
+ var _ref$editMode = _ref.editMode,
10
+ editMode = _ref$editMode === void 0 ? "none" : _ref$editMode,
11
+ _ref$radioselect = _ref.radioselect,
12
+ radioselect = _ref$radioselect === void 0 ? false : _ref$radioselect,
13
+ _ref$multiselect = _ref.multiselect,
14
+ multiselect = _ref$multiselect === void 0 ? false : _ref$multiselect;
15
+ // State to track active rows - now supports multiple rows
16
+ var _useState = (0, _react.useState)([]),
17
+ activeRowIds = _useState[0],
18
+ setActiveRowIds = _useState[1];
19
+
20
+ // Handle row click for active state
21
+ var handleRowActiveClick = (0, _react.useCallback)(function (rowId, isSelectionHandled, isEditingOrAdding) {
22
+ // Don't change active row if currently editing a row or adding new row
23
+ if (isEditingOrAdding) {
24
+ return;
25
+ }
26
+
27
+ // For multiselect, active state is synced with selection state
28
+ // so we don't need to manually toggle here
29
+ if (multiselect) {
30
+ // Active state will be synced via the useEffect in the main table component
31
+ return;
32
+ } else {
33
+ // For single selection or no selection, replace with single row
34
+ setActiveRowIds([rowId]);
35
+ }
36
+ }, [multiselect]);
37
+
38
+ // Check if a row is active
39
+ var isRowActive = (0, _react.useCallback)(function (rowId, isSelected) {
40
+ // Check if the row is in the active rows array
41
+ return activeRowIds.includes(rowId);
42
+ }, [activeRowIds]);
43
+
44
+ // Clear active rows
45
+ var clearActiveRow = (0, _react.useCallback)(function () {
46
+ setActiveRowIds([]);
47
+ }, []);
48
+
49
+ // Set active rows directly - now accepts string, array, or null
50
+ var setActiveRow = (0, _react.useCallback)(function (rowIds) {
51
+ if (rowIds === null) {
52
+ setActiveRowIds([]);
53
+ } else if (typeof rowIds === "string") {
54
+ setActiveRowIds([rowIds]);
55
+ } else {
56
+ setActiveRowIds(rowIds);
57
+ }
58
+ }, []);
59
+
60
+ // For backwards compatibility, provide activeRowId as the first active row
61
+ var activeRowId = activeRowIds.length > 0 ? activeRowIds[0] : null;
62
+ return {
63
+ activeRowIds: activeRowIds,
64
+ setActiveRow: setActiveRow,
65
+ clearActiveRow: clearActiveRow,
66
+ handleRowActiveClick: handleRowActiveClick,
67
+ isRowActive: isRowActive
68
+ };
69
+ };
@@ -0,0 +1,558 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useTableStateManager = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = require("react");
10
+ var _tableHelpers = require("../utils/table-helpers");
11
+ var _lodashEs = require("lodash-es");
12
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ // Unsupported navigation types for state persistence
15
+ var UNSUPPORTED_STATE_PERSISTENCE_TYPES = ["Scroll", "On-Demand", "Inline"];
16
+ var useTableStateManager = exports.useTableStateManager = function useTableStateManager(props) {
17
+ var name = props.name,
18
+ storage = props.storage,
19
+ currentPage = props.currentPage,
20
+ currentPageSize = props.currentPageSize,
21
+ selectedRowId = props.selectedRowId,
22
+ selectedRowIds = props.selectedRowIds,
23
+ internalDataset = props.internalDataset,
24
+ initialActualPageSize = props.initialActualPageSize,
25
+ datasource = props.datasource,
26
+ multiselect = props.multiselect,
27
+ filterData = props.filterData,
28
+ sortData = props.sortData,
29
+ _props$navigation = props.navigation,
30
+ navigation = _props$navigation === void 0 ? "Pager" : _props$navigation,
31
+ _props$isStateConfigu = props.isStateConfigured,
32
+ isStateConfigured = _props$isStateConfigu === void 0 ? false : _props$isStateConfigu,
33
+ defaultPageSize = props.defaultPageSize,
34
+ initialSortState = props.initialSortState,
35
+ initialFilterState = props.initialFilterState;
36
+
37
+ // Track previous state to return when loading
38
+ var prevStateRef = (0, _react.useRef)({});
39
+
40
+ // Track if we've already calculated state after loading
41
+ var hasCalculatedAfterLoadingRef = (0, _react.useRef)(false);
42
+
43
+ // Track the previous loading state
44
+ var wasLoadingRef = (0, _react.useRef)(false);
45
+
46
+ // Track complete selection state with page info for multiselect
47
+ var selectionStateRef = (0, _react.useRef)([]);
48
+
49
+ // Track previous filter data to detect changes
50
+ var prevFilterDataRef = (0, _react.useRef)(undefined);
51
+
52
+ // Track if filter state has been persisted after a change
53
+ var filterStatePersistenceTriggeredRef = (0, _react.useRef)(false);
54
+
55
+ // Track previous sort data to detect changes
56
+ var prevSortDataRef = (0, _react.useRef)(undefined);
57
+
58
+ // Build the current state object
59
+ var currentState = (0, _react.useMemo)(function () {
60
+ var isLoading = !!(datasource !== null && datasource !== void 0 && datasource.loading);
61
+
62
+ // Detect first calculation after loading becomes false
63
+ var isFirstCalculationAfterLoading = wasLoadingRef.current && !isLoading && !hasCalculatedAfterLoadingRef.current;
64
+
65
+ // If loading just started, reset the flag for next time
66
+ if (isLoading && !wasLoadingRef.current) {
67
+ hasCalculatedAfterLoadingRef.current = false;
68
+ }
69
+
70
+ // Update the loading state tracker
71
+ wasLoadingRef.current = isLoading;
72
+
73
+ // If datasource is loading, return the previous state without any calculations
74
+ if (isLoading) {
75
+ return prevStateRef.current;
76
+ }
77
+
78
+ // If this is the first calculation after loading, mark as calculated and return minimal state
79
+ if (isFirstCalculationAfterLoading) {
80
+ hasCalculatedAfterLoadingRef.current = true;
81
+ // Clear selection state ref for fresh start after loading
82
+ if (multiselect) {
83
+ selectionStateRef.current = [];
84
+ }
85
+ // Return minimal state for first calculation after loading to avoid stale data
86
+ return {
87
+ pagination: currentPage
88
+ };
89
+ }
90
+
91
+ // Otherwise, calculate the new state
92
+ var state = {};
93
+
94
+ // Check if filtering is active and different from initial
95
+ var hasActiveFilter = filterData !== undefined && filterData.length > 0 && JSON.stringify(filterData) !== JSON.stringify(initialFilterState || []);
96
+
97
+ // Include actualPageSize if it's provided (should be persisted once and never change)
98
+ if (initialActualPageSize !== undefined) {
99
+ state.actualpagesize = initialActualPageSize;
100
+ }
101
+
102
+ // Include search/filter state if it differs from initial
103
+ if (hasActiveFilter) {
104
+ state.search = filterData;
105
+
106
+ // Include sort state if it differs from initial (even when filtering)
107
+ var _isSortChanged = sortData && JSON.stringify(sortData) !== JSON.stringify(initialSortState);
108
+ if (_isSortChanged) {
109
+ state.sort = sortData;
110
+ }
111
+
112
+ // When filtering is active, don't include pagination or selectedItem at all
113
+ // They should be completely removed from state
114
+ // Save the calculated state for next time
115
+ prevStateRef.current = state;
116
+ return state;
117
+ }
118
+
119
+ // Include sort state if it differs from initial
120
+ var isSortChanged = sortData && JSON.stringify(sortData) !== JSON.stringify(initialSortState);
121
+ if (isSortChanged) {
122
+ state.sort = sortData;
123
+ }
124
+
125
+ // Only include pagination if not on page 1 (default)
126
+ if (currentPage !== 1) {
127
+ state.pagination = currentPage;
128
+ }
129
+
130
+ // Get selected items based on multiselect mode
131
+ var selectedIds = multiselect ? selectedRowIds || [] : selectedRowId ? [selectedRowId] : [];
132
+ if (multiselect) {
133
+ // For multiselect, we need to maintain selections across pages
134
+ // Get all currently selected IDs
135
+ var allSelectedIds = new Set(selectedIds);
136
+
137
+ // Build a map of items on the current page for quick lookup
138
+ var currentPageItemsMap = new Map();
139
+ internalDataset.forEach(function (item, index) {
140
+ if (item._wmRowId) {
141
+ currentPageItemsMap.set(item._wmRowId, index);
142
+ }
143
+ });
144
+
145
+ // Update selection state:
146
+ // 1. Keep selections from other pages if their IDs are still selected
147
+ // 2. Add/update selections from current page
148
+ var updatedSelections = [];
149
+
150
+ // Keep selections from other pages that are still selected
151
+ selectionStateRef.current.forEach(function (item) {
152
+ if (item.page !== currentPage && allSelectedIds.has(item.id)) {
153
+ updatedSelections.push(item);
154
+ }
155
+ });
156
+
157
+ // Add selections from current page
158
+ allSelectedIds.forEach(function (id) {
159
+ var index = currentPageItemsMap.get(id);
160
+ if (index !== undefined) {
161
+ updatedSelections.push({
162
+ page: currentPage,
163
+ index: index,
164
+ id: id
165
+ });
166
+ }
167
+ });
168
+
169
+ // Update the ref
170
+ selectionStateRef.current = updatedSelections;
171
+
172
+ // Only include selectedItem if there are selections
173
+ if (updatedSelections.length > 0) {
174
+ state.selectedItem = updatedSelections.map(function (_ref) {
175
+ var page = _ref.page,
176
+ index = _ref.index;
177
+ return {
178
+ page: page,
179
+ index: index
180
+ };
181
+ });
182
+ }
183
+ } else {
184
+ // For single select, just find the selected item in current dataset
185
+ var selectedIndices = [];
186
+ selectedIds.forEach(function (id) {
187
+ var index = internalDataset.findIndex(function (item) {
188
+ return item._wmRowId === id;
189
+ });
190
+ if (index >= 0) {
191
+ selectedIndices.push(index);
192
+ }
193
+ });
194
+
195
+ // Only include selectedItem if there are selections
196
+ if (selectedIndices.length > 0) {
197
+ // Build selected items with page info
198
+ var selectedItemsWithPage = selectedIndices.map(function (idx) {
199
+ return {
200
+ page: currentPage,
201
+ index: idx
202
+ };
203
+ });
204
+ state.selectedItem = selectedItemsWithPage;
205
+ }
206
+ }
207
+
208
+ // Save the calculated state for next time
209
+ prevStateRef.current = state;
210
+
211
+ // Only include pagesize if it differs from default
212
+ if (defaultPageSize && currentPageSize !== defaultPageSize) {
213
+ state.pagesize = currentPageSize;
214
+ }
215
+ return state;
216
+ }, [currentPage, currentPageSize, selectedRowId, selectedRowIds, internalDataset, initialActualPageSize, multiselect, datasource === null || datasource === void 0 ? void 0 : datasource.loading, filterData, sortData, defaultPageSize, initialSortState, initialFilterState]);
217
+
218
+ // Get state for page size change
219
+ var getStateForPageSizeChange = (0, _react.useCallback)(function (newPageSize, existingSelectedItems, oldPageSize) {
220
+ // Check if filtering is currently active and different from initial
221
+ var hasActiveFilter = filterData !== undefined && filterData.length > 0 && JSON.stringify(filterData) !== JSON.stringify(initialFilterState || []);
222
+ var state = {};
223
+
224
+ // Always include pagesize in page size change state
225
+ // This ensures proper state management when changing page sizes
226
+ state.pagesize = newPageSize;
227
+
228
+ // Include actualPageSize if it's provided (should be persisted)
229
+ if (initialActualPageSize !== undefined) {
230
+ state.actualpagesize = initialActualPageSize;
231
+ }
232
+
233
+ // If filtering is active, maintain the filter but don't include pagination or selectedItem
234
+ if (hasActiveFilter) {
235
+ state.search = filterData;
236
+ }
237
+
238
+ // Include sort if it differs from initial
239
+ var isSortChanged = sortData && JSON.stringify(sortData) !== JSON.stringify(initialSortState);
240
+ if (isSortChanged) {
241
+ state.sort = sortData;
242
+ }
243
+
244
+ // If filtering is active, don't include pagination or selectedItem
245
+ if (hasActiveFilter) {
246
+ return state;
247
+ }
248
+
249
+ // Only handle pagination and selectedItem if no filter is active
250
+ var recalculatedItems = [];
251
+ if (existingSelectedItems && existingSelectedItems.length > 0 && oldPageSize) {
252
+ // Recalculate selected items positions based on new page size
253
+ recalculatedItems = existingSelectedItems.map(function (_ref2) {
254
+ var page = _ref2.page,
255
+ index = _ref2.index;
256
+ // Calculate absolute position using the OLD page size
257
+ var absoluteIndex = (page - 1) * oldPageSize + index;
258
+
259
+ // Calculate new page and index with the NEW page size
260
+ var newPage = Math.floor(absoluteIndex / newPageSize) + 1;
261
+ var newIndex = absoluteIndex % newPageSize;
262
+ return {
263
+ page: newPage,
264
+ index: newIndex
265
+ };
266
+ });
267
+ }
268
+
269
+ // Clear selection state ref when page size changes
270
+ if (multiselect) {
271
+ selectionStateRef.current = [];
272
+ }
273
+
274
+ // Don't include pagination if it's page 1 (default)
275
+ // state.pagination = 1; // Don't include this as it's the default
276
+
277
+ // Only include selectedItem if there are selections
278
+ if (recalculatedItems.length > 0) {
279
+ state.selectedItem = recalculatedItems;
280
+ }
281
+ return state;
282
+ }, [initialActualPageSize, multiselect, filterData, sortData, defaultPageSize, initialSortState, initialFilterState]);
283
+
284
+ // Check if current state is default (no need to persist)
285
+ var isDefaultState = (0, _react.useCallback)(function () {
286
+ var hasSelection = selectedRowId !== null && selectedRowId !== undefined || selectedRowIds && selectedRowIds.length > 0;
287
+
288
+ // Check if filter differs from initial
289
+ var hasFilterChange = filterData && filterData.length > 0 && JSON.stringify(filterData) !== JSON.stringify(initialFilterState || []);
290
+
291
+ // Check if sort differs from initial
292
+ var hasSortChange = sortData && JSON.stringify(sortData) !== JSON.stringify(initialSortState);
293
+
294
+ // Check if page size differs from default
295
+ var hasPageSizeChange = defaultPageSize && currentPageSize !== defaultPageSize;
296
+
297
+ // If nothing has changed from defaults, it's default state
298
+ return currentPage === 1 && !hasSelection && !hasFilterChange && !hasSortChange && !hasPageSizeChange;
299
+ }, [currentPage, currentPageSize, selectedRowId, selectedRowIds, filterData, sortData, defaultPageSize, initialSortState, initialFilterState]);
300
+
301
+ // Merge with existing state
302
+ var mergeWithExisting = (0, _react.useCallback)(function (newState, existingState) {
303
+ if (!existingState) {
304
+ return newState;
305
+ }
306
+ var merged = _objectSpread({}, newState);
307
+
308
+ // Check if filtering is active in the new state
309
+ var hasActiveFilter = newState.search !== undefined && newState.search.length > 0;
310
+
311
+ // If filtering is active, return only what's in newState plus preserved size properties
312
+ if (hasActiveFilter) {
313
+ // Start fresh with only what's in newState
314
+ var filteredMerged = _objectSpread({}, newState);
315
+
316
+ // Only preserve pagesize from existing if not in new state and it differs from default
317
+ if (!filteredMerged.pagesize && existingState.pagesize && (!defaultPageSize || existingState.pagesize !== defaultPageSize)) {
318
+ filteredMerged.pagesize = existingState.pagesize;
319
+ }
320
+ // Preserve actualPageSize from existing state if not in new state
321
+ if (!filteredMerged.actualpagesize && existingState.actualpagesize !== undefined) {
322
+ filteredMerged.actualpagesize = existingState.actualpagesize;
323
+ }
324
+ if (!filteredMerged.sort && existingState.sort) {
325
+ filteredMerged.sort = existingState.sort;
326
+ }
327
+
328
+ // Explicitly ensure pagination and selectedItem are not in the merged state
329
+ delete filteredMerged.pagination;
330
+ delete filteredMerged.selectedItem;
331
+ return filteredMerged;
332
+ }
333
+
334
+ // If no active filter, proceed with normal merging
335
+ // Handle selected items based on multiselect mode
336
+ if (newState.selectedItem !== undefined) {
337
+ // For multiselect, the newState already contains all selections across pages
338
+ // For single select, use the new selection if available, otherwise keep existing
339
+ if (multiselect || newState.selectedItem.length > 0) {
340
+ merged.selectedItem = newState.selectedItem;
341
+ } else if (existingState.selectedItem) {
342
+ // For single select with no current selection, keep existing
343
+ merged.selectedItem = existingState.selectedItem;
344
+ }
345
+ } else if (existingState.selectedItem && !hasActiveFilter) {
346
+ // Preserve existing selectedItem if not in new state and no filter
347
+ merged.selectedItem = existingState.selectedItem;
348
+ }
349
+
350
+ // Preserve pagesize if not in new state and it differs from default
351
+ if (!merged.pagesize && existingState.pagesize && (!defaultPageSize || existingState.pagesize !== defaultPageSize)) {
352
+ merged.pagesize = existingState.pagesize;
353
+ }
354
+
355
+ // Preserve actualPageSize from existing state if not in new state
356
+ if (!merged.actualpagesize && existingState.actualpagesize !== undefined) {
357
+ merged.actualpagesize = existingState.actualpagesize;
358
+ }
359
+
360
+ // Preserve pagination if not in new state and no filter AND not on page 1
361
+ if (!merged.pagination && existingState.pagination && !hasActiveFilter && existingState.pagination !== 1) {
362
+ merged.pagination = existingState.pagination;
363
+ }
364
+
365
+ // Preserve sort if not in new state
366
+ if (!merged.sort && existingState.sort) {
367
+ merged.sort = existingState.sort;
368
+ }
369
+ return merged;
370
+ }, [multiselect, defaultPageSize]);
371
+
372
+ // Handle filter state changes
373
+ var handleFilterStateChange = (0, _react.useCallback)(function () {
374
+ // Check if state persistence is supported for this navigation type
375
+ if (!isStateConfigured || storage === "none" || UNSUPPORTED_STATE_PERSISTENCE_TYPES.includes(navigation)) {
376
+ if (navigation && UNSUPPORTED_STATE_PERSISTENCE_TYPES.includes(navigation)) {
377
+ console.warn("Retain State handling on Widget ".concat(name, " is not supported for ").concat(navigation, " navigation type."));
378
+ }
379
+ return;
380
+ }
381
+
382
+ // Check if filter data is different from initial
383
+ var hasFilterData = (0, _lodashEs.isArray)(filterData) && filterData.length > 0;
384
+ var isFilterChanged = hasFilterData && JSON.stringify(filterData) !== JSON.stringify(initialFilterState || []);
385
+ if (isFilterChanged) {
386
+ // When filter is applied, we need to save a state that explicitly excludes pagination and selectedItem
387
+ // Get the current full state
388
+ var currentFullState = (0, _tableHelpers.getTableState)(name, storage);
389
+
390
+ // Build new state with only the properties we want to keep
391
+ var newState = {
392
+ search: filterData
393
+ };
394
+
395
+ // Include actualPageSize if available
396
+ if ((currentFullState === null || currentFullState === void 0 ? void 0 : currentFullState.actualpagesize) !== undefined) {
397
+ newState.actualpagesize = currentFullState.actualpagesize;
398
+ } else if (initialActualPageSize !== undefined) {
399
+ newState.actualpagesize = initialActualPageSize;
400
+ }
401
+
402
+ // Only include pagesize if it differs from default
403
+ if ((currentFullState === null || currentFullState === void 0 ? void 0 : currentFullState.pagesize) !== undefined && defaultPageSize && currentFullState.pagesize !== defaultPageSize) {
404
+ newState.pagesize = currentFullState.pagesize;
405
+ }
406
+
407
+ // Only include sort if it differs from initial
408
+ if ((currentFullState === null || currentFullState === void 0 ? void 0 : currentFullState.sort) !== undefined) {
409
+ var isSortChanged = JSON.stringify(currentFullState.sort) !== JSON.stringify(initialSortState);
410
+ if (isSortChanged) {
411
+ newState.sort = currentFullState.sort;
412
+ }
413
+ }
414
+
415
+ // Clear and save to ensure no merge happens
416
+ (0, _tableHelpers.clearTableState)(name, storage);
417
+ (0, _tableHelpers.saveTableState)(name, storage, newState);
418
+
419
+ // Clear the selection state ref for multiselect
420
+ if (multiselect) {
421
+ selectionStateRef.current = [];
422
+ }
423
+ } else if (!hasFilterData && initialFilterState && initialFilterState.length > 0) {
424
+ // When filter is cleared but there was an initial filter, we need to update state
425
+ var _currentFullState = (0, _tableHelpers.getTableState)(name, storage);
426
+ var _newState = {};
427
+
428
+ // Include actualPageSize if available
429
+ if ((_currentFullState === null || _currentFullState === void 0 ? void 0 : _currentFullState.actualpagesize) !== undefined) {
430
+ _newState.actualpagesize = _currentFullState.actualpagesize;
431
+ } else if (initialActualPageSize !== undefined) {
432
+ _newState.actualpagesize = initialActualPageSize;
433
+ }
434
+
435
+ // Only include pagesize if it differs from default
436
+ if ((_currentFullState === null || _currentFullState === void 0 ? void 0 : _currentFullState.pagesize) !== undefined && defaultPageSize && _currentFullState.pagesize !== defaultPageSize) {
437
+ _newState.pagesize = _currentFullState.pagesize;
438
+ }
439
+
440
+ // Only include sort if it differs from initial
441
+ if ((_currentFullState === null || _currentFullState === void 0 ? void 0 : _currentFullState.sort) !== undefined) {
442
+ var _isSortChanged2 = JSON.stringify(_currentFullState.sort) !== JSON.stringify(initialSortState);
443
+ if (_isSortChanged2) {
444
+ _newState.sort = _currentFullState.sort;
445
+ }
446
+ }
447
+
448
+ // Clear and save if there's anything to save
449
+ if (Object.keys(_newState).length > 0) {
450
+ (0, _tableHelpers.clearTableState)(name, storage);
451
+ (0, _tableHelpers.saveTableState)(name, storage, _newState);
452
+ } else {
453
+ (0, _tableHelpers.clearTableState)(name, storage);
454
+ }
455
+
456
+ // Clear the selection state ref for multiselect
457
+ if (multiselect) {
458
+ selectionStateRef.current = [];
459
+ }
460
+ }
461
+ }, [filterData, isStateConfigured, storage, navigation, name, multiselect, defaultPageSize, initialSortState, initialFilterState]);
462
+
463
+ // Handle sort state changes
464
+ var handleSortStateChange = (0, _react.useCallback)(function () {
465
+ // Check if state persistence is supported for this navigation type
466
+ if (!isStateConfigured || storage === "none" || UNSUPPORTED_STATE_PERSISTENCE_TYPES.includes(navigation)) {
467
+ return;
468
+ }
469
+
470
+ // Check if sort actually changed from initial
471
+ var hasSortChanged = sortData && JSON.stringify(sortData) !== JSON.stringify(initialSortState);
472
+ var isSortReset = !sortData && initialSortState;
473
+ if (hasSortChanged || isSortReset) {
474
+ // If we're in default state after this change, clear everything
475
+ if (isDefaultState()) {
476
+ (0, _tableHelpers.clearTableState)(name, storage);
477
+ } else {
478
+ // Build a clean state with only non-default values
479
+ var newState = {};
480
+
481
+ // Include actualPageSize if available
482
+ if (initialActualPageSize !== undefined) {
483
+ newState.actualpagesize = initialActualPageSize;
484
+ }
485
+
486
+ // Only include sort if it changed from initial
487
+ if (hasSortChanged) {
488
+ newState.sort = sortData;
489
+ }
490
+
491
+ // Only include pagination if not on page 1
492
+ if (currentPage !== 1) {
493
+ newState.pagination = currentPage;
494
+ }
495
+
496
+ // Only include pagesize if it differs from default
497
+ if (defaultPageSize && currentPageSize !== defaultPageSize) {
498
+ newState.pagesize = currentPageSize;
499
+ }
500
+
501
+ // Only include search if it differs from initial
502
+ var hasActiveFilter = filterData && filterData.length > 0 && JSON.stringify(filterData) !== JSON.stringify(initialFilterState || []);
503
+ if (hasActiveFilter) {
504
+ newState.search = filterData;
505
+ }
506
+
507
+ // Only include selectedItem if there are selections
508
+ var hasSelection = selectedRowId !== null && selectedRowId !== undefined || selectedRowIds && selectedRowIds.length > 0;
509
+ if (hasSelection && currentState.selectedItem && currentState.selectedItem.length > 0) {
510
+ newState.selectedItem = currentState.selectedItem;
511
+ }
512
+
513
+ // Clear and save to ensure clean state
514
+ (0, _tableHelpers.clearTableState)(name, storage);
515
+ if (Object.keys(newState).length > 0) {
516
+ (0, _tableHelpers.saveTableState)(name, storage, newState);
517
+ }
518
+ }
519
+ }
520
+ }, [sortData, isStateConfigured, storage, navigation, name, currentState, initialSortState, isDefaultState, currentPage, currentPageSize, defaultPageSize, filterData, initialFilterState, selectedRowId, selectedRowIds]);
521
+
522
+ // Detect filter data changes and handle state persistence
523
+ (0, _react.useEffect)(function () {
524
+ // Check if filter data has changed
525
+ var filterDataChanged = JSON.stringify(filterData) !== JSON.stringify(prevFilterDataRef.current);
526
+ if (filterDataChanged) {
527
+ // Reset the flag when filter data changes
528
+ filterStatePersistenceTriggeredRef.current = false;
529
+
530
+ // Handle the filter state change
531
+ handleFilterStateChange();
532
+
533
+ // Update the previous filter data reference
534
+ prevFilterDataRef.current = filterData;
535
+ }
536
+ }, [filterData, handleFilterStateChange]);
537
+
538
+ // Detect sort data changes and handle state persistence
539
+ (0, _react.useEffect)(function () {
540
+ // Check if sort data has changed
541
+ var sortDataChanged = JSON.stringify(sortData) !== JSON.stringify(prevSortDataRef.current);
542
+ if (sortDataChanged) {
543
+ // Handle the sort state change
544
+ handleSortStateChange();
545
+
546
+ // Update the previous sort data reference
547
+ prevSortDataRef.current = sortData;
548
+ }
549
+ }, [sortData, handleSortStateChange]);
550
+ return {
551
+ currentState: currentState,
552
+ getStateForPageSizeChange: getStateForPageSizeChange,
553
+ isDefaultState: isDefaultState,
554
+ mergeWithExisting: mergeWithExisting,
555
+ handleFilterStateChange: handleFilterStateChange,
556
+ handleSortStateChange: handleSortStateChange
557
+ };
558
+ };