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
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Shared threshold evaluation engine.
3
+ *
4
+ * A threshold rule:
5
+ * { operator: '<' | '<=' | '>' | '>=' | '==' | '!=' | 'between',
6
+ * value: number,
7
+ * value2: number, // only used for 'between'
8
+ * color: string, // MUI palette key or CSS color
9
+ * label: string, // optional override label
10
+ * bg: string, // optional background override
11
+ * }
12
+ *
13
+ * evaluateThreshold returns the first matching rule (or null).
14
+ * resolveColor maps a MUI palette key to a CSS color.
15
+ */
16
+
17
+ const MUI_COLOR_MAP = {
18
+ // semantic
19
+ error: { color: '#d32f2f', bg: '#ffebee' },
20
+ warning: { color: '#e65100', bg: '#fff3e0' },
21
+ success: { color: '#2e7d32', bg: '#e8f5e9' },
22
+ info: { color: '#0277bd', bg: '#e1f5fe' },
23
+ primary: { color: '#1565c0', bg: '#e3f2fd' },
24
+ secondary:{ color: '#6a1b9a', bg: '#f3e5f5' },
25
+ // extras
26
+ purple: { color: '#7b1fa2', bg: '#f3e5f5' },
27
+ pink: { color: '#c2185b', bg: '#fce4ec' },
28
+ teal: { color: '#00695c', bg: '#e0f2f1' },
29
+ cyan: { color: '#00838f', bg: '#e0f7fa' },
30
+ orange: { color: '#e64a19', bg: '#fbe9e7' },
31
+ indigo: { color: '#283593', bg: '#e8eaf6' },
32
+ default: { color: 'inherit', bg: 'transparent' },
33
+ }
34
+
35
+ /** Resolve a color string: MUI key → { color, bg } or pass-through. */
36
+ export function resolveMuiColor(key) {
37
+ return MUI_COLOR_MAP[key] ?? { color: key ?? 'inherit', bg: 'transparent' }
38
+ }
39
+
40
+ /** Evaluate a value against a threshold list. Returns the first matching rule or null. */
41
+ export function evaluateThreshold(value, thresholds) {
42
+ if (!Array.isArray(thresholds) || !thresholds.length) return null
43
+ const v = Number(value)
44
+ for (const rule of thresholds) {
45
+ if (matches(v, rule)) return rule
46
+ }
47
+ return null
48
+ }
49
+
50
+ function matches(v, rule) {
51
+ const a = Number(rule.value)
52
+ const b = Number(rule.value2)
53
+ switch (rule.operator) {
54
+ case '<': return v < a
55
+ case '<=': return v <= a
56
+ case '>': return v > a
57
+ case '>=': return v >= a
58
+ case '==': return v === a
59
+ case '!=': return v !== a
60
+ case 'between': return v >= a && v <= b
61
+ default: return false
62
+ }
63
+ }
64
+
65
+ /**
66
+ * Convenience: returns { color, bg } for a value+thresholds pair.
67
+ * Falls back to { color: 'inherit', bg: 'transparent' }.
68
+ */
69
+ export function thresholdColors(value, thresholds) {
70
+ const rule = evaluateThreshold(value, thresholds)
71
+ if (!rule) return { color: 'inherit', bg: 'transparent' }
72
+ const base = resolveMuiColor(rule.color)
73
+ return {
74
+ color: rule.colorOverride ?? base.color,
75
+ bg: rule.bg ?? base.bg,
76
+ }
77
+ }
@@ -10,6 +10,37 @@ export function findNode(node, targetId) {
10
10
  return null
11
11
  }
12
12
 
13
+ /**
14
+ * Find a node anywhere in the schema — searches both root tree and dialogs array.
15
+ * Returns { node, location: 'root' | 'dialog', dialogId? }
16
+ */
17
+ export function findNodeAnywhere(schema, targetId) {
18
+ const inRoot = findNode(schema.root, targetId)
19
+ if (inRoot) return { node: inRoot, location: 'root' }
20
+
21
+ for (const dialog of schema.dialogs ?? []) {
22
+ const inDialog = findNode(dialog, targetId)
23
+ if (inDialog) return { node: inDialog, location: 'dialog', dialogId: dialog.id }
24
+ }
25
+
26
+ return { node: null, location: null }
27
+ }
28
+
29
+ /**
30
+ * Update a node anywhere in the schema — patches root tree or the matching dialog.
31
+ */
32
+ export function updateNodeAnywhere(schema, nodeId, patch, location, dialogId) {
33
+ if (location === 'dialog') {
34
+ return {
35
+ ...schema,
36
+ dialogs: (schema.dialogs ?? []).map(d =>
37
+ d.id === dialogId ? updateNodeInTree(d, nodeId, patch) : d
38
+ ),
39
+ }
40
+ }
41
+ return { ...schema, root: updateNodeInTree(schema.root, nodeId, patch) }
42
+ }
43
+
13
44
  export function removeFromTree(node, targetId) {
14
45
  if (!node.children) return node
15
46
 
@@ -9,10 +9,10 @@ import React, {
9
9
  import Autocomplete from '@mui/material/Autocomplete';
10
10
  import TextField from '@mui/material/TextField';
11
11
  import Chip from '@mui/material/Chip';
12
- import {SettingsConsumer} from 'src/@core/contexts/settingsContext';
13
- import ThemeComponent from 'src/@core/theme/ThemeComponent';
12
+ import { ThemeProvider, createTheme, lighten, styled } from '@mui/material/styles';
14
13
  import moment from 'moment';
15
- import {lighten, styled} from '@mui/material/styles';
14
+
15
+ const defaultTheme = createTheme();
16
16
  import izColors from 'src/configs/izColors.json';
17
17
 
18
18
  // Utility for nested value access
@@ -112,9 +112,7 @@ const AutocompleteEditor = (props, ref) => {
112
112
  };
113
113
 
114
114
  return (
115
- <SettingsConsumer>
116
- {({settings}) => (
117
- <ThemeComponent settings={settings}>
115
+ <ThemeProvider theme={defaultTheme}>
118
116
  <Autocomplete
119
117
  multiple={!isSingle}
120
118
  size="small"
@@ -163,9 +161,7 @@ const AutocompleteEditor = (props, ref) => {
163
161
  ))
164
162
  }
165
163
  />
166
- </ThemeComponent>
167
- )}
168
- </SettingsConsumer>
164
+ </ThemeProvider>
169
165
  );
170
166
  };
171
167
 
@@ -39,9 +39,17 @@ const _config = {
39
39
 
40
40
  // Default token reader — reads the key Mazajk (and most host apps) use.
41
41
  // Override via configureRoboByte({ getAccessToken }) or via the provider prop.
42
+ //
43
+ // Resolution order:
44
+ // 1. localStorage 'accessToken' (normal auth flow — takes priority)
45
+ // 2. NEXT_PUBLIC_DEV_ACCESS_TOKEN env var (dev convenience, .env.local only)
42
46
  getAccessToken: () => {
43
47
  if (typeof window === 'undefined') return null
44
- return localStorage.getItem('accessToken') ?? null
48
+ return (
49
+ localStorage.getItem('accessToken') ??
50
+ (process.env.NODE_ENV === 'development' ? process.env.NEXT_PUBLIC_DEV_ACCESS_TOKEN : null) ??
51
+ null
52
+ )
45
53
  },
46
54
 
47
55
  // Default user reader — parses the JSON object Mazajk stores in localStorage.
@@ -0,0 +1,80 @@
1
+ /**
2
+ * globalStore — cross-route reactive data store.
3
+ *
4
+ * Lives at module scope so it survives Next.js client-side navigations.
5
+ * Any page, dialog, renderer, or Calculation function can read and write it.
6
+ *
7
+ * ── In action code (Calculation functions) ───────────────────────────────────
8
+ *
9
+ * // Read current global state
10
+ * console.log(globalData.selectedUser)
11
+ *
12
+ * // Write (like setData but global — persists across route changes)
13
+ * setGlobalData(prev => ({ ...prev, selectedUser: clickedItem }))
14
+ * setGlobalData({ theme: 'dark', locale: 'en' }) // full replace also works
15
+ *
16
+ * // Then navigate — globalData.selectedUser is still there on the next page
17
+ * router.push('/user-detail')
18
+ *
19
+ * ── In React components ───────────────────────────────────────────────────────
20
+ *
21
+ * import { useGlobalStore } from 'src/hooks/useGlobalStore'
22
+ *
23
+ * function MyRenderer() {
24
+ * const { globalData, setGlobalData } = useGlobalStore()
25
+ * return <div>{globalData.selectedUser?.name}</div>
26
+ * }
27
+ */
28
+
29
+ // ── Internal state ────────────────────────────────────────────────────────────
30
+
31
+ let _state = {}
32
+ const _listeners = new Set()
33
+
34
+ // ── Public API ────────────────────────────────────────────────────────────────
35
+
36
+ /**
37
+ * Returns a snapshot of the current global state.
38
+ * This is synchronous and safe to call from anywhere, including jsExecutor.
39
+ * @returns {object}
40
+ */
41
+ export function getGlobalData() {
42
+ return _state
43
+ }
44
+
45
+ /**
46
+ * Updates the global state.
47
+ * Accepts either a plain object (shallow-merged) or an updater function
48
+ * that receives the previous state and returns the next state.
49
+ *
50
+ * All subscribed React components are notified synchronously so they
51
+ * re-render with the new values.
52
+ *
53
+ * @param {object | ((prev: object) => object)} updater
54
+ */
55
+ export function setGlobalData(updater) {
56
+ const next = typeof updater === 'function' ? updater(_state) : updater
57
+ _state = next && typeof next === 'object' ? { ..._state, ...next } : _state
58
+ _listeners.forEach(fn => fn(_state))
59
+ }
60
+
61
+ /**
62
+ * Subscribe to global state changes.
63
+ * Returns an unsubscribe function — call it in useEffect cleanup.
64
+ *
65
+ * @param {(state: object) => void} listener
66
+ * @returns {() => void} unsubscribe
67
+ */
68
+ export function subscribeGlobal(listener) {
69
+ _listeners.add(listener)
70
+ return () => _listeners.delete(listener)
71
+ }
72
+
73
+ /**
74
+ * Resets the global store to an empty object.
75
+ * Useful for logout / session reset.
76
+ */
77
+ export function resetGlobalData() {
78
+ _state = {}
79
+ _listeners.forEach(fn => fn(_state))
80
+ }
@@ -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
  const AutocompleteEditor = React.memo(
13
13
  forwardRef((props, ref) => {
14
14
  // Initialize as an array for multi-selection.
@@ -122,9 +122,7 @@ const AutocompleteEditor = React.memo(
122
122
  });
123
123
 
124
124
  return (
125
- <SettingsConsumer>
126
- {({ settings }) => (
127
- <ThemeComponent settings={settings}>
125
+ <ThemeProvider theme={defaultTheme}>
128
126
  <Autocomplete
129
127
  multiple={!props.isSingle === true}
130
128
  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
  );
@@ -0,0 +1,241 @@
1
+ import React, {forwardRef, useEffect, useImperativeHandle, useRef, useState} from 'react';
2
+ import Autocomplete from '@mui/material/Autocomplete';
3
+ import TextField from '@mui/material/TextField';
4
+ import Chip from '@mui/material/Chip';
5
+ import {createRoot} from 'react-dom/client';
6
+ import { ThemeProvider, createTheme, darken, lighten, styled } from "@mui/material/styles";
7
+ import moment from 'moment';
8
+ import Typography from "@mui/material/Typography";
9
+ import izColors from "src/configs/izColors.json"
10
+
11
+ const defaultTheme = createTheme();
12
+
13
+ const AutocompleteEditor = React.memo(
14
+ forwardRef((props, ref) => {
15
+ // Initialize as an array for multi-selection.
16
+ const [selectedValue, setSelectedValue] = useState(props.isSingle ? null : []);
17
+ // Initialize options from props.
18
+ const [options, setOptions] = useState(props.options || []);
19
+ const [searchTerm, setSearchTerm] = useState('');
20
+ const [debouncedSearchTerm, setDebouncedSearchTerm] = useState(searchTerm);
21
+ const [loading, setLoading] = useState(false);
22
+ const inputRef = useRef(null);
23
+
24
+ // If an asyncFetchOptions function is provided via cellEditorParams, call it immediately on mount.
25
+ useEffect(() => {
26
+ if (props.asyncFetchOptions) {
27
+ setLoading(true);
28
+ props.asyncFetchOptions()
29
+ .then(fetchedOptions => {
30
+ setOptions(fetchedOptions);
31
+ })
32
+ .finally(() => {
33
+ setLoading(false);
34
+ });
35
+ }
36
+ }, [props.asyncFetchOptions]);
37
+
38
+ // Debounce searchTerm changes.
39
+ useEffect(() => {
40
+ const handler = setTimeout(() => {
41
+ setDebouncedSearchTerm(searchTerm);
42
+ }, 300);
43
+ return () => clearTimeout(handler);
44
+ }, [searchTerm]);
45
+
46
+ // Optionally, if you want to refetch options on debounced search term changes,
47
+ // call the asyncFetchOptions function with the search term as argument.
48
+ useEffect(() => {
49
+ if (props.asyncFetchOptions) {
50
+ setLoading(true);
51
+ // If your asyncFetchOptions function accepts a search term, pass debouncedSearchTerm.
52
+ props.asyncFetchOptions(debouncedSearchTerm)
53
+ .then(fetchedOptions => {
54
+ setOptions(fetchedOptions);
55
+ })
56
+ .finally(() => {
57
+ setLoading(false);
58
+ });
59
+ }
60
+ }, [debouncedSearchTerm, props.asyncFetchOptions]);
61
+
62
+ const handleChange = (event, value) => {
63
+ setSelectedValue(value);
64
+ };
65
+
66
+ const handleBlur = () => {
67
+ props.api.stopEditing();
68
+ };
69
+
70
+ // Utility: Get nested property if needed.
71
+ function getNestedProperty(obj, path) {
72
+ if (!Array.isArray(path)) {
73
+ return path.split('.').reduce((acc, part) => acc && acc[part], obj);
74
+ } else {
75
+ let result;
76
+ let i = 0;
77
+ path.forEach((p) => {
78
+ if (i === 0) result = p.split('.').reduce((acc, part) => acc && acc[part], obj);
79
+ else result = result + ' - ' + p.split('.').reduce((acc, part) => acc && acc[part], obj);
80
+ i++;
81
+ });
82
+ return result;
83
+ }
84
+ }
85
+
86
+ const formatValueByType = (value, type) => {
87
+ let result = value;
88
+ if (type === 'datetime') result = moment(result).format('L');
89
+ return result;
90
+ };
91
+
92
+ // Update selected value when props.value changes.
93
+ useEffect(() => {
94
+ if (props.value) {
95
+ setSelectedValue(Array.isArray(props.value) ? props.value : []);
96
+ }
97
+ }, [props.value]);
98
+
99
+
100
+ useImperativeHandle(ref, () => {
101
+ try {
102
+
103
+ return ({
104
+ getValue: () => props?.targetValue != null ? getNestedProperty(selectedValue, props?.targetValue) : selectedValue,
105
+ })
106
+ } catch (e) {
107
+ console.log(e);
108
+ }
109
+
110
+ });
111
+
112
+ useEffect(() => {
113
+ if (inputRef.current) {
114
+ inputRef.current.focus();
115
+ }
116
+ }, []);
117
+
118
+ const GroupHeader = styled('div')(({theme}) => ({
119
+ position: 'sticky',
120
+ top: '-8px',
121
+ padding: '4px 10px',
122
+ color: theme.palette.primary.main,
123
+ backgroundColor: lighten(izColors.grey, 0.70),
124
+ }));
125
+
126
+ const GroupItems = styled('ul')({
127
+ padding: 0,
128
+ });
129
+
130
+ return (
131
+ <ThemeProvider theme={defaultTheme}>
132
+ <Autocomplete
133
+ multiple={!props.isSingle === true}
134
+ size="small"
135
+ loading={loading}
136
+ options={options}
137
+ groupBy={option => {
138
+ return props.groupByField == null ? null : getNestedProperty(option, props.groupByField);
139
+ }}
140
+ renderGroup={(params) => (
141
+ <li key={params.key}>
142
+ {props.groupByField && <GroupHeader>{params.group}</GroupHeader>}
143
+ <GroupItems>{params.children}</GroupItems>
144
+ </li>
145
+ )}
146
+ onBlur={handleBlur}
147
+ disableCloseOnSelect={!props.isSingle === true}
148
+ isOptionEqualToValue={(option, value) => option?.id === value?.id}
149
+ getOptionLabel={(option) => {
150
+ let result;
151
+
152
+ if (Array.isArray(props.fieldName)) {
153
+ result = props.fieldName
154
+ .map((field) => getNestedProperty(option, field))
155
+ .filter(Boolean)
156
+ .join(" - ");
157
+ } else {
158
+ result = props.fieldName == null
159
+ ? option?.name
160
+ : getNestedProperty(option, props.fieldName);
161
+ }
162
+
163
+ if (props.type != null) {
164
+ result = formatValueByType(result, props.type);
165
+ }
166
+
167
+ return result;
168
+ }}
169
+ value={selectedValue}
170
+ onChange={handleChange}
171
+ renderInput={(params) => {
172
+ params.InputProps.disableUnderline = true;
173
+ return (
174
+ <TextField
175
+ autoFocus
176
+ {...params}
177
+ variant="standard"
178
+ size="small"
179
+ hiddenLabel
180
+ onChange={(e) => setSearchTerm(e.target.value)}
181
+ inputRef={inputRef}
182
+ />
183
+ );
184
+ }}
185
+ renderTags={(value, getTagProps) =>
186
+ value.map((option, index) => (
187
+ <Chip
188
+ key={option?.id}
189
+ label={option?.name}
190
+ {...getTagProps({index})}
191
+ onMouseDown={(e) => {
192
+ e.stopPropagation();
193
+ e.preventDefault();
194
+ }}
195
+ />
196
+ ))
197
+ }
198
+ />
199
+ </ThemeProvider>
200
+ );
201
+ })
202
+ );
203
+
204
+ export class MultiSelectEditorWrapper {
205
+ constructor() {
206
+ this.eInput = document.createElement('div');
207
+ this.eInput.style = 'width: 100%; height: 100%;';
208
+ }
209
+
210
+ init(params) {
211
+ this.params = params;
212
+ this.root = createRoot(this.eInput);
213
+ this.root.render(
214
+ <AutocompleteEditor {...params} ref={(input) => (this.reactComponent = input)}/>
215
+ );
216
+ }
217
+
218
+ getGui() {
219
+ return this.eInput;
220
+ }
221
+
222
+ afterGuiAttached() {
223
+ // Optionally focus after attachment.
224
+ }
225
+
226
+ getValue() {
227
+ return this.reactComponent.getValue();
228
+ }
229
+
230
+ destroy() {
231
+ if (this.root) {
232
+ setTimeout(() => {
233
+ this.root.unmount();
234
+ }, 0);
235
+ }
236
+ }
237
+
238
+ isPopup() {
239
+ return false;
240
+ }
241
+ }
@@ -0,0 +1,83 @@
1
+
2
+ const STORAGE_KEY_PREFIX = 'RV_SESSION_';
3
+ const EXPIRATION_DAYS = 7;
4
+
5
+ export const generateSessionId = () => {
6
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
7
+ let result = '';
8
+ for (let i = 0; i < 6; i++) {
9
+ result += chars.charAt(Math.floor(Math.random() * chars.length));
10
+ }
11
+ return result;
12
+ };
13
+
14
+ export const saveReportSession = (payload) => {
15
+ if (typeof window === 'undefined') return null;
16
+
17
+ const sessionId = generateSessionId();
18
+ const data = {
19
+ payload,
20
+ timestamp: Date.now()
21
+ };
22
+
23
+ try {
24
+ localStorage.setItem(`${STORAGE_KEY_PREFIX}${sessionId}`, JSON.stringify(data));
25
+ return sessionId;
26
+ } catch (e) {
27
+ console.error('Failed to save report session to localStorage', e);
28
+ return null;
29
+ }
30
+ };
31
+
32
+ export const getReportSession = (sessionId) => {
33
+ if (typeof window === 'undefined' || !sessionId) return null;
34
+
35
+ try {
36
+ const stored = localStorage.getItem(`${STORAGE_KEY_PREFIX}${sessionId}`);
37
+ if (!stored) return null;
38
+
39
+ const { payload, timestamp } = JSON.parse(stored);
40
+
41
+ // Check if expired
42
+ const now = Date.now();
43
+ const sevenDaysInMs = EXPIRATION_DAYS * 24 * 60 * 60 * 1000;
44
+ if (now - timestamp > sevenDaysInMs) {
45
+ localStorage.removeItem(`${STORAGE_KEY_PREFIX}${sessionId}`);
46
+ return null;
47
+ }
48
+
49
+ return payload;
50
+ } catch (e) {
51
+ console.error('Failed to get report session from localStorage', e);
52
+ return null;
53
+ }
54
+ };
55
+
56
+ export const cleanupOldSessions = () => {
57
+ if (typeof window === 'undefined') return;
58
+
59
+ try {
60
+ const now = Date.now();
61
+ const sevenDaysInMs = EXPIRATION_DAYS * 24 * 60 * 60 * 1000;
62
+
63
+ for (let i = 0; i < localStorage.length; i++) {
64
+ const key = localStorage.key(i);
65
+ if (key && key.startsWith(STORAGE_KEY_PREFIX)) {
66
+ try {
67
+ const stored = localStorage.getItem(key);
68
+ if (stored) {
69
+ const { timestamp } = JSON.parse(stored);
70
+ if (now - timestamp > sevenDaysInMs) {
71
+ localStorage.removeItem(key);
72
+ }
73
+ }
74
+ } catch (e) {
75
+ // If parsing fails, it's probably corrupt, might as well remove it
76
+ localStorage.removeItem(key);
77
+ }
78
+ }
79
+ }
80
+ } catch (e) {
81
+ console.error('Failed to cleanup old report sessions', e);
82
+ }
83
+ };