@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,291 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useListEventHandlers = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _react = require("react");
11
+ var _lodashEs = require("lodash-es");
12
+ var _listHelpers = require("../utils/list-helpers");
13
+ 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; }
14
+ 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; }
15
+ /**
16
+ * Custom hook for managing list event handlers
17
+ * Extracts all event handling logic from the main component
18
+ */
19
+ var useListEventHandlers = exports.useListEventHandlers = function useListEventHandlers(props) {
20
+ var items = props.items,
21
+ multiselect = props.multiselect,
22
+ disableitem = props.disableitem,
23
+ selectionlimit = props.selectionlimit,
24
+ collapsible = props.collapsible,
25
+ selectedItems = props.selectedItems,
26
+ setSelectedItems = props.setSelectedItems,
27
+ activeItems = props.activeItems,
28
+ setActiveItems = props.setActiveItems,
29
+ firstSelectedItem = props.firstSelectedItem,
30
+ setFirstSelectedItem = props.setFirstSelectedItem,
31
+ groupCollapsed = props.groupCollapsed,
32
+ setGroupCollapsed = props.setGroupCollapsed,
33
+ currentPage = props.currentPage,
34
+ setCurrentPage = props.setCurrentPage,
35
+ visibleItems = props.visibleItems,
36
+ setVisibleItems = props.setVisibleItems,
37
+ setIsLoadingMore = props.setIsLoadingMore,
38
+ onClick = props.onClick,
39
+ onDblclick = props.onDblclick,
40
+ onMouseEnter = props.onMouseEnter,
41
+ onMouseLeave = props.onMouseLeave,
42
+ onSelectionlimitexceed = props.onSelectionlimitexceed,
43
+ onPaginationchange = props.onPaginationchange,
44
+ onPageChange = props.onPageChange,
45
+ onSetrecord = props.onSetrecord,
46
+ widgetInstance = props.widgetInstance,
47
+ onSelect = props.onSelect,
48
+ userInitiatedSelectionRef = props.userInitiatedSelectionRef,
49
+ datasource = props.datasource,
50
+ isServerSidePagination = props.isServerSidePagination,
51
+ pagesize = props.pagesize,
52
+ navigation = props.navigation,
53
+ onDemandCurrentPage = props.onDemandCurrentPage,
54
+ setOnDemandCurrentPage = props.setOnDemandCurrentPage,
55
+ listener = props.listener,
56
+ name = props.name;
57
+
58
+ // Helper function to call onSelect and mark as user-initiated
59
+ var callOnSelect = (0, _react.useCallback)(function (selectedItem) {
60
+ if (onSelect && widgetInstance) {
61
+ if (userInitiatedSelectionRef) {
62
+ userInitiatedSelectionRef.current = true;
63
+ }
64
+ onSelect(widgetInstance, selectedItem);
65
+ }
66
+ }, [onSelect, widgetInstance, userInitiatedSelectionRef]);
67
+ var handleListItemClick = (0, _react.useCallback)(function (event, item) {
68
+ if (disableitem) return;
69
+ var selectCount = selectedItems.length;
70
+ var isItemSelected = (0, _lodashEs.includes)(selectedItems, item);
71
+ var isItemActive = activeItems.has(item);
72
+ if (multiselect) {
73
+ // Handle Shift+Click for range selection
74
+ if (event.shiftKey && firstSelectedItem && firstSelectedItem !== item) {
75
+ var firstIndex = (0, _lodashEs.findIndex)(items, function (i) {
76
+ return i === firstSelectedItem;
77
+ });
78
+ var lastIndex = (0, _lodashEs.findIndex)(items, function (i) {
79
+ return i === item;
80
+ });
81
+ if (firstIndex !== -1 && lastIndex !== -1) {
82
+ var start = (0, _lodashEs.min)([firstIndex, lastIndex]);
83
+ var end = (0, _lodashEs.max)([firstIndex, lastIndex]);
84
+ var rangeCount = end - start + 1;
85
+ if (selectionlimit > 0 && rangeCount > selectionlimit) {
86
+ onSelectionlimitexceed === null || onSelectionlimitexceed === void 0 || onSelectionlimitexceed(event, widgetInstance);
87
+ return;
88
+ }
89
+ var rangeItems = (0, _lodashEs.slice)(items, start, end + 1);
90
+ setSelectedItems(rangeItems);
91
+ setActiveItems(new Set(rangeItems));
92
+ // Only call onSelect if this is a new selection (not already active)
93
+ if (!isItemActive) {
94
+ callOnSelect(item); // Pass the current item that triggered the range selection
95
+ }
96
+ onClick === null || onClick === void 0 || onClick(event, widgetInstance); // Use widgetInstance instead of item
97
+ return;
98
+ }
99
+ }
100
+
101
+ // Handle Ctrl+Click for individual item selection toggle
102
+ if (event.ctrlKey) {
103
+ if (selectionlimit > 0 && selectCount >= selectionlimit && !isItemSelected) {
104
+ onSelectionlimitexceed === null || onSelectionlimitexceed === void 0 || onSelectionlimitexceed(event, widgetInstance);
105
+ return;
106
+ }
107
+ if (isItemSelected) {
108
+ var newSelectedItems = (0, _lodashEs.filter)(selectedItems, function (selectedItem) {
109
+ return selectedItem !== item;
110
+ });
111
+ setSelectedItems(newSelectedItems);
112
+ var newActiveItems = new Set(activeItems);
113
+ newActiveItems["delete"](item);
114
+ setActiveItems(newActiveItems);
115
+ } else {
116
+ var _newSelectedItems = [].concat((0, _toConsumableArray2["default"])(selectedItems), [item]);
117
+ setSelectedItems(_newSelectedItems);
118
+ var _newActiveItems = new Set(activeItems);
119
+ _newActiveItems.add(item);
120
+ setActiveItems(_newActiveItems);
121
+ // Only call onSelect if this is a new selection (not already active)
122
+ if (!isItemActive) {
123
+ callOnSelect(item); // Pass the current item being selected
124
+ }
125
+ }
126
+ setFirstSelectedItem(item);
127
+ } else {
128
+ // Normal click without Ctrl - select item without deselecting if already selected
129
+ if (!isItemSelected) {
130
+ // If clicking an unselected item, select only this item
131
+ setSelectedItems([item]);
132
+ setActiveItems(new Set([item]));
133
+ setFirstSelectedItem(item);
134
+ // Only call onSelect if this is a new selection (not already active)
135
+ if (!isItemActive) {
136
+ callOnSelect(item); // Pass the current item being selected
137
+ }
138
+ }
139
+ // If item is already selected, do nothing (don't deselect)
140
+ }
141
+ } else {
142
+ // Single select mode - only select, don't deselect on normal click
143
+ if (!isItemSelected) {
144
+ // If clicking an unselected item, select it
145
+ setSelectedItems([item]);
146
+ setActiveItems(new Set([item]));
147
+ setFirstSelectedItem(item);
148
+ // Only call onSelect if this is a new selection (not already active)
149
+ if (!isItemActive) {
150
+ callOnSelect(item); // Pass the current item being selected
151
+ }
152
+ }
153
+ // If item is already selected, do nothing (don't deselect)
154
+ }
155
+ (0, _listHelpers.getSelectedItemWidgets)(event, listener, name || "");
156
+ if (widgetInstance) {
157
+ delete widgetInstance._wmListItemId;
158
+ widgetInstance.item = item;
159
+ }
160
+ onClick === null || onClick === void 0 || onClick(event, widgetInstance); // Use widgetInstance instead of item
161
+ }, [disableitem, selectedItems, multiselect, firstSelectedItem, items, selectionlimit, activeItems, setSelectedItems, setActiveItems, setFirstSelectedItem, onSelectionlimitexceed, onClick, callOnSelect]);
162
+ var handleListItemDoubleClick = (0, _react.useCallback)(function (event, item) {
163
+ onDblclick === null || onDblclick === void 0 || onDblclick(event, widgetInstance); // Use widgetInstance instead of item
164
+ }, [onDblclick]);
165
+ var handleListItemMouseEnter = (0, _react.useCallback)(function (event, item) {
166
+ onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter(event, widgetInstance); // Use widgetInstance instead of item
167
+ }, [onMouseEnter]);
168
+ var handleListItemMouseLeave = (0, _react.useCallback)(function (event, item) {
169
+ onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave(event, widgetInstance); // Use widgetInstance instead of item
170
+ }, [onMouseLeave]);
171
+ var handleHeaderClick = (0, _react.useCallback)(function (groupKey) {
172
+ if (collapsible) {
173
+ setGroupCollapsed(_objectSpread(_objectSpread({}, groupCollapsed), {}, (0, _defineProperty2["default"])({}, groupKey, !groupCollapsed[groupKey])));
174
+ }
175
+ }, [collapsible, groupCollapsed, setGroupCollapsed]);
176
+ var handlePaginationChange = (0, _react.useCallback)(function (event, widget, index) {
177
+ if (index && currentPage !== index) {
178
+ // Update the current page
179
+ setCurrentPage(index);
180
+
181
+ // Trigger the callbacks - datasource handling is now done in usePagination hook
182
+ onPaginationchange === null || onPaginationchange === void 0 || onPaginationchange(event, widgetInstance, index);
183
+ onPageChange === null || onPageChange === void 0 || onPageChange(event, index);
184
+ }
185
+ }, [currentPage, setCurrentPage, onPaginationchange, onPageChange, widgetInstance]);
186
+ var handleSetRecord = (0, _react.useCallback)(function (event, widget, index, data) {
187
+ if (index) {
188
+ setCurrentPage(index);
189
+ onSetrecord === null || onSetrecord === void 0 || onSetrecord(event, widgetInstance, index, data);
190
+ }
191
+ }, [setCurrentPage, onSetrecord]);
192
+ var handlePageChange = (0, _react.useCallback)(function (page) {
193
+ // Update the current page
194
+ setCurrentPage(page);
195
+
196
+ // For server-side pagination, invoke the datasource
197
+ if (isServerSidePagination && datasource && typeof datasource.invoke === "function") {
198
+ // Set loading state
199
+ setIsLoadingMore(true);
200
+
201
+ // Invoke datasource for the new page
202
+ var invokeResult = datasource.invoke({
203
+ page: page
204
+ });
205
+ Promise.resolve(invokeResult).then(function () {
206
+ // Trigger the callbacks after successful data fetch
207
+ onPaginationchange === null || onPaginationchange === void 0 || onPaginationchange(null, widgetInstance, page);
208
+ onPageChange === null || onPageChange === void 0 || onPageChange(null, page);
209
+ setIsLoadingMore(false);
210
+ })["catch"](function (error) {
211
+ console.error("Error loading page data:", error);
212
+ setIsLoadingMore(false);
213
+ // Revert to previous page on error
214
+ setCurrentPage(currentPage);
215
+ });
216
+ } else {
217
+ // For client-side pagination, just trigger callbacks
218
+ onPaginationchange === null || onPaginationchange === void 0 || onPaginationchange(null, widgetInstance, page);
219
+ onPageChange === null || onPageChange === void 0 || onPageChange(null, page);
220
+ }
221
+ }, [setCurrentPage, onPaginationchange, onPageChange, widgetInstance, currentPage, setIsLoadingMore, isServerSidePagination, datasource]);
222
+ var handleLoadMore = (0, _react.useCallback)(function () {
223
+ setIsLoadingMore(true);
224
+ var pageSize = pagesize || 10;
225
+ var nextPage;
226
+
227
+ // For server-side pagination
228
+ if (isServerSidePagination && datasource && typeof datasource.invoke === "function") {
229
+ // For On-Demand navigation, use our tracked page state
230
+ if (navigation === "On-Demand" && onDemandCurrentPage !== undefined) {
231
+ // onDemandCurrentPage is 0-indexed (0 = page 1)
232
+ // We need to load the next page: current + 1, then convert to 1-indexed for API
233
+ var nextPageZeroIndexed = onDemandCurrentPage + 1;
234
+ nextPage = nextPageZeroIndexed + 1; // Convert to 1-indexed for API
235
+ } else {
236
+ var _datasource$paginatio;
237
+ // For other navigation types, use pagination metadata
238
+ var currentPageFromMeta = (_datasource$paginatio = datasource.pagination) === null || _datasource$paginatio === void 0 ? void 0 : _datasource$paginatio.number;
239
+ if (currentPageFromMeta !== undefined) {
240
+ // currentPageFromMeta is 0-indexed, add 2 to get next page for 1-indexed API
241
+ nextPage = currentPageFromMeta + 2;
242
+ } else {
243
+ // Fallback calculation
244
+ var loadedItems = items.length;
245
+ var _currentPage = Math.floor(loadedItems / pageSize);
246
+ nextPage = _currentPage + 1;
247
+ }
248
+ }
249
+
250
+ // Invoke the datasource for the next page
251
+ // Wrap the result in Promise.resolve to handle cases where invoke doesn't return a Promise
252
+ var invokeResult = datasource.invoke({
253
+ page: nextPage
254
+ });
255
+ Promise.resolve(invokeResult).then(function () {
256
+ // Update visible items to reflect the expected count
257
+ setVisibleItems(visibleItems + pageSize);
258
+
259
+ // For On-Demand, update the page state after successful load
260
+ if (navigation === "On-Demand" && setOnDemandCurrentPage) {
261
+ // Page has been loaded, update to the loaded page number (0-indexed)
262
+ setOnDemandCurrentPage(onDemandCurrentPage + 1);
263
+ }
264
+ setIsLoadingMore(false);
265
+ })["catch"](function (error) {
266
+ console.error("Error loading more data:", error);
267
+ setIsLoadingMore(false);
268
+ });
269
+ } else {
270
+ // Client-side pagination
271
+ var _currentPage2 = Math.floor(visibleItems / pageSize);
272
+ nextPage = _currentPage2 + 1;
273
+ setVisibleItems((0, _lodashEs.min)([visibleItems + pageSize, items.length]));
274
+ setTimeout(function () {
275
+ setIsLoadingMore(false);
276
+ }, 10);
277
+ }
278
+ onPageChange === null || onPageChange === void 0 || onPageChange(null, nextPage);
279
+ }, [setIsLoadingMore, setVisibleItems, visibleItems, items.length, onPageChange, datasource, pagesize, navigation, onDemandCurrentPage, setOnDemandCurrentPage]);
280
+ return {
281
+ handleListItemClick: handleListItemClick,
282
+ handleListItemDoubleClick: handleListItemDoubleClick,
283
+ handleListItemMouseEnter: handleListItemMouseEnter,
284
+ handleListItemMouseLeave: handleListItemMouseLeave,
285
+ handleHeaderClick: handleHeaderClick,
286
+ handlePaginationChange: handlePaginationChange,
287
+ handleSetRecord: handleSetRecord,
288
+ handlePageChange: handlePageChange,
289
+ handleLoadMore: handleLoadMore
290
+ };
291
+ };
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useListPagination = void 0;
7
+ var _react = require("react");
8
+ var _lodashEs = require("lodash-es");
9
+ var _constants = require("../utils/constants");
10
+ /**
11
+ * Custom hook for managing list pagination
12
+ * Handles both regular and grouped data pagination
13
+ * Uses pagination metadata from datasource when available
14
+ */
15
+ var useListPagination = exports.useListPagination = function useListPagination(props) {
16
+ var items = props.items,
17
+ groupedData = props.groupedData,
18
+ groupby = props.groupby,
19
+ pagesize = props.pagesize,
20
+ allowpagesizechange = props.allowpagesizechange,
21
+ pagesizeoptions = props.pagesizeoptions,
22
+ navigation = props.navigation,
23
+ _props$initialPage = props.initialPage,
24
+ initialPage = _props$initialPage === void 0 ? 1 : _props$initialPage,
25
+ datasource = props.datasource;
26
+
27
+ // Get pagination metadata from datasource if available
28
+ var paginationMeta = (0, _react.useMemo)(function () {
29
+ // Default pagination metadata
30
+ var metadata = _constants.DEFAULT_PAGINATION_META; // Try all possible locations where pagination metadata might be found
31
+ if (datasource) {
32
+ if (datasource.pagination) {
33
+ metadata = datasource.pagination;
34
+ }
35
+ }
36
+ return metadata;
37
+ }, [datasource, items, pagesize]);
38
+
39
+ // Initialize page size based on allowpagesizechange
40
+ var getInitialPageSize = function getInitialPageSize() {
41
+ // Always use the pagesize prop first (which may contain the restored value)
42
+ // Only fall back to first option if pagesize is not provided
43
+ if (pagesize) {
44
+ return pagesize;
45
+ }
46
+
47
+ // Use paginationMeta.size if available
48
+ if (paginationMeta !== null && paginationMeta !== void 0 && paginationMeta.size) {
49
+ return paginationMeta.size;
50
+ }
51
+ if (allowpagesizechange) {
52
+ // Parse pagesizeoptions and use the first value as fallback
53
+ var firstOption = (0, _lodashEs.head)((0, _lodashEs.filter)((0, _lodashEs.map)((0, _lodashEs.split)(pagesizeoptions, ","), function (opt) {
54
+ return (0, _lodashEs.toNumber)(opt.trim());
55
+ }), function (opt) {
56
+ return !isNaN(opt);
57
+ }));
58
+ return firstOption || 10; // Default to 10 if no valid options
59
+ }
60
+ return 10; // Default page size
61
+ };
62
+ var _useState = (0, _react.useState)(initialPage),
63
+ currentPage = _useState[0],
64
+ setCurrentPage = _useState[1];
65
+ var _useState2 = (0, _react.useState)(getInitialPageSize()),
66
+ currentPageSize = _useState2[0],
67
+ setCurrentPageSize = _useState2[1];
68
+ var _useState3 = (0, _react.useState)(function () {
69
+ // For on-demand navigation, show items up to the initial page
70
+ if (navigation === "On-Demand" && initialPage > 1) {
71
+ return initialPage * pagesize;
72
+ }
73
+ return pagesize;
74
+ }),
75
+ visibleItems = _useState3[0],
76
+ setVisibleItems = _useState3[1];
77
+
78
+ // Calculate total pages based on datasource pagination metadata if available
79
+ var totalPages = (0, _react.useMemo)(function () {
80
+ // If pagination metadata is available, use it
81
+ if (paginationMeta.totalPages !== undefined) {
82
+ return paginationMeta.totalPages;
83
+ }
84
+
85
+ // Fall back to calculating from items length
86
+ var validItems = (0, _lodashEs.isArray)(items) ? items : [];
87
+ return (0, _lodashEs.ceil)(validItems.length / currentPageSize);
88
+ }, [items, currentPageSize, paginationMeta]);
89
+
90
+ // Calculate total items for grouped data or from pagination metadata
91
+ var totalItems = (0, _react.useMemo)(function () {
92
+ // If pagination metadata is available, use it
93
+ if (paginationMeta.totalElements !== undefined) {
94
+ return paginationMeta.totalElements;
95
+ }
96
+
97
+ // For grouped data
98
+ if (groupby && groupedData && (0, _lodashEs.isArray)(groupedData)) {
99
+ return (0, _lodashEs.sumBy)(groupedData, function (group) {
100
+ var _group$data;
101
+ return ((_group$data = group.data) === null || _group$data === void 0 ? void 0 : _group$data.length) || 0;
102
+ });
103
+ }
104
+
105
+ // Fall back to items length
106
+ return (0, _lodashEs.isArray)(items) ? items.length : 0;
107
+ }, [groupedData, items, paginationMeta, groupby]);
108
+
109
+ // Calculate effective total pages (considers grouping and pagination metadata)
110
+ var effectiveTotalPages = (0, _react.useMemo)(function () {
111
+ // If pagination metadata has totalPages, use it directly
112
+ if (paginationMeta.totalPages !== undefined) {
113
+ return paginationMeta.totalPages;
114
+ }
115
+
116
+ // For grouped data
117
+ if (groupby && groupedData) {
118
+ return (0, _lodashEs.ceil)(totalItems / currentPageSize);
119
+ }
120
+ return totalPages;
121
+ }, [groupby, groupedData, totalItems, currentPageSize, totalPages, paginationMeta]);
122
+
123
+ // Calculate current page items
124
+ var currentPageItems = (0, _react.useMemo)(function () {
125
+ if (!items || !(0, _lodashEs.isArray)(items) || items.length === 0) {
126
+ return {
127
+ currentItems: [],
128
+ startIndex: 0,
129
+ endIndex: 0
130
+ };
131
+ }
132
+ var startIndex = navigation === "On-Demand" ? 0 : (currentPage - 1) * currentPageSize;
133
+ var endIndex = navigation === "On-Demand" ? visibleItems : currentPage * currentPageSize;
134
+ var currentItems = (0, _lodashEs.slice)(items, startIndex, endIndex);
135
+ return {
136
+ currentItems: currentItems,
137
+ startIndex: startIndex,
138
+ endIndex: endIndex
139
+ };
140
+ }, [items, navigation, currentPage, currentPageSize, visibleItems]);
141
+
142
+ // Sync current page with datasource pagination metadata for SSP
143
+ (0, _react.useEffect)(function () {
144
+ // Only sync if we have server-side pagination with metadata
145
+ if (datasource && paginationMeta.number !== undefined && paginationMeta.totalElements !== undefined) {
146
+ // paginationMeta.number is 0-indexed, so add 1 for 1-indexed page number
147
+ var serverPage = paginationMeta.number + 1;
148
+
149
+ // Only update if the server page is different from current page
150
+ if (serverPage !== currentPage && serverPage > 0 && serverPage <= effectiveTotalPages) {
151
+ setCurrentPage(serverPage);
152
+ }
153
+ }
154
+ }, [paginationMeta.number, paginationMeta.totalElements, effectiveTotalPages]);
155
+ return {
156
+ currentPage: currentPage,
157
+ setCurrentPage: setCurrentPage,
158
+ currentPageSize: currentPageSize,
159
+ setCurrentPageSize: setCurrentPageSize,
160
+ totalPages: totalPages,
161
+ visibleItems: visibleItems,
162
+ setVisibleItems: setVisibleItems,
163
+ currentPageItems: currentPageItems,
164
+ effectiveTotalPages: effectiveTotalPages,
165
+ totalItems: totalItems,
166
+ paginationMeta: paginationMeta
167
+ };
168
+ };
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useListState = void 0;
7
+ var _react = require("react");
8
+ var _listHelpers = require("../utils/list-helpers");
9
+ /**
10
+ * Custom hook for managing list state
11
+ * @param dataset - The dataset array
12
+ * @param pagesize - Number of items per page
13
+ * @param selectfirstitem - Whether to select the first item by default
14
+ * @param selectionlimit - Maximum number of items that can be selected
15
+ * @param listener - Widget listener for widget updates
16
+ * @param name - Widget name
17
+ * @returns State management object for the list
18
+ */
19
+ var useListState = exports.useListState = function useListState(dataset, pagesize, selectfirstitem, selectionlimit, listener, name) {
20
+ var _useState = (0, _react.useState)([]),
21
+ selectedItems = _useState[0],
22
+ setSelectedItems = _useState[1];
23
+ var _useState2 = (0, _react.useState)(1),
24
+ currentPage = _useState2[0],
25
+ setCurrentPage = _useState2[1];
26
+ var _useState3 = (0, _react.useState)(1),
27
+ totalPages = _useState3[0],
28
+ setTotalPages = _useState3[1];
29
+ var _useState4 = (0, _react.useState)(new Set()),
30
+ activeItems = _useState4[0],
31
+ setActiveItems = _useState4[1];
32
+ var _useState5 = (0, _react.useState)(null),
33
+ firstSelectedItem = _useState5[0],
34
+ setFirstSelectedItem = _useState5[1];
35
+ var _useState6 = (0, _react.useState)({}),
36
+ groupCollapsed = _useState6[0],
37
+ setGroupCollapsed = _useState6[1];
38
+ var _useState7 = (0, _react.useState)(pagesize),
39
+ visibleItems = _useState7[0],
40
+ setVisibleItems = _useState7[1];
41
+ var _useState8 = (0, _react.useState)(false),
42
+ isLoadingMore = _useState8[0],
43
+ setIsLoadingMore = _useState8[1];
44
+ var isInitialMount = (0, _react.useRef)(true);
45
+ (0, _react.useEffect)(function () {
46
+ // Ensure dataset is a valid array
47
+ var validDataset = Array.isArray(dataset) ? dataset : [];
48
+ var pageCount = Math.ceil(validDataset.length / (pagesize || 10));
49
+ setTotalPages(function (prev) {
50
+ return prev !== pageCount ? pageCount : prev;
51
+ });
52
+ }, [dataset, pagesize]);
53
+
54
+ // Sync visibleItems with pagesize when pagesize changes
55
+ (0, _react.useEffect)(function () {
56
+ setVisibleItems(pagesize);
57
+ }, [pagesize]);
58
+
59
+ // Separate effect for select first item to ensure it runs after data is ready
60
+ (0, _react.useEffect)(function () {
61
+ var validDataset = Array.isArray(dataset) ? dataset : [];
62
+
63
+ // Only select first item on initial mount or when dataset changes from empty to having data
64
+ if (selectfirstitem && validDataset.length > 0) {
65
+ if (isInitialMount.current) {
66
+ var firstItem = validDataset[0];
67
+ setSelectedItems([firstItem]);
68
+ setActiveItems(new Set([firstItem]));
69
+ setFirstSelectedItem(firstItem);
70
+ isInitialMount.current = false;
71
+
72
+ // Update selected item widgets after DOM is painted
73
+ if (listener !== null && listener !== void 0 && listener.onChange && name) {
74
+ requestAnimationFrame(function () {
75
+ (0, _listHelpers.getSelectedItemWidgets)(null, listener, name);
76
+ });
77
+ }
78
+ }
79
+ }
80
+ }, [dataset, selectfirstitem, name]);
81
+ return {
82
+ selectedItems: selectedItems,
83
+ setSelectedItems: setSelectedItems,
84
+ currentPage: currentPage,
85
+ setCurrentPage: setCurrentPage,
86
+ totalPages: totalPages,
87
+ activeItems: activeItems,
88
+ setActiveItems: setActiveItems,
89
+ firstSelectedItem: firstSelectedItem,
90
+ setFirstSelectedItem: setFirstSelectedItem,
91
+ groupCollapsed: groupCollapsed,
92
+ setGroupCollapsed: setGroupCollapsed,
93
+ visibleItems: visibleItems,
94
+ setVisibleItems: setVisibleItems,
95
+ isLoadingMore: isLoadingMore,
96
+ setIsLoadingMore: setIsLoadingMore
97
+ };
98
+ };