robobyte-front-builder 1.0.19 → 1.0.23

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 (520) hide show
  1. package/INTEGRATION.md +1586 -0
  2. package/README.md +928 -0
  3. package/RoboByteBuilder_User_Manual.docx +0 -0
  4. package/next.config.js +19 -48
  5. package/package.json +42 -86
  6. package/src/context/BuilderContext.jsx +191 -7
  7. package/src/context/SystemContext.js +2 -2
  8. package/src/hooks/useGlobalStore.js +36 -0
  9. package/src/hooks/useTimerEngine.js +54 -0
  10. package/src/lib/index.js +11 -3
  11. package/src/lib/layouts/BlankLayout.jsx +13 -0
  12. package/src/lib/providers/RoboByteFrontBuilderProvider.jsx +61 -7
  13. package/src/lib/themes/builderTheme.js +41 -0
  14. package/src/pages/_app.js +32 -134
  15. package/src/pages/api/ai.js +107 -0
  16. package/src/pages/builders/report/index.js +1 -0
  17. package/src/pages/builders/report/list/index.js +1 -0
  18. package/src/pages/builders/report/viewer/index.js +1 -0
  19. package/src/pages/index.js +88 -37
  20. package/src/pages/printBuilder/index.jsx +263 -0
  21. package/src/pages/printBuilder/layouts/index.jsx +298 -0
  22. package/src/pages/reportModule/reportBuilder/index.js +8 -6
  23. package/src/pages/reportModule/reportBuilder/reportViewer/index.js +92 -25
  24. package/src/pages/reportModule/reportBuilder/reports/index.js +3 -5
  25. package/src/pages/reportModule/reportBuilder/reportsPermissions/index.js +2 -3
  26. package/src/pages/viewBuilder/index.jsx +117 -32
  27. package/src/pages/viewBuilder/views/index.js +3 -3
  28. package/src/pages/viewer/[id]/index.js +2 -1
  29. package/src/services/DeleteService.js +31 -60
  30. package/src/services/Endpoints/PrintLayoutEndpoints.js +42 -0
  31. package/src/services/Endpoints/ReportBuilderEndpoints.js +7 -7
  32. package/src/services/Endpoints.js +2 -0
  33. package/src/services/GetService.js +33 -54
  34. package/src/services/PatchService.js +38 -65
  35. package/src/services/PostService.js +37 -63
  36. package/src/services/UpdateService.js +39 -65
  37. package/src/services/builderHelper/actionExecutor.js +141 -25
  38. package/src/services/builderHelper/builderHelper.js +92 -0
  39. package/src/services/builderHelper/colorSchema.js +95 -0
  40. package/src/services/builderHelper/iconResolver.js +50 -0
  41. package/src/services/builderHelper/jsExecutor.js +212 -46
  42. package/src/services/builderHelper/nodeFactory.js +32 -15
  43. package/src/services/builderHelper/numberFormat.js +123 -0
  44. package/src/services/builderHelper/resolveProps.js +73 -4
  45. package/src/services/builderHelper/thresholdEngine.js +77 -0
  46. package/src/services/builderHelper/tree.js +31 -0
  47. package/src/services/components/agGridAutoComplete.js +5 -9
  48. package/src/services/config.js +9 -1
  49. package/src/services/globalStore.js +80 -0
  50. package/src/services/helper/multiSelectEditor.js +5 -9
  51. package/src/services/helper/multiSelectEditorByBuilder.js +5 -9
  52. package/src/services/reportData/fetchReportData.js +69 -28
  53. package/src/services/routerRef.js +35 -0
  54. package/src/services/sessionLog.js +171 -0
  55. package/src/views/ConfirmDialog.js +2 -2
  56. package/src/views/builder/JSEditor.js +105 -107
  57. package/src/views/builder/SessionLogDialog.jsx +350 -0
  58. package/src/views/builder/UnsavedChangesGuard.jsx +103 -0
  59. package/src/views/builder/inspector/Inspector.jsx +6 -9
  60. package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +7 -13
  61. package/src/views/builder/inspector/Tabs/MainTab.jsx +143 -25
  62. package/src/views/builder/inspector/Tabs/RulesTab.jsx +9 -24
  63. package/src/views/builder/inspector/Tabs/StyleTab.jsx +9 -24
  64. package/src/views/builder/inspector/definitions/autocomplete/main.js +4 -6
  65. package/src/views/builder/inspector/definitions/banner/actions.js +7 -0
  66. package/src/views/builder/inspector/definitions/banner/main.js +22 -0
  67. package/src/views/builder/inspector/definitions/banner/rules.js +1 -0
  68. package/src/views/builder/inspector/definitions/banner/style.js +1 -0
  69. package/src/views/builder/inspector/definitions/breadcrumb/main.js +43 -6
  70. package/src/views/builder/inspector/definitions/button/main.js +11 -12
  71. package/src/views/builder/inspector/definitions/button/style.js +18 -30
  72. package/src/views/builder/inspector/definitions/checkbox/actions.js +3 -1
  73. package/src/views/builder/inspector/definitions/checkbox/main.js +4 -6
  74. package/src/views/builder/inspector/definitions/common/main.js +13 -2
  75. package/src/views/builder/inspector/definitions/dataGrid/main.js +23 -0
  76. package/src/views/builder/inspector/definitions/dataTableViewer/main.js +46 -0
  77. package/src/views/builder/inspector/definitions/datepicker/actions.js +3 -1
  78. package/src/views/builder/inspector/definitions/datepicker/main.js +6 -14
  79. package/src/views/builder/inspector/definitions/dialog/main.js +36 -0
  80. package/src/views/builder/inspector/definitions/dropdown/main.js +5 -8
  81. package/src/views/builder/inspector/definitions/excelUpload/actions.js +23 -0
  82. package/src/views/builder/inspector/definitions/excelUpload/main.js +17 -0
  83. package/src/views/builder/inspector/definitions/excelUpload/rules.js +1 -0
  84. package/src/views/builder/inspector/definitions/excelUpload/style.js +45 -0
  85. package/src/views/builder/inspector/definitions/header/main.js +10 -1
  86. package/src/views/builder/inspector/definitions/index.js +106 -19
  87. package/src/views/builder/inspector/definitions/input/actions.js +4 -1
  88. package/src/views/builder/inspector/definitions/input/main.js +20 -11
  89. package/src/views/builder/inspector/definitions/kpi/avatarGroup.js +22 -0
  90. package/src/views/builder/inspector/definitions/kpi/badge.js +17 -0
  91. package/src/views/builder/inspector/definitions/kpi/bulletChart.js +47 -0
  92. package/src/views/builder/inspector/definitions/kpi/chart.js +55 -0
  93. package/src/views/builder/inspector/definitions/kpi/colorScale.js +60 -0
  94. package/src/views/builder/inspector/definitions/kpi/comparisonBars.js +41 -0
  95. package/src/views/builder/inspector/definitions/kpi/countdown.js +46 -0
  96. package/src/views/builder/inspector/definitions/kpi/donut.js +51 -0
  97. package/src/views/builder/inspector/definitions/kpi/funnel.js +25 -0
  98. package/src/views/builder/inspector/definitions/kpi/gauge.js +39 -0
  99. package/src/views/builder/inspector/definitions/kpi/heatmapGrid.js +96 -0
  100. package/src/views/builder/inspector/definitions/kpi/iconBox.js +20 -0
  101. package/src/views/builder/inspector/definitions/kpi/metric.js +45 -0
  102. package/src/views/builder/inspector/definitions/kpi/rating.js +27 -0
  103. package/src/views/builder/inspector/definitions/kpi/statusDot.js +18 -0
  104. package/src/views/builder/inspector/definitions/kpi/stepStage.js +65 -0
  105. package/src/views/builder/inspector/definitions/kpi/tagList.js +32 -0
  106. package/src/views/builder/inspector/definitions/kpi/timeline.js +80 -0
  107. package/src/views/builder/inspector/definitions/kpi/trend.js +20 -0
  108. package/src/views/builder/inspector/definitions/label/main.js +10 -1
  109. package/src/views/builder/inspector/definitions/layout/main.js +27 -3
  110. package/src/views/builder/inspector/definitions/number/main.js +6 -14
  111. package/src/views/builder/inspector/definitions/pageNumber/main.js +21 -0
  112. package/src/views/builder/inspector/definitions/popover/main.js +71 -0
  113. package/src/views/builder/inspector/definitions/radio/main.js +5 -8
  114. package/src/views/builder/inspector/definitions/repeater/main.js +31 -0
  115. package/src/views/builder/inspector/definitions/reportViewer/main.js +28 -1
  116. package/src/views/builder/inspector/definitions/richtext/main.js +5 -8
  117. package/src/views/builder/inspector/definitions/signature/main.js +4 -1
  118. package/src/views/builder/inspector/definitions/tag/main.js +5 -8
  119. package/src/views/builder/inspector/definitions/textarea/actions.js +4 -1
  120. package/src/views/builder/inspector/definitions/textarea/main.js +5 -7
  121. package/src/views/builder/inspector/definitions/time/main.js +5 -8
  122. package/src/views/builder/inspector/definitions/toggle/main.js +5 -19
  123. package/src/views/builder/inspector/definitions/treeView/main.js +61 -0
  124. package/src/views/builder/inspector/definitions/viewRenderer/main.js +53 -0
  125. package/src/views/builder/inspector/definitions/wizard/main.js +68 -0
  126. package/src/views/builder/inspector/definitions/wizard-step/main.js +25 -0
  127. package/src/views/builder/inspector/fields/ActionsConfigEditor.jsx +426 -0
  128. package/src/views/builder/inspector/fields/ColorSchemaField.jsx +140 -0
  129. package/src/views/builder/inspector/fields/ColumnFunctionEditor.jsx +238 -0
  130. package/src/views/builder/inspector/fields/ColumnMappingEditor.jsx +105 -0
  131. package/src/views/builder/inspector/fields/ColumnsConfigEditor.jsx +506 -0
  132. package/src/views/builder/inspector/fields/DonutRingsEditorField.jsx +337 -0
  133. package/src/views/builder/inspector/fields/ExtraColsEditor.jsx +618 -0
  134. package/src/views/builder/inspector/fields/FunctionHelpPopover.jsx +295 -0
  135. package/src/views/builder/inspector/fields/IconEditor.jsx +64 -0
  136. package/src/views/builder/inspector/fields/KpiActionField.jsx +223 -0
  137. package/src/views/builder/inspector/fields/MarkersEditorField.jsx +173 -0
  138. package/src/views/builder/inspector/fields/SelectEditor.jsx +9 -5
  139. package/src/views/builder/inspector/fields/SeriesEditorField.jsx +363 -0
  140. package/src/views/builder/inspector/fields/TableColumnsEditor.jsx +104 -0
  141. package/src/views/builder/inspector/fields/ThresholdsEditor.jsx +247 -0
  142. package/src/views/builder/inspector/fields/ValueFunctionsRefPanel.jsx +217 -0
  143. package/src/views/builder/inspector/fields/columnEditorShared.jsx +217 -0
  144. package/src/views/builder/sidebar/Sidebar.jsx +4 -2
  145. package/src/views/builder/sidebar/SidebarTabs.jsx +28 -17
  146. package/src/views/builder/sidebar/tabs/ActionsTab.jsx +7 -3
  147. package/src/views/builder/sidebar/tabs/AiTab/AiPreviewDialog.jsx +193 -0
  148. package/src/views/builder/sidebar/tabs/AiTab/aiProvider.js +53 -0
  149. package/src/views/builder/sidebar/tabs/AiTab/index.jsx +409 -0
  150. package/src/views/builder/sidebar/tabs/AiTab/schemaTransformer.js +167 -0
  151. package/src/views/builder/sidebar/tabs/AiTab/schemaValidator.js +64 -0
  152. package/src/views/builder/sidebar/tabs/AiTab/systemPrompt.js +1151 -0
  153. package/src/views/builder/sidebar/tabs/AiTab/trainingExport.js +131 -0
  154. package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +31 -31
  155. package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +43 -21
  156. package/src/views/builder/sidebar/tabs/Components/printComponentCatalog.js +81 -0
  157. package/src/views/builder/sidebar/tabs/TimersTab.jsx +338 -0
  158. package/src/views/builder/sidebar/tabs/TreeTab.jsx +13 -4
  159. package/src/views/builder/sidebar/tabs/ViewTab.jsx +173 -13
  160. package/src/views/builder/viewer/AdornedLabel.jsx +82 -0
  161. package/src/views/builder/viewer/ComponentRenderer.jsx +98 -24
  162. package/src/views/builder/viewer/DialogsZone.jsx +259 -0
  163. package/src/views/builder/viewer/FieldLabel.jsx +106 -0
  164. package/src/views/builder/viewer/PrintDialog.jsx +481 -0
  165. package/src/views/builder/viewer/ProductionViewer.jsx +80 -5
  166. package/src/views/builder/viewer/Viewer.jsx +106 -8
  167. package/src/views/builder/viewer/ViewerComponentWrapper.jsx +70 -9
  168. package/src/views/builder/viewer/ViewerToolbar.jsx +285 -56
  169. package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +26 -22
  170. package/src/views/builder/viewer/renderers/AvatarGroupRenderer.jsx +112 -0
  171. package/src/views/builder/viewer/renderers/BadgeRenderer.jsx +79 -0
  172. package/src/views/builder/viewer/renderers/BannerRenderer.jsx +62 -0
  173. package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +203 -15
  174. package/src/views/builder/viewer/renderers/BulletChartRenderer.jsx +147 -0
  175. package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +98 -39
  176. package/src/views/builder/viewer/renderers/CardRenderer.jsx +1 -1
  177. package/src/views/builder/viewer/renderers/ChartRenderer.jsx +388 -0
  178. package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +17 -9
  179. package/src/views/builder/viewer/renderers/ColorScaleRenderer.jsx +300 -0
  180. package/src/views/builder/viewer/renderers/ComparisonBarsRenderer.jsx +133 -0
  181. package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +3 -1
  182. package/src/views/builder/viewer/renderers/CountdownRenderer.jsx +249 -0
  183. package/src/views/builder/viewer/renderers/DataGridRenderer.jsx +380 -0
  184. package/src/views/builder/viewer/renderers/DataTableViewerRenderer.jsx +240 -0
  185. package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +25 -24
  186. package/src/views/builder/viewer/renderers/DialogRenderer.jsx +327 -0
  187. package/src/views/builder/viewer/renderers/DividerRenderer.jsx +1 -1
  188. package/src/views/builder/viewer/renderers/DonutRenderer.jsx +294 -0
  189. package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +36 -44
  190. package/src/views/builder/viewer/renderers/ExcelUploadRenderer.jsx +639 -0
  191. package/src/views/builder/viewer/renderers/FunnelRenderer.jsx +93 -0
  192. package/src/views/builder/viewer/renderers/GaugeRenderer.jsx +159 -0
  193. package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +31 -9
  194. package/src/views/builder/viewer/renderers/HeatmapGridRenderer.jsx +432 -0
  195. package/src/views/builder/viewer/renderers/IconBoxRenderer.jsx +59 -0
  196. package/src/views/builder/viewer/renderers/ImageRenderer.jsx +1 -1
  197. package/src/views/builder/viewer/renderers/InputRenderer.jsx +75 -18
  198. package/src/views/builder/viewer/renderers/LabelRenderer.jsx +35 -9
  199. package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +102 -40
  200. package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +8 -8
  201. package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +48 -6
  202. package/src/views/builder/viewer/renderers/LinkRenderer.jsx +1 -1
  203. package/src/views/builder/viewer/renderers/MenuRenderer.jsx +2 -2
  204. package/src/views/builder/viewer/renderers/MetricRenderer.jsx +80 -0
  205. package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +21 -30
  206. package/src/views/builder/viewer/renderers/PageNumberRenderer.jsx +76 -0
  207. package/src/views/builder/viewer/renderers/PopoverRenderer.jsx +350 -0
  208. package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +1 -1
  209. package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +1 -1
  210. package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +28 -39
  211. package/src/views/builder/viewer/renderers/RatingRenderer.jsx +80 -0
  212. package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +297 -38
  213. package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +263 -5
  214. package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +60 -66
  215. package/src/views/builder/viewer/renderers/RowActionsCell.jsx +308 -0
  216. package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +33 -62
  217. package/src/views/builder/viewer/renderers/StatusDotRenderer.jsx +75 -0
  218. package/src/views/builder/viewer/renderers/StepStageRenderer.jsx +348 -0
  219. package/src/views/builder/viewer/renderers/TagListRenderer.jsx +115 -0
  220. package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +31 -45
  221. package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +25 -18
  222. package/src/views/builder/viewer/renderers/TextRenderer.jsx +7 -1
  223. package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +25 -24
  224. package/src/views/builder/viewer/renderers/TimelineRenderer.jsx +525 -0
  225. package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +21 -27
  226. package/src/views/builder/viewer/renderers/TreeViewRenderer.jsx +832 -0
  227. package/src/views/builder/viewer/renderers/TrendRenderer.jsx +66 -0
  228. package/src/views/builder/viewer/renderers/ViewRendererRenderer.jsx +315 -0
  229. package/src/views/builder/viewer/renderers/WizardRenderer.jsx +380 -64
  230. package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +21 -12
  231. package/src/views/builder/viewer/renderers/dataGridComponents.jsx +824 -0
  232. package/src/views/customFilter/CustomFilterDialog.js +1023 -660
  233. package/src/views/customFilter/FixedFilterDialog.js +649 -0
  234. package/src/views/customFilter/SearchFilterDialog.js +248 -0
  235. package/src/views/genericTable/BuilderExpressionParams.js +3 -3
  236. package/src/views/genericTable/ColumnConfiguratorDialog.js +33 -24
  237. package/src/views/genericTable/FixedFilterDialog.js +3 -2
  238. package/src/views/genericTable/FormattingSettingsDialog.js +8 -3
  239. package/src/views/genericTable/SGrid.js +821 -448
  240. package/src/views/genericTable/SearchFilterDialog.js +3 -2
  241. package/src/views/genericTable/cellEditors/autocompleteEditor.js +5 -9
  242. package/src/views/genericTable/convertStringFunctions.js +274 -138
  243. package/src/views/genericTable/statusBar/rowCountStatusBar.js +3 -1
  244. package/src/views/genericTable/updateRefHelpers.js +9 -6
  245. package/src/views/printBuilder/PrintBuilderViewer.jsx +627 -0
  246. package/src/views/printBuilder/PrintPreviewCanvas.jsx +157 -0
  247. package/src/views/rolePermissions/UpdateReportPermissionDialog.js +3 -2
  248. package/src/@core/components/auth/AclGuard.js +0 -55
  249. package/src/@core/components/auth/AuthGuard.js +0 -40
  250. package/src/@core/components/auth/GuestGuard.js +0 -30
  251. package/src/@core/components/custom-inputs/Horizontal.jsx +0 -143
  252. package/src/@core/components/custom-inputs/Image.jsx +0 -78
  253. package/src/@core/components/custom-inputs/Vertical.jsx +0 -113
  254. package/src/@core/components/customizer/index.jsx +0 -470
  255. package/src/@core/components/customizer/styles.module.css +0 -169
  256. package/src/@core/components/mui/Avatar.jsx +0 -41
  257. package/src/@core/components/mui/Badge.jsx +0 -20
  258. package/src/@core/components/mui/IconButton.jsx +0 -74
  259. package/src/@core/components/mui/TabList.jsx +0 -60
  260. package/src/@core/components/option-menu/index.jsx +0 -137
  261. package/src/@core/components/scroll-to-top/index.jsx +0 -43
  262. package/src/@core/components/spinner/index.js +0 -26
  263. package/src/@core/components/window-wrapper/index.js +0 -27
  264. package/src/@core/contexts/settingsContext.jsx +0 -98
  265. package/src/@core/hooks/useBgColor.js +0 -63
  266. package/src/@core/hooks/useImageVariant.js +0 -27
  267. package/src/@core/hooks/useLayoutInit.js +0 -37
  268. package/src/@core/hooks/useObjectCookie.js +0 -18
  269. package/src/@core/hooks/useSettings.jsx +0 -15
  270. package/src/@core/layouts/BlankLayout.js +0 -37
  271. package/src/@core/layouts/BlankLayoutWithAppBar.js +0 -51
  272. package/src/@core/layouts/HorizontalLayout.jsx +0 -151
  273. package/src/@core/layouts/Layout.js +0 -39
  274. package/src/@core/layouts/VerticalLayout.jsx +0 -124
  275. package/src/@core/layouts/components/blank-layout-with-appBar/index.js +0 -115
  276. package/src/@core/layouts/components/horizontal/app-bar-content/index.js +0 -67
  277. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +0 -352
  278. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +0 -21
  279. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +0 -195
  280. package/src/@core/layouts/components/horizontal/navigation/index.js +0 -31
  281. package/src/@core/layouts/components/shared-components/LanguageDropdown.js +0 -96
  282. package/src/@core/layouts/components/shared-components/ModeToggler.js +0 -32
  283. package/src/@core/layouts/components/shared-components/NotificationDropdown.js +0 -226
  284. package/src/@core/layouts/components/shared-components/UserDropdown.js +0 -177
  285. package/src/@core/layouts/components/shared-components/footer/FooterContent.js +0 -46
  286. package/src/@core/layouts/components/shared-components/footer/index.js +0 -61
  287. package/src/@core/layouts/components/vertical/appBar/index.js +0 -74
  288. package/src/@core/layouts/components/vertical/navigation/Drawer.js +0 -122
  289. package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +0 -435
  290. package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +0 -180
  291. package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +0 -26
  292. package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +0 -258
  293. package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +0 -102
  294. package/src/@core/layouts/components/vertical/navigation/index.js +0 -169
  295. package/src/@core/layouts/utils.js +0 -69
  296. package/src/@core/styles/Table.module.css +0 -93
  297. package/src/@core/styles/horizontal/menuItemStyles.js +0 -100
  298. package/src/@core/styles/horizontal/menuRootStyles.js +0 -19
  299. package/src/@core/styles/libs/fullcalendar/index.js +0 -461
  300. package/src/@core/styles/libs/keen-slider/index.js +0 -111
  301. package/src/@core/styles/libs/react-apexcharts/index.js +0 -107
  302. package/src/@core/styles/libs/react-cleave/index.js +0 -33
  303. package/src/@core/styles/libs/react-credit-cards/index.js +0 -11
  304. package/src/@core/styles/libs/react-datepicker/index.js +0 -388
  305. package/src/@core/styles/libs/react-draft-wysiwyg/index.js +0 -144
  306. package/src/@core/styles/libs/react-dropzone/index.js +0 -76
  307. package/src/@core/styles/libs/react-hot-toast/index.js +0 -37
  308. package/src/@core/styles/libs/recharts/index.js +0 -47
  309. package/src/@core/styles/stepper.js +0 -103
  310. package/src/@core/styles/vertical/menuItemStyles.js +0 -138
  311. package/src/@core/styles/vertical/menuSectionStyles.js +0 -54
  312. package/src/@core/styles/vertical/navigationCustomStyles.js +0 -62
  313. package/src/@core/svg/ContentCompact.jsx +0 -17
  314. package/src/@core/svg/ContentWide.jsx +0 -17
  315. package/src/@core/svg/DirectionLtr.jsx +0 -93
  316. package/src/@core/svg/DirectionRtl.jsx +0 -93
  317. package/src/@core/svg/LayoutCollapsed.jsx +0 -59
  318. package/src/@core/svg/LayoutHorizontal.jsx +0 -42
  319. package/src/@core/svg/LayoutVertical.jsx +0 -59
  320. package/src/@core/svg/Logo.jsx +0 -76
  321. package/src/@core/svg/SkinBordered.jsx +0 -54
  322. package/src/@core/svg/SkinDefault.jsx +0 -59
  323. package/src/@core/tailwind/plugin.js +0 -78
  324. package/src/@core/theme/ThemeComponent.js +0 -63
  325. package/src/@core/theme/ThemeOptions.js +0 -71
  326. package/src/@core/theme/breakpoints/index.js +0 -11
  327. package/src/@core/theme/colorSchemes.js +0 -326
  328. package/src/@core/theme/customShadows.js +0 -11
  329. package/src/@core/theme/globalStyles.js +0 -81
  330. package/src/@core/theme/index.js +0 -42
  331. package/src/@core/theme/overrides/accordion.js +0 -51
  332. package/src/@core/theme/overrides/accordion.jsx +0 -85
  333. package/src/@core/theme/overrides/alerts.js +0 -110
  334. package/src/@core/theme/overrides/alerts.jsx +0 -180
  335. package/src/@core/theme/overrides/autocomplete.js +0 -14
  336. package/src/@core/theme/overrides/autocomplete.jsx +0 -68
  337. package/src/@core/theme/overrides/avatar.js +0 -38
  338. package/src/@core/theme/overrides/avatars.js +0 -27
  339. package/src/@core/theme/overrides/backdrop.js +0 -22
  340. package/src/@core/theme/overrides/badges.js +0 -16
  341. package/src/@core/theme/overrides/breadcrumbs.js +0 -11
  342. package/src/@core/theme/overrides/button-group.js +0 -84
  343. package/src/@core/theme/overrides/button.js +0 -93
  344. package/src/@core/theme/overrides/buttonGroup.js +0 -9
  345. package/src/@core/theme/overrides/card.js +0 -83
  346. package/src/@core/theme/overrides/checkbox.jsx +0 -95
  347. package/src/@core/theme/overrides/chip.js +0 -72
  348. package/src/@core/theme/overrides/dataGrid.js +0 -114
  349. package/src/@core/theme/overrides/dateTimePicker.js +0 -65
  350. package/src/@core/theme/overrides/dialog.js +0 -120
  351. package/src/@core/theme/overrides/divider.js +0 -13
  352. package/src/@core/theme/overrides/drawer.js +0 -20
  353. package/src/@core/theme/overrides/fab.js +0 -13
  354. package/src/@core/theme/overrides/form-control-label.js +0 -19
  355. package/src/@core/theme/overrides/icon-button.js +0 -145
  356. package/src/@core/theme/overrides/index.js +0 -103
  357. package/src/@core/theme/overrides/input.js +0 -72
  358. package/src/@core/theme/overrides/link.js +0 -9
  359. package/src/@core/theme/overrides/list.js +0 -44
  360. package/src/@core/theme/overrides/menu.js +0 -25
  361. package/src/@core/theme/overrides/pagination.js +0 -41
  362. package/src/@core/theme/overrides/paper.js +0 -9
  363. package/src/@core/theme/overrides/popover.js +0 -16
  364. package/src/@core/theme/overrides/progress.js +0 -38
  365. package/src/@core/theme/overrides/radio.jsx +0 -80
  366. package/src/@core/theme/overrides/rating.js +0 -16
  367. package/src/@core/theme/overrides/rating.jsx +0 -32
  368. package/src/@core/theme/overrides/select.js +0 -19
  369. package/src/@core/theme/overrides/select.jsx +0 -52
  370. package/src/@core/theme/overrides/slider.js +0 -97
  371. package/src/@core/theme/overrides/snackbar.js +0 -19
  372. package/src/@core/theme/overrides/switch.js +0 -73
  373. package/src/@core/theme/overrides/switches.js +0 -25
  374. package/src/@core/theme/overrides/table-pagination.js +0 -39
  375. package/src/@core/theme/overrides/table.js +0 -81
  376. package/src/@core/theme/overrides/tabs.js +0 -30
  377. package/src/@core/theme/overrides/timeline.js +0 -80
  378. package/src/@core/theme/overrides/toggle-button.js +0 -33
  379. package/src/@core/theme/overrides/toggleButton.js +0 -16
  380. package/src/@core/theme/overrides/tooltip.js +0 -21
  381. package/src/@core/theme/overrides/typography.js +0 -13
  382. package/src/@core/theme/palette/index.js +0 -107
  383. package/src/@core/theme/shadows/index.js +0 -61
  384. package/src/@core/theme/shadows.js +0 -12
  385. package/src/@core/theme/spacing/index.js +0 -3
  386. package/src/@core/theme/spacing.js +0 -5
  387. package/src/@core/theme/typography/index.js +0 -65
  388. package/src/@core/theme/typography.js +0 -84
  389. package/src/@core/utils/create-emotion-cache.js +0 -5
  390. package/src/@core/utils/hex-to-rgba.js +0 -11
  391. package/src/@core/utils/serverHelpers.js +0 -45
  392. package/src/@menu/components/RouterLink.jsx +0 -18
  393. package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +0 -88
  394. package/src/@menu/components/horizontal-menu/Menu.jsx +0 -83
  395. package/src/@menu/components/horizontal-menu/MenuButton.jsx +0 -100
  396. package/src/@menu/components/horizontal-menu/MenuItem.jsx +0 -183
  397. package/src/@menu/components/horizontal-menu/SubMenu.jsx +0 -418
  398. package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +0 -41
  399. package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +0 -20
  400. package/src/@menu/components/vertical-menu/Menu.jsx +0 -161
  401. package/src/@menu/components/vertical-menu/MenuButton.jsx +0 -95
  402. package/src/@menu/components/vertical-menu/MenuItem.jsx +0 -180
  403. package/src/@menu/components/vertical-menu/MenuSection.jsx +0 -124
  404. package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +0 -70
  405. package/src/@menu/components/vertical-menu/NavHeader.jsx +0 -39
  406. package/src/@menu/components/vertical-menu/SubMenu.jsx +0 -420
  407. package/src/@menu/components/vertical-menu/SubMenuContent.jsx +0 -101
  408. package/src/@menu/components/vertical-menu/VerticalNav.jsx +0 -216
  409. package/src/@menu/contexts/horizontalNavContext.jsx +0 -29
  410. package/src/@menu/contexts/verticalNavContext.jsx +0 -65
  411. package/src/@menu/defaultConfigs.js +0 -12
  412. package/src/@menu/hooks/useHorizontalMenu.jsx +0 -19
  413. package/src/@menu/hooks/useHorizontalNav.jsx +0 -19
  414. package/src/@menu/hooks/useMediaQuery.jsx +0 -29
  415. package/src/@menu/hooks/useVerticalMenu.jsx +0 -19
  416. package/src/@menu/hooks/useVerticalNav.jsx +0 -19
  417. package/src/@menu/horizontal-menu/index.jsx +0 -8
  418. package/src/@menu/styles/StyledBackdrop.jsx +0 -15
  419. package/src/@menu/styles/StyledMenuIcon.jsx +0 -12
  420. package/src/@menu/styles/StyledMenuLabel.jsx +0 -16
  421. package/src/@menu/styles/StyledMenuPrefix.jsx +0 -10
  422. package/src/@menu/styles/StyledMenuSectionLabel.jsx +0 -21
  423. package/src/@menu/styles/StyledMenuSuffix.jsx +0 -10
  424. package/src/@menu/styles/StyledSubMenuContent.jsx +0 -43
  425. package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +0 -13
  426. package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +0 -26
  427. package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +0 -11
  428. package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +0 -33
  429. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +0 -18
  430. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +0 -10
  431. package/src/@menu/styles/horizontal/horizontalUl.module.css +0 -15
  432. package/src/@menu/styles/styles.module.css +0 -5
  433. package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +0 -16
  434. package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +0 -28
  435. package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +0 -23
  436. package/src/@menu/styles/vertical/StyledVerticalNav.jsx +0 -67
  437. package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +0 -15
  438. package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +0 -23
  439. package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +0 -25
  440. package/src/@menu/styles/vertical/verticalNavBgImage.module.css +0 -10
  441. package/src/@menu/svg/ChevronRight.jsx +0 -9
  442. package/src/@menu/svg/Close.jsx +0 -12
  443. package/src/@menu/svg/RadioCircle.jsx +0 -12
  444. package/src/@menu/svg/RadioCircleMarked.jsx +0 -13
  445. package/src/@menu/utils/menuClasses.js +0 -44
  446. package/src/@menu/utils/menuUtils.jsx +0 -145
  447. package/src/@menu/vertical-menu/index.jsx +0 -11
  448. package/src/configs/acl.js +0 -115
  449. package/src/configs/auth.js +0 -5
  450. package/src/configs/aws-exports.js +0 -30
  451. package/src/configs/firebase.js +0 -25
  452. package/src/configs/i18n.js +0 -34
  453. package/src/configs/primaryColorConfig.js +0 -35
  454. package/src/configs/themeConfig.js +0 -44
  455. package/src/layouts/UserLayout.js +0 -94
  456. package/src/layouts/UserThemeOptions.js +0 -191
  457. package/src/layouts/components/Direction.js +0 -30
  458. package/src/layouts/components/HtmlTooltip.js +0 -15
  459. package/src/layouts/components/Translations.js +0 -11
  460. package/src/layouts/components/UserDropdown.js +0 -217
  461. package/src/layouts/components/UserIcon.js +0 -40
  462. package/src/layouts/components/acl/Can.js +0 -6
  463. package/src/layouts/components/acl/CanViewNavGroup.js +0 -36
  464. package/src/layouts/components/acl/CanViewNavLink.js +0 -17
  465. package/src/layouts/components/acl/CanViewNavSectionTitle.js +0 -17
  466. package/src/layouts/components/horizontal/AppBarContent.js +0 -39
  467. package/src/layouts/components/horizontal/ServerSideNavItems.js +0 -44
  468. package/src/layouts/components/mui/StepperComps.js +0 -55
  469. package/src/layouts/components/vertical/AppBarContent.js +0 -35
  470. package/src/layouts/components/vertical/ServerSideNavItems.js +0 -44
  471. package/src/libs/ApexCharts.jsx +0 -5
  472. package/src/libs/ReactPlayer.jsx +0 -5
  473. package/src/libs/Recharts.jsx +0 -4
  474. package/src/libs/auth.js +0 -124
  475. package/src/libs/styles/AppFullCalendar.js +0 -505
  476. package/src/libs/styles/AppKeenSlider.js +0 -116
  477. package/src/libs/styles/AppReactApexCharts.jsx +0 -110
  478. package/src/libs/styles/AppReactDatepicker.jsx +0 -470
  479. package/src/libs/styles/AppReactDropzone.js +0 -76
  480. package/src/libs/styles/AppReactToastify.jsx +0 -108
  481. package/src/libs/styles/AppRecharts.js +0 -55
  482. package/src/libs/styles/inputOtp.module.css +0 -39
  483. package/src/libs/styles/tiptapEditor.css +0 -72
  484. package/src/navigation/horizontal/index.js +0 -246
  485. package/src/navigation/vertical/index.js +0 -253
  486. package/src/pages/401.js +0 -70
  487. package/src/pages/404.js +0 -67
  488. package/src/pages/500.js +0 -68
  489. package/src/pages/[slug].js +0 -115
  490. package/src/pages/_document.js +0 -72
  491. package/src/pages/api/navigation/regenerate-registry.js +0 -116
  492. package/src/pages/api/navigation/save.js +0 -218
  493. package/src/pages/authModule/acl/index.js +0 -48
  494. package/src/pages/authModule/forgot-password/index.js +0 -228
  495. package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +0 -392
  496. package/src/pages/authModule/permissions/rolePermissions/index.js +0 -343
  497. package/src/pages/authModule/permissions/systemPermissions/index.js +0 -354
  498. package/src/pages/authModule/privacy/index.js +0 -721
  499. package/src/pages/authModule/users/index.js +0 -210
  500. package/src/pages/login/index.js +0 -328
  501. package/src/pages/mainHome/index.js +0 -181
  502. package/src/views/builder/inspector/definitions/cell/main.js +0 -4
  503. package/src/views/builder/inspector/definitions/column/main.js +0 -9
  504. package/src/views/builder/inspector/definitions/column-group/main.js +0 -18
  505. package/src/views/builder/inspector/definitions/header-cell/main.js +0 -5
  506. package/src/views/builder/inspector/definitions/table/main.js +0 -9
  507. package/src/views/builder/viewer/renderers/CellRenderer.jsx +0 -71
  508. package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +0 -96
  509. package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +0 -71
  510. package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +0 -78
  511. package/src/views/builder/viewer/renderers/TabRenderer.jsx +0 -82
  512. package/src/views/builder/viewer/renderers/TableRenderer.jsx +0 -92
  513. package/src/views/pages/auth/FooterIllustrationsV2.js +0 -40
  514. package/src/views/pages/misc/FooterIllustrations.js +0 -47
  515. package/src/views/pages/misc/muiTable/CustomPagination.js +0 -34
  516. package/src/views/pages/users/UserManageDialog.js +0 -283
  517. package/src/views/pages/users/UserViewPage.js +0 -199
  518. package/src/views/users/AddUserNameDialog.js +0 -162
  519. package/src/views/users/ContactManage.js +0 -449
  520. package/src/views/users/ResetPasswordDialog.js +0 -242
@@ -13,7 +13,8 @@ import {
13
13
  TextField,
14
14
  Typography
15
15
  } from '@mui/material'
16
- import {ArrowLeft, Close, DeleteOutline, FilterPlus} from 'mdi-material-ui'
16
+ import {ArrowLeft, Close, FilterPlus} from 'mdi-material-ui'
17
+ import {DeleteOutlined} from '@mui/icons-material'
17
18
  import Autocomplete from '@mui/material/Autocomplete'
18
19
  import {Endpoints, Services} from 'src/services/Endpoints'
19
20
 
@@ -231,7 +232,7 @@ export default function SearchFilterDialog({
231
232
  key={s.fullPath+idx}
232
233
  label={`${s.path}`}
233
234
  onDelete={()=> removeItem(idx)}
234
- deleteIcon={<DeleteOutline/>}
235
+ deleteIcon={<DeleteOutlined/>}
235
236
  variant='outlined'
236
237
  />
237
238
  ))}
@@ -3,12 +3,12 @@ import Autocomplete from '@mui/material/Autocomplete';
3
3
  import TextField from '@mui/material/TextField';
4
4
  import Chip from '@mui/material/Chip';
5
5
  import {createRoot} from 'react-dom/client';
6
- import ThemeComponent from 'src/@core/theme/ThemeComponent';
6
+ import { ThemeProvider, createTheme, darken, lighten, styled } from "@mui/material/styles";
7
7
  import moment from 'moment';
8
8
  import Typography from "@mui/material/Typography";
9
- import {darken, lighten, styled} from "@mui/material/styles";
10
9
  import izColors from "src/configs/izColors.json"
11
- import {SettingsConsumer} from "src/@core/contexts/settingsContext";
10
+
11
+ const defaultTheme = createTheme();
12
12
 
13
13
  const AutocompleteEditor = React.memo(
14
14
  forwardRef((props, ref) => {
@@ -124,9 +124,7 @@ const AutocompleteEditor = React.memo(
124
124
  });
125
125
 
126
126
  return (
127
- <SettingsConsumer>
128
- {({settings}) => (
129
- <ThemeComponent settings={settings}>
127
+ <ThemeProvider theme={defaultTheme}>
130
128
  <Autocomplete
131
129
  multiple={!props.isSingle === true}
132
130
  size="small"
@@ -179,9 +177,7 @@ const AutocompleteEditor = React.memo(
179
177
  ))
180
178
  }
181
179
  />
182
- </ThemeComponent>
183
- )}
184
- </SettingsConsumer>
180
+ </ThemeProvider>
185
181
  );
186
182
  })
187
183
  );
@@ -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
  })