@erpsquad/common 1.9.97 → 1.9.98

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 (98) hide show
  1. package/dist/chunks/{android-12-switch-D3fU6Qtm.esm.js → android-12-switch-C3WlgdKQ.esm.js} +11 -9
  2. package/dist/chunks/{android-12-switch-D3fU6Qtm.esm.js.map → android-12-switch-C3WlgdKQ.esm.js.map} +1 -1
  3. package/dist/chunks/{android-12-switch-B5UmJZxg.js → android-12-switch-CVH-tc4s.js} +11 -9
  4. package/dist/chunks/{android-12-switch-B5UmJZxg.js.map → android-12-switch-CVH-tc4s.js.map} +1 -1
  5. package/dist/chunks/{apiHelper-BvnhN2uo.esm.js → apiHelper-DOCeCGD-.esm.js} +9 -4
  6. package/dist/chunks/apiHelper-DOCeCGD-.esm.js.map +1 -0
  7. package/dist/chunks/{apiHelper-BrzRrxpx.js → apiHelper-DSbRnRC1.js} +9 -4
  8. package/dist/chunks/apiHelper-DSbRnRC1.js.map +1 -0
  9. package/dist/chunks/{appbar-Dn00gF0A.esm.js → appbar-CrH_SjSo.esm.js} +2 -2
  10. package/dist/chunks/{appbar-Dn00gF0A.esm.js.map → appbar-CrH_SjSo.esm.js.map} +1 -1
  11. package/dist/chunks/{appbar-dBRF2bDa.js → appbar-D6bWAv8x.js} +2 -2
  12. package/dist/chunks/{appbar-dBRF2bDa.js.map → appbar-D6bWAv8x.js.map} +1 -1
  13. package/dist/chunks/{default-data-BCroqbYg.js → default-data-9-BQ_0wq.js} +7 -7
  14. package/dist/chunks/{default-data-BCroqbYg.js.map → default-data-9-BQ_0wq.js.map} +1 -1
  15. package/dist/chunks/{default-data-otyfdCNu.esm.js → default-data-D1f8nbl6.esm.js} +7 -7
  16. package/dist/chunks/{default-data-otyfdCNu.esm.js.map → default-data-D1f8nbl6.esm.js.map} +1 -1
  17. package/dist/chunks/{fullScreen-BHrQ0vTa.js → fullScreen-BtbOZq50.js} +2 -2
  18. package/dist/chunks/{fullScreen-BHrQ0vTa.js.map → fullScreen-BtbOZq50.js.map} +1 -1
  19. package/dist/chunks/{fullScreen-BdyRsEBm.esm.js → fullScreen-DSPrY2tY.esm.js} +2 -2
  20. package/dist/chunks/{fullScreen-BdyRsEBm.esm.js.map → fullScreen-DSPrY2tY.esm.js.map} +1 -1
  21. package/dist/chunks/module-routes-config-B8IucBuj.js +19 -0
  22. package/dist/chunks/module-routes-config-B8IucBuj.js.map +1 -0
  23. package/dist/chunks/module-routes-config-CCkZEtfg.esm.js +20 -0
  24. package/dist/chunks/module-routes-config-CCkZEtfg.esm.js.map +1 -0
  25. package/dist/chunks/{modules-BDHGBfwa.js → modules-C3T2Pnwc.js} +10 -5
  26. package/dist/chunks/modules-C3T2Pnwc.js.map +1 -0
  27. package/dist/chunks/{modules-UIv-lDBW.esm.js → modules-D5_hDIg9.esm.js} +10 -5
  28. package/dist/chunks/modules-D5_hDIg9.esm.js.map +1 -0
  29. package/dist/chunks/{page-context-DRbgpYFO.js → page-context-BKgBvHxw.js} +2 -2
  30. package/dist/chunks/{page-context-DRbgpYFO.js.map → page-context-BKgBvHxw.js.map} +1 -1
  31. package/dist/chunks/{page-context-DLUB4Qx9.esm.js → page-context-DATjzley.esm.js} +2 -2
  32. package/dist/chunks/{page-context-DLUB4Qx9.esm.js.map → page-context-DATjzley.esm.js.map} +1 -1
  33. package/dist/chunks/pathname.hrms-2_BEXO_r.js +262 -0
  34. package/dist/chunks/pathname.hrms-2_BEXO_r.js.map +1 -0
  35. package/dist/chunks/pathname.hrms-C5ojsho0.esm.js +263 -0
  36. package/dist/chunks/pathname.hrms-C5ojsho0.esm.js.map +1 -0
  37. package/dist/chunks/{route-page-map-DPlRjCJm.esm.js → route-page-map-C4wM0M4A.esm.js} +2 -2
  38. package/dist/chunks/{route-page-map-DPlRjCJm.esm.js.map → route-page-map-C4wM0M4A.esm.js.map} +1 -1
  39. package/dist/chunks/{route-page-map-Btth_lp5.js → route-page-map-CJLyl6P1.js} +2 -2
  40. package/dist/chunks/{route-page-map-Btth_lp5.js.map → route-page-map-CJLyl6P1.js.map} +1 -1
  41. package/dist/chunks/{sidebar-Dcw_6aQ7.js → sidebar-D2Q9rQrz.js} +2 -2
  42. package/dist/chunks/{sidebar-Dcw_6aQ7.js.map → sidebar-D2Q9rQrz.js.map} +1 -1
  43. package/dist/chunks/{sidebar-PZqii53B.esm.js → sidebar-gl6ML9FB.esm.js} +2 -2
  44. package/dist/chunks/{sidebar-PZqii53B.esm.js.map → sidebar-gl6ML9FB.esm.js.map} +1 -1
  45. package/dist/chunks/{sidebarScreen-DY4Uklrh.esm.js → sidebarScreen-57BCIH9V.esm.js} +3 -3
  46. package/dist/chunks/{sidebarScreen-DY4Uklrh.esm.js.map → sidebarScreen-57BCIH9V.esm.js.map} +1 -1
  47. package/dist/chunks/{sidebarScreen-FH1CEH8k.js → sidebarScreen-CnsblLHN.js} +3 -3
  48. package/dist/chunks/{sidebarScreen-FH1CEH8k.js.map → sidebarScreen-CnsblLHN.js.map} +1 -1
  49. package/dist/chunks/{uom-field-wrapper-UBPKubPh.js → uom-field-wrapper-CjqCwlbR.js} +9 -9
  50. package/dist/chunks/{uom-field-wrapper-UBPKubPh.js.map → uom-field-wrapper-CjqCwlbR.js.map} +1 -1
  51. package/dist/chunks/{uom-field-wrapper-CeeTt3Ph.esm.js → uom-field-wrapper-CzXOP8fb.esm.js} +9 -9
  52. package/dist/chunks/{uom-field-wrapper-CeeTt3Ph.esm.js.map → uom-field-wrapper-CzXOP8fb.esm.js.map} +1 -1
  53. package/dist/chunks/{useAccountSetting-B5qXSiGa.js → useAccountSetting-ChWinjqQ.js} +2 -2
  54. package/dist/chunks/{useAccountSetting-B5qXSiGa.js.map → useAccountSetting-ChWinjqQ.js.map} +1 -1
  55. package/dist/chunks/{useAccountSetting-BcPg1o6H.esm.js → useAccountSetting-nBdUAbgS.esm.js} +2 -2
  56. package/dist/chunks/{useAccountSetting-BcPg1o6H.esm.js.map → useAccountSetting-nBdUAbgS.esm.js.map} +1 -1
  57. package/dist/chunks/{useReduxIntegration-CPPcf1p7.esm.js → useReduxIntegration--sS2yQ4F.esm.js} +2 -2
  58. package/dist/chunks/{useReduxIntegration-CPPcf1p7.esm.js.map → useReduxIntegration--sS2yQ4F.esm.js.map} +1 -1
  59. package/dist/chunks/{useReduxIntegration-DvUNoDIr.js → useReduxIntegration-D6MZKdkS.js} +2 -2
  60. package/dist/chunks/{useReduxIntegration-DvUNoDIr.js.map → useReduxIntegration-D6MZKdkS.js.map} +1 -1
  61. package/dist/components/index.esm.js +6 -6
  62. package/dist/components/index.js +6 -6
  63. package/dist/components/providers/ERPUIProvider.d.ts +1 -0
  64. package/dist/constants/index.esm.js +3 -3
  65. package/dist/constants/index.js +3 -3
  66. package/dist/constants/pathnames/pathname.hrms.d.ts +61 -3
  67. package/dist/contexts/index.esm.js +1 -1
  68. package/dist/contexts/index.js +1 -1
  69. package/dist/hooks/index.esm.js +3 -3
  70. package/dist/hooks/index.js +3 -3
  71. package/dist/index.esm.js +45 -40
  72. package/dist/index.esm.js.map +1 -1
  73. package/dist/index.js +19 -14
  74. package/dist/index.js.map +1 -1
  75. package/dist/layout/index.esm.js +2 -2
  76. package/dist/layout/index.js +2 -2
  77. package/dist/src/components/providers/ERPUIProvider.d.ts +1 -0
  78. package/dist/src/constants/pathnames/pathname.hrms.d.ts +61 -3
  79. package/dist/src/utils/index.d.ts +1 -0
  80. package/dist/src/utils/module-routes-config.d.ts +34 -0
  81. package/dist/src/views/form-builder/utils/common.d.ts +1 -1
  82. package/dist/utils/index.esm.js +5 -0
  83. package/dist/utils/index.esm.js.map +1 -1
  84. package/dist/utils/index.js +5 -0
  85. package/dist/utils/index.js.map +1 -1
  86. package/dist/utils/module-routes-config.d.ts +34 -0
  87. package/dist/views/form-builder/utils/common.d.ts +1 -1
  88. package/dist/views/index.esm.js +7 -7
  89. package/dist/views/index.js +6 -6
  90. package/package.json +1 -1
  91. package/dist/chunks/apiHelper-BrzRrxpx.js.map +0 -1
  92. package/dist/chunks/apiHelper-BvnhN2uo.esm.js.map +0 -1
  93. package/dist/chunks/modules-BDHGBfwa.js.map +0 -1
  94. package/dist/chunks/modules-UIv-lDBW.esm.js.map +0 -1
  95. package/dist/chunks/pathname.hrms-BVwbtB1M.js +0 -109
  96. package/dist/chunks/pathname.hrms-BVwbtB1M.js.map +0 -1
  97. package/dist/chunks/pathname.hrms-BiL7sQv0.esm.js +0 -110
  98. package/dist/chunks/pathname.hrms-BiL7sQv0.esm.js.map +0 -1
@@ -1,19 +1,20 @@
1
1
  import React__default, { useState, useEffect, useCallback, useContext, createContext } from "react";
2
2
  import { getI18n, useTranslation } from "react-i18next";
3
3
  import { l as loadModuleTranslations } from "./translations-DJFxXzIm.esm.js";
4
- import { m as modules } from "./modules-UIv-lDBW.esm.js";
4
+ import { m as modules } from "./modules-D5_hDIg9.esm.js";
5
5
  import { u as useAuth, a as AuthProvider } from "./useAuth-C4WcddEE.esm.js";
6
6
  import { useDispatch, Provider } from "react-redux";
7
- import { f as usePages } from "./useAccountSetting-BcPg1o6H.esm.js";
7
+ import { f as usePages } from "./useAccountSetting-nBdUAbgS.esm.js";
8
8
  import { useLocation, BrowserRouter } from "react-router-dom";
9
9
  import { j as jsxRuntimeExports } from "./jsx-runtime-ClFauRgV.esm.js";
10
10
  import { SnackbarProvider, enqueueSnackbar } from "notistack";
11
11
  import { c as createLibraryStore } from "./store-zDGOGRDm.esm.js";
12
12
  import { M as MUIThemeWrapper, c as createDarkTheme, a as createLightTheme } from "./theme-impl-B5ncd0_-.esm.js";
13
13
  import { a as LanguageProvider } from "./languageContext-CbCRCTbP.esm.js";
14
- import { c as PermissionsProvider } from "./page-context-DLUB4Qx9.esm.js";
14
+ import { c as PermissionsProvider } from "./page-context-DATjzley.esm.js";
15
15
  import { i as initializeApiConfig } from "./api-config-GOys-syK.esm.js";
16
16
  import { aY as initializeApiBaseUrls, z as extendApiConfigurations } from "./common-B-nmtH5r.esm.js";
17
+ import { s as setModuleRoutes } from "./module-routes-config-CCkZEtfg.esm.js";
17
18
  let globalLastLoadedModules = "";
18
19
  let globalIsLoading = false;
19
20
  let globalInitialLoad = false;
@@ -171,6 +172,7 @@ const ERPUIProvider = ({
171
172
  // API configuration
172
173
  apiConfig: providedApiConfig,
173
174
  additionalApiConfigurations,
175
+ moduleRoutes,
174
176
  routeToColumnsMap,
175
177
  routeToResourceMap,
176
178
  publicRoutes = []
@@ -185,6 +187,9 @@ const ERPUIProvider = ({
185
187
  if (additionalApiConfigurations) {
186
188
  extendApiConfigurations(additionalApiConfigurations);
187
189
  }
190
+ if (moduleRoutes) {
191
+ setModuleRoutes(moduleRoutes);
192
+ }
188
193
  isInitialized.current = true;
189
194
  } catch (error) {
190
195
  console.error("Failed to initialize API configuration:", error);
@@ -264,4 +269,4 @@ export {
264
269
  useGenericDataFetcher as c,
265
270
  useERPUI as u
266
271
  };
267
- //# sourceMappingURL=apiHelper-BvnhN2uo.esm.js.map
272
+ //# sourceMappingURL=apiHelper-DOCeCGD-.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiHelper-DOCeCGD-.esm.js","sources":["../../src/hooks/use-translations.ts","../../src/hooks/useDataFetcher.tsx","../../src/components/providers/ERPUIProvider.tsx","../../src/hooks/apiHelper.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n// import { useLocation } from 'react-router-dom'\nimport { getI18n, useTranslation } from 'react-i18next'\nimport { loadModuleTranslations } from '../utils/translations'\nimport modules from '../constants/modules'\nimport { useAuth } from './useAuth'\n\n// Global state to prevent duplicate calls across all hook instances\nlet globalLastLoadedModules = ''\nlet globalIsLoading = false\nlet globalInitialLoad = false\n\nexport const useAppTranslations = () => {\n\tconst [isLoading, setIsLoading] = useState(globalInitialLoad)\n\tconst location = window.location\n\tconst i18nInstance = getI18n()\n\tconst { user, loading } = useAuth()\n\tconst { t } = useTranslation()\n\n\tuseEffect(() => {\n\t\tconst erpModules = modules(t)\n\t\tconst currentPath = location.pathname.toLowerCase()\n\t\tif(user?.id && !loading) {\n\t\n\t\t\tconst matchedModule = erpModules.find(\n\t\t\t\t(mod) =>\n\t\t\t\t\tmod.link.toLowerCase() === currentPath ||\n\t\t\t\t\tmod.connectedRoutes?.some((route: string) => currentPath.startsWith(route.toLowerCase()))\n\t\t\t)\n\t\n\t\t\tlet modulesToLoad: string[] = []\n\t\n\t\t\tif (matchedModule?.translationModule) {\n\t\t\t\tmodulesToLoad = [...matchedModule.translationModule, 'common']\n\t\t\t} else if (!matchedModule && currentPath === '/dashboard') {\n\t\t\t\tmodulesToLoad = ['common']\n\t\t\t}\n\t\n\t\t\tif (modulesToLoad.length > 0) {\n\t\t\t\tconst moduleKey = [...modulesToLoad].sort().join(',')\n\t\n\t\t\t\t// Skip if same modules are already loaded or currently loading\n\t\t\t\tif (globalLastLoadedModules === moduleKey || globalIsLoading) {\n\t\t\t\t\tif (globalInitialLoad) {\n\t\t\t\t\t\tsetIsLoading(false)\n\t\t\t\t\t\tglobalInitialLoad = false\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\n\t\t\t\tglobalIsLoading = true\n\t\t\t\tglobalLastLoadedModules = moduleKey\n\t\t\t\tsetIsLoading(true)\n\t\n\t\t\t\tloadModuleTranslations(modulesToLoad, i18nInstance).finally(() => {\n\t\t\t\t\tglobalIsLoading = false\n\t\t\t\t\tsetIsLoading(false)\n\t\t\t\t\tglobalInitialLoad = false\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\t// No modules to load, but still need to handle initial load state\n\t\t\t\tif (globalInitialLoad) {\n\t\t\t\t\tsetIsLoading(false)\n\t\t\t\t\tglobalInitialLoad = false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [location.pathname, t, user, loading])\n\n\treturn { isLoading }\n};\n\nexport default useAppTranslations;\n","import { useCallback, useState, useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from './use-pages';\nimport { useLocation } from 'react-router-dom';\ninterface FilterParams {\n\tskip: number;\n\tlimit: number;\n\tsearch?: string;\n\tselect?: string;\n\torder?: string;\n\tfilters?: string;\n}\n\ninterface ActivePage {\n\tsort?: { id: string; desc: boolean };\n\tfilterQueryString?: string;\n\tsearch?: string;\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\n}\n\nconst useGenericDataFetcher = (\n\tcols?: ActivePage,\n\tpagination: { skip: number; limit: number },\n\tfetchAction: (filters: FilterParams) => void,\n\tcustomeFilter: any = '',\n\tcustomDeps?: any[],\n\tshowCreatedBy: boolean = true,\n\tcustomFields?: any = []\n) => {\n\tconst { activePage } = usePages();\n\tconst dispatch = useDispatch();\n\tconst location = useLocation();\n\n\tconst sourceColumns = Array.isArray(cols) ? cols?.filter((col: any) => col.visible) : activePage?.visible_columns;\n\n\tconst [trackedPath, setTrackedPath] = useState<string | null>(null);\n\tconst [trackedColumns, setTrackedColumns] = useState<any[]>([]);\n\n\tuseEffect(() => {\n\t\tif (trackedPath !== location?.pathname) {\n\t\t\tsetTrackedPath(location?.pathname);\n\t\t\tsetTrackedColumns([]);\n\t\t}\n\t}, [location?.pathname, trackedPath]);\n\n\tuseEffect(() => {\n\t\tif (trackedPath === location?.pathname && sourceColumns?.length > 0) {\n\t\t\tif (JSON.stringify(trackedColumns) !== JSON.stringify(sourceColumns)) {\n\t\t\t\tsetTrackedColumns(sourceColumns);\n\t\t\t}\n\t\t}\n\t}, [location?.pathname, trackedPath, sourceColumns]);\n\n\tconst getProcessedFilters = useCallback(() => {\n\t\tconst { filterQueryString } = activePage || {};\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, \"\") || '';\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\n\t\tlet filters = customeFilter;\n\n\t\tif (extraQueryString) {\n\t\t\tfilters = filters ? `(${filters}${extraQueryString})` : `(${extraQueryString})`;\n\t\t} else if (filters) {\n\t\t\tfilters = `(${filters})`;\n\t\t}\n\n\t\treturn filters || undefined;\n\t\t//eslint-disable-next-line\n\t}, [activePage.filterQueryString, customeFilter]);\n\n\tconst fetchData = useCallback(() => {\n\t\tif (!fetchAction) {\n\t\t\treturn;\n\t\t}\n\t\tconst { sort = null, search } = activePage;\n\n\t\tif (!trackedColumns || trackedColumns.length === 0) return;\n\n\t\tconst filters = getProcessedFilters();\n\t\tconst visibleColumns = trackedColumns?.filter((vc) => vc.visible)\n\n\t\tconst selectPayload = visibleColumns?.length > 0 ? `[${visibleColumns\n\t\t\t?.map((item) =>\n\t\t\t\titem.accessorKey?.includes(\".\")\n\t\t\t\t\t? item.accessorKey.split(\".\")[0]\n\t\t\t\t\t: item.accessorKey\n\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]` : undefined\n\t\tconst payload: FilterParams = {\n\t\t\tskip: activePage?.skip || pagination?.skip,\n\t\t\tlimit: pagination.limit,\n\t\t\tsearch,\n\t\t\tselect: selectPayload,\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n\t\t\t...(filters && { filters }),\n\t\t};\n\n\t\tdispatch(fetchAction(payload));\n\t\t//eslint-disable-next-line\n\t}, [\n\t\ttrackedColumns,\n\t\tactivePage.sort,\n\t\tactivePage.filterQueryString,\n\t\tactivePage.search,\n\t\t// pagination?.skip,\n\t\tactivePage?.skip,\n\t\tpagination?.limit,\n\t\tdispatch,\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t...(customDeps || []),\n\t]);\n\n\n\n\treturn fetchData;\n};\n\nexport default useGenericDataFetcher;\n","import React, { createContext, useContext, ReactNode, Suspense } from 'react';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { ThemeProvider } from '@mui/material/styles';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { SnackbarProvider } from 'notistack';\nimport { BrowserRouter } from 'react-router-dom';\nimport { createLibraryStore, ApiClientConfig } from '../../redux';\nimport { createLightTheme, createDarkTheme, Color } from '../../theme';\nimport { AuthProvider } from '../../contexts/AuthContext';\nimport { LanguageProvider } from '../../contexts/languageContext';\nimport { PageProvider } from '../../contexts/page-context';\nimport { PermissionsProvider } from '../../contexts/permission-context';\nimport MUIThemeWrapper from '../../theme/themeWrapper';\nimport Loader from '../loader';\nimport useAppTranslations from '../../hooks/use-translations';\nimport '../../utils/i18n';\nimport { initializeApiConfig, ApiConfig } from '../../utils/api-config';\nimport { initializeApiBaseUrls, extendApiConfigurations } from '../../utils/api';\nimport { setModuleRoutes } from '../../utils/module-routes-config';\n\n// Context for library configuration\ninterface ERPUIContextValue {\n useRedux: boolean;\n apiClient?: ApiClientConfig;\n theme?: any;\n themeMode: 'light' | 'dark';\n direction: 'ltr' | 'rtl';\n primaryColor?: Color;\n}\n\nconst ERPUIContext = createContext<ERPUIContextValue>({\n useRedux: false,\n themeMode: 'light',\n direction: 'ltr',\n});\n\nexport const useERPUI = () => useContext(ERPUIContext);\n\n// Provider props interface\ninterface ERPUIProviderProps {\n children: ReactNode;\n\n // Redux configuration\n useRedux?: boolean;\n reduxStore?: any;\n apiClient?: ApiClientConfig;\n additionalReducers?: Record<string, any>;\n\n // Theme configuration\n theme?: any;\n themeMode?: 'light' | 'dark';\n primaryColor?: Color;\n direction?: 'ltr' | 'rtl';\n\n // Context providers configuration\n enableAuth?: boolean;\n enableLanguage?: boolean;\n enablePages?: boolean;\n enablePermissions?: boolean;\n enableRouter?: boolean;\n enableSnackbar?: boolean;\n\n // Other configuration\n enableCssBaseline?: boolean;\n snackbarConfig?: {\n maxSnack?: number;\n anchorOrigin?: {\n vertical: 'top' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n autoHideDuration?: number;\n };\n\n // API configuration\n apiConfig?: ApiConfig;\n\n // Additional API configurations to extend the shared apiConfigurations map\n additionalApiConfigurations?: Record<string, any>;\n\n // Module routes override — allows MFE apps to inject their own full route set\n // so the header module dropdown can match routes correctly.\n // Example: { hrms: Object.values(PathnameHrms).map(p => Pathname.DASHBOARD_HRMS + p) }\n moduleRoutes?: Record<string, string[]>;\n\n // Route maps\n routeToColumnsMap?: Record<string, any>;\n routeToResourceMap?: Record<string, any>;\n publicRoutes?: string[]; // Optional prop to allow customization of public routes in AuthProvider\n}\n\nexport const ERPUIProvider: React.FC<ERPUIProviderProps> = ({\n children,\n\n // Redux props\n useRedux = false,\n reduxStore,\n apiClient,\n additionalReducers = {},\n\n // Theme props\n theme: customTheme,\n themeMode = 'light',\n primaryColor,\n direction = 'ltr',\n\n // Context providers configuration\n enableAuth = true,\n enableLanguage = true,\n enablePages = true,\n enablePermissions = true,\n enableRouter = false, // Default false since consuming app usually provides router\n enableSnackbar = true,\n\n // Other props\n enableCssBaseline = true,\n snackbarConfig = {\n maxSnack: 3,\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\n autoHideDuration: 5000,\n },\n\n // API configuration\n apiConfig: providedApiConfig,\n additionalApiConfigurations,\n moduleRoutes,\n routeToColumnsMap,\n routeToResourceMap,\n publicRoutes = [], // Default empty array for public routes in AuthProvider \n}) => {\n console.log(\"additionalApiConfigurations...........\",additionalApiConfigurations)\n\n // Initialize API configuration synchronously before first render\n // This prevents \"API configuration not initialized\" errors when components\n // try to use the API during initial render\n const isInitialized = React.useRef(false);\n\n if (providedApiConfig && !isInitialized.current) {\n try {\n initializeApiConfig(providedApiConfig);\n initializeApiBaseUrls();\n if (additionalApiConfigurations) {\n extendApiConfigurations(additionalApiConfigurations);\n }\n // Inject MFE-provided module routes so the header can resolve modules\n if (moduleRoutes) {\n setModuleRoutes(moduleRoutes);\n }\n isInitialized.current = true;\n } catch (error) {\n console.error('Failed to initialize API configuration:', error);\n }\n }\n // const { isLoading } = useAppTranslations();\n // if (isLoading) {\n // return <Loader />;\n // }\n // Create or use provided Redux store\n const store = React.useMemo(() => {\n if (!useRedux) return null;\n\n if (reduxStore) {\n return reduxStore;\n }\n\n return createLibraryStore(additionalReducers, apiClient);\n }, [useRedux, reduxStore, additionalReducers, apiClient]);\n\n // Create theme\n const theme = React.useMemo(() => {\n if (customTheme) {\n return customTheme;\n }\n\n const themeCreator = themeMode === 'dark' ? createDarkTheme : createLightTheme;\n const { theme: generatedTheme } = themeCreator(primaryColor, direction);\n return generatedTheme;\n }, [customTheme, themeMode, primaryColor, direction]);\n\n // Context value\n const contextValue: ERPUIContextValue = {\n useRedux,\n apiClient,\n theme,\n themeMode,\n direction,\n primaryColor,\n };\n\n // Build provider tree from inside out\n let content = (\n <ERPUIContext.Provider value={contextValue}>\n {/* <ThemeProvider theme={theme}>\n {enableCssBaseline && <CssBaseline />} */}\n {/* <Suspense fallback={<Loader />}> */}\n <MUIThemeWrapper theme={theme} enableCssBaseline={enableCssBaseline}>\n {children}\n </MUIThemeWrapper>\n {/* </Suspense> */}\n {/* </ThemeProvider> */}\n </ERPUIContext.Provider>\n );\n\n // Wrap with snackbar provider if enabled\n if (enableSnackbar) {\n content = (\n <SnackbarProvider {...snackbarConfig}>\n {content}\n </SnackbarProvider>\n );\n }\n\n // Wrap with page provider if enabled\n // if (enablePages) {\n // content = (\n // <PageProvider routeToColumnsMap={routeToColumnsMap} routeToResourceMap={routeToResourceMap}>\n // {content}\n // </PageProvider>\n // );\n // }\n\n // Wrap with permissions provider if enabled\n if (enablePermissions) {\n content = (\n <PermissionsProvider>\n {content}\n </PermissionsProvider>\n );\n }\n\n // Wrap with language provider if enabled\n if (enableLanguage) {\n content = (\n <LanguageProvider>\n {content}\n </LanguageProvider>\n );\n }\n\n // Wrap with auth provider if enabled\n if (enableAuth) {\n content = (\n <AuthProvider publicRoutes={publicRoutes}>\n {content}\n </AuthProvider>\n );\n }\n\n // Wrap with router if enabled\n if (enableRouter) {\n content = (\n <BrowserRouter>\n {content}\n </BrowserRouter>\n );\n }\n\n // Wrap with Redux provider if enabled\n if (useRedux && store) {\n content = (\n <ReduxProvider store={store}>\n {content}\n </ReduxProvider>\n );\n }\n\n return content;\n};\n\nexport default ERPUIProvider;","import { enqueueSnackbar } from \"notistack\";\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?:any\n};\n\ntype Callback = () => void;\n\nexport function apiHelper(res: ApiResponse, callBack?: Callback): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n return res.error?.message ? JSON.parse(res.error.message) : null;\n } catch {\n return { message: \"Something went wrong\" };\n }\n })();\n\n const message = errorMessage?.message?.replace(\"Error:\", \"\").trim() || \"Something went wrong\";\n\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n return\n }\n\n if (callBack && typeof callBack === \"function\") {\n callBack();\n } else if (callBack) {\n console.warn(\"Provided callBack is not a function.\");\n }\n}\n"],"names":["React","jsx","ReduxProvider","_a"],"mappings":"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"}
@@ -2,19 +2,20 @@
2
2
  const React = require("react");
3
3
  const reactI18next = require("react-i18next");
4
4
  const translations = require("./translations-BVvsrCTo.js");
5
- const modules = require("./modules-BDHGBfwa.js");
5
+ const modules = require("./modules-C3T2Pnwc.js");
6
6
  const useAuth = require("./useAuth-BhsPEB2T.js");
7
7
  const reactRedux = require("react-redux");
8
- const useAccountSetting = require("./useAccountSetting-B5qXSiGa.js");
8
+ const useAccountSetting = require("./useAccountSetting-ChWinjqQ.js");
9
9
  const reactRouterDom = require("react-router-dom");
10
10
  const jsxRuntime = require("./jsx-runtime-B6vEU3CM.js");
11
11
  const notistack = require("notistack");
12
12
  const store = require("./store-DEoLcgbp.js");
13
13
  const themeImpl = require("./theme-impl-BgGLJiHC.js");
14
14
  const languageContext = require("./languageContext-s_EUKz_A.js");
15
- const pageContext = require("./page-context-DRbgpYFO.js");
15
+ const pageContext = require("./page-context-BKgBvHxw.js");
16
16
  const apiConfig = require("./api-config-DXwDMFn-.js");
17
17
  const common = require("./common-QvMCr1xx.js");
18
+ const moduleRoutesConfig = require("./module-routes-config-B8IucBuj.js");
18
19
  let globalLastLoadedModules = "";
19
20
  let globalIsLoading = false;
20
21
  let globalInitialLoad = false;
@@ -172,6 +173,7 @@ const ERPUIProvider = ({
172
173
  // API configuration
173
174
  apiConfig: providedApiConfig,
174
175
  additionalApiConfigurations,
176
+ moduleRoutes,
175
177
  routeToColumnsMap,
176
178
  routeToResourceMap,
177
179
  publicRoutes = []
@@ -186,6 +188,9 @@ const ERPUIProvider = ({
186
188
  if (additionalApiConfigurations) {
187
189
  common.extendApiConfigurations(additionalApiConfigurations);
188
190
  }
191
+ if (moduleRoutes) {
192
+ moduleRoutesConfig.setModuleRoutes(moduleRoutes);
193
+ }
189
194
  isInitialized.current = true;
190
195
  } catch (error) {
191
196
  console.error("Failed to initialize API configuration:", error);
@@ -263,4 +268,4 @@ exports.apiHelper = apiHelper;
263
268
  exports.useAppTranslations = useAppTranslations;
264
269
  exports.useERPUI = useERPUI;
265
270
  exports.useGenericDataFetcher = useGenericDataFetcher;
266
- //# sourceMappingURL=apiHelper-BrzRrxpx.js.map
271
+ //# sourceMappingURL=apiHelper-DSbRnRC1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiHelper-DSbRnRC1.js","sources":["../../src/hooks/use-translations.ts","../../src/hooks/useDataFetcher.tsx","../../src/components/providers/ERPUIProvider.tsx","../../src/hooks/apiHelper.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n// import { useLocation } from 'react-router-dom'\nimport { getI18n, useTranslation } from 'react-i18next'\nimport { loadModuleTranslations } from '../utils/translations'\nimport modules from '../constants/modules'\nimport { useAuth } from './useAuth'\n\n// Global state to prevent duplicate calls across all hook instances\nlet globalLastLoadedModules = ''\nlet globalIsLoading = false\nlet globalInitialLoad = false\n\nexport const useAppTranslations = () => {\n\tconst [isLoading, setIsLoading] = useState(globalInitialLoad)\n\tconst location = window.location\n\tconst i18nInstance = getI18n()\n\tconst { user, loading } = useAuth()\n\tconst { t } = useTranslation()\n\n\tuseEffect(() => {\n\t\tconst erpModules = modules(t)\n\t\tconst currentPath = location.pathname.toLowerCase()\n\t\tif(user?.id && !loading) {\n\t\n\t\t\tconst matchedModule = erpModules.find(\n\t\t\t\t(mod) =>\n\t\t\t\t\tmod.link.toLowerCase() === currentPath ||\n\t\t\t\t\tmod.connectedRoutes?.some((route: string) => currentPath.startsWith(route.toLowerCase()))\n\t\t\t)\n\t\n\t\t\tlet modulesToLoad: string[] = []\n\t\n\t\t\tif (matchedModule?.translationModule) {\n\t\t\t\tmodulesToLoad = [...matchedModule.translationModule, 'common']\n\t\t\t} else if (!matchedModule && currentPath === '/dashboard') {\n\t\t\t\tmodulesToLoad = ['common']\n\t\t\t}\n\t\n\t\t\tif (modulesToLoad.length > 0) {\n\t\t\t\tconst moduleKey = [...modulesToLoad].sort().join(',')\n\t\n\t\t\t\t// Skip if same modules are already loaded or currently loading\n\t\t\t\tif (globalLastLoadedModules === moduleKey || globalIsLoading) {\n\t\t\t\t\tif (globalInitialLoad) {\n\t\t\t\t\t\tsetIsLoading(false)\n\t\t\t\t\t\tglobalInitialLoad = false\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\n\t\t\t\tglobalIsLoading = true\n\t\t\t\tglobalLastLoadedModules = moduleKey\n\t\t\t\tsetIsLoading(true)\n\t\n\t\t\t\tloadModuleTranslations(modulesToLoad, i18nInstance).finally(() => {\n\t\t\t\t\tglobalIsLoading = false\n\t\t\t\t\tsetIsLoading(false)\n\t\t\t\t\tglobalInitialLoad = false\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\t// No modules to load, but still need to handle initial load state\n\t\t\t\tif (globalInitialLoad) {\n\t\t\t\t\tsetIsLoading(false)\n\t\t\t\t\tglobalInitialLoad = false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [location.pathname, t, user, loading])\n\n\treturn { isLoading }\n};\n\nexport default useAppTranslations;\n","import { useCallback, useState, useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from './use-pages';\nimport { useLocation } from 'react-router-dom';\ninterface FilterParams {\n\tskip: number;\n\tlimit: number;\n\tsearch?: string;\n\tselect?: string;\n\torder?: string;\n\tfilters?: string;\n}\n\ninterface ActivePage {\n\tsort?: { id: string; desc: boolean };\n\tfilterQueryString?: string;\n\tsearch?: string;\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\n}\n\nconst useGenericDataFetcher = (\n\tcols?: ActivePage,\n\tpagination: { skip: number; limit: number },\n\tfetchAction: (filters: FilterParams) => void,\n\tcustomeFilter: any = '',\n\tcustomDeps?: any[],\n\tshowCreatedBy: boolean = true,\n\tcustomFields?: any = []\n) => {\n\tconst { activePage } = usePages();\n\tconst dispatch = useDispatch();\n\tconst location = useLocation();\n\n\tconst sourceColumns = Array.isArray(cols) ? cols?.filter((col: any) => col.visible) : activePage?.visible_columns;\n\n\tconst [trackedPath, setTrackedPath] = useState<string | null>(null);\n\tconst [trackedColumns, setTrackedColumns] = useState<any[]>([]);\n\n\tuseEffect(() => {\n\t\tif (trackedPath !== location?.pathname) {\n\t\t\tsetTrackedPath(location?.pathname);\n\t\t\tsetTrackedColumns([]);\n\t\t}\n\t}, [location?.pathname, trackedPath]);\n\n\tuseEffect(() => {\n\t\tif (trackedPath === location?.pathname && sourceColumns?.length > 0) {\n\t\t\tif (JSON.stringify(trackedColumns) !== JSON.stringify(sourceColumns)) {\n\t\t\t\tsetTrackedColumns(sourceColumns);\n\t\t\t}\n\t\t}\n\t}, [location?.pathname, trackedPath, sourceColumns]);\n\n\tconst getProcessedFilters = useCallback(() => {\n\t\tconst { filterQueryString } = activePage || {};\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, \"\") || '';\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\n\t\tlet filters = customeFilter;\n\n\t\tif (extraQueryString) {\n\t\t\tfilters = filters ? `(${filters}${extraQueryString})` : `(${extraQueryString})`;\n\t\t} else if (filters) {\n\t\t\tfilters = `(${filters})`;\n\t\t}\n\n\t\treturn filters || undefined;\n\t\t//eslint-disable-next-line\n\t}, [activePage.filterQueryString, customeFilter]);\n\n\tconst fetchData = useCallback(() => {\n\t\tif (!fetchAction) {\n\t\t\treturn;\n\t\t}\n\t\tconst { sort = null, search } = activePage;\n\n\t\tif (!trackedColumns || trackedColumns.length === 0) return;\n\n\t\tconst filters = getProcessedFilters();\n\t\tconst visibleColumns = trackedColumns?.filter((vc) => vc.visible)\n\n\t\tconst selectPayload = visibleColumns?.length > 0 ? `[${visibleColumns\n\t\t\t?.map((item) =>\n\t\t\t\titem.accessorKey?.includes(\".\")\n\t\t\t\t\t? item.accessorKey.split(\".\")[0]\n\t\t\t\t\t: item.accessorKey\n\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]` : undefined\n\t\tconst payload: FilterParams = {\n\t\t\tskip: activePage?.skip || pagination?.skip,\n\t\t\tlimit: pagination.limit,\n\t\t\tsearch,\n\t\t\tselect: selectPayload,\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n\t\t\t...(filters && { filters }),\n\t\t};\n\n\t\tdispatch(fetchAction(payload));\n\t\t//eslint-disable-next-line\n\t}, [\n\t\ttrackedColumns,\n\t\tactivePage.sort,\n\t\tactivePage.filterQueryString,\n\t\tactivePage.search,\n\t\t// pagination?.skip,\n\t\tactivePage?.skip,\n\t\tpagination?.limit,\n\t\tdispatch,\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t...(customDeps || []),\n\t]);\n\n\n\n\treturn fetchData;\n};\n\nexport default useGenericDataFetcher;\n","import React, { createContext, useContext, ReactNode, Suspense } from 'react';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { ThemeProvider } from '@mui/material/styles';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { SnackbarProvider } from 'notistack';\nimport { BrowserRouter } from 'react-router-dom';\nimport { createLibraryStore, ApiClientConfig } from '../../redux';\nimport { createLightTheme, createDarkTheme, Color } from '../../theme';\nimport { AuthProvider } from '../../contexts/AuthContext';\nimport { LanguageProvider } from '../../contexts/languageContext';\nimport { PageProvider } from '../../contexts/page-context';\nimport { PermissionsProvider } from '../../contexts/permission-context';\nimport MUIThemeWrapper from '../../theme/themeWrapper';\nimport Loader from '../loader';\nimport useAppTranslations from '../../hooks/use-translations';\nimport '../../utils/i18n';\nimport { initializeApiConfig, ApiConfig } from '../../utils/api-config';\nimport { initializeApiBaseUrls, extendApiConfigurations } from '../../utils/api';\nimport { setModuleRoutes } from '../../utils/module-routes-config';\n\n// Context for library configuration\ninterface ERPUIContextValue {\n useRedux: boolean;\n apiClient?: ApiClientConfig;\n theme?: any;\n themeMode: 'light' | 'dark';\n direction: 'ltr' | 'rtl';\n primaryColor?: Color;\n}\n\nconst ERPUIContext = createContext<ERPUIContextValue>({\n useRedux: false,\n themeMode: 'light',\n direction: 'ltr',\n});\n\nexport const useERPUI = () => useContext(ERPUIContext);\n\n// Provider props interface\ninterface ERPUIProviderProps {\n children: ReactNode;\n\n // Redux configuration\n useRedux?: boolean;\n reduxStore?: any;\n apiClient?: ApiClientConfig;\n additionalReducers?: Record<string, any>;\n\n // Theme configuration\n theme?: any;\n themeMode?: 'light' | 'dark';\n primaryColor?: Color;\n direction?: 'ltr' | 'rtl';\n\n // Context providers configuration\n enableAuth?: boolean;\n enableLanguage?: boolean;\n enablePages?: boolean;\n enablePermissions?: boolean;\n enableRouter?: boolean;\n enableSnackbar?: boolean;\n\n // Other configuration\n enableCssBaseline?: boolean;\n snackbarConfig?: {\n maxSnack?: number;\n anchorOrigin?: {\n vertical: 'top' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n };\n autoHideDuration?: number;\n };\n\n // API configuration\n apiConfig?: ApiConfig;\n\n // Additional API configurations to extend the shared apiConfigurations map\n additionalApiConfigurations?: Record<string, any>;\n\n // Module routes override — allows MFE apps to inject their own full route set\n // so the header module dropdown can match routes correctly.\n // Example: { hrms: Object.values(PathnameHrms).map(p => Pathname.DASHBOARD_HRMS + p) }\n moduleRoutes?: Record<string, string[]>;\n\n // Route maps\n routeToColumnsMap?: Record<string, any>;\n routeToResourceMap?: Record<string, any>;\n publicRoutes?: string[]; // Optional prop to allow customization of public routes in AuthProvider\n}\n\nexport const ERPUIProvider: React.FC<ERPUIProviderProps> = ({\n children,\n\n // Redux props\n useRedux = false,\n reduxStore,\n apiClient,\n additionalReducers = {},\n\n // Theme props\n theme: customTheme,\n themeMode = 'light',\n primaryColor,\n direction = 'ltr',\n\n // Context providers configuration\n enableAuth = true,\n enableLanguage = true,\n enablePages = true,\n enablePermissions = true,\n enableRouter = false, // Default false since consuming app usually provides router\n enableSnackbar = true,\n\n // Other props\n enableCssBaseline = true,\n snackbarConfig = {\n maxSnack: 3,\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\n autoHideDuration: 5000,\n },\n\n // API configuration\n apiConfig: providedApiConfig,\n additionalApiConfigurations,\n moduleRoutes,\n routeToColumnsMap,\n routeToResourceMap,\n publicRoutes = [], // Default empty array for public routes in AuthProvider \n}) => {\n console.log(\"additionalApiConfigurations...........\",additionalApiConfigurations)\n\n // Initialize API configuration synchronously before first render\n // This prevents \"API configuration not initialized\" errors when components\n // try to use the API during initial render\n const isInitialized = React.useRef(false);\n\n if (providedApiConfig && !isInitialized.current) {\n try {\n initializeApiConfig(providedApiConfig);\n initializeApiBaseUrls();\n if (additionalApiConfigurations) {\n extendApiConfigurations(additionalApiConfigurations);\n }\n // Inject MFE-provided module routes so the header can resolve modules\n if (moduleRoutes) {\n setModuleRoutes(moduleRoutes);\n }\n isInitialized.current = true;\n } catch (error) {\n console.error('Failed to initialize API configuration:', error);\n }\n }\n // const { isLoading } = useAppTranslations();\n // if (isLoading) {\n // return <Loader />;\n // }\n // Create or use provided Redux store\n const store = React.useMemo(() => {\n if (!useRedux) return null;\n\n if (reduxStore) {\n return reduxStore;\n }\n\n return createLibraryStore(additionalReducers, apiClient);\n }, [useRedux, reduxStore, additionalReducers, apiClient]);\n\n // Create theme\n const theme = React.useMemo(() => {\n if (customTheme) {\n return customTheme;\n }\n\n const themeCreator = themeMode === 'dark' ? createDarkTheme : createLightTheme;\n const { theme: generatedTheme } = themeCreator(primaryColor, direction);\n return generatedTheme;\n }, [customTheme, themeMode, primaryColor, direction]);\n\n // Context value\n const contextValue: ERPUIContextValue = {\n useRedux,\n apiClient,\n theme,\n themeMode,\n direction,\n primaryColor,\n };\n\n // Build provider tree from inside out\n let content = (\n <ERPUIContext.Provider value={contextValue}>\n {/* <ThemeProvider theme={theme}>\n {enableCssBaseline && <CssBaseline />} */}\n {/* <Suspense fallback={<Loader />}> */}\n <MUIThemeWrapper theme={theme} enableCssBaseline={enableCssBaseline}>\n {children}\n </MUIThemeWrapper>\n {/* </Suspense> */}\n {/* </ThemeProvider> */}\n </ERPUIContext.Provider>\n );\n\n // Wrap with snackbar provider if enabled\n if (enableSnackbar) {\n content = (\n <SnackbarProvider {...snackbarConfig}>\n {content}\n </SnackbarProvider>\n );\n }\n\n // Wrap with page provider if enabled\n // if (enablePages) {\n // content = (\n // <PageProvider routeToColumnsMap={routeToColumnsMap} routeToResourceMap={routeToResourceMap}>\n // {content}\n // </PageProvider>\n // );\n // }\n\n // Wrap with permissions provider if enabled\n if (enablePermissions) {\n content = (\n <PermissionsProvider>\n {content}\n </PermissionsProvider>\n );\n }\n\n // Wrap with language provider if enabled\n if (enableLanguage) {\n content = (\n <LanguageProvider>\n {content}\n </LanguageProvider>\n );\n }\n\n // Wrap with auth provider if enabled\n if (enableAuth) {\n content = (\n <AuthProvider publicRoutes={publicRoutes}>\n {content}\n </AuthProvider>\n );\n }\n\n // Wrap with router if enabled\n if (enableRouter) {\n content = (\n <BrowserRouter>\n {content}\n </BrowserRouter>\n );\n }\n\n // Wrap with Redux provider if enabled\n if (useRedux && store) {\n content = (\n <ReduxProvider store={store}>\n {content}\n </ReduxProvider>\n );\n }\n\n return content;\n};\n\nexport default ERPUIProvider;","import { enqueueSnackbar } from \"notistack\";\n\ntype ApiResponse = {\n meta?: {\n requestStatus?: string;\n };\n error?: {\n message?: string;\n };\n payload?:any\n};\n\ntype Callback = () => void;\n\nexport function apiHelper(res: ApiResponse, callBack?: Callback): void {\n if (res?.meta?.requestStatus === \"rejected\") {\n const errorMessage = (() => {\n try {\n return res.error?.message ? JSON.parse(res.error.message) : null;\n } catch {\n return { message: \"Something went wrong\" };\n }\n })();\n\n const message = errorMessage?.message?.replace(\"Error:\", \"\").trim() || \"Something went wrong\";\n\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n return\n }\n\n if (callBack && typeof callBack === \"function\") {\n callBack();\n } else if (callBack) {\n console.warn(\"Provided callBack is not a function.\");\n }\n}\n"],"names":["useState","getI18n","useAuth","useTranslation","useEffect","modules","loadModuleTranslations","usePages","useDispatch","useLocation","useCallback","createContext","useContext","initializeApiConfig","initializeApiBaseUrls","extendApiConfigurations","setModuleRoutes","store","createLibraryStore","createDarkTheme","createLightTheme","jsx","MUIThemeWrapper","SnackbarProvider","PermissionsProvider","LanguageProvider","AuthProvider","BrowserRouter","ReduxProvider","_a","enqueueSnackbar"],"mappings":"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"}
@@ -12,7 +12,7 @@ import { useNavigate, useLocation, matchRoutes, Link } from "react-router-dom";
12
12
  import { useTranslation } from "react-i18next";
13
13
  import { aH as PathnameGenerator, f as PathnameRental, aJ as PathnameGenerator$1, b as PathnameCrm, aI as PathnameGenerator$2, e as PathnamePurchase, aN as ROUTES, aK as PathnameGenerator$3, d as PathnameManufacturing, aL as PathnameGenerator$4, c as PathnameInventory, aM as PathnameGenerator$5, a as PathnameAccounting, P as Pathname } from "./pathname.rental-VYOFVGX6.esm.js";
14
14
  import { i as images } from "./images-BY6aQF32.esm.js";
15
- import { m as modules } from "./modules-UIv-lDBW.esm.js";
15
+ import { m as modules } from "./modules-D5_hDIg9.esm.js";
16
16
  import { u as useLanguage } from "./useLangauge-Bie5anLS.esm.js";
17
17
  import { ar as getToken, a8 as getErrorMessage, aU as formatText, q as convertToUnderscore } from "./common-B-nmtH5r.esm.js";
18
18
  import { Controller, appendErrors, useForm } from "react-hook-form";
@@ -8561,4 +8561,4 @@ export {
8561
8561
  default_1$8 as y,
8562
8562
  List as z
8563
8563
  };
8564
- //# sourceMappingURL=appbar-Dn00gF0A.esm.js.map
8564
+ //# sourceMappingURL=appbar-CrH_SjSo.esm.js.map