robobyte-front-builder 1.0.17 → 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 (516) 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 +59 -1
  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 +723 -563
  21. package/src/pages/reportModule/reportBuilder/reportViewer/index.js +137 -71
  22. package/src/pages/reportModule/reportBuilder/reports/index.js +51 -13
  23. package/src/pages/reportModule/reportBuilder/reportsPermissions/index.js +126 -0
  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 +241 -0
  49. package/src/services/helper/reportSessionHelper.js +83 -0
  50. package/src/services/reportData/fetchReportData.js +69 -28
  51. package/src/services/routerRef.js +35 -0
  52. package/src/views/ConfirmDialog.js +2 -2
  53. package/src/views/builder/JSEditor.js +105 -107
  54. package/src/views/builder/inspector/Inspector.jsx +6 -9
  55. package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +7 -13
  56. package/src/views/builder/inspector/Tabs/MainTab.jsx +143 -25
  57. package/src/views/builder/inspector/Tabs/RulesTab.jsx +9 -24
  58. package/src/views/builder/inspector/Tabs/StyleTab.jsx +9 -24
  59. package/src/views/builder/inspector/definitions/autocomplete/main.js +4 -6
  60. package/src/views/builder/inspector/definitions/banner/actions.js +7 -0
  61. package/src/views/builder/inspector/definitions/banner/main.js +22 -0
  62. package/src/views/builder/inspector/definitions/banner/rules.js +1 -0
  63. package/src/views/builder/inspector/definitions/banner/style.js +1 -0
  64. package/src/views/builder/inspector/definitions/breadcrumb/main.js +43 -6
  65. package/src/views/builder/inspector/definitions/button/main.js +11 -12
  66. package/src/views/builder/inspector/definitions/button/style.js +18 -30
  67. package/src/views/builder/inspector/definitions/checkbox/actions.js +3 -1
  68. package/src/views/builder/inspector/definitions/checkbox/main.js +4 -6
  69. package/src/views/builder/inspector/definitions/common/main.js +13 -2
  70. package/src/views/builder/inspector/definitions/dataGrid/main.js +23 -0
  71. package/src/views/builder/inspector/definitions/dataTableViewer/main.js +46 -0
  72. package/src/views/builder/inspector/definitions/datepicker/actions.js +3 -1
  73. package/src/views/builder/inspector/definitions/datepicker/main.js +6 -14
  74. package/src/views/builder/inspector/definitions/dialog/main.js +36 -0
  75. package/src/views/builder/inspector/definitions/dropdown/main.js +5 -8
  76. package/src/views/builder/inspector/definitions/excelUpload/actions.js +23 -0
  77. package/src/views/builder/inspector/definitions/excelUpload/main.js +17 -0
  78. package/src/views/builder/inspector/definitions/excelUpload/rules.js +1 -0
  79. package/src/views/builder/inspector/definitions/excelUpload/style.js +45 -0
  80. package/src/views/builder/inspector/definitions/header/main.js +10 -1
  81. package/src/views/builder/inspector/definitions/index.js +106 -19
  82. package/src/views/builder/inspector/definitions/input/actions.js +4 -1
  83. package/src/views/builder/inspector/definitions/input/main.js +20 -11
  84. package/src/views/builder/inspector/definitions/kpi/avatarGroup.js +22 -0
  85. package/src/views/builder/inspector/definitions/kpi/badge.js +17 -0
  86. package/src/views/builder/inspector/definitions/kpi/bulletChart.js +47 -0
  87. package/src/views/builder/inspector/definitions/kpi/chart.js +55 -0
  88. package/src/views/builder/inspector/definitions/kpi/colorScale.js +60 -0
  89. package/src/views/builder/inspector/definitions/kpi/comparisonBars.js +41 -0
  90. package/src/views/builder/inspector/definitions/kpi/countdown.js +46 -0
  91. package/src/views/builder/inspector/definitions/kpi/donut.js +51 -0
  92. package/src/views/builder/inspector/definitions/kpi/funnel.js +25 -0
  93. package/src/views/builder/inspector/definitions/kpi/gauge.js +39 -0
  94. package/src/views/builder/inspector/definitions/kpi/heatmapGrid.js +96 -0
  95. package/src/views/builder/inspector/definitions/kpi/iconBox.js +20 -0
  96. package/src/views/builder/inspector/definitions/kpi/metric.js +45 -0
  97. package/src/views/builder/inspector/definitions/kpi/rating.js +27 -0
  98. package/src/views/builder/inspector/definitions/kpi/statusDot.js +18 -0
  99. package/src/views/builder/inspector/definitions/kpi/stepStage.js +65 -0
  100. package/src/views/builder/inspector/definitions/kpi/tagList.js +32 -0
  101. package/src/views/builder/inspector/definitions/kpi/timeline.js +80 -0
  102. package/src/views/builder/inspector/definitions/kpi/trend.js +20 -0
  103. package/src/views/builder/inspector/definitions/label/main.js +10 -1
  104. package/src/views/builder/inspector/definitions/layout/main.js +27 -3
  105. package/src/views/builder/inspector/definitions/number/main.js +6 -14
  106. package/src/views/builder/inspector/definitions/pageNumber/main.js +21 -0
  107. package/src/views/builder/inspector/definitions/popover/main.js +71 -0
  108. package/src/views/builder/inspector/definitions/radio/main.js +5 -8
  109. package/src/views/builder/inspector/definitions/repeater/main.js +31 -0
  110. package/src/views/builder/inspector/definitions/reportViewer/main.js +15 -1
  111. package/src/views/builder/inspector/definitions/richtext/main.js +5 -8
  112. package/src/views/builder/inspector/definitions/signature/main.js +4 -1
  113. package/src/views/builder/inspector/definitions/tag/main.js +5 -8
  114. package/src/views/builder/inspector/definitions/textarea/actions.js +4 -1
  115. package/src/views/builder/inspector/definitions/textarea/main.js +5 -7
  116. package/src/views/builder/inspector/definitions/time/main.js +5 -8
  117. package/src/views/builder/inspector/definitions/toggle/main.js +5 -19
  118. package/src/views/builder/inspector/definitions/treeView/main.js +61 -0
  119. package/src/views/builder/inspector/definitions/viewRenderer/main.js +53 -0
  120. package/src/views/builder/inspector/definitions/wizard/main.js +68 -0
  121. package/src/views/builder/inspector/definitions/wizard-step/main.js +25 -0
  122. package/src/views/builder/inspector/fields/ActionsConfigEditor.jsx +426 -0
  123. package/src/views/builder/inspector/fields/ColorSchemaField.jsx +140 -0
  124. package/src/views/builder/inspector/fields/ColumnFunctionEditor.jsx +238 -0
  125. package/src/views/builder/inspector/fields/ColumnMappingEditor.jsx +105 -0
  126. package/src/views/builder/inspector/fields/ColumnsConfigEditor.jsx +506 -0
  127. package/src/views/builder/inspector/fields/DonutRingsEditorField.jsx +337 -0
  128. package/src/views/builder/inspector/fields/ExtraColsEditor.jsx +618 -0
  129. package/src/views/builder/inspector/fields/FunctionHelpPopover.jsx +295 -0
  130. package/src/views/builder/inspector/fields/IconEditor.jsx +64 -0
  131. package/src/views/builder/inspector/fields/KpiActionField.jsx +223 -0
  132. package/src/views/builder/inspector/fields/MarkersEditorField.jsx +173 -0
  133. package/src/views/builder/inspector/fields/SelectEditor.jsx +9 -5
  134. package/src/views/builder/inspector/fields/SeriesEditorField.jsx +363 -0
  135. package/src/views/builder/inspector/fields/TableColumnsEditor.jsx +104 -0
  136. package/src/views/builder/inspector/fields/ThresholdsEditor.jsx +247 -0
  137. package/src/views/builder/inspector/fields/ValueFunctionsRefPanel.jsx +217 -0
  138. package/src/views/builder/inspector/fields/columnEditorShared.jsx +217 -0
  139. package/src/views/builder/sidebar/Sidebar.jsx +4 -2
  140. package/src/views/builder/sidebar/SidebarTabs.jsx +28 -17
  141. package/src/views/builder/sidebar/tabs/ActionsTab.jsx +7 -3
  142. package/src/views/builder/sidebar/tabs/AiTab/AiPreviewDialog.jsx +193 -0
  143. package/src/views/builder/sidebar/tabs/AiTab/aiProvider.js +49 -0
  144. package/src/views/builder/sidebar/tabs/AiTab/index.jsx +409 -0
  145. package/src/views/builder/sidebar/tabs/AiTab/schemaTransformer.js +102 -0
  146. package/src/views/builder/sidebar/tabs/AiTab/schemaValidator.js +64 -0
  147. package/src/views/builder/sidebar/tabs/AiTab/systemPrompt.js +1151 -0
  148. package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +31 -31
  149. package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +43 -21
  150. package/src/views/builder/sidebar/tabs/Components/printComponentCatalog.js +81 -0
  151. package/src/views/builder/sidebar/tabs/TimersTab.jsx +338 -0
  152. package/src/views/builder/sidebar/tabs/TreeTab.jsx +13 -4
  153. package/src/views/builder/sidebar/tabs/ViewTab.jsx +1 -1
  154. package/src/views/builder/viewer/AdornedLabel.jsx +82 -0
  155. package/src/views/builder/viewer/ComponentRenderer.jsx +98 -24
  156. package/src/views/builder/viewer/DialogsZone.jsx +259 -0
  157. package/src/views/builder/viewer/FieldLabel.jsx +106 -0
  158. package/src/views/builder/viewer/PrintDialog.jsx +481 -0
  159. package/src/views/builder/viewer/ProductionViewer.jsx +80 -5
  160. package/src/views/builder/viewer/Viewer.jsx +106 -8
  161. package/src/views/builder/viewer/ViewerComponentWrapper.jsx +61 -4
  162. package/src/views/builder/viewer/ViewerToolbar.jsx +273 -59
  163. package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +26 -22
  164. package/src/views/builder/viewer/renderers/AvatarGroupRenderer.jsx +112 -0
  165. package/src/views/builder/viewer/renderers/BadgeRenderer.jsx +79 -0
  166. package/src/views/builder/viewer/renderers/BannerRenderer.jsx +62 -0
  167. package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +203 -15
  168. package/src/views/builder/viewer/renderers/BulletChartRenderer.jsx +147 -0
  169. package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +98 -39
  170. package/src/views/builder/viewer/renderers/CardRenderer.jsx +1 -1
  171. package/src/views/builder/viewer/renderers/ChartRenderer.jsx +388 -0
  172. package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +17 -9
  173. package/src/views/builder/viewer/renderers/ColorScaleRenderer.jsx +300 -0
  174. package/src/views/builder/viewer/renderers/ComparisonBarsRenderer.jsx +133 -0
  175. package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +3 -1
  176. package/src/views/builder/viewer/renderers/CountdownRenderer.jsx +249 -0
  177. package/src/views/builder/viewer/renderers/DataGridRenderer.jsx +380 -0
  178. package/src/views/builder/viewer/renderers/DataTableViewerRenderer.jsx +240 -0
  179. package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +25 -24
  180. package/src/views/builder/viewer/renderers/DialogRenderer.jsx +327 -0
  181. package/src/views/builder/viewer/renderers/DividerRenderer.jsx +1 -1
  182. package/src/views/builder/viewer/renderers/DonutRenderer.jsx +294 -0
  183. package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +36 -44
  184. package/src/views/builder/viewer/renderers/ExcelUploadRenderer.jsx +639 -0
  185. package/src/views/builder/viewer/renderers/FunnelRenderer.jsx +93 -0
  186. package/src/views/builder/viewer/renderers/GaugeRenderer.jsx +159 -0
  187. package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +31 -9
  188. package/src/views/builder/viewer/renderers/HeatmapGridRenderer.jsx +432 -0
  189. package/src/views/builder/viewer/renderers/IconBoxRenderer.jsx +59 -0
  190. package/src/views/builder/viewer/renderers/ImageRenderer.jsx +1 -1
  191. package/src/views/builder/viewer/renderers/InputRenderer.jsx +75 -18
  192. package/src/views/builder/viewer/renderers/LabelRenderer.jsx +35 -9
  193. package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +102 -40
  194. package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +8 -8
  195. package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +48 -6
  196. package/src/views/builder/viewer/renderers/LinkRenderer.jsx +1 -1
  197. package/src/views/builder/viewer/renderers/MenuRenderer.jsx +2 -2
  198. package/src/views/builder/viewer/renderers/MetricRenderer.jsx +80 -0
  199. package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +21 -30
  200. package/src/views/builder/viewer/renderers/PageNumberRenderer.jsx +76 -0
  201. package/src/views/builder/viewer/renderers/PopoverRenderer.jsx +350 -0
  202. package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +1 -1
  203. package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +1 -1
  204. package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +28 -39
  205. package/src/views/builder/viewer/renderers/RatingRenderer.jsx +80 -0
  206. package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +297 -38
  207. package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +219 -5
  208. package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +60 -66
  209. package/src/views/builder/viewer/renderers/RowActionsCell.jsx +308 -0
  210. package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +33 -62
  211. package/src/views/builder/viewer/renderers/StatusDotRenderer.jsx +75 -0
  212. package/src/views/builder/viewer/renderers/StepStageRenderer.jsx +348 -0
  213. package/src/views/builder/viewer/renderers/TagListRenderer.jsx +115 -0
  214. package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +31 -45
  215. package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +25 -18
  216. package/src/views/builder/viewer/renderers/TextRenderer.jsx +7 -1
  217. package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +25 -24
  218. package/src/views/builder/viewer/renderers/TimelineRenderer.jsx +525 -0
  219. package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +21 -27
  220. package/src/views/builder/viewer/renderers/TreeViewRenderer.jsx +832 -0
  221. package/src/views/builder/viewer/renderers/TrendRenderer.jsx +66 -0
  222. package/src/views/builder/viewer/renderers/ViewRendererRenderer.jsx +315 -0
  223. package/src/views/builder/viewer/renderers/WizardRenderer.jsx +380 -64
  224. package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +21 -12
  225. package/src/views/builder/viewer/renderers/dataGridComponents.jsx +824 -0
  226. package/src/views/customFilter/CustomFilterDialog.js +1023 -660
  227. package/src/views/customFilter/FixedFilterDialog.js +649 -0
  228. package/src/views/customFilter/SearchFilterDialog.js +248 -0
  229. package/src/views/genericTable/BuilderExpressionParams.js +3 -3
  230. package/src/views/genericTable/ColumnConfiguratorDialog.js +771 -0
  231. package/src/views/genericTable/FixedFilterDialog.js +3 -2
  232. package/src/views/genericTable/FormattingSettingsDialog.js +551 -0
  233. package/src/views/genericTable/ReportSettingsDialog.js +151 -0
  234. package/src/views/genericTable/SGrid.js +1061 -247
  235. package/src/views/genericTable/SearchFilterDialog.js +3 -2
  236. package/src/views/genericTable/TAGGrid.js +83 -69
  237. package/src/views/genericTable/cellEditors/autocompleteEditor.js +5 -9
  238. package/src/views/genericTable/convertStringFunctions.js +336 -0
  239. package/src/views/genericTable/statusBar/rowCountStatusBar.js +3 -1
  240. package/src/views/genericTable/updateRefHelpers.js +424 -0
  241. package/src/views/printBuilder/PrintBuilderViewer.jsx +607 -0
  242. package/src/views/printBuilder/PrintPreviewCanvas.jsx +157 -0
  243. package/src/views/rolePermissions/UpdateReportPermissionDialog.js +316 -0
  244. package/src/@core/components/auth/AclGuard.js +0 -55
  245. package/src/@core/components/auth/AuthGuard.js +0 -40
  246. package/src/@core/components/auth/GuestGuard.js +0 -30
  247. package/src/@core/components/custom-inputs/Horizontal.jsx +0 -143
  248. package/src/@core/components/custom-inputs/Image.jsx +0 -78
  249. package/src/@core/components/custom-inputs/Vertical.jsx +0 -113
  250. package/src/@core/components/customizer/index.jsx +0 -470
  251. package/src/@core/components/customizer/styles.module.css +0 -169
  252. package/src/@core/components/mui/Avatar.jsx +0 -41
  253. package/src/@core/components/mui/Badge.jsx +0 -20
  254. package/src/@core/components/mui/IconButton.jsx +0 -74
  255. package/src/@core/components/mui/TabList.jsx +0 -60
  256. package/src/@core/components/option-menu/index.jsx +0 -137
  257. package/src/@core/components/scroll-to-top/index.jsx +0 -43
  258. package/src/@core/components/spinner/index.js +0 -26
  259. package/src/@core/components/window-wrapper/index.js +0 -27
  260. package/src/@core/contexts/settingsContext.jsx +0 -98
  261. package/src/@core/hooks/useBgColor.js +0 -63
  262. package/src/@core/hooks/useImageVariant.js +0 -27
  263. package/src/@core/hooks/useLayoutInit.js +0 -37
  264. package/src/@core/hooks/useObjectCookie.js +0 -18
  265. package/src/@core/hooks/useSettings.jsx +0 -15
  266. package/src/@core/layouts/BlankLayout.js +0 -37
  267. package/src/@core/layouts/BlankLayoutWithAppBar.js +0 -51
  268. package/src/@core/layouts/HorizontalLayout.jsx +0 -151
  269. package/src/@core/layouts/Layout.js +0 -39
  270. package/src/@core/layouts/VerticalLayout.jsx +0 -124
  271. package/src/@core/layouts/components/blank-layout-with-appBar/index.js +0 -115
  272. package/src/@core/layouts/components/horizontal/app-bar-content/index.js +0 -67
  273. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +0 -352
  274. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +0 -21
  275. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +0 -195
  276. package/src/@core/layouts/components/horizontal/navigation/index.js +0 -31
  277. package/src/@core/layouts/components/shared-components/LanguageDropdown.js +0 -96
  278. package/src/@core/layouts/components/shared-components/ModeToggler.js +0 -32
  279. package/src/@core/layouts/components/shared-components/NotificationDropdown.js +0 -226
  280. package/src/@core/layouts/components/shared-components/UserDropdown.js +0 -177
  281. package/src/@core/layouts/components/shared-components/footer/FooterContent.js +0 -46
  282. package/src/@core/layouts/components/shared-components/footer/index.js +0 -61
  283. package/src/@core/layouts/components/vertical/appBar/index.js +0 -74
  284. package/src/@core/layouts/components/vertical/navigation/Drawer.js +0 -122
  285. package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +0 -435
  286. package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +0 -180
  287. package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +0 -26
  288. package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +0 -258
  289. package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +0 -102
  290. package/src/@core/layouts/components/vertical/navigation/index.js +0 -169
  291. package/src/@core/layouts/utils.js +0 -69
  292. package/src/@core/styles/Table.module.css +0 -93
  293. package/src/@core/styles/horizontal/menuItemStyles.js +0 -100
  294. package/src/@core/styles/horizontal/menuRootStyles.js +0 -19
  295. package/src/@core/styles/libs/fullcalendar/index.js +0 -461
  296. package/src/@core/styles/libs/keen-slider/index.js +0 -111
  297. package/src/@core/styles/libs/react-apexcharts/index.js +0 -107
  298. package/src/@core/styles/libs/react-cleave/index.js +0 -33
  299. package/src/@core/styles/libs/react-credit-cards/index.js +0 -11
  300. package/src/@core/styles/libs/react-datepicker/index.js +0 -388
  301. package/src/@core/styles/libs/react-draft-wysiwyg/index.js +0 -144
  302. package/src/@core/styles/libs/react-dropzone/index.js +0 -76
  303. package/src/@core/styles/libs/react-hot-toast/index.js +0 -37
  304. package/src/@core/styles/libs/recharts/index.js +0 -47
  305. package/src/@core/styles/stepper.js +0 -103
  306. package/src/@core/styles/vertical/menuItemStyles.js +0 -138
  307. package/src/@core/styles/vertical/menuSectionStyles.js +0 -54
  308. package/src/@core/styles/vertical/navigationCustomStyles.js +0 -62
  309. package/src/@core/svg/ContentCompact.jsx +0 -17
  310. package/src/@core/svg/ContentWide.jsx +0 -17
  311. package/src/@core/svg/DirectionLtr.jsx +0 -93
  312. package/src/@core/svg/DirectionRtl.jsx +0 -93
  313. package/src/@core/svg/LayoutCollapsed.jsx +0 -59
  314. package/src/@core/svg/LayoutHorizontal.jsx +0 -42
  315. package/src/@core/svg/LayoutVertical.jsx +0 -59
  316. package/src/@core/svg/Logo.jsx +0 -76
  317. package/src/@core/svg/SkinBordered.jsx +0 -54
  318. package/src/@core/svg/SkinDefault.jsx +0 -59
  319. package/src/@core/tailwind/plugin.js +0 -78
  320. package/src/@core/theme/ThemeComponent.js +0 -63
  321. package/src/@core/theme/ThemeOptions.js +0 -71
  322. package/src/@core/theme/breakpoints/index.js +0 -11
  323. package/src/@core/theme/colorSchemes.js +0 -326
  324. package/src/@core/theme/customShadows.js +0 -11
  325. package/src/@core/theme/globalStyles.js +0 -81
  326. package/src/@core/theme/index.js +0 -42
  327. package/src/@core/theme/overrides/accordion.js +0 -51
  328. package/src/@core/theme/overrides/accordion.jsx +0 -85
  329. package/src/@core/theme/overrides/alerts.js +0 -110
  330. package/src/@core/theme/overrides/alerts.jsx +0 -180
  331. package/src/@core/theme/overrides/autocomplete.js +0 -14
  332. package/src/@core/theme/overrides/autocomplete.jsx +0 -68
  333. package/src/@core/theme/overrides/avatar.js +0 -38
  334. package/src/@core/theme/overrides/avatars.js +0 -27
  335. package/src/@core/theme/overrides/backdrop.js +0 -22
  336. package/src/@core/theme/overrides/badges.js +0 -16
  337. package/src/@core/theme/overrides/breadcrumbs.js +0 -11
  338. package/src/@core/theme/overrides/button-group.js +0 -84
  339. package/src/@core/theme/overrides/button.js +0 -93
  340. package/src/@core/theme/overrides/buttonGroup.js +0 -9
  341. package/src/@core/theme/overrides/card.js +0 -83
  342. package/src/@core/theme/overrides/checkbox.jsx +0 -95
  343. package/src/@core/theme/overrides/chip.js +0 -72
  344. package/src/@core/theme/overrides/dataGrid.js +0 -114
  345. package/src/@core/theme/overrides/dateTimePicker.js +0 -65
  346. package/src/@core/theme/overrides/dialog.js +0 -120
  347. package/src/@core/theme/overrides/divider.js +0 -13
  348. package/src/@core/theme/overrides/drawer.js +0 -20
  349. package/src/@core/theme/overrides/fab.js +0 -13
  350. package/src/@core/theme/overrides/form-control-label.js +0 -19
  351. package/src/@core/theme/overrides/icon-button.js +0 -145
  352. package/src/@core/theme/overrides/index.js +0 -103
  353. package/src/@core/theme/overrides/input.js +0 -72
  354. package/src/@core/theme/overrides/link.js +0 -9
  355. package/src/@core/theme/overrides/list.js +0 -44
  356. package/src/@core/theme/overrides/menu.js +0 -25
  357. package/src/@core/theme/overrides/pagination.js +0 -41
  358. package/src/@core/theme/overrides/paper.js +0 -9
  359. package/src/@core/theme/overrides/popover.js +0 -16
  360. package/src/@core/theme/overrides/progress.js +0 -38
  361. package/src/@core/theme/overrides/radio.jsx +0 -80
  362. package/src/@core/theme/overrides/rating.js +0 -16
  363. package/src/@core/theme/overrides/rating.jsx +0 -32
  364. package/src/@core/theme/overrides/select.js +0 -19
  365. package/src/@core/theme/overrides/select.jsx +0 -52
  366. package/src/@core/theme/overrides/slider.js +0 -97
  367. package/src/@core/theme/overrides/snackbar.js +0 -19
  368. package/src/@core/theme/overrides/switch.js +0 -73
  369. package/src/@core/theme/overrides/switches.js +0 -25
  370. package/src/@core/theme/overrides/table-pagination.js +0 -39
  371. package/src/@core/theme/overrides/table.js +0 -81
  372. package/src/@core/theme/overrides/tabs.js +0 -30
  373. package/src/@core/theme/overrides/timeline.js +0 -80
  374. package/src/@core/theme/overrides/toggle-button.js +0 -33
  375. package/src/@core/theme/overrides/toggleButton.js +0 -16
  376. package/src/@core/theme/overrides/tooltip.js +0 -21
  377. package/src/@core/theme/overrides/typography.js +0 -13
  378. package/src/@core/theme/palette/index.js +0 -107
  379. package/src/@core/theme/shadows/index.js +0 -61
  380. package/src/@core/theme/shadows.js +0 -12
  381. package/src/@core/theme/spacing/index.js +0 -3
  382. package/src/@core/theme/spacing.js +0 -5
  383. package/src/@core/theme/typography/index.js +0 -65
  384. package/src/@core/theme/typography.js +0 -84
  385. package/src/@core/utils/create-emotion-cache.js +0 -5
  386. package/src/@core/utils/hex-to-rgba.js +0 -11
  387. package/src/@core/utils/serverHelpers.js +0 -45
  388. package/src/@menu/components/RouterLink.jsx +0 -18
  389. package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +0 -88
  390. package/src/@menu/components/horizontal-menu/Menu.jsx +0 -83
  391. package/src/@menu/components/horizontal-menu/MenuButton.jsx +0 -100
  392. package/src/@menu/components/horizontal-menu/MenuItem.jsx +0 -183
  393. package/src/@menu/components/horizontal-menu/SubMenu.jsx +0 -418
  394. package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +0 -41
  395. package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +0 -20
  396. package/src/@menu/components/vertical-menu/Menu.jsx +0 -161
  397. package/src/@menu/components/vertical-menu/MenuButton.jsx +0 -95
  398. package/src/@menu/components/vertical-menu/MenuItem.jsx +0 -180
  399. package/src/@menu/components/vertical-menu/MenuSection.jsx +0 -124
  400. package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +0 -70
  401. package/src/@menu/components/vertical-menu/NavHeader.jsx +0 -39
  402. package/src/@menu/components/vertical-menu/SubMenu.jsx +0 -420
  403. package/src/@menu/components/vertical-menu/SubMenuContent.jsx +0 -101
  404. package/src/@menu/components/vertical-menu/VerticalNav.jsx +0 -216
  405. package/src/@menu/contexts/horizontalNavContext.jsx +0 -29
  406. package/src/@menu/contexts/verticalNavContext.jsx +0 -65
  407. package/src/@menu/defaultConfigs.js +0 -12
  408. package/src/@menu/hooks/useHorizontalMenu.jsx +0 -19
  409. package/src/@menu/hooks/useHorizontalNav.jsx +0 -19
  410. package/src/@menu/hooks/useMediaQuery.jsx +0 -29
  411. package/src/@menu/hooks/useVerticalMenu.jsx +0 -19
  412. package/src/@menu/hooks/useVerticalNav.jsx +0 -19
  413. package/src/@menu/horizontal-menu/index.jsx +0 -8
  414. package/src/@menu/styles/StyledBackdrop.jsx +0 -15
  415. package/src/@menu/styles/StyledMenuIcon.jsx +0 -12
  416. package/src/@menu/styles/StyledMenuLabel.jsx +0 -16
  417. package/src/@menu/styles/StyledMenuPrefix.jsx +0 -10
  418. package/src/@menu/styles/StyledMenuSectionLabel.jsx +0 -21
  419. package/src/@menu/styles/StyledMenuSuffix.jsx +0 -10
  420. package/src/@menu/styles/StyledSubMenuContent.jsx +0 -43
  421. package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +0 -13
  422. package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +0 -26
  423. package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +0 -11
  424. package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +0 -33
  425. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +0 -18
  426. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +0 -10
  427. package/src/@menu/styles/horizontal/horizontalUl.module.css +0 -15
  428. package/src/@menu/styles/styles.module.css +0 -5
  429. package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +0 -16
  430. package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +0 -28
  431. package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +0 -23
  432. package/src/@menu/styles/vertical/StyledVerticalNav.jsx +0 -67
  433. package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +0 -15
  434. package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +0 -23
  435. package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +0 -25
  436. package/src/@menu/styles/vertical/verticalNavBgImage.module.css +0 -10
  437. package/src/@menu/svg/ChevronRight.jsx +0 -9
  438. package/src/@menu/svg/Close.jsx +0 -12
  439. package/src/@menu/svg/RadioCircle.jsx +0 -12
  440. package/src/@menu/svg/RadioCircleMarked.jsx +0 -13
  441. package/src/@menu/utils/menuClasses.js +0 -44
  442. package/src/@menu/utils/menuUtils.jsx +0 -145
  443. package/src/@menu/vertical-menu/index.jsx +0 -11
  444. package/src/configs/acl.js +0 -115
  445. package/src/configs/auth.js +0 -5
  446. package/src/configs/aws-exports.js +0 -30
  447. package/src/configs/firebase.js +0 -25
  448. package/src/configs/i18n.js +0 -34
  449. package/src/configs/primaryColorConfig.js +0 -35
  450. package/src/configs/themeConfig.js +0 -44
  451. package/src/layouts/UserLayout.js +0 -94
  452. package/src/layouts/UserThemeOptions.js +0 -191
  453. package/src/layouts/components/Direction.js +0 -30
  454. package/src/layouts/components/HtmlTooltip.js +0 -15
  455. package/src/layouts/components/Translations.js +0 -11
  456. package/src/layouts/components/UserDropdown.js +0 -217
  457. package/src/layouts/components/UserIcon.js +0 -40
  458. package/src/layouts/components/acl/Can.js +0 -6
  459. package/src/layouts/components/acl/CanViewNavGroup.js +0 -36
  460. package/src/layouts/components/acl/CanViewNavLink.js +0 -17
  461. package/src/layouts/components/acl/CanViewNavSectionTitle.js +0 -17
  462. package/src/layouts/components/horizontal/AppBarContent.js +0 -39
  463. package/src/layouts/components/horizontal/ServerSideNavItems.js +0 -44
  464. package/src/layouts/components/mui/StepperComps.js +0 -55
  465. package/src/layouts/components/vertical/AppBarContent.js +0 -35
  466. package/src/layouts/components/vertical/ServerSideNavItems.js +0 -44
  467. package/src/libs/ApexCharts.jsx +0 -5
  468. package/src/libs/ReactPlayer.jsx +0 -5
  469. package/src/libs/Recharts.jsx +0 -4
  470. package/src/libs/auth.js +0 -124
  471. package/src/libs/styles/AppFullCalendar.js +0 -505
  472. package/src/libs/styles/AppKeenSlider.js +0 -116
  473. package/src/libs/styles/AppReactApexCharts.jsx +0 -110
  474. package/src/libs/styles/AppReactDatepicker.jsx +0 -470
  475. package/src/libs/styles/AppReactDropzone.js +0 -76
  476. package/src/libs/styles/AppReactToastify.jsx +0 -108
  477. package/src/libs/styles/AppRecharts.js +0 -55
  478. package/src/libs/styles/inputOtp.module.css +0 -39
  479. package/src/libs/styles/tiptapEditor.css +0 -72
  480. package/src/navigation/horizontal/index.js +0 -246
  481. package/src/navigation/vertical/index.js +0 -253
  482. package/src/pages/401.js +0 -70
  483. package/src/pages/404.js +0 -67
  484. package/src/pages/500.js +0 -68
  485. package/src/pages/[slug].js +0 -115
  486. package/src/pages/_document.js +0 -72
  487. package/src/pages/api/navigation/regenerate-registry.js +0 -116
  488. package/src/pages/api/navigation/save.js +0 -218
  489. package/src/pages/authModule/acl/index.js +0 -48
  490. package/src/pages/authModule/forgot-password/index.js +0 -228
  491. package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +0 -392
  492. package/src/pages/authModule/permissions/rolePermissions/index.js +0 -343
  493. package/src/pages/authModule/permissions/systemPermissions/index.js +0 -354
  494. package/src/pages/authModule/privacy/index.js +0 -721
  495. package/src/pages/authModule/users/index.js +0 -210
  496. package/src/pages/login/index.js +0 -328
  497. package/src/pages/mainHome/index.js +0 -181
  498. package/src/views/builder/inspector/definitions/cell/main.js +0 -4
  499. package/src/views/builder/inspector/definitions/column/main.js +0 -9
  500. package/src/views/builder/inspector/definitions/column-group/main.js +0 -18
  501. package/src/views/builder/inspector/definitions/header-cell/main.js +0 -5
  502. package/src/views/builder/inspector/definitions/table/main.js +0 -9
  503. package/src/views/builder/viewer/renderers/CellRenderer.jsx +0 -71
  504. package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +0 -96
  505. package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +0 -71
  506. package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +0 -78
  507. package/src/views/builder/viewer/renderers/TabRenderer.jsx +0 -82
  508. package/src/views/builder/viewer/renderers/TableRenderer.jsx +0 -92
  509. package/src/views/pages/auth/FooterIllustrationsV2.js +0 -40
  510. package/src/views/pages/misc/FooterIllustrations.js +0 -47
  511. package/src/views/pages/misc/muiTable/CustomPagination.js +0 -34
  512. package/src/views/pages/users/UserManageDialog.js +0 -283
  513. package/src/views/pages/users/UserViewPage.js +0 -199
  514. package/src/views/users/AddUserNameDialog.js +0 -162
  515. package/src/views/users/ContactManage.js +0 -449
  516. package/src/views/users/ResetPasswordDialog.js +0 -242
@@ -8,11 +8,11 @@
8
8
  // - isSingle (bool)
9
9
  // Optional extras: page (default 1), pageSize (default 50)
10
10
 
11
- import { Services } from 'src/services/Endpoints'
12
- import { Endpoints } from 'src/services/Endpoints'
13
- import { ReportBuilderEndpoints } from 'services/Endpoints/ReportBuilderEndpoints'
14
- import { FilterFormat } from 'services/helper/FilterFormat'
15
- import { Helper } from 'services/helper/helper'
11
+ import {Services} from 'src/services/Endpoints'
12
+ import {Endpoints} from 'src/services/Endpoints'
13
+ import {ReportBuilderEndpoints} from 'services/Endpoints/ReportBuilderEndpoints'
14
+ import {FilterFormat} from 'services/helper/FilterFormat'
15
+ import {Helper} from 'services/helper/helper'
16
16
 
17
17
  // In-memory cache for builder models by pageId (resets on refresh/new tab)
18
18
  const builderModelCache = new Map()
@@ -48,7 +48,7 @@ function toNestedByUnderscore(input) {
48
48
  typeof value === 'object' &&
49
49
  !Array.isArray(value)
50
50
  ) {
51
- ref[last] = { ...existing, ...value }
51
+ ref[last] = {...existing, ...value}
52
52
  } else {
53
53
  ref[last] = value
54
54
  }
@@ -63,7 +63,7 @@ function toNestedByUnderscore(input) {
63
63
  const k = Helper.toCamelCaseDotNet(parts[0])
64
64
  const existing = result[k]
65
65
  if (existing && typeof existing === 'object' && nestedVal && typeof nestedVal === 'object') {
66
- result[k] = { ...existing, ...nestedVal }
66
+ result[k] = {...existing, ...nestedVal}
67
67
  } else {
68
68
  result[k] = nestedVal
69
69
  }
@@ -96,16 +96,18 @@ function convertToNestedObject(flatObject, builderData) {
96
96
  }
97
97
 
98
98
  export async function fetchReportDataByPageId({
99
- pageId,
100
- filter = {},
101
- isDataOnly = false,
102
- dataAsObject = false,
103
- isPagination = true,
104
- isSingle = false,
105
- globalParams = null,
106
- page = 1,
107
- pageSize = 50
108
- }) {
99
+ pageId,
100
+ filter = {},
101
+ isDataOnly = false,
102
+ dataAsObject = false,
103
+ isPagination = true,
104
+ isSingle = false,
105
+ globalParams = null,
106
+ page = 1,
107
+ pageSize = 50,
108
+ authContext = null,
109
+ context = null
110
+ }) {
109
111
  try {
110
112
  const asObject = dataAsObject
111
113
 
@@ -117,45 +119,82 @@ export async function fetchReportDataByPageId({
117
119
  Endpoints.ReportBuilder.Post.GetReportDetails,
118
120
  false,
119
121
  {},
120
- { id: null, pageId }
122
+ {id: null, pageId}
121
123
  )
122
124
 
123
125
  const detailsData = detailsResp?.data
124
126
  if (!detailsData || !detailsData.value) {
125
- return { success: false, error: 'Report details not found' }
127
+ return {success: false, error: 'Report detailsOld not found'}
126
128
  }
127
129
 
128
- builderModel = { ...JSON.parse(detailsData.value), id: detailsData.id }
130
+ builderModel = {...JSON.parse(detailsData.value), id: detailsData.id}
129
131
  builderModelCache.set(cacheKey, builderModel)
130
132
  }
131
133
 
132
134
  if (globalParams != null && builderModel?.selectionParams != null) {
133
135
  builderModel.selectionParams = builderModel.selectionParams.map((param, idx) => {
134
136
  if (globalParams.hasOwnProperty(idx)) {
135
- return { ...param, value: globalParams[idx] }
137
+ return {...param, value: globalParams[idx]}
136
138
  }
137
139
  return param
138
140
  })
139
141
  }
140
142
 
141
143
  // 2) Prepare filters (no AG Grid specifics)
142
- let localFilter = filter ? { ...filter } : {}
144
+ let localFilter = filter ? {...filter} : {}
143
145
  let localTFilter = localFilter?.Tfilter ? [...localFilter.Tfilter] : []
144
146
  localTFilter = localFilter?.TFilter ? [...localTFilter, ...localFilter.TFilter] : [...localTFilter]
145
147
  const builderFilter = builderModel?.filter?.Tfilter ?? []
146
148
  localTFilter = (localTFilter || []).filter(x => x?.value !== null && x?.value !== undefined && x?.value !== '')
147
149
  localTFilter = [...localTFilter, ...builderFilter]
150
+
151
+ // Extract customFilterCode from filter or builderModel
152
+ const customFilterCode = filter?.customFilterCode || builderModel?.filter?.customFilterCode || ''
153
+
148
154
  delete localFilter.Tfilter
149
155
  delete localFilter.TFilter
150
156
  delete localFilter.LocalTfilter
151
157
  delete localFilter.localTfilter
152
158
  delete localFilter.fixedTFilter
153
159
  delete localFilter.fixedTfilter
160
+ delete localFilter.customFilterCode
154
161
 
155
162
  const formattedT = FilterFormat(localTFilter)
163
+
164
+ // Execute custom filter code if present
165
+ let customFilterResult = []
166
+ if (customFilterCode && customFilterCode.trim()) {
167
+ try {
168
+ const executeCode = new Function('authContext', 'context', 'filters', `
169
+ let customFilter = [];
170
+ try {
171
+ ${customFilterCode}
172
+ } catch (e) {
173
+ console.error('Inner error in customFilterCode:', e);
174
+ }
175
+ return customFilter;
176
+ `)
177
+ const result = executeCode(authContext, context, localTFilter)
178
+
179
+ if (result && Array.isArray(result)) {
180
+ customFilterResult = result
181
+ } else if (result && !Array.isArray(result)) {
182
+ console.error('Error: Custom filter must return an array')
183
+ }
184
+ } catch (error) {
185
+ console.error('Error executing custom filter code:', error)
186
+ }
187
+ }
188
+
189
+ // Merge custom filter results with formatted filters
190
+ const finalTFilter = [
191
+ ...(Array.isArray(formattedT) ? formattedT.filter(f => (f == null ? false : f.value !== null)) : []),
192
+ ...customFilterResult
193
+ ]
194
+
156
195
  let data = {
157
196
  ...localFilter,
158
- tFilter: Array.isArray(formattedT) ? formattedT.filter(f => (f == null ? false : f.value !== null)) : [],
197
+ tFilter: finalTFilter,
159
198
  selectFields: builderModel?.selectedFields || [],
160
199
  selectParams: builderModel?.selectionParams || [],
161
200
  rawSql: builderModel?.rawSql
@@ -167,8 +206,8 @@ export async function fetchReportDataByPageId({
167
206
  ? 'SqlPagination'
168
207
  : 'Pagination'
169
208
  : builderModel?.isRaw
170
- ? 'SqlNoPagination'
171
- : 'NoPagination'
209
+ ? 'SqlNoPagination'
210
+ : 'NoPagination'
172
211
 
173
212
  const response = await Services.PostService(ReportBuilderEndpoints.Post.GenericGet, false, data, {
174
213
  page: isSingle ? 1 : page,
@@ -183,7 +222,9 @@ export async function fetchReportDataByPageId({
183
222
  if (asObject) {
184
223
  rows = rows.map(r => toNestedByUnderscore(r))
185
224
  }
186
- if (isSingle) rows = rows[0]
225
+ if (isSingle)
226
+ rows = rows[0]
227
+
187
228
 
188
229
  if (isDataOnly) {
189
230
  return rows
@@ -198,12 +239,12 @@ export async function fetchReportDataByPageId({
198
239
  getType,
199
240
  filter: data,
200
241
  sourceModel: builderModel?.reportSource?.fullName,
201
- params: { page: isSingle ? 1 : page, pageSize: isSingle ? 1 : pageSize }
242
+ params: {page: isSingle ? 1 : page, pageSize: isSingle ? 1 : pageSize}
202
243
  }
203
244
  }
204
245
  } catch (error) {
205
246
  console.error('fetchReportDataByPageId error', error)
206
- return { success: false, error }
247
+ return {success: false, error}
207
248
  }
208
249
  }
209
250
 
@@ -0,0 +1,35 @@
1
+ /**
2
+ * routerRef — module-level Next.js router singleton.
3
+ *
4
+ * Why a singleton instead of a hook?
5
+ * jsExecutor.js runs user Calculation code outside of React's render cycle.
6
+ * It cannot call useRouter() directly. Instead, RouterSync (mounted inside
7
+ * RoboByteFrontBuilderProvider) keeps this reference in sync on every
8
+ * navigation, and jsExecutor imports getRouter() to inject it into every
9
+ * Calculation as the `router` bare-name variable.
10
+ *
11
+ * Usage in action code:
12
+ * router.push('/dashboard')
13
+ * router.replace({ pathname: '/report/[id]', query: { id: 42 } })
14
+ * router.back()
15
+ * console.log(router.pathname, router.query)
16
+ */
17
+
18
+ let _router = null
19
+
20
+ /**
21
+ * Called by RouterSync on every render so the ref is always current.
22
+ * @param {import('next/router').NextRouter} router
23
+ */
24
+ export function setRouter(router) {
25
+ _router = router
26
+ }
27
+
28
+ /**
29
+ * Returns the current Next.js router instance, or null if RouterSync has
30
+ * not mounted yet (e.g. SSR or very early render).
31
+ * @returns {import('next/router').NextRouter | null}
32
+ */
33
+ export function getRouter() {
34
+ return _router
35
+ }
@@ -18,7 +18,7 @@ import {
18
18
  } from '@mui/material'
19
19
  import Box from '@mui/material/Box'
20
20
  import { Close } from 'mdi-material-ui'
21
- import { Warning, DeleteOutline } from '@mui/icons-material'
21
+ import { Warning, DeleteOutlined } from '@mui/icons-material'
22
22
  import { useState } from 'react'
23
23
 
24
24
  const ConfirmDelete = props => {
@@ -111,7 +111,7 @@ const ConfirmDelete = props => {
111
111
  mt: 2,
112
112
  mb: 3
113
113
  }}>
114
- <DeleteOutline
114
+ <DeleteOutlined
115
115
  sx={{
116
116
  fontSize: 40,
117
117
  color: '#d32f2f',
@@ -1,11 +1,10 @@
1
- import { useEffect, useRef, useState } from 'react'
2
- import { Box, Tabs, Tab, Button, IconButton, Typography, TextField } from '@mui/material'
1
+ import { useEffect, useRef, useState, useCallback } from 'react'
2
+ import { Box, Tabs, Tab, Button, IconButton, Tooltip, Typography, TextField } from '@mui/material'
3
3
  import { CodeBraces } from 'mdi-material-ui'
4
+ import { FullscreenOutlined, FullscreenExitOutlined } from '@mui/icons-material'
4
5
  import Editor from '@monaco-editor/react'
6
+ import { HelpPopover } from 'views/builder/inspector/fields/FunctionHelpPopover'
5
7
 
6
- /**
7
- * Monaco editor options
8
- */
9
8
  const editorOptions = {
10
9
  minimap: { enabled: false },
11
10
  fontFamily: "Menlo, Monaco, 'Courier New', monospace",
@@ -13,112 +12,78 @@ const editorOptions = {
13
12
  lineNumbers: 'on',
14
13
  wordWrap: 'on',
15
14
  renderWhitespace: 'selection',
16
- theme: 'vs-dark',
17
15
  scrollBeyondLastLine: false,
18
16
  automaticLayout: true
19
- // formatOnPaste: true,
20
- // formatOnType: true,
21
17
  }
22
18
 
23
- /**
24
- * Fixed function shell
25
- */
26
- const HEADER_LINES = 4
27
-
28
- const CALCULATION_TEMPLATE = `/**
29
- * @param {IFormData} form
30
- * @param {object} data
31
- * @return {Promise<boolean>}
32
- */
33
- async function Calculation (form, data) {
19
+ const CALCULATION_TEMPLATE = `async function Calculation(form, data, setData, dataRef, reportRefs, openDialog, closeDialog, urlParams, page) {
34
20
 
35
21
  }
36
22
  `
37
23
 
38
24
  export default function JSEditor({ value, expression, mode, onChange }) {
39
- const [open, setOpen] = useState(false)
25
+ const [open, setOpen] = useState(false)
26
+ const [fullscreen, setFullscreen] = useState(false)
40
27
  const [currentMode, setCurrentMode] = useState(mode || (expression ? 'expression' : 'value'))
41
- const [code, setCode] = useState(expression?.code || CALCULATION_TEMPLATE)
28
+ const [code, setCode] = useState(expression?.code || CALCULATION_TEMPLATE)
42
29
  const [simpleValue, setSimpleValue] = useState(value ?? '')
43
30
 
44
31
  const editorRef = useRef(null)
45
32
 
33
+ // ── Open / close ────────────────────────────────────────────────────────────
34
+
46
35
  const handleOpen = () => {
47
- setCurrentMode(mode || (expression ? 'expression' : 'value'))
36
+ const initialMode = mode || (expression ? 'expression' : 'value')
37
+ setCurrentMode(initialMode)
48
38
  setCode(expression?.code || CALCULATION_TEMPLATE)
49
- setSimpleValue(value ?? '')
39
+ // Only use the value prop for simpleValue when actually in value mode —
40
+ // prevents expression code from leaking into the Simple value tab.
41
+ setSimpleValue(initialMode === 'value' ? (value ?? '') : '')
50
42
  setOpen(true)
51
43
  }
52
44
 
45
+ const handleClose = () => {
46
+ setOpen(false)
47
+ setFullscreen(false)
48
+ }
49
+
53
50
  useEffect(() => {
54
- if (!open) {
55
- setSimpleValue(value ?? '')
56
- }
51
+ if (!open) setSimpleValue(value ?? '')
57
52
  }, [value, open])
58
53
 
59
- /**
60
- * Lock everything except function body
61
- */
62
- const handleEditorMount = (editor, monaco) => {
63
- editorRef.current = editor
54
+ // ── Escape key closes fullscreen first, then the panel ──────────────────────
64
55
 
65
- const model = editor.getModel()
66
- if (!model) return
67
-
68
- const totalLines = model.getLineCount()
69
- const readOnlyRanges = [
70
- // Header
71
- new monaco.Range(1, 1, HEADER_LINES + 1, 1),
72
- // Closing brace
73
- new monaco.Range(totalLines, 1, totalLines, model.getLineLength(totalLines) + 1)
74
- ]
75
-
76
- editor.createDecorationsCollection(
77
- readOnlyRanges.map(range => ({
78
- range,
79
- options: { isWholeLine: true, className: 'readonly' }
80
- }))
81
- )
82
-
83
- editor.onDidChangeCursorPosition(e => {
84
- const currentTotalLines = model.getLineCount()
85
- const currentMaxEditableLine = Math.max(HEADER_LINES + 2, currentTotalLines - 1)
86
-
87
- if (e.position.lineNumber <= HEADER_LINES + 1) {
88
- editor.setPosition({ lineNumber: HEADER_LINES + 2, column: 3 })
89
- return
90
- }
91
- if (e.position.lineNumber >= currentTotalLines) {
92
- editor.setPosition({ lineNumber: currentMaxEditableLine, column: 3 })
56
+ useEffect(() => {
57
+ if (!open) return
58
+ const onKey = (e) => {
59
+ if (e.key !== 'Escape') return
60
+ if (fullscreen) {
61
+ setFullscreen(false)
62
+ } else {
63
+ handleClose()
93
64
  }
94
- })
65
+ }
66
+ window.addEventListener('keydown', onKey)
67
+ return () => window.removeEventListener('keydown', onKey)
68
+ }, [open, fullscreen])
95
69
 
70
+ // ── Editor mount ─────────────────────────────────────────────────────────────
71
+
72
+ const handleEditorMount = (editor) => {
73
+ editorRef.current = editor
96
74
  editor.focus()
97
- editor.setPosition({ lineNumber: HEADER_LINES + 2, column: 3 })
98
75
  }
99
76
 
100
- /**
101
- * Only allow edits inside function body
102
- */
103
- const handleCodeChange = newCode => {
104
- if (!newCode) return
77
+ // ── Code change ───────────────────────────────────────────────────────────────
105
78
 
106
- const lines = newCode.split('\n')
107
-
108
- if (!newCode.includes('function Calculation')) {
109
- setCode(CALCULATION_TEMPLATE)
110
- return
111
- }
112
-
113
- setCode(newCode)
79
+ const handleCodeChange = newCode => {
80
+ setCode(newCode ?? '')
114
81
  }
115
82
 
116
- /**
117
- * Save logic
118
- */
83
+ // ── Save ─────────────────────────────────────────────────────────────────────
84
+
119
85
  const handleSave = () => {
120
86
  if (currentMode === 'expression') {
121
- console.log(code)
122
87
  onChange?.({
123
88
  valueType: 'expression',
124
89
  type: 'expression',
@@ -129,17 +94,36 @@ export default function JSEditor({ value, expression, mode, onChange }) {
129
94
  onChange?.({
130
95
  valueType: 'value',
131
96
  type: 'value',
132
- value: simpleValue
97
+ value: simpleValue,
98
+ expression: undefined,
133
99
  })
134
100
  }
135
- setOpen(false)
101
+ handleClose()
136
102
  }
137
103
 
138
104
  const modeForIcon = mode || (expression ? 'expression' : 'value')
139
105
 
106
+ // ── Panel dimensions ──────────────────────────────────────────────────────────
107
+
108
+ const panelSx = fullscreen
109
+ ? {
110
+ position: 'fixed',
111
+ inset: 0,
112
+ height: '100vh',
113
+ borderTop: 'none',
114
+ }
115
+ : {
116
+ position: 'fixed',
117
+ bottom: 0,
118
+ left: 0,
119
+ right: 0,
120
+ height: '40vh',
121
+ borderTop: '1px solid #333',
122
+ }
123
+
140
124
  return (
141
125
  <>
142
- {/* Open editor */}
126
+ {/* Trigger button */}
143
127
  <IconButton size='small' color={modeForIcon === 'expression' ? 'success' : 'default'} onClick={handleOpen}>
144
128
  <CodeBraces />
145
129
  </IconButton>
@@ -147,30 +131,52 @@ export default function JSEditor({ value, expression, mode, onChange }) {
147
131
  {open && (
148
132
  <Box
149
133
  sx={{
150
- position: 'fixed',
151
- bottom: 0,
152
- left: 0,
153
- right: 0,
154
- height: '40vh',
134
+ ...panelSx,
155
135
  bgcolor: '#1e1e1e',
156
136
  zIndex: 1300,
157
- borderTop: '1px solid #333',
158
137
  display: 'flex',
159
- flexDirection: 'column'
138
+ flexDirection: 'column',
139
+ transition: 'height 0.18s ease, inset 0.18s ease',
160
140
  }}
161
141
  >
162
- {/* Tabs */}
163
- <Tabs value={currentMode === 'expression' ? 0 : 1} sx={{ bgcolor: '#252526', color: '#fff' }}>
164
- <Tab label='Calculable value' onClick={() => setCurrentMode('expression')} />
165
- <Tab label='Simple value' onClick={() => setCurrentMode('value')} />
166
- </Tabs>
142
+ {/* ── Header bar: tabs + fullscreen toggle ── */}
143
+ <Box sx={{ display: 'flex', alignItems: 'center', bgcolor: '#252526', borderBottom: '1px solid #1a1a1a' }}>
144
+ <Tabs
145
+ value={currentMode === 'expression' ? 0 : 1}
146
+ sx={{
147
+ flex: 1,
148
+ minHeight: 38,
149
+ '.MuiTab-root': { minHeight: 38, py: 0, px: 1.5, fontSize: 12, fontFamily: 'monospace', color: '#666', textTransform: 'none' },
150
+ '.Mui-selected': { color: '#fff !important', fontWeight: 600 },
151
+ '.MuiTabs-indicator': { bgcolor: '#4ec9b0', height: 2 },
152
+ }}
153
+ >
154
+ <Tab label='Calculable value' onClick={() => setCurrentMode('expression')} />
155
+ <Tab label='Simple value' onClick={() => setCurrentMode('value')} />
156
+ </Tabs>
157
+
158
+ {currentMode === 'expression' && <HelpPopover type='calculation' iconSx={{ color: '#5a7a9a', mr: 0.5 }} />}
159
+
160
+ <Tooltip title={fullscreen ? 'Exit fullscreen (Esc)' : 'Fullscreen'} placement='left'>
161
+ <IconButton
162
+ size='small'
163
+ onClick={() => setFullscreen(f => !f)}
164
+ sx={{ color: '#aaa', mr: 0.5, '&:hover': { color: '#fff' } }}
165
+ >
166
+ {fullscreen
167
+ ? <FullscreenExitOutlined fontSize='small' />
168
+ : <FullscreenOutlined fontSize='small' />}
169
+ </IconButton>
170
+ </Tooltip>
171
+ </Box>
167
172
 
168
- {/* Content */}
173
+ {/* ── Content ── */}
169
174
  {currentMode === 'expression' ? (
170
175
  <Box sx={{ flex: 1, minHeight: 0 }}>
171
176
  <Editor
172
177
  height='100%'
173
178
  defaultLanguage='javascript'
179
+ theme='vs-dark'
174
180
  value={code}
175
181
  options={editorOptions}
176
182
  onMount={handleEditorMount}
@@ -178,12 +184,12 @@ export default function JSEditor({ value, expression, mode, onChange }) {
178
184
  />
179
185
  </Box>
180
186
  ) : (
181
- <Box sx={{ p: 2, color: '#fff' }}>
187
+ <Box sx={{ p: 2, color: '#fff', overflowY: 'auto', flex: 1 }}>
182
188
  <Typography variant='body2'>Simple Value Mode</Typography>
183
189
  <TextField
184
190
  fullWidth
185
191
  multiline
186
- minRows={5}
192
+ minRows={fullscreen ? 20 : 5}
187
193
  size='small'
188
194
  value={simpleValue}
189
195
  onChange={e => setSimpleValue(e.target.value)}
@@ -202,17 +208,9 @@ export default function JSEditor({ value, expression, mode, onChange }) {
202
208
  </Box>
203
209
  )}
204
210
 
205
- {/* Footer */}
206
- <Box
207
- sx={{
208
- p: 1,
209
- display: 'flex',
210
- gap: 1,
211
- justifyContent: 'flex-end',
212
- bgcolor: '#252526'
213
- }}
214
- >
215
- <Button size='small' onClick={() => setOpen(false)}>
211
+ {/* ── Footer ── */}
212
+ <Box sx={{ p: 1, display: 'flex', gap: 1, justifyContent: 'flex-end', bgcolor: '#252526' }}>
213
+ <Button size='small' onClick={handleClose}>
216
214
  Close
217
215
  </Button>
218
216
  <Button size='small' variant='contained' onClick={handleSave}>
@@ -28,22 +28,19 @@ export default function Inspector() {
28
28
  variant="scrollable"
29
29
  scrollButtons="auto"
30
30
  sx={{
31
- bgcolor: '#3a3f45',
31
+ bgcolor: 'background.paper',
32
+ borderBottom: '1px solid',
33
+ borderColor: 'divider',
32
34
  minHeight: 48,
33
35
  '& .MuiTab-root': {
34
- color: 'rgba(255, 255, 255, 0.7)',
36
+ color: 'text.secondary',
35
37
  minHeight: 48,
36
38
  textTransform: 'none',
37
39
  fontSize: '0.875rem',
38
40
  fontWeight: 500,
39
- '&.Mui-selected': {
40
- color: '#fff'
41
- }
41
+ '&.Mui-selected': { color: 'text.primary' },
42
42
  },
43
- '& .MuiTabs-indicator': {
44
- backgroundColor: '#9c27b0',
45
- height: 3
46
- }
43
+ '& .MuiTabs-indicator': { backgroundColor: 'primary.main', height: 3 },
47
44
  }}
48
45
  >
49
46
  <Tab label="Main" />
@@ -2,7 +2,7 @@ import { Box, Typography, TextField, MenuItem } from '@mui/material'
2
2
  import { useBuilder } from 'src/context/BuilderContext'
3
3
  import FieldWrapper from '../fields/FieldWrapper'
4
4
  import { getActionsFields } from '../definitions'
5
- import { findNode, updateNodeInTree } from 'services/builderHelper'
5
+ import { findNodeAnywhere, updateNodeAnywhere } from 'services/builderHelper'
6
6
  import JSEditor from '../../JSEditor'
7
7
 
8
8
  /**
@@ -19,7 +19,7 @@ function normalizeActionField(field) {
19
19
 
20
20
  export default function ComponentActionsTab() {
21
21
  const { schema, selectedId, setSchema } = useBuilder()
22
- const node = findNode(schema.root, selectedId)
22
+ const { node, location, dialogId } = findNodeAnywhere(schema, selectedId)
23
23
  if (!node) return null
24
24
 
25
25
  const actionFields = getActionsFields(node.type)
@@ -40,17 +40,11 @@ export default function ComponentActionsTab() {
40
40
  )
41
41
 
42
42
  const updateAction = (name, actionData) => {
43
- setSchema(prev => ({
44
- ...prev,
45
- root: updateNodeInTree(prev.root, node.id, {
46
- props: {
47
- actions: {
48
- ...actions,
49
- [name]: actionData
50
- }
51
- }
52
- })
53
- }))
43
+ setSchema(prev =>
44
+ updateNodeAnywhere(prev, node.id, {
45
+ props: { actions: { ...actions, [name]: actionData } }
46
+ }, location, dialogId)
47
+ )
54
48
  }
55
49
 
56
50
  return (