robobyte-front-builder 1.0.19 → 1.0.21

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 (513) hide show
  1. package/README.md +211 -0
  2. package/next.config.js +19 -48
  3. package/package.json +39 -85
  4. package/src/context/BuilderContext.jsx +134 -6
  5. package/src/context/SystemContext.js +2 -2
  6. package/src/hooks/useGlobalStore.js +36 -0
  7. package/src/hooks/useTimerEngine.js +54 -0
  8. package/src/lib/index.js +11 -3
  9. package/src/lib/layouts/BlankLayout.jsx +13 -0
  10. package/src/lib/providers/RoboByteFrontBuilderProvider.jsx +61 -7
  11. package/src/lib/themes/builderTheme.js +41 -0
  12. package/src/pages/_app.js +32 -134
  13. package/src/pages/api/ai.js +87 -0
  14. package/src/pages/builders/report/index.js +1 -0
  15. package/src/pages/builders/report/list/index.js +1 -0
  16. package/src/pages/builders/report/viewer/index.js +1 -0
  17. package/src/pages/index.js +88 -37
  18. package/src/pages/printBuilder/index.jsx +263 -0
  19. package/src/pages/printBuilder/layouts/index.jsx +298 -0
  20. package/src/pages/reportModule/reportBuilder/index.js +8 -6
  21. package/src/pages/reportModule/reportBuilder/reportViewer/index.js +33 -22
  22. package/src/pages/reportModule/reportBuilder/reports/index.js +3 -5
  23. package/src/pages/reportModule/reportBuilder/reportsPermissions/index.js +2 -3
  24. package/src/pages/viewBuilder/index.jsx +117 -32
  25. package/src/pages/viewBuilder/views/index.js +3 -3
  26. package/src/pages/viewer/[id]/index.js +2 -1
  27. package/src/services/DeleteService.js +31 -60
  28. package/src/services/Endpoints/PrintLayoutEndpoints.js +42 -0
  29. package/src/services/Endpoints.js +2 -0
  30. package/src/services/GetService.js +33 -54
  31. package/src/services/PatchService.js +38 -65
  32. package/src/services/PostService.js +37 -63
  33. package/src/services/UpdateService.js +39 -65
  34. package/src/services/builderHelper/actionExecutor.js +141 -25
  35. package/src/services/builderHelper/builderHelper.js +92 -0
  36. package/src/services/builderHelper/colorSchema.js +95 -0
  37. package/src/services/builderHelper/iconResolver.js +50 -0
  38. package/src/services/builderHelper/jsExecutor.js +212 -46
  39. package/src/services/builderHelper/nodeFactory.js +32 -15
  40. package/src/services/builderHelper/numberFormat.js +123 -0
  41. package/src/services/builderHelper/resolveProps.js +73 -4
  42. package/src/services/builderHelper/thresholdEngine.js +77 -0
  43. package/src/services/builderHelper/tree.js +31 -0
  44. package/src/services/components/agGridAutoComplete.js +5 -9
  45. package/src/services/config.js +9 -1
  46. package/src/services/globalStore.js +80 -0
  47. package/src/services/helper/multiSelectEditor.js +5 -9
  48. package/src/services/helper/multiSelectEditorByBuilder.js +5 -9
  49. package/src/services/reportData/fetchReportData.js +69 -28
  50. package/src/services/routerRef.js +35 -0
  51. package/src/views/ConfirmDialog.js +2 -2
  52. package/src/views/builder/JSEditor.js +105 -107
  53. package/src/views/builder/inspector/Inspector.jsx +6 -9
  54. package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +7 -13
  55. package/src/views/builder/inspector/Tabs/MainTab.jsx +143 -25
  56. package/src/views/builder/inspector/Tabs/RulesTab.jsx +9 -24
  57. package/src/views/builder/inspector/Tabs/StyleTab.jsx +9 -24
  58. package/src/views/builder/inspector/definitions/autocomplete/main.js +4 -6
  59. package/src/views/builder/inspector/definitions/banner/actions.js +7 -0
  60. package/src/views/builder/inspector/definitions/banner/main.js +22 -0
  61. package/src/views/builder/inspector/definitions/banner/rules.js +1 -0
  62. package/src/views/builder/inspector/definitions/banner/style.js +1 -0
  63. package/src/views/builder/inspector/definitions/breadcrumb/main.js +43 -6
  64. package/src/views/builder/inspector/definitions/button/main.js +11 -12
  65. package/src/views/builder/inspector/definitions/button/style.js +18 -30
  66. package/src/views/builder/inspector/definitions/checkbox/actions.js +3 -1
  67. package/src/views/builder/inspector/definitions/checkbox/main.js +4 -6
  68. package/src/views/builder/inspector/definitions/common/main.js +13 -2
  69. package/src/views/builder/inspector/definitions/dataGrid/main.js +23 -0
  70. package/src/views/builder/inspector/definitions/dataTableViewer/main.js +46 -0
  71. package/src/views/builder/inspector/definitions/datepicker/actions.js +3 -1
  72. package/src/views/builder/inspector/definitions/datepicker/main.js +6 -14
  73. package/src/views/builder/inspector/definitions/dialog/main.js +36 -0
  74. package/src/views/builder/inspector/definitions/dropdown/main.js +5 -8
  75. package/src/views/builder/inspector/definitions/excelUpload/actions.js +23 -0
  76. package/src/views/builder/inspector/definitions/excelUpload/main.js +17 -0
  77. package/src/views/builder/inspector/definitions/excelUpload/rules.js +1 -0
  78. package/src/views/builder/inspector/definitions/excelUpload/style.js +45 -0
  79. package/src/views/builder/inspector/definitions/header/main.js +10 -1
  80. package/src/views/builder/inspector/definitions/index.js +106 -19
  81. package/src/views/builder/inspector/definitions/input/actions.js +4 -1
  82. package/src/views/builder/inspector/definitions/input/main.js +20 -11
  83. package/src/views/builder/inspector/definitions/kpi/avatarGroup.js +22 -0
  84. package/src/views/builder/inspector/definitions/kpi/badge.js +17 -0
  85. package/src/views/builder/inspector/definitions/kpi/bulletChart.js +47 -0
  86. package/src/views/builder/inspector/definitions/kpi/chart.js +55 -0
  87. package/src/views/builder/inspector/definitions/kpi/colorScale.js +60 -0
  88. package/src/views/builder/inspector/definitions/kpi/comparisonBars.js +41 -0
  89. package/src/views/builder/inspector/definitions/kpi/countdown.js +46 -0
  90. package/src/views/builder/inspector/definitions/kpi/donut.js +51 -0
  91. package/src/views/builder/inspector/definitions/kpi/funnel.js +25 -0
  92. package/src/views/builder/inspector/definitions/kpi/gauge.js +39 -0
  93. package/src/views/builder/inspector/definitions/kpi/heatmapGrid.js +96 -0
  94. package/src/views/builder/inspector/definitions/kpi/iconBox.js +20 -0
  95. package/src/views/builder/inspector/definitions/kpi/metric.js +45 -0
  96. package/src/views/builder/inspector/definitions/kpi/rating.js +27 -0
  97. package/src/views/builder/inspector/definitions/kpi/statusDot.js +18 -0
  98. package/src/views/builder/inspector/definitions/kpi/stepStage.js +65 -0
  99. package/src/views/builder/inspector/definitions/kpi/tagList.js +32 -0
  100. package/src/views/builder/inspector/definitions/kpi/timeline.js +80 -0
  101. package/src/views/builder/inspector/definitions/kpi/trend.js +20 -0
  102. package/src/views/builder/inspector/definitions/label/main.js +10 -1
  103. package/src/views/builder/inspector/definitions/layout/main.js +27 -3
  104. package/src/views/builder/inspector/definitions/number/main.js +6 -14
  105. package/src/views/builder/inspector/definitions/pageNumber/main.js +21 -0
  106. package/src/views/builder/inspector/definitions/popover/main.js +71 -0
  107. package/src/views/builder/inspector/definitions/radio/main.js +5 -8
  108. package/src/views/builder/inspector/definitions/repeater/main.js +31 -0
  109. package/src/views/builder/inspector/definitions/reportViewer/main.js +15 -1
  110. package/src/views/builder/inspector/definitions/richtext/main.js +5 -8
  111. package/src/views/builder/inspector/definitions/signature/main.js +4 -1
  112. package/src/views/builder/inspector/definitions/tag/main.js +5 -8
  113. package/src/views/builder/inspector/definitions/textarea/actions.js +4 -1
  114. package/src/views/builder/inspector/definitions/textarea/main.js +5 -7
  115. package/src/views/builder/inspector/definitions/time/main.js +5 -8
  116. package/src/views/builder/inspector/definitions/toggle/main.js +5 -19
  117. package/src/views/builder/inspector/definitions/treeView/main.js +61 -0
  118. package/src/views/builder/inspector/definitions/viewRenderer/main.js +53 -0
  119. package/src/views/builder/inspector/definitions/wizard/main.js +68 -0
  120. package/src/views/builder/inspector/definitions/wizard-step/main.js +25 -0
  121. package/src/views/builder/inspector/fields/ActionsConfigEditor.jsx +426 -0
  122. package/src/views/builder/inspector/fields/ColorSchemaField.jsx +140 -0
  123. package/src/views/builder/inspector/fields/ColumnFunctionEditor.jsx +238 -0
  124. package/src/views/builder/inspector/fields/ColumnMappingEditor.jsx +105 -0
  125. package/src/views/builder/inspector/fields/ColumnsConfigEditor.jsx +506 -0
  126. package/src/views/builder/inspector/fields/DonutRingsEditorField.jsx +337 -0
  127. package/src/views/builder/inspector/fields/ExtraColsEditor.jsx +618 -0
  128. package/src/views/builder/inspector/fields/FunctionHelpPopover.jsx +295 -0
  129. package/src/views/builder/inspector/fields/IconEditor.jsx +64 -0
  130. package/src/views/builder/inspector/fields/KpiActionField.jsx +223 -0
  131. package/src/views/builder/inspector/fields/MarkersEditorField.jsx +173 -0
  132. package/src/views/builder/inspector/fields/SelectEditor.jsx +9 -5
  133. package/src/views/builder/inspector/fields/SeriesEditorField.jsx +363 -0
  134. package/src/views/builder/inspector/fields/TableColumnsEditor.jsx +104 -0
  135. package/src/views/builder/inspector/fields/ThresholdsEditor.jsx +247 -0
  136. package/src/views/builder/inspector/fields/ValueFunctionsRefPanel.jsx +217 -0
  137. package/src/views/builder/inspector/fields/columnEditorShared.jsx +217 -0
  138. package/src/views/builder/sidebar/Sidebar.jsx +4 -2
  139. package/src/views/builder/sidebar/SidebarTabs.jsx +28 -17
  140. package/src/views/builder/sidebar/tabs/ActionsTab.jsx +7 -3
  141. package/src/views/builder/sidebar/tabs/AiTab/AiPreviewDialog.jsx +193 -0
  142. package/src/views/builder/sidebar/tabs/AiTab/aiProvider.js +49 -0
  143. package/src/views/builder/sidebar/tabs/AiTab/index.jsx +409 -0
  144. package/src/views/builder/sidebar/tabs/AiTab/schemaTransformer.js +102 -0
  145. package/src/views/builder/sidebar/tabs/AiTab/schemaValidator.js +64 -0
  146. package/src/views/builder/sidebar/tabs/AiTab/systemPrompt.js +1151 -0
  147. package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +31 -31
  148. package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +43 -21
  149. package/src/views/builder/sidebar/tabs/Components/printComponentCatalog.js +81 -0
  150. package/src/views/builder/sidebar/tabs/TimersTab.jsx +338 -0
  151. package/src/views/builder/sidebar/tabs/TreeTab.jsx +13 -4
  152. package/src/views/builder/sidebar/tabs/ViewTab.jsx +1 -1
  153. package/src/views/builder/viewer/AdornedLabel.jsx +82 -0
  154. package/src/views/builder/viewer/ComponentRenderer.jsx +98 -24
  155. package/src/views/builder/viewer/DialogsZone.jsx +259 -0
  156. package/src/views/builder/viewer/FieldLabel.jsx +106 -0
  157. package/src/views/builder/viewer/PrintDialog.jsx +481 -0
  158. package/src/views/builder/viewer/ProductionViewer.jsx +80 -5
  159. package/src/views/builder/viewer/Viewer.jsx +106 -8
  160. package/src/views/builder/viewer/ViewerComponentWrapper.jsx +61 -4
  161. package/src/views/builder/viewer/ViewerToolbar.jsx +273 -59
  162. package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +26 -22
  163. package/src/views/builder/viewer/renderers/AvatarGroupRenderer.jsx +112 -0
  164. package/src/views/builder/viewer/renderers/BadgeRenderer.jsx +79 -0
  165. package/src/views/builder/viewer/renderers/BannerRenderer.jsx +62 -0
  166. package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +203 -15
  167. package/src/views/builder/viewer/renderers/BulletChartRenderer.jsx +147 -0
  168. package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +98 -39
  169. package/src/views/builder/viewer/renderers/CardRenderer.jsx +1 -1
  170. package/src/views/builder/viewer/renderers/ChartRenderer.jsx +388 -0
  171. package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +17 -9
  172. package/src/views/builder/viewer/renderers/ColorScaleRenderer.jsx +300 -0
  173. package/src/views/builder/viewer/renderers/ComparisonBarsRenderer.jsx +133 -0
  174. package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +3 -1
  175. package/src/views/builder/viewer/renderers/CountdownRenderer.jsx +249 -0
  176. package/src/views/builder/viewer/renderers/DataGridRenderer.jsx +380 -0
  177. package/src/views/builder/viewer/renderers/DataTableViewerRenderer.jsx +240 -0
  178. package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +25 -24
  179. package/src/views/builder/viewer/renderers/DialogRenderer.jsx +327 -0
  180. package/src/views/builder/viewer/renderers/DividerRenderer.jsx +1 -1
  181. package/src/views/builder/viewer/renderers/DonutRenderer.jsx +294 -0
  182. package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +36 -44
  183. package/src/views/builder/viewer/renderers/ExcelUploadRenderer.jsx +639 -0
  184. package/src/views/builder/viewer/renderers/FunnelRenderer.jsx +93 -0
  185. package/src/views/builder/viewer/renderers/GaugeRenderer.jsx +159 -0
  186. package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +31 -9
  187. package/src/views/builder/viewer/renderers/HeatmapGridRenderer.jsx +432 -0
  188. package/src/views/builder/viewer/renderers/IconBoxRenderer.jsx +59 -0
  189. package/src/views/builder/viewer/renderers/ImageRenderer.jsx +1 -1
  190. package/src/views/builder/viewer/renderers/InputRenderer.jsx +75 -18
  191. package/src/views/builder/viewer/renderers/LabelRenderer.jsx +35 -9
  192. package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +102 -40
  193. package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +8 -8
  194. package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +48 -6
  195. package/src/views/builder/viewer/renderers/LinkRenderer.jsx +1 -1
  196. package/src/views/builder/viewer/renderers/MenuRenderer.jsx +2 -2
  197. package/src/views/builder/viewer/renderers/MetricRenderer.jsx +80 -0
  198. package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +21 -30
  199. package/src/views/builder/viewer/renderers/PageNumberRenderer.jsx +76 -0
  200. package/src/views/builder/viewer/renderers/PopoverRenderer.jsx +350 -0
  201. package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +1 -1
  202. package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +1 -1
  203. package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +28 -39
  204. package/src/views/builder/viewer/renderers/RatingRenderer.jsx +80 -0
  205. package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +297 -38
  206. package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +219 -5
  207. package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +60 -66
  208. package/src/views/builder/viewer/renderers/RowActionsCell.jsx +308 -0
  209. package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +33 -62
  210. package/src/views/builder/viewer/renderers/StatusDotRenderer.jsx +75 -0
  211. package/src/views/builder/viewer/renderers/StepStageRenderer.jsx +348 -0
  212. package/src/views/builder/viewer/renderers/TagListRenderer.jsx +115 -0
  213. package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +31 -45
  214. package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +25 -18
  215. package/src/views/builder/viewer/renderers/TextRenderer.jsx +7 -1
  216. package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +25 -24
  217. package/src/views/builder/viewer/renderers/TimelineRenderer.jsx +525 -0
  218. package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +21 -27
  219. package/src/views/builder/viewer/renderers/TreeViewRenderer.jsx +832 -0
  220. package/src/views/builder/viewer/renderers/TrendRenderer.jsx +66 -0
  221. package/src/views/builder/viewer/renderers/ViewRendererRenderer.jsx +315 -0
  222. package/src/views/builder/viewer/renderers/WizardRenderer.jsx +380 -64
  223. package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +21 -12
  224. package/src/views/builder/viewer/renderers/dataGridComponents.jsx +824 -0
  225. package/src/views/customFilter/CustomFilterDialog.js +1023 -660
  226. package/src/views/customFilter/FixedFilterDialog.js +649 -0
  227. package/src/views/customFilter/SearchFilterDialog.js +248 -0
  228. package/src/views/genericTable/BuilderExpressionParams.js +3 -3
  229. package/src/views/genericTable/ColumnConfiguratorDialog.js +33 -24
  230. package/src/views/genericTable/FixedFilterDialog.js +3 -2
  231. package/src/views/genericTable/FormattingSettingsDialog.js +8 -3
  232. package/src/views/genericTable/SGrid.js +198 -97
  233. package/src/views/genericTable/SearchFilterDialog.js +3 -2
  234. package/src/views/genericTable/cellEditors/autocompleteEditor.js +5 -9
  235. package/src/views/genericTable/convertStringFunctions.js +274 -138
  236. package/src/views/genericTable/statusBar/rowCountStatusBar.js +3 -1
  237. package/src/views/genericTable/updateRefHelpers.js +9 -6
  238. package/src/views/printBuilder/PrintBuilderViewer.jsx +607 -0
  239. package/src/views/printBuilder/PrintPreviewCanvas.jsx +157 -0
  240. package/src/views/rolePermissions/UpdateReportPermissionDialog.js +3 -2
  241. package/src/@core/components/auth/AclGuard.js +0 -55
  242. package/src/@core/components/auth/AuthGuard.js +0 -40
  243. package/src/@core/components/auth/GuestGuard.js +0 -30
  244. package/src/@core/components/custom-inputs/Horizontal.jsx +0 -143
  245. package/src/@core/components/custom-inputs/Image.jsx +0 -78
  246. package/src/@core/components/custom-inputs/Vertical.jsx +0 -113
  247. package/src/@core/components/customizer/index.jsx +0 -470
  248. package/src/@core/components/customizer/styles.module.css +0 -169
  249. package/src/@core/components/mui/Avatar.jsx +0 -41
  250. package/src/@core/components/mui/Badge.jsx +0 -20
  251. package/src/@core/components/mui/IconButton.jsx +0 -74
  252. package/src/@core/components/mui/TabList.jsx +0 -60
  253. package/src/@core/components/option-menu/index.jsx +0 -137
  254. package/src/@core/components/scroll-to-top/index.jsx +0 -43
  255. package/src/@core/components/spinner/index.js +0 -26
  256. package/src/@core/components/window-wrapper/index.js +0 -27
  257. package/src/@core/contexts/settingsContext.jsx +0 -98
  258. package/src/@core/hooks/useBgColor.js +0 -63
  259. package/src/@core/hooks/useImageVariant.js +0 -27
  260. package/src/@core/hooks/useLayoutInit.js +0 -37
  261. package/src/@core/hooks/useObjectCookie.js +0 -18
  262. package/src/@core/hooks/useSettings.jsx +0 -15
  263. package/src/@core/layouts/BlankLayout.js +0 -37
  264. package/src/@core/layouts/BlankLayoutWithAppBar.js +0 -51
  265. package/src/@core/layouts/HorizontalLayout.jsx +0 -151
  266. package/src/@core/layouts/Layout.js +0 -39
  267. package/src/@core/layouts/VerticalLayout.jsx +0 -124
  268. package/src/@core/layouts/components/blank-layout-with-appBar/index.js +0 -115
  269. package/src/@core/layouts/components/horizontal/app-bar-content/index.js +0 -67
  270. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +0 -352
  271. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +0 -21
  272. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +0 -195
  273. package/src/@core/layouts/components/horizontal/navigation/index.js +0 -31
  274. package/src/@core/layouts/components/shared-components/LanguageDropdown.js +0 -96
  275. package/src/@core/layouts/components/shared-components/ModeToggler.js +0 -32
  276. package/src/@core/layouts/components/shared-components/NotificationDropdown.js +0 -226
  277. package/src/@core/layouts/components/shared-components/UserDropdown.js +0 -177
  278. package/src/@core/layouts/components/shared-components/footer/FooterContent.js +0 -46
  279. package/src/@core/layouts/components/shared-components/footer/index.js +0 -61
  280. package/src/@core/layouts/components/vertical/appBar/index.js +0 -74
  281. package/src/@core/layouts/components/vertical/navigation/Drawer.js +0 -122
  282. package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +0 -435
  283. package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +0 -180
  284. package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +0 -26
  285. package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +0 -258
  286. package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +0 -102
  287. package/src/@core/layouts/components/vertical/navigation/index.js +0 -169
  288. package/src/@core/layouts/utils.js +0 -69
  289. package/src/@core/styles/Table.module.css +0 -93
  290. package/src/@core/styles/horizontal/menuItemStyles.js +0 -100
  291. package/src/@core/styles/horizontal/menuRootStyles.js +0 -19
  292. package/src/@core/styles/libs/fullcalendar/index.js +0 -461
  293. package/src/@core/styles/libs/keen-slider/index.js +0 -111
  294. package/src/@core/styles/libs/react-apexcharts/index.js +0 -107
  295. package/src/@core/styles/libs/react-cleave/index.js +0 -33
  296. package/src/@core/styles/libs/react-credit-cards/index.js +0 -11
  297. package/src/@core/styles/libs/react-datepicker/index.js +0 -388
  298. package/src/@core/styles/libs/react-draft-wysiwyg/index.js +0 -144
  299. package/src/@core/styles/libs/react-dropzone/index.js +0 -76
  300. package/src/@core/styles/libs/react-hot-toast/index.js +0 -37
  301. package/src/@core/styles/libs/recharts/index.js +0 -47
  302. package/src/@core/styles/stepper.js +0 -103
  303. package/src/@core/styles/vertical/menuItemStyles.js +0 -138
  304. package/src/@core/styles/vertical/menuSectionStyles.js +0 -54
  305. package/src/@core/styles/vertical/navigationCustomStyles.js +0 -62
  306. package/src/@core/svg/ContentCompact.jsx +0 -17
  307. package/src/@core/svg/ContentWide.jsx +0 -17
  308. package/src/@core/svg/DirectionLtr.jsx +0 -93
  309. package/src/@core/svg/DirectionRtl.jsx +0 -93
  310. package/src/@core/svg/LayoutCollapsed.jsx +0 -59
  311. package/src/@core/svg/LayoutHorizontal.jsx +0 -42
  312. package/src/@core/svg/LayoutVertical.jsx +0 -59
  313. package/src/@core/svg/Logo.jsx +0 -76
  314. package/src/@core/svg/SkinBordered.jsx +0 -54
  315. package/src/@core/svg/SkinDefault.jsx +0 -59
  316. package/src/@core/tailwind/plugin.js +0 -78
  317. package/src/@core/theme/ThemeComponent.js +0 -63
  318. package/src/@core/theme/ThemeOptions.js +0 -71
  319. package/src/@core/theme/breakpoints/index.js +0 -11
  320. package/src/@core/theme/colorSchemes.js +0 -326
  321. package/src/@core/theme/customShadows.js +0 -11
  322. package/src/@core/theme/globalStyles.js +0 -81
  323. package/src/@core/theme/index.js +0 -42
  324. package/src/@core/theme/overrides/accordion.js +0 -51
  325. package/src/@core/theme/overrides/accordion.jsx +0 -85
  326. package/src/@core/theme/overrides/alerts.js +0 -110
  327. package/src/@core/theme/overrides/alerts.jsx +0 -180
  328. package/src/@core/theme/overrides/autocomplete.js +0 -14
  329. package/src/@core/theme/overrides/autocomplete.jsx +0 -68
  330. package/src/@core/theme/overrides/avatar.js +0 -38
  331. package/src/@core/theme/overrides/avatars.js +0 -27
  332. package/src/@core/theme/overrides/backdrop.js +0 -22
  333. package/src/@core/theme/overrides/badges.js +0 -16
  334. package/src/@core/theme/overrides/breadcrumbs.js +0 -11
  335. package/src/@core/theme/overrides/button-group.js +0 -84
  336. package/src/@core/theme/overrides/button.js +0 -93
  337. package/src/@core/theme/overrides/buttonGroup.js +0 -9
  338. package/src/@core/theme/overrides/card.js +0 -83
  339. package/src/@core/theme/overrides/checkbox.jsx +0 -95
  340. package/src/@core/theme/overrides/chip.js +0 -72
  341. package/src/@core/theme/overrides/dataGrid.js +0 -114
  342. package/src/@core/theme/overrides/dateTimePicker.js +0 -65
  343. package/src/@core/theme/overrides/dialog.js +0 -120
  344. package/src/@core/theme/overrides/divider.js +0 -13
  345. package/src/@core/theme/overrides/drawer.js +0 -20
  346. package/src/@core/theme/overrides/fab.js +0 -13
  347. package/src/@core/theme/overrides/form-control-label.js +0 -19
  348. package/src/@core/theme/overrides/icon-button.js +0 -145
  349. package/src/@core/theme/overrides/index.js +0 -103
  350. package/src/@core/theme/overrides/input.js +0 -72
  351. package/src/@core/theme/overrides/link.js +0 -9
  352. package/src/@core/theme/overrides/list.js +0 -44
  353. package/src/@core/theme/overrides/menu.js +0 -25
  354. package/src/@core/theme/overrides/pagination.js +0 -41
  355. package/src/@core/theme/overrides/paper.js +0 -9
  356. package/src/@core/theme/overrides/popover.js +0 -16
  357. package/src/@core/theme/overrides/progress.js +0 -38
  358. package/src/@core/theme/overrides/radio.jsx +0 -80
  359. package/src/@core/theme/overrides/rating.js +0 -16
  360. package/src/@core/theme/overrides/rating.jsx +0 -32
  361. package/src/@core/theme/overrides/select.js +0 -19
  362. package/src/@core/theme/overrides/select.jsx +0 -52
  363. package/src/@core/theme/overrides/slider.js +0 -97
  364. package/src/@core/theme/overrides/snackbar.js +0 -19
  365. package/src/@core/theme/overrides/switch.js +0 -73
  366. package/src/@core/theme/overrides/switches.js +0 -25
  367. package/src/@core/theme/overrides/table-pagination.js +0 -39
  368. package/src/@core/theme/overrides/table.js +0 -81
  369. package/src/@core/theme/overrides/tabs.js +0 -30
  370. package/src/@core/theme/overrides/timeline.js +0 -80
  371. package/src/@core/theme/overrides/toggle-button.js +0 -33
  372. package/src/@core/theme/overrides/toggleButton.js +0 -16
  373. package/src/@core/theme/overrides/tooltip.js +0 -21
  374. package/src/@core/theme/overrides/typography.js +0 -13
  375. package/src/@core/theme/palette/index.js +0 -107
  376. package/src/@core/theme/shadows/index.js +0 -61
  377. package/src/@core/theme/shadows.js +0 -12
  378. package/src/@core/theme/spacing/index.js +0 -3
  379. package/src/@core/theme/spacing.js +0 -5
  380. package/src/@core/theme/typography/index.js +0 -65
  381. package/src/@core/theme/typography.js +0 -84
  382. package/src/@core/utils/create-emotion-cache.js +0 -5
  383. package/src/@core/utils/hex-to-rgba.js +0 -11
  384. package/src/@core/utils/serverHelpers.js +0 -45
  385. package/src/@menu/components/RouterLink.jsx +0 -18
  386. package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +0 -88
  387. package/src/@menu/components/horizontal-menu/Menu.jsx +0 -83
  388. package/src/@menu/components/horizontal-menu/MenuButton.jsx +0 -100
  389. package/src/@menu/components/horizontal-menu/MenuItem.jsx +0 -183
  390. package/src/@menu/components/horizontal-menu/SubMenu.jsx +0 -418
  391. package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +0 -41
  392. package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +0 -20
  393. package/src/@menu/components/vertical-menu/Menu.jsx +0 -161
  394. package/src/@menu/components/vertical-menu/MenuButton.jsx +0 -95
  395. package/src/@menu/components/vertical-menu/MenuItem.jsx +0 -180
  396. package/src/@menu/components/vertical-menu/MenuSection.jsx +0 -124
  397. package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +0 -70
  398. package/src/@menu/components/vertical-menu/NavHeader.jsx +0 -39
  399. package/src/@menu/components/vertical-menu/SubMenu.jsx +0 -420
  400. package/src/@menu/components/vertical-menu/SubMenuContent.jsx +0 -101
  401. package/src/@menu/components/vertical-menu/VerticalNav.jsx +0 -216
  402. package/src/@menu/contexts/horizontalNavContext.jsx +0 -29
  403. package/src/@menu/contexts/verticalNavContext.jsx +0 -65
  404. package/src/@menu/defaultConfigs.js +0 -12
  405. package/src/@menu/hooks/useHorizontalMenu.jsx +0 -19
  406. package/src/@menu/hooks/useHorizontalNav.jsx +0 -19
  407. package/src/@menu/hooks/useMediaQuery.jsx +0 -29
  408. package/src/@menu/hooks/useVerticalMenu.jsx +0 -19
  409. package/src/@menu/hooks/useVerticalNav.jsx +0 -19
  410. package/src/@menu/horizontal-menu/index.jsx +0 -8
  411. package/src/@menu/styles/StyledBackdrop.jsx +0 -15
  412. package/src/@menu/styles/StyledMenuIcon.jsx +0 -12
  413. package/src/@menu/styles/StyledMenuLabel.jsx +0 -16
  414. package/src/@menu/styles/StyledMenuPrefix.jsx +0 -10
  415. package/src/@menu/styles/StyledMenuSectionLabel.jsx +0 -21
  416. package/src/@menu/styles/StyledMenuSuffix.jsx +0 -10
  417. package/src/@menu/styles/StyledSubMenuContent.jsx +0 -43
  418. package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +0 -13
  419. package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +0 -26
  420. package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +0 -11
  421. package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +0 -33
  422. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +0 -18
  423. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +0 -10
  424. package/src/@menu/styles/horizontal/horizontalUl.module.css +0 -15
  425. package/src/@menu/styles/styles.module.css +0 -5
  426. package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +0 -16
  427. package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +0 -28
  428. package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +0 -23
  429. package/src/@menu/styles/vertical/StyledVerticalNav.jsx +0 -67
  430. package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +0 -15
  431. package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +0 -23
  432. package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +0 -25
  433. package/src/@menu/styles/vertical/verticalNavBgImage.module.css +0 -10
  434. package/src/@menu/svg/ChevronRight.jsx +0 -9
  435. package/src/@menu/svg/Close.jsx +0 -12
  436. package/src/@menu/svg/RadioCircle.jsx +0 -12
  437. package/src/@menu/svg/RadioCircleMarked.jsx +0 -13
  438. package/src/@menu/utils/menuClasses.js +0 -44
  439. package/src/@menu/utils/menuUtils.jsx +0 -145
  440. package/src/@menu/vertical-menu/index.jsx +0 -11
  441. package/src/configs/acl.js +0 -115
  442. package/src/configs/auth.js +0 -5
  443. package/src/configs/aws-exports.js +0 -30
  444. package/src/configs/firebase.js +0 -25
  445. package/src/configs/i18n.js +0 -34
  446. package/src/configs/primaryColorConfig.js +0 -35
  447. package/src/configs/themeConfig.js +0 -44
  448. package/src/layouts/UserLayout.js +0 -94
  449. package/src/layouts/UserThemeOptions.js +0 -191
  450. package/src/layouts/components/Direction.js +0 -30
  451. package/src/layouts/components/HtmlTooltip.js +0 -15
  452. package/src/layouts/components/Translations.js +0 -11
  453. package/src/layouts/components/UserDropdown.js +0 -217
  454. package/src/layouts/components/UserIcon.js +0 -40
  455. package/src/layouts/components/acl/Can.js +0 -6
  456. package/src/layouts/components/acl/CanViewNavGroup.js +0 -36
  457. package/src/layouts/components/acl/CanViewNavLink.js +0 -17
  458. package/src/layouts/components/acl/CanViewNavSectionTitle.js +0 -17
  459. package/src/layouts/components/horizontal/AppBarContent.js +0 -39
  460. package/src/layouts/components/horizontal/ServerSideNavItems.js +0 -44
  461. package/src/layouts/components/mui/StepperComps.js +0 -55
  462. package/src/layouts/components/vertical/AppBarContent.js +0 -35
  463. package/src/layouts/components/vertical/ServerSideNavItems.js +0 -44
  464. package/src/libs/ApexCharts.jsx +0 -5
  465. package/src/libs/ReactPlayer.jsx +0 -5
  466. package/src/libs/Recharts.jsx +0 -4
  467. package/src/libs/auth.js +0 -124
  468. package/src/libs/styles/AppFullCalendar.js +0 -505
  469. package/src/libs/styles/AppKeenSlider.js +0 -116
  470. package/src/libs/styles/AppReactApexCharts.jsx +0 -110
  471. package/src/libs/styles/AppReactDatepicker.jsx +0 -470
  472. package/src/libs/styles/AppReactDropzone.js +0 -76
  473. package/src/libs/styles/AppReactToastify.jsx +0 -108
  474. package/src/libs/styles/AppRecharts.js +0 -55
  475. package/src/libs/styles/inputOtp.module.css +0 -39
  476. package/src/libs/styles/tiptapEditor.css +0 -72
  477. package/src/navigation/horizontal/index.js +0 -246
  478. package/src/navigation/vertical/index.js +0 -253
  479. package/src/pages/401.js +0 -70
  480. package/src/pages/404.js +0 -67
  481. package/src/pages/500.js +0 -68
  482. package/src/pages/[slug].js +0 -115
  483. package/src/pages/_document.js +0 -72
  484. package/src/pages/api/navigation/regenerate-registry.js +0 -116
  485. package/src/pages/api/navigation/save.js +0 -218
  486. package/src/pages/authModule/acl/index.js +0 -48
  487. package/src/pages/authModule/forgot-password/index.js +0 -228
  488. package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +0 -392
  489. package/src/pages/authModule/permissions/rolePermissions/index.js +0 -343
  490. package/src/pages/authModule/permissions/systemPermissions/index.js +0 -354
  491. package/src/pages/authModule/privacy/index.js +0 -721
  492. package/src/pages/authModule/users/index.js +0 -210
  493. package/src/pages/login/index.js +0 -328
  494. package/src/pages/mainHome/index.js +0 -181
  495. package/src/views/builder/inspector/definitions/cell/main.js +0 -4
  496. package/src/views/builder/inspector/definitions/column/main.js +0 -9
  497. package/src/views/builder/inspector/definitions/column-group/main.js +0 -18
  498. package/src/views/builder/inspector/definitions/header-cell/main.js +0 -5
  499. package/src/views/builder/inspector/definitions/table/main.js +0 -9
  500. package/src/views/builder/viewer/renderers/CellRenderer.jsx +0 -71
  501. package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +0 -96
  502. package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +0 -71
  503. package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +0 -78
  504. package/src/views/builder/viewer/renderers/TabRenderer.jsx +0 -82
  505. package/src/views/builder/viewer/renderers/TableRenderer.jsx +0 -92
  506. package/src/views/pages/auth/FooterIllustrationsV2.js +0 -40
  507. package/src/views/pages/misc/FooterIllustrations.js +0 -47
  508. package/src/views/pages/misc/muiTable/CustomPagination.js +0 -34
  509. package/src/views/pages/users/UserManageDialog.js +0 -283
  510. package/src/views/pages/users/UserViewPage.js +0 -199
  511. package/src/views/users/AddUserNameDialog.js +0 -162
  512. package/src/views/users/ContactManage.js +0 -449
  513. package/src/views/users/ResetPasswordDialog.js +0 -242
@@ -1,9 +1,89 @@
1
1
  /**
2
2
  * Convert string-based functions to executable functions
3
- * Used for extraCols and columnsConfig that come from JSON configuration
3
+ * Used for extraCols and columnsConfig that come from JSON configuration.
4
+ *
5
+ * ─────────────────────────────────────────────────────────────────────────────
6
+ * INJECTED VARIABLES (available inside every column function)
7
+ * ─────────────────────────────────────────────────────────────────────────────
8
+ *
9
+ * rowData {object} — The current row's data object (params.data). Injected
10
+ * per-call into the second-argument scope so column functions
11
+ * can destructure it directly:
12
+ * (params, { rowData }) => rowData.Status === 'Active'
13
+ *
14
+ * nodeName {string} — The builder node ID of the ReportViewer that owns this
15
+ * table. Use it to target this table's ref from outside,
16
+ * or pass it to node-aware helpers below.
17
+ *
18
+ * reportRefs {object} — The live registry of all ReportViewer refs on the page.
19
+ * Shape: { [nodeId]: React.MutableRefObject<updateRow[]> }
20
+ * Access any table's ref: reportRefs.current['someNodeId']
21
+ *
22
+ * ─────────────────────────────────────────────────────────────────────────────
23
+ * HELPER FUNCTIONS (also injected — no imports needed)
24
+ * ─────────────────────────────────────────────────────────────────────────────
25
+ *
26
+ * All original helpers from updateRefHelpers are available:
27
+ * setUpdateRefValue, setUpdateRefRow, getUpdateRefValue, hasUpdateRefValue,
28
+ * removeUpdateRefByRowId, clearUpdateRefRow, clearAllUpdateRef,
29
+ * cloneUpdateRefToOriginal, restoreUpdateRefFromOriginal
30
+ *
31
+ * PLUS node-aware wrappers — these accept an optional last `node` argument:
32
+ * - If node is omitted → uses params.context.updateRef (direct, backward compat)
33
+ * - If node is a string → uses reportRefs.current[node] (targets another table)
34
+ * - Pass the special constant `THIS_NODE` to target THIS table by nodeName
35
+ *
36
+ * setRefValue(updateRef, rowData, rowUniqueId, fieldPath, newValue, node?)
37
+ * setRefRow(updateRef, rowData, rowUniqueId, updates, node?)
38
+ * getRefValue(updateRef, rowData, rowUniqueId, fieldPath, node?)
39
+ * hasRefValue(updateRef, rowData, rowUniqueId, fieldPath, node?)
40
+ * clearRefRow(updateRef, rowData, rowUniqueId, node?)
41
+ * clearAllRef(updateRef, node?)
42
+ *
43
+ * Convenience: resolve a ref without specifying updateRef at all
44
+ * getNodeRef(nodeId?) — returns the updateRef for nodeId (or nodeName if omitted)
45
+ *
46
+ * ─────────────────────────────────────────────────────────────────────────────
47
+ * USAGE EXAMPLES
48
+ * ─────────────────────────────────────────────────────────────────────────────
49
+ *
50
+ * // valueSetter — using rowData from the second-argument scope:
51
+ * (params, { rowData, setRefValue, getNodeRef }) => {
52
+ * const { newValue } = params
53
+ * rowData.IsPublic = newValue
54
+ * setRefValue(params.context.updateRef, rowData, 'Id', 'IsPublic', newValue)
55
+ * return true
56
+ * }
57
+ *
58
+ * // valueSetter — same table, using getNodeRef shortcut:
59
+ * (params, { rowData }) => {
60
+ * const { newValue } = params
61
+ * rowData.IsPublic = newValue
62
+ * setUpdateRefValue(getNodeRef(), rowData, 'Id', 'IsPublic', newValue)
63
+ * return true
64
+ * }
65
+ *
66
+ * // valueSetter — update a DIFFERENT table's ref by its builder node ID:
67
+ * (params) => {
68
+ * const { newValue, data, context } = params
69
+ * data.Amount = newValue
70
+ * setRefValue(context.updateRef, data, 'Id', 'Amount', newValue, 'report-node-abc')
71
+ * return true
72
+ * }
73
+ *
74
+ * // valueGetter — read from ref, fall back to raw data:
75
+ * (params) => {
76
+ * return getRefValue(params.context.updateRef, params.data, 'Id', 'IsPublic')
77
+ * ?? params.data?.IsPublic
78
+ * }
79
+ *
80
+ * // Directly access any report's ref (e.g. from a button action):
81
+ * const ref = reportRefs.current['some-node-id']
82
+ * const changes = ref?.current ?? []
83
+ *
84
+ * ─────────────────────────────────────────────────────────────────────────────
4
85
  */
5
86
 
6
- // Import helper functions that need to be available in the converted functions
7
87
  import {
8
88
  setUpdateRefValue,
9
89
  setUpdateRefRow,
@@ -13,188 +93,244 @@ import {
13
93
  clearUpdateRefRow,
14
94
  clearAllUpdateRef,
15
95
  cloneUpdateRefToOriginal,
16
- restoreUpdateRefFromOriginal
96
+ restoreUpdateRefFromOriginal,
17
97
  } from './updateRefHelpers'
98
+ import fetchReportDataByPageId from 'services/reportData/fetchReportData'
99
+
100
+ // ─── Sentinel constant ────────────────────────────────────────────────────────
101
+ // Pass THIS_NODE as the `node` arg to target the current table's nodeName.
102
+ export const THIS_NODE = '__THIS__'
103
+
104
+ // ─── Helper factory ───────────────────────────────────────────────────────────
18
105
 
19
106
  /**
20
- * Convert a string function to an executable function
21
- * Injects helper functions into the scope so they're available when the function executes
22
- * @param {string} funcString - The function as a string
23
- * @returns {Function|string} The converted function or original string if conversion fails
107
+ * Resolve the effective updateRef for a given node identifier.
108
+ * - node === undefined/null → use the passed directRef (backward compat)
109
+ * - node === THIS_NODE → use reportRefs.current[nodeName]
110
+ * - node === string use reportRefs.current[node]
111
+ *
112
+ * Exported so other execution contexts (e.g. RowActionsCell) can reuse it.
24
113
  */
25
- export const convertStringToFunction = (funcString) => {
26
- if (typeof funcString !== 'string' || !funcString.trim()) {
27
- return funcString
114
+ export function makeNodeAwareHelpers(reportRefs, nodeName) {
115
+ function resolveRef(directRef, node) {
116
+ if (!node) return directRef
117
+ const id = node === THIS_NODE ? nodeName : node
118
+ return (reportRefs?.current?.[id]) ?? directRef
119
+ }
120
+
121
+ return {
122
+ /** Resolve a ref without needing directRef — returns the updateRef for nodeId (or nodeName) */
123
+ getNodeRef: (nodeId) => {
124
+ const id = nodeId ?? nodeName
125
+ return reportRefs?.current?.[id] ?? null
126
+ },
127
+
128
+ setRefValue: (directRef, rowData, rowUniqueId, fieldPath, newValue, node) =>
129
+ setUpdateRefValue(resolveRef(directRef, node), rowData, rowUniqueId, fieldPath, newValue),
130
+
131
+ setRefRow: (directRef, rowData, rowUniqueId, updates, node) =>
132
+ setUpdateRefRow(resolveRef(directRef, node), rowData, rowUniqueId, updates),
133
+
134
+ getRefValue: (directRef, rowData, rowUniqueId, fieldPath, node) =>
135
+ getUpdateRefValue(resolveRef(directRef, node), rowData, rowUniqueId, fieldPath),
136
+
137
+ hasRefValue: (directRef, rowData, rowUniqueId, fieldPath, node) =>
138
+ hasUpdateRefValue(resolveRef(directRef, node), rowData, rowUniqueId, fieldPath),
139
+
140
+ clearRefRow: (directRef, rowData, rowUniqueId, node) =>
141
+ clearUpdateRefRow(resolveRef(directRef, node), rowData, rowUniqueId),
142
+
143
+ clearAllRef: (directRef, node) =>
144
+ clearAllUpdateRef(resolveRef(directRef, node)),
28
145
  }
146
+ }
147
+
148
+ // ─── Core converter ───────────────────────────────────────────────────────────
149
+
150
+ /**
151
+ * Convert a string function to an executable function.
152
+ * Injects updateRef helpers + node-aware utilities into scope.
153
+ *
154
+ * @param {string} funcString - The function as a string
155
+ * @param {object} [ctx] - Optional context for node-aware helpers
156
+ * @param {object} [ctx.reportRefs] - The live reportRefs registry (useRef)
157
+ * @param {string} [ctx.nodeName] - The builder node ID for this table
158
+ * @returns {Function|string}
159
+ */
160
+ export const convertStringToFunction = (funcString, ctx = {}) => {
161
+ if (typeof funcString !== 'string' || !funcString.trim()) return funcString
162
+
163
+ const { reportRefs = null, nodeName = '', data = {}, dataRef = {}, setData = null, openDialog = null, closeDialog = null } = ctx
164
+ const nodeHelpers = makeNodeAwareHelpers(reportRefs, nodeName)
165
+
166
+ // ── Scope object ─────────────────────────────────────────────────────────────
167
+ // Passed explicitly as the second argument: (params, { data, setData, ... }) => {}
168
+ // Also injected into the lexical scope via new Function for backward compatibility
169
+ // with old single-argument functions that reference helpers directly by name.
170
+ const scope = {
171
+ // Viewer state
172
+ data,
173
+ setData: setData ?? (() => {}),
174
+ dataRef,
175
+ fetchReportData: fetchReportDataByPageId,
176
+ openDialog: openDialog ?? (() => {}),
177
+ closeDialog: closeDialog ?? (() => {}),
178
+ // Node-aware ref wrappers
179
+ setRefValue: nodeHelpers.setRefValue,
180
+ setRefRow: nodeHelpers.setRefRow,
181
+ getRefValue: nodeHelpers.getRefValue,
182
+ hasRefValue: nodeHelpers.hasRefValue,
183
+ clearRefRow: nodeHelpers.clearRefRow,
184
+ clearAllRef: nodeHelpers.clearAllRef,
185
+ getNodeRef: nodeHelpers.getNodeRef,
186
+ // Low-level ref helpers
187
+ setUpdateRefValue, setUpdateRefRow, getUpdateRefValue, hasUpdateRefValue,
188
+ removeUpdateRefByRowId, clearUpdateRefRow, clearAllUpdateRef,
189
+ cloneUpdateRefToOriginal, restoreUpdateRefFromOriginal,
190
+ // Context constants
191
+ reportRefs, nodeName, THIS_NODE,
192
+ }
193
+
194
+ const scopeNames = Object.keys(scope)
195
+ const scopeValues = Object.values(scope)
29
196
 
30
197
  try {
31
- // Check if it looks like a function
32
198
  const trimmed = funcString.trim()
33
199
 
34
- // Arrow function: (params) => { ... } or (params) => ...
35
- if (trimmed.startsWith('(') && trimmed.includes('=>')) {
36
- // Create a wrapper that provides helper functions in scope
37
- // We wrap the user's function and inject the helpers as local variables
38
- // eslint-disable-next-line no-new-func
39
- const wrapper = new Function(
40
- 'setUpdateRefValue',
41
- 'setUpdateRefRow',
42
- 'getUpdateRefValue',
43
- 'hasUpdateRefValue',
44
- 'removeUpdateRefByRowId',
45
- 'clearUpdateRefRow',
46
- 'clearAllUpdateRef',
47
- 'cloneUpdateRefToOriginal',
48
- 'restoreUpdateRefFromOriginal',
49
- `"use strict";
50
- const userFunc = ${trimmed};
51
- return userFunc;`
52
- )
53
- return wrapper(setUpdateRefValue, setUpdateRefRow, getUpdateRefValue, hasUpdateRefValue, removeUpdateRefByRowId, clearUpdateRefRow, clearAllUpdateRef, cloneUpdateRefToOriginal, restoreUpdateRefFromOriginal)
54
- }
200
+ // Strip leading block comments (/** ... */ or /* ... */) and line comments (// ...)
201
+ // so the pattern check below works even when the user writes JSDoc above the function.
202
+ const stripped = trimmed
203
+ .replace(/^(\s*(\/\*[\s\S]*?\*\/|\/\/[^\n]*)\s*)+/, '')
204
+ .trim()
55
205
 
56
- // Regular function: function(params) { ... }
57
- if (trimmed.startsWith('function')) {
58
- // Create a wrapper that provides helper functions in scope
59
- // eslint-disable-next-line no-new-func
60
- const wrapper = new Function(
61
- 'setUpdateRefValue',
62
- 'setUpdateRefRow',
63
- 'getUpdateRefValue',
64
- 'hasUpdateRefValue',
65
- 'removeUpdateRefByRowId',
66
- 'clearUpdateRefRow',
67
- 'clearAllUpdateRef',
68
- 'cloneUpdateRefToOriginal',
69
- 'restoreUpdateRefFromOriginal',
70
- `"use strict";
71
- const userFunc = ${trimmed};
72
- return userFunc;`
73
- )
74
- return wrapper(setUpdateRefValue, setUpdateRefRow, getUpdateRefValue, hasUpdateRefValue, removeUpdateRefByRowId, clearUpdateRefRow, clearAllUpdateRef, cloneUpdateRefToOriginal, restoreUpdateRefFromOriginal)
75
- }
206
+ let bodyTemplate
76
207
 
77
- // Expression function (old AG Grid style): return params.value
78
- if (trimmed.startsWith('return ')) {
79
- // For expression functions, wrap in a function with helpers available
80
- // eslint-disable-next-line no-new-func
81
- const wrapper = new Function(
82
- 'setUpdateRefValue',
83
- 'setUpdateRefRow',
84
- 'getUpdateRefValue',
85
- 'hasUpdateRefValue',
86
- 'removeUpdateRefByRowId',
87
- 'clearUpdateRefRow',
88
- 'clearAllUpdateRef',
89
- 'cloneUpdateRefToOriginal',
90
- 'restoreUpdateRefFromOriginal',
91
- `"use strict";
92
- return function(params) {
93
- ${trimmed}
94
- };`
95
- )
96
- return wrapper(setUpdateRefValue, setUpdateRefRow, getUpdateRefValue, hasUpdateRefValue, removeUpdateRefByRowId, clearUpdateRefRow, clearAllUpdateRef, cloneUpdateRefToOriginal, restoreUpdateRefFromOriginal)
208
+ if (stripped.startsWith('(') && trimmed.includes('=>')) {
209
+ bodyTemplate = `"use strict"; const userFunc = ${trimmed}; return userFunc;`
210
+ } else if (stripped.startsWith('function') || stripped.startsWith('async function')) {
211
+ bodyTemplate = `"use strict"; const userFunc = ${trimmed}; return userFunc;`
212
+ } else if (stripped.startsWith('async (') || stripped.startsWith('async(')) {
213
+ bodyTemplate = `"use strict"; const userFunc = ${trimmed}; return userFunc;`
214
+ } else if (stripped.startsWith('return ')) {
215
+ bodyTemplate = `"use strict"; return function(params) { ${trimmed} };`
216
+ } else {
217
+ return funcString
97
218
  }
98
219
 
99
- // If not a function format, return as is
100
- return funcString
220
+ // eslint-disable-next-line no-new-func
221
+ const userFunc = new Function(...scopeNames, bodyTemplate)(...scopeValues)
222
+
223
+ // Return an AG Grid-compatible 1-arg wrapper that passes `scope` as the
224
+ // explicit second argument — (params, { data, setData, rowData, ... }) => {}
225
+ // rowData is the current row's data object (agParams.data), injected per-call
226
+ // so column functions can destructure it directly without going through params.
227
+ return (agParams) => userFunc(agParams, { ...scope, rowData: agParams?.data })
101
228
  } catch (e) {
102
229
  console.error('Failed to convert string to function:', e)
103
230
  console.error('Function string:', funcString)
104
- console.error('Stack:', e.stack)
105
231
  return funcString
106
232
  }
107
233
  }
108
234
 
235
+ // ─── Column definition processors ────────────────────────────────────────────
236
+
237
+ const FUNCTION_PROPERTIES = [
238
+ 'valueSetter', 'valueGetter', 'valueFormatter', 'valueParser',
239
+ 'cellRenderer', 'cellEditor', 'cellClass', 'cellStyle', 'editable',
240
+ 'comparator', 'equals', 'keyCreator', 'filterValueGetter', 'filterParams',
241
+ 'cellEditorParams', 'cellRendererParams', 'headerValueGetter',
242
+ 'tooltipValueGetter', 'aggFunc', 'getQuickFilterText',
243
+ 'suppressKeyboardEvent', 'suppressPaste', 'cellClassRules',
244
+ ]
245
+
109
246
  /**
110
- * Process a column definition and convert all string functions to executable functions
111
- * @param {object} colDef - The column definition object
112
- * @returns {object} The processed column definition with converted functions
247
+ * Process a single column definition convert all string functions.
248
+ *
249
+ * @param {object} colDef
250
+ * @param {object} [ctx] - { reportRefs, nodeName }
251
+ * @returns {object}
113
252
  */
114
- export const processColumnDefinition = (colDef) => {
115
- if (!colDef || typeof colDef !== 'object') {
116
- return colDef
117
- }
253
+ export const processColumnDefinition = (colDef, ctx = {}) => {
254
+ if (!colDef || typeof colDef !== 'object') return colDef
118
255
 
119
- const processed = {...colDef}
120
-
121
- // List of AG Grid properties that should be functions
122
- const functionProperties = [
123
- 'valueSetter',
124
- 'valueGetter',
125
- 'valueFormatter',
126
- 'valueParser',
127
- 'cellRenderer',
128
- 'cellEditor',
129
- 'cellClass',
130
- 'cellStyle',
131
- 'editable',
132
- 'comparator',
133
- 'equals',
134
- 'keyCreator',
135
- 'filterValueGetter',
136
- 'filterParams',
137
- 'cellEditorParams',
138
- 'cellRendererParams',
139
- 'headerValueGetter',
140
- 'tooltipValueGetter',
141
- 'aggFunc',
142
- 'getQuickFilterText',
143
- 'suppressKeyboardEvent',
144
- 'suppressPaste',
145
- 'cellClassRules'
146
- ]
147
-
148
- functionProperties.forEach(prop => {
256
+ const processed = { ...colDef }
257
+
258
+ FUNCTION_PROPERTIES.forEach(prop => {
149
259
  if (prop in processed && typeof processed[prop] === 'string') {
150
- const converted = convertStringToFunction(processed[prop])
260
+ const converted = convertStringToFunction(processed[prop], ctx)
151
261
  if (converted !== processed[prop]) {
262
+ if (prop === 'valueSetter' || prop === 'valueGetter') {
263
+ console.log(`[processColumnDef] ✅ "${prop}" on field "${processed.field}" converted to function`)
264
+ }
152
265
  processed[prop] = converted
266
+ } else {
267
+ if (prop === 'valueSetter' || prop === 'valueGetter') {
268
+ console.warn(`[processColumnDef] ⚠️ "${prop}" on field "${processed.field}" was NOT converted — string returned as-is:`, processed[prop])
269
+ }
153
270
  }
154
271
  }
155
272
  })
156
273
 
157
- // Special handling for cellEditorParams - can be a function or object
158
- if ('cellEditorParams' in processed) {
159
- if (typeof processed.cellEditorParams === 'string') {
160
- processed.cellEditorParams = convertStringToFunction(processed.cellEditorParams)
274
+ // Special handling for cellEditorParams can be a function string or plain JSON object.
275
+ if ('cellEditorParams' in processed && typeof processed.cellEditorParams === 'string') {
276
+ const converted = convertStringToFunction(processed.cellEditorParams, ctx)
277
+ if (converted !== processed.cellEditorParams) {
278
+ // Was recognised as a function string → use the converted function
279
+ console.log(`[processColumnDef] ✅ cellEditorParams on field "${processed.field}" converted to function`)
280
+ processed.cellEditorParams = converted
281
+ } else {
282
+ // Not a function — try JSON.parse so editors receive a plain object, not a string
283
+ try {
284
+ processed.cellEditorParams = JSON.parse(processed.cellEditorParams)
285
+ console.log(`[processColumnDef] ✅ cellEditorParams on field "${processed.field}" parsed as JSON object`)
286
+ } catch { /* leave as-is */ }
161
287
  }
288
+ } else if ('cellEditorParams' in processed) {
289
+ console.log(`[processColumnDef] ℹ️ cellEditorParams on field "${processed.field}" is already type "${typeof processed.cellEditorParams}" — skipped conversion`)
290
+ }
291
+
292
+ // Ensure MultiSelectEditor always runs as a popup — required for AG Grid v33+.
293
+ // cellEditorPopup on the colDef is the authoritative way; isPopup() on the
294
+ // component instance alone is not reliable in modern AG Grid React.
295
+ if (processed.cellEditor === 'MultiSelectEditor') {
296
+ processed.cellEditorPopup = true
297
+ console.log(`[processColumnDef] ✅ cellEditorPopup=true injected for field "${processed.field}"`, {
298
+ cellEditorParamsType: typeof processed.cellEditorParams,
299
+ hasValueSetter: typeof processed.valueSetter === 'function',
300
+ hasValueGetter: typeof processed.valueGetter === 'function',
301
+ })
162
302
  }
163
303
 
164
304
  return processed
165
305
  }
166
306
 
167
307
  /**
168
- * Process an array of column definitions
169
- * @param {array} colDefs - Array of column definitions
170
- * @returns {array} Processed column definitions
308
+ * Process an array of column definitions.
309
+ *
310
+ * @param {Array} colDefs
311
+ * @param {object} [ctx] - { reportRefs, nodeName }
312
+ * @returns {Array}
171
313
  */
172
- export const processColumnDefinitions = (colDefs) => {
173
- if (!Array.isArray(colDefs)) {
174
- return colDefs
175
- }
176
-
177
- return colDefs.map(colDef => processColumnDefinition(colDef))
314
+ export const processColumnDefinitions = (colDefs, ctx = {}) => {
315
+ if (!Array.isArray(colDefs)) return colDefs
316
+ return colDefs.map(colDef => processColumnDefinition(colDef, ctx))
178
317
  }
179
318
 
180
319
  /**
181
- * Process columnsConfig array (field + config format)
182
- * @param {array} columnsConfig - Array of column configs [{field, config}]
183
- * @returns {array} Processed column configs
320
+ * Process columnsConfig array — [{ field, config }] format.
321
+ *
322
+ * @param {Array} columnsConfig
323
+ * @param {object} [ctx] - { reportRefs, nodeName }
324
+ * @returns {Array}
184
325
  */
185
- export const processColumnsConfig = (columnsConfig) => {
186
- if (!Array.isArray(columnsConfig)) {
187
- return columnsConfig
188
- }
326
+ export const processColumnsConfig = (columnsConfig, ctx = {}) => {
327
+ if (!Array.isArray(columnsConfig)) return columnsConfig
189
328
 
190
329
  return columnsConfig.map(item => {
191
- if (!item || !item.config) {
192
- return item
193
- }
194
-
330
+ if (!item || !item.config) return item
195
331
  return {
196
332
  ...item,
197
- config: processColumnDefinition(item.config)
333
+ config: processColumnDefinition(item.config, ctx),
198
334
  }
199
335
  })
200
336
  }
@@ -10,7 +10,9 @@ const CustomStatusBar = ({ api }) => {
10
10
 
11
11
  const updateStatus = () => {
12
12
  setTotalRows(api.getDisplayedRowCount());
13
- setSelectedRows(api.getSelectedRows().length);
13
+ // getSelectedRows() can return undefined when row selection is not configured
14
+ const selected = api.getSelectedRows?.() ?? []
15
+ setSelectedRows(Array.isArray(selected) ? selected.length : 0);
14
16
  };
15
17
 
16
18
  // Listen to row changes
@@ -105,18 +105,21 @@ const compareRowIds = (rowId1, rowId2) => {
105
105
  * @returns {string} Composite key string
106
106
  */
107
107
  export const getRowId = (rowData, rowUniqueId) => {
108
- if (!rowData || !rowUniqueId || rowUniqueId.length === 0) {
109
- return null
110
- }
108
+ if (!rowData || !rowUniqueId) return null
109
+
110
+ // Accept both a plain string ('Id') and an array (['Id', 'SubId'])
111
+ const ids = Array.isArray(rowUniqueId) ? rowUniqueId : [rowUniqueId]
112
+
113
+ if (ids.length === 0) return null
111
114
 
112
115
  // If single field, return its value directly as string
113
- if (rowUniqueId.length === 1) {
114
- const value = getNestedValue(rowData, rowUniqueId[0])
116
+ if (ids.length === 1) {
117
+ const value = getNestedValue(rowData, ids[0])
115
118
  return value != null ? String(value) : null
116
119
  }
117
120
 
118
121
  // If multiple fields, create composite key
119
- const keyParts = rowUniqueId.map(fieldPath => {
122
+ const keyParts = ids.map(fieldPath => {
120
123
  const value = getNestedValue(rowData, fieldPath)
121
124
  return value != null ? String(value) : ''
122
125
  })