@erpsquad/common 1.10.50 → 1.10.52

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 (121) hide show
  1. package/dist/chunks/{ERPUIProvider-Ct7W7gdB.js → ERPUIProvider-D-3gvvdJ.js} +8 -8
  2. package/dist/chunks/{ERPUIProvider-Ct7W7gdB.js.map → ERPUIProvider-D-3gvvdJ.js.map} +1 -1
  3. package/dist/chunks/{ERPUIProvider-Cl_IkhGu.esm.js → ERPUIProvider-Dt58Xhz0.esm.js} +8 -8
  4. package/dist/chunks/{ERPUIProvider-Cl_IkhGu.esm.js.map → ERPUIProvider-Dt58Xhz0.esm.js.map} +1 -1
  5. package/dist/chunks/{actionCreator-BrkbDoSD.js → actionCreator-49uJfvCF.js} +2 -2
  6. package/dist/chunks/{actionCreator-BrkbDoSD.js.map → actionCreator-49uJfvCF.js.map} +1 -1
  7. package/dist/chunks/{actionCreator-DpYNRFa8.esm.js → actionCreator-BwFse5bg.esm.js} +2 -2
  8. package/dist/chunks/{actionCreator-DpYNRFa8.esm.js.map → actionCreator-BwFse5bg.esm.js.map} +1 -1
  9. package/dist/chunks/{android-12-switch-C54QA5wF.esm.js → android-12-switch-33rztRB8.esm.js} +18 -18
  10. package/dist/chunks/{android-12-switch-C54QA5wF.esm.js.map → android-12-switch-33rztRB8.esm.js.map} +1 -1
  11. package/dist/chunks/{android-12-switch-Djjm2vTz.js → android-12-switch-Catc7Blq.js} +18 -18
  12. package/dist/chunks/{android-12-switch-Djjm2vTz.js.map → android-12-switch-Catc7Blq.js.map} +1 -1
  13. package/dist/chunks/api-config-DXwDMFn-.js.map +1 -1
  14. package/dist/chunks/api-config-GOys-syK.esm.js.map +1 -1
  15. package/dist/chunks/{appbar-hgvnXu2W.esm.js → appbar-DCbjpgYi.esm.js} +5 -4
  16. package/dist/chunks/{appbar-hgvnXu2W.esm.js.map → appbar-DCbjpgYi.esm.js.map} +1 -1
  17. package/dist/chunks/{appbar-DNna7ILI.js → appbar-I2n8jOmZ.js} +5 -4
  18. package/dist/chunks/{appbar-DNna7ILI.js.map → appbar-I2n8jOmZ.js.map} +1 -1
  19. package/dist/chunks/{common-mZRiR8Bu.js → common-CMIXV2ag.js} +3 -2
  20. package/dist/chunks/{common-mZRiR8Bu.js.map → common-CMIXV2ag.js.map} +1 -1
  21. package/dist/chunks/{common-KSaUU42L.esm.js → common-DM8k-KPd.esm.js} +3 -2
  22. package/dist/chunks/{common-KSaUU42L.esm.js.map → common-DM8k-KPd.esm.js.map} +1 -1
  23. package/dist/chunks/{custom-editor-MPffh-YA.js → custom-editor-BGf_AGb_.js} +2 -2
  24. package/dist/chunks/{custom-editor-MPffh-YA.js.map → custom-editor-BGf_AGb_.js.map} +1 -1
  25. package/dist/chunks/{custom-editor-BZSuqGTe.esm.js → custom-editor-BPbAz5F2.esm.js} +2 -2
  26. package/dist/chunks/{custom-editor-BZSuqGTe.esm.js.map → custom-editor-BPbAz5F2.esm.js.map} +1 -1
  27. package/dist/chunks/{default-data-DMwLPcgS.js → default-data-D0Cl_eq8.js} +12 -12
  28. package/dist/chunks/{default-data-DMwLPcgS.js.map → default-data-D0Cl_eq8.js.map} +1 -1
  29. package/dist/chunks/{default-data-CdxNaeR_.esm.js → default-data-ofXBWAXp.esm.js} +12 -12
  30. package/dist/chunks/{default-data-CdxNaeR_.esm.js.map → default-data-ofXBWAXp.esm.js.map} +1 -1
  31. package/dist/chunks/{form-builder-conversion-DpySpPti.js → form-builder-conversion-BctVsgrh.js} +2 -2
  32. package/dist/chunks/{form-builder-conversion-DpySpPti.js.map → form-builder-conversion-BctVsgrh.js.map} +1 -1
  33. package/dist/chunks/{form-builder-conversion-BRi2qp8w.esm.js → form-builder-conversion-CAGAPfPD.esm.js} +2 -2
  34. package/dist/chunks/{form-builder-conversion-BRi2qp8w.esm.js.map → form-builder-conversion-CAGAPfPD.esm.js.map} +1 -1
  35. package/dist/chunks/{form-builder-deconversion-Dp1EYW-T.esm.js → form-builder-deconversion-BMZYKavd.esm.js} +50 -50
  36. package/dist/chunks/form-builder-deconversion-BMZYKavd.esm.js.map +1 -0
  37. package/dist/chunks/{form-builder-deconversion-DU7ywI-v.js → form-builder-deconversion-CywQwsmy.js} +50 -50
  38. package/dist/chunks/form-builder-deconversion-CywQwsmy.js.map +1 -0
  39. package/dist/chunks/{fullScreen-DSurXu8F.js → fullScreen-C0CUpB-U.js} +2 -2
  40. package/dist/chunks/{fullScreen-DSurXu8F.js.map → fullScreen-C0CUpB-U.js.map} +1 -1
  41. package/dist/chunks/{fullScreen-Ldpv6XF6.esm.js → fullScreen-U2-1I9MQ.esm.js} +2 -2
  42. package/dist/chunks/{fullScreen-Ldpv6XF6.esm.js.map → fullScreen-U2-1I9MQ.esm.js.map} +1 -1
  43. package/dist/chunks/{languageContext-Dw4OL1Wm.js → languageContext-CU2ZQBXT.js} +3 -3
  44. package/dist/chunks/{languageContext-Dw4OL1Wm.js.map → languageContext-CU2ZQBXT.js.map} +1 -1
  45. package/dist/chunks/{languageContext-DvTW1NGX.esm.js → languageContext-D3Y6DfeZ.esm.js} +3 -3
  46. package/dist/chunks/{languageContext-DvTW1NGX.esm.js.map → languageContext-D3Y6DfeZ.esm.js.map} +1 -1
  47. package/dist/chunks/{migration-utils-DOGCUMgN.esm.js → migration-utils-O1yUz57c.esm.js} +5 -5
  48. package/dist/chunks/migration-utils-O1yUz57c.esm.js.map +1 -0
  49. package/dist/chunks/{migration-utils-DqTbHFlq.js → migration-utils-qNom4aH3.js} +5 -5
  50. package/dist/chunks/migration-utils-qNom4aH3.js.map +1 -0
  51. package/dist/chunks/{page-context-B4zx0GZ5.js → page-context-CMFUVleT.js} +3 -3
  52. package/dist/chunks/{page-context-B4zx0GZ5.js.map → page-context-CMFUVleT.js.map} +1 -1
  53. package/dist/chunks/{page-context-_PTfsRfz.esm.js → page-context-DyIp7imO.esm.js} +3 -3
  54. package/dist/chunks/{page-context-_PTfsRfz.esm.js.map → page-context-DyIp7imO.esm.js.map} +1 -1
  55. package/dist/chunks/{reducer-o59TdR-2.js → reducer-C6yqyxbx.js} +2 -2
  56. package/dist/chunks/{reducer-o59TdR-2.js.map → reducer-C6yqyxbx.js.map} +1 -1
  57. package/dist/chunks/{reducer-BqCQLXEh.esm.js → reducer-KYnbK8j_.esm.js} +2 -2
  58. package/dist/chunks/{reducer-BqCQLXEh.esm.js.map → reducer-KYnbK8j_.esm.js.map} +1 -1
  59. package/dist/chunks/{shareSlice-aO_INfaN.js → shareSlice-DEjtOsER.js} +2 -2
  60. package/dist/chunks/{shareSlice-aO_INfaN.js.map → shareSlice-DEjtOsER.js.map} +1 -1
  61. package/dist/chunks/{shareSlice-BfiZhdXs.esm.js → shareSlice-DYeWzdOT.esm.js} +2 -2
  62. package/dist/chunks/{shareSlice-BfiZhdXs.esm.js.map → shareSlice-DYeWzdOT.esm.js.map} +1 -1
  63. package/dist/chunks/{sidebar-Bf4rJGwh.js → sidebar-DH8_kPmL.js} +4 -4
  64. package/dist/chunks/{sidebar-Bf4rJGwh.js.map → sidebar-DH8_kPmL.js.map} +1 -1
  65. package/dist/chunks/{sidebar-Cl655S49.esm.js → sidebar-DpWvIUpP.esm.js} +4 -4
  66. package/dist/chunks/{sidebar-Cl655S49.esm.js.map → sidebar-DpWvIUpP.esm.js.map} +1 -1
  67. package/dist/chunks/{sidebarScreen-D94147Gz.js → sidebarScreen-BeCvkLnJ.js} +5 -5
  68. package/dist/chunks/{sidebarScreen-D94147Gz.js.map → sidebarScreen-BeCvkLnJ.js.map} +1 -1
  69. package/dist/chunks/{sidebarScreen-Bsxh5RNX.esm.js → sidebarScreen-DPkFDkru.esm.js} +5 -5
  70. package/dist/chunks/{sidebarScreen-Bsxh5RNX.esm.js.map → sidebarScreen-DPkFDkru.esm.js.map} +1 -1
  71. package/dist/chunks/{store-B6aznScx.js → store-B-w9m_lk.js} +3 -3
  72. package/dist/chunks/{store-B6aznScx.js.map → store-B-w9m_lk.js.map} +1 -1
  73. package/dist/chunks/{store-DY2m64HU.esm.js → store-BkBUeiow.esm.js} +3 -3
  74. package/dist/chunks/{store-DY2m64HU.esm.js.map → store-BkBUeiow.esm.js.map} +1 -1
  75. package/dist/chunks/{translations-DVs6ljbG.esm.js → translations-CK5EHeud.esm.js} +2 -2
  76. package/dist/chunks/{translations-DVs6ljbG.esm.js.map → translations-CK5EHeud.esm.js.map} +1 -1
  77. package/dist/chunks/{translations-CtAAqKt_.js → translations-p8Ro-WX7.js} +2 -2
  78. package/dist/chunks/{translations-CtAAqKt_.js.map → translations-p8Ro-WX7.js.map} +1 -1
  79. package/dist/chunks/{uom-field-wrapper-CH15YmR7.js → uom-field-wrapper-CE_yRtMe.js} +14 -14
  80. package/dist/chunks/{uom-field-wrapper-CH15YmR7.js.map → uom-field-wrapper-CE_yRtMe.js.map} +1 -1
  81. package/dist/chunks/{uom-field-wrapper-T8Ot7tIb.esm.js → uom-field-wrapper-Chm-YGS0.esm.js} +14 -14
  82. package/dist/chunks/{uom-field-wrapper-T8Ot7tIb.esm.js.map → uom-field-wrapper-Chm-YGS0.esm.js.map} +1 -1
  83. package/dist/chunks/{useAccountSetting-DLSuTSbZ.js → useAccountSetting-C3a8q2MM.js} +3 -3
  84. package/dist/chunks/{useAccountSetting-DLSuTSbZ.js.map → useAccountSetting-C3a8q2MM.js.map} +1 -1
  85. package/dist/chunks/{useAccountSetting-B9iSkd0R.esm.js → useAccountSetting-CmJnSLPN.esm.js} +3 -3
  86. package/dist/chunks/{useAccountSetting-B9iSkd0R.esm.js.map → useAccountSetting-CmJnSLPN.esm.js.map} +1 -1
  87. package/dist/chunks/{useAdditionalDiscountAutoCalc-BM8q5jHy.js → useAdditionalDiscountAutoCalc-BmSpLSdM.js} +5 -5
  88. package/dist/chunks/{useAdditionalDiscountAutoCalc-BM8q5jHy.js.map → useAdditionalDiscountAutoCalc-BmSpLSdM.js.map} +1 -1
  89. package/dist/chunks/{useAdditionalDiscountAutoCalc-CMSSqS9h.esm.js → useAdditionalDiscountAutoCalc-CbeY-j9g.esm.js} +5 -5
  90. package/dist/chunks/{useAdditionalDiscountAutoCalc-CMSSqS9h.esm.js.map → useAdditionalDiscountAutoCalc-CbeY-j9g.esm.js.map} +1 -1
  91. package/dist/chunks/{useAuth-BxOLRIR3.js → useAuth-BK2kUQVJ.js} +2 -2
  92. package/dist/chunks/{useAuth-BxOLRIR3.js.map → useAuth-BK2kUQVJ.js.map} +1 -1
  93. package/dist/chunks/{useAuth-Cc85zx55.esm.js → useAuth-DGqryENW.esm.js} +2 -2
  94. package/dist/chunks/{useAuth-Cc85zx55.esm.js.map → useAuth-DGqryENW.esm.js.map} +1 -1
  95. package/dist/chunks/{useLangauge-CH6Qmk_K.js → useLangauge-4nEkzuyl.js} +2 -2
  96. package/dist/chunks/{useLangauge-CH6Qmk_K.js.map → useLangauge-4nEkzuyl.js.map} +1 -1
  97. package/dist/chunks/{useLangauge-MakL7mDD.esm.js → useLangauge-DsIhmkGI.esm.js} +2 -2
  98. package/dist/chunks/{useLangauge-MakL7mDD.esm.js.map → useLangauge-DsIhmkGI.esm.js.map} +1 -1
  99. package/dist/components/index.esm.js +9 -9
  100. package/dist/components/index.js +9 -9
  101. package/dist/contexts/index.esm.js +3 -3
  102. package/dist/contexts/index.js +3 -3
  103. package/dist/hooks/index.esm.js +5 -5
  104. package/dist/hooks/index.js +5 -5
  105. package/dist/index.esm.js +24 -24
  106. package/dist/index.js +24 -24
  107. package/dist/layout/index.esm.js +2 -2
  108. package/dist/layout/index.js +2 -2
  109. package/dist/redux/index.esm.js +4 -4
  110. package/dist/redux/index.js +4 -4
  111. package/dist/src/utils/api-config.d.ts +1 -0
  112. package/dist/utils/api-config.d.ts +1 -0
  113. package/dist/utils/index.esm.js +7 -7
  114. package/dist/utils/index.js +6 -6
  115. package/dist/views/index.esm.js +8 -8
  116. package/dist/views/index.js +7 -7
  117. package/package.json +1 -1
  118. package/dist/chunks/form-builder-deconversion-DU7ywI-v.js.map +0 -1
  119. package/dist/chunks/form-builder-deconversion-Dp1EYW-T.esm.js.map +0 -1
  120. package/dist/chunks/migration-utils-DOGCUMgN.esm.js.map +0 -1
  121. package/dist/chunks/migration-utils-DqTbHFlq.js.map +0 -1
@@ -1,20 +1,20 @@
1
1
  "use strict";
2
2
  const React = require("react");
3
3
  const reactI18next = require("react-i18next");
4
- const translations = require("./translations-CtAAqKt_.js");
4
+ const translations = require("./translations-p8Ro-WX7.js");
5
5
  const modules = require("./modules-BhfBbUJy.js");
6
- const useAuth = require("./useAuth-BxOLRIR3.js");
6
+ const useAuth = require("./useAuth-BK2kUQVJ.js");
7
7
  const reactRedux = require("react-redux");
8
- const useAccountSetting = require("./useAccountSetting-DLSuTSbZ.js");
8
+ const useAccountSetting = require("./useAccountSetting-C3a8q2MM.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
- const store = require("./store-B6aznScx.js");
12
+ const store = require("./store-B-w9m_lk.js");
13
13
  const themeImpl = require("./theme-impl-VqZAJjv7.js");
14
- const languageContext = require("./languageContext-Dw4OL1Wm.js");
15
- const pageContext = require("./page-context-B4zx0GZ5.js");
14
+ const languageContext = require("./languageContext-CU2ZQBXT.js");
15
+ const pageContext = require("./page-context-CMFUVleT.js");
16
16
  const apiConfig = require("./api-config-DXwDMFn-.js");
17
- const common = require("./common-mZRiR8Bu.js");
17
+ const common = require("./common-CMIXV2ag.js");
18
18
  const moduleRoutesConfig = require("./module-routes-config-B8IucBuj.js");
19
19
  let globalLastLoadedModules = "";
20
20
  let globalIsLoading = false;
@@ -300,4 +300,4 @@ exports.useAppTranslations = useAppTranslations;
300
300
  exports.useERPUI = useERPUI;
301
301
  exports.useGenericDataFetcher = useGenericDataFetcher;
302
302
  exports.useSnackbarRef = useSnackbarRef;
303
- //# sourceMappingURL=ERPUIProvider-Ct7W7gdB.js.map
303
+ //# sourceMappingURL=ERPUIProvider-D-3gvvdJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ERPUIProvider-Ct7W7gdB.js","sources":["../../src/hooks/use-translations.ts","../../src/hooks/useDataFetcher.tsx","../../src/hooks/apiHelper.ts","../../src/components/providers/ERPUIProvider.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\n// import { useLocation } from 'react-router-dom'\r\nimport { getI18n, useTranslation } from 'react-i18next'\r\nimport { loadModuleTranslations } from '../utils/translations'\r\nimport modules from '../constants/modules'\r\nimport { useAuth } from './useAuth'\r\n\r\n// Global state to prevent duplicate calls across all hook instances\r\nlet globalLastLoadedModules = ''\r\nlet globalIsLoading = false\r\nlet globalInitialLoad = false\r\n\r\nexport const useAppTranslations = () => {\r\n\tconst [isLoading, setIsLoading] = useState(globalInitialLoad)\r\n\tconst location = window.location\r\n\tconst i18nInstance = getI18n()\r\n\tconst { user, loading } = useAuth()\r\n\tconst { t } = useTranslation()\r\n\r\n\tuseEffect(() => {\r\n\t\tconst erpModules = modules(t)\r\n\t\tconst currentPath = location.pathname.toLowerCase()\r\n\t\tif(user?.id && !loading) {\r\n\t\r\n\t\t\tconst matchedModule = erpModules.find(\r\n\t\t\t\t(mod) =>\r\n\t\t\t\t\tmod.link.toLowerCase() === currentPath ||\r\n\t\t\t\t\tmod.connectedRoutes?.some((route: string) => currentPath.startsWith(route.toLowerCase()))\r\n\t\t\t)\r\n\t\r\n\t\t\tlet modulesToLoad: string[] = []\r\n\t\r\n\t\t\tif (matchedModule?.translationModule) {\r\n\t\t\t\tmodulesToLoad = [...matchedModule.translationModule, 'common']\r\n\t\t\t} else if (!matchedModule && currentPath === '/dashboard') {\r\n\t\t\t\tmodulesToLoad = ['common']\r\n\t\t\t}\r\n\t\r\n\t\t\tif (modulesToLoad.length > 0) {\r\n\t\t\t\tconst moduleKey = [...modulesToLoad].sort().join(',')\r\n\t\r\n\t\t\t\t// Skip if same modules are already loaded or currently loading\r\n\t\t\t\tif (globalLastLoadedModules === moduleKey || globalIsLoading) {\r\n\t\t\t\t\tif (globalInitialLoad) {\r\n\t\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tglobalIsLoading = true\r\n\t\t\t\tglobalLastLoadedModules = moduleKey\r\n\t\t\t\tsetIsLoading(true)\r\n\t\r\n\t\t\t\tloadModuleTranslations(modulesToLoad, i18nInstance).finally(() => {\r\n\t\t\t\t\tglobalIsLoading = false\r\n\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\t// No modules to load, but still need to handle initial load state\r\n\t\t\t\tif (globalInitialLoad) {\r\n\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}, [location.pathname, t, user, loading])\r\n\r\n\treturn { isLoading }\r\n};\r\n\r\nexport default useAppTranslations;\r\n","import { useCallback, useState, useEffect } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { usePages } from './use-pages';\r\nimport { useLocation } from 'react-router-dom';\r\ninterface FilterParams {\r\n\tskip: number;\r\n\tlimit: number;\r\n\tsearch?: string;\r\n\tselect?: string;\r\n\torder?: string;\r\n\tfilters?: string;\r\n}\r\n\r\ninterface ActivePage {\r\n\tsort?: { id: string; desc: boolean };\r\n\tfilterQueryString?: string;\r\n\tsearch?: string;\r\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\r\n}\r\n\r\nconst useGenericDataFetcher = (\r\n\tcols?: ActivePage,\r\n\tpagination: { skip: number; limit: number },\r\n\tfetchAction: (filters: FilterParams) => void,\r\n\tcustomeFilter: any = '',\r\n\tcustomDeps?: any[],\r\n\tshowCreatedBy: boolean = true,\r\n\tcustomFields?: any = []\r\n) => {\r\n\tconst { activePage } = usePages();\r\n\tconst dispatch = useDispatch();\r\n\tconst location = useLocation();\r\n\r\n\tconst sourceColumns = Array.isArray(cols) ? cols?.filter((col: any) => col.visible) : activePage?.visible_columns;\r\n\r\n\tconst [trackedPath, setTrackedPath] = useState<string | null>(null);\r\n\tconst [trackedColumns, setTrackedColumns] = useState<any[]>([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (trackedPath !== location?.pathname) {\r\n\t\t\tsetTrackedPath(location?.pathname);\r\n\t\t\tsetTrackedColumns([]);\r\n\t\t}\r\n\t}, [location?.pathname, trackedPath]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (trackedPath === location?.pathname && sourceColumns?.length > 0) {\r\n\t\t\tif (JSON.stringify(trackedColumns) !== JSON.stringify(sourceColumns)) {\r\n\t\t\t\tsetTrackedColumns(sourceColumns);\r\n\t\t\t}\r\n\t\t}\r\n\t}, [location?.pathname, trackedPath, sourceColumns]);\r\n\r\n\tconst getProcessedFilters = useCallback(() => {\r\n\t\tconst { filterQueryString } = activePage || {};\r\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, \"\") || '';\r\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\r\n\t\tlet filters = customeFilter;\r\n\r\n\t\tif (extraQueryString) {\r\n\t\t\tfilters = filters ? `(${filters}${extraQueryString})` : `(${extraQueryString})`;\r\n\t\t} else if (filters) {\r\n\t\t\tfilters = `(${filters})`;\r\n\t\t}\r\n\r\n\t\treturn filters || undefined;\r\n\t\t//eslint-disable-next-line\r\n\t}, [activePage.filterQueryString, customeFilter]);\r\n\r\n\tconst fetchData = useCallback(() => {\r\n\t\tif (!fetchAction) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst { sort = null, search } = activePage;\r\n\r\n\t\tif (!trackedColumns || trackedColumns.length === 0) return;\r\n\r\n\t\tconst filters = getProcessedFilters();\r\n\t\tconst visibleColumns = trackedColumns?.filter((vc) => vc.visible)\r\n\r\n\t\tconst selectPayload = visibleColumns?.length > 0 ? `[${visibleColumns\r\n\t\t\t?.map((item) =>\r\n\t\t\t\titem.accessorKey?.includes(\".\")\r\n\t\t\t\t\t? item.accessorKey.split(\".\")[0]\r\n\t\t\t\t\t: item.accessorKey\r\n\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]` : undefined\r\n\t\tconst payload: FilterParams = {\r\n\t\t\tskip: activePage?.skip || pagination?.skip,\r\n\t\t\tlimit: pagination.limit,\r\n\t\t\tsearch,\r\n\t\t\tselect: selectPayload,\r\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\r\n\t\t\t...(filters && { filters }),\r\n\t\t};\r\n\r\n\t\tdispatch(fetchAction(payload));\r\n\t\t//eslint-disable-next-line\r\n\t}, [\r\n\t\ttrackedColumns,\r\n\t\tactivePage.sort,\r\n\t\tactivePage.filterQueryString,\r\n\t\tactivePage.search,\r\n\t\t// pagination?.skip intentionally omitted: the Pagination component already\r\n\t\t// mirrors skip into activePage.skip on pageNo change; including pagination.skip\r\n\t\t// here would make fetchData identity change twice per pagination click,\r\n\t\t// triggering the listing useEffect twice and causing duplicate API calls.\r\n\t\tactivePage?.skip,\r\n\t\tpagination?.limit,\r\n\t\tdispatch,\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t...(customDeps || []),\r\n\t]);\r\n\r\n\r\n\r\n\treturn fetchData;\r\n};\r\n\r\nexport default useGenericDataFetcher;\r\n","import { enqueueSnackbar, useSnackbar } from 'notistack';\r\n\r\ntype ApiResponse = {\r\n meta?: {\r\n requestStatus?: string;\r\n };\r\n error?: {\r\n message?: string;\r\n };\r\n payload?: any\r\n};\r\n\r\ntype Callback = () => void;\r\n\r\nlet globalEnqueueSnackbar: any = null;\r\n\r\nexport const useSnackbarRef = (): void => {\r\n const { enqueueSnackbar: snackbarHook } = useSnackbar();\r\n globalEnqueueSnackbar = snackbarHook;\r\n};\r\n\r\nexport function apiHelper(\r\n res: ApiResponse,\r\n callBack?: Callback,\r\n enqueueSnackbarOverride?: any\r\n): void {\r\n if (res?.meta?.requestStatus === \"rejected\") {\r\n const errorMessage = (() => {\r\n try {\r\n const msg = res.error?.message || res?.payload?.message;\r\n return msg ? JSON.parse(msg) : null;\r\n } catch {\r\n return { message: res.error?.message || res?.payload?.message || \"Something went wrong\" };\r\n }\r\n })();\r\n\r\n const rawError = errorMessage?.message;\r\n let message = \"Something went wrong\";\r\n\r\n if (typeof rawError === \"string\") {\r\n message = rawError.replace(\"Error:\", \"\").trim();\r\n } else if (rawError && typeof rawError === \"object\") {\r\n message = (rawError as any).message || JSON.stringify(rawError);\r\n } else if (rawError) {\r\n message = String(rawError);\r\n }\r\n\r\n const snackbar = typeof enqueueSnackbarOverride === 'function'\r\n ? enqueueSnackbarOverride\r\n : (globalEnqueueSnackbar || enqueueSnackbar);\r\n\r\n if (typeof snackbar === \"function\") {\r\n snackbar(message, { variant: \"error\" });\r\n }\r\n return;\r\n }\r\n\r\n if (callBack) {\r\n if (typeof callBack === \"function\") {\r\n try {\r\n callBack();\r\n } catch (err) {\r\n console.error(\"[apiHelper] callBack threw an error:\", err);\r\n }\r\n } else {\r\n console.warn(\"[apiHelper] Provided callBack is not a function:\", typeof callBack);\r\n }\r\n }\r\n}\r\n","import React, { createContext, useContext, ReactNode, Suspense } from 'react';\r\nimport { Provider as ReduxProvider } from 'react-redux';\r\nimport { ThemeProvider } from '@mui/material/styles';\r\nimport CssBaseline from '@mui/material/CssBaseline';\r\nimport { SnackbarProvider } from 'notistack';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { createLibraryStore, ApiClientConfig } from '../../redux';\r\nimport { createLightTheme, createDarkTheme, Color } from '../../theme';\r\nimport { AuthProvider } from '../../contexts/AuthContext';\r\nimport { LanguageProvider } from '../../contexts/languageContext';\r\nimport { PageProvider } from '../../contexts/page-context';\r\nimport { PermissionsProvider } from '../../contexts/permission-context';\r\nimport MUIThemeWrapper from '../../theme/themeWrapper';\r\nimport Loader from '../loader';\r\nimport useAppTranslations from '../../hooks/use-translations';\r\nimport '../../utils/i18n';\r\nimport { initializeApiConfig, ApiConfig } from '../../utils/api-config';\r\nimport { initializeApiBaseUrls, extendApiConfigurations } from '../../utils/api';\r\nimport { setModuleRoutes } from '../../utils/module-routes-config';\r\nimport { useSnackbarRef } from '../../hooks/apiHelper';\r\n\r\nconst SnackbarRefTracker: React.FC = () => {\r\n useSnackbarRef();\r\n return null;\r\n};\r\n\r\n\r\n// Context for library configuration\r\ninterface ERPUIContextValue {\r\n useRedux: boolean;\r\n apiClient?: ApiClientConfig;\r\n theme?: any;\r\n themeMode: 'light' | 'dark';\r\n direction: 'ltr' | 'rtl';\r\n primaryColor?: Color;\r\n}\r\n\r\nconst ERPUIContext = createContext<ERPUIContextValue>({\r\n useRedux: false,\r\n themeMode: 'light',\r\n direction: 'ltr',\r\n});\r\n\r\nexport const useERPUI = () => useContext(ERPUIContext);\r\n\r\n// Provider props interface\r\ninterface ERPUIProviderProps {\r\n children: ReactNode;\r\n\r\n // Redux configuration\r\n useRedux?: boolean;\r\n reduxStore?: any;\r\n apiClient?: ApiClientConfig;\r\n additionalReducers?: Record<string, any>;\r\n\r\n // Theme configuration\r\n theme?: any;\r\n themeMode?: 'light' | 'dark';\r\n primaryColor?: Color;\r\n direction?: 'ltr' | 'rtl';\r\n\r\n // Context providers configuration\r\n enableAuth?: boolean;\r\n enableLanguage?: boolean;\r\n enablePages?: boolean;\r\n enablePermissions?: boolean;\r\n enableRouter?: boolean;\r\n enableSnackbar?: boolean;\r\n\r\n // Other configuration\r\n enableCssBaseline?: boolean;\r\n snackbarConfig?: {\r\n maxSnack?: number;\r\n anchorOrigin?: {\r\n vertical: 'top' | 'bottom';\r\n horizontal: 'left' | 'center' | 'right';\r\n };\r\n autoHideDuration?: number;\r\n };\r\n\r\n // API configuration\r\n apiConfig?: ApiConfig;\r\n\r\n // Additional API configurations to extend the shared apiConfigurations map\r\n additionalApiConfigurations?: Record<string, any>;\r\n\r\n // Module routes override — allows MFE apps to inject their own full route set\r\n // so the header module dropdown can match routes correctly.\r\n // Example: { hrms: Object.values(PathnameHrms).map(p => Pathname.DASHBOARD_HRMS + p) }\r\n moduleRoutes?: Record<string, string[]>;\r\n\r\n // Route maps\r\n routeToColumnsMap?: Record<string, any>;\r\n routeToResourceMap?: Record<string, any>;\r\n publicRoutes?: string[]; // Optional prop to allow customization of public routes in AuthProvider\r\n}\r\n\r\nexport const ERPUIProvider: React.FC<ERPUIProviderProps> = ({\r\n children,\r\n\r\n // Redux props\r\n useRedux = false,\r\n reduxStore,\r\n apiClient,\r\n additionalReducers = {},\r\n\r\n // Theme props\r\n theme: customTheme,\r\n themeMode = 'light',\r\n primaryColor,\r\n direction = 'ltr',\r\n\r\n // Context providers configuration\r\n enableAuth = true,\r\n enableLanguage = true,\r\n enablePages = true,\r\n enablePermissions = true,\r\n enableRouter = false, // Default false since consuming app usually provides router\r\n enableSnackbar = true,\r\n\r\n // Other props\r\n enableCssBaseline = true,\r\n snackbarConfig = {\r\n maxSnack: 3,\r\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\r\n autoHideDuration: 5000,\r\n },\r\n\r\n // API configuration\r\n apiConfig: providedApiConfig,\r\n additionalApiConfigurations,\r\n moduleRoutes,\r\n routeToColumnsMap,\r\n routeToResourceMap,\r\n publicRoutes = [], // Default empty array for public routes in AuthProvider \r\n}) => {\r\n console.log(\"additionalApiConfigurations...........\", additionalApiConfigurations)\r\n\r\n // Initialize API configuration synchronously before first render\r\n // This prevents \"API configuration not initialized\" errors when components\r\n // try to use the API during initial render\r\n const isInitialized = React.useRef(false);\r\n\r\n if (providedApiConfig && !isInitialized.current) {\r\n try {\r\n initializeApiConfig(providedApiConfig);\r\n initializeApiBaseUrls();\r\n if (additionalApiConfigurations) {\r\n extendApiConfigurations(additionalApiConfigurations);\r\n }\r\n // Inject MFE-provided module routes so the header can resolve modules\r\n if (moduleRoutes) {\r\n setModuleRoutes(moduleRoutes);\r\n }\r\n isInitialized.current = true;\r\n } catch (error) {\r\n console.error('Failed to initialize API configuration:', error);\r\n }\r\n }\r\n // const { isLoading } = useAppTranslations();\r\n // if (isLoading) {\r\n // return <Loader />;\r\n // }\r\n // Create or use provided Redux store\r\n const store = React.useMemo(() => {\r\n if (!useRedux) return null;\r\n\r\n if (reduxStore) {\r\n return reduxStore;\r\n }\r\n\r\n return createLibraryStore(additionalReducers, apiClient);\r\n }, [useRedux, reduxStore, additionalReducers, apiClient]);\r\n\r\n // Create theme\r\n const theme = React.useMemo(() => {\r\n if (customTheme) {\r\n return customTheme;\r\n }\r\n\r\n const themeCreator = themeMode === 'dark' ? createDarkTheme : createLightTheme;\r\n const { theme: generatedTheme } = themeCreator(primaryColor, direction);\r\n return generatedTheme;\r\n }, [customTheme, themeMode, primaryColor, direction]);\r\n\r\n // Context value\r\n const contextValue: ERPUIContextValue = {\r\n useRedux,\r\n apiClient,\r\n theme,\r\n themeMode,\r\n direction,\r\n primaryColor,\r\n };\r\n\r\n // Build provider tree from inside out\r\n let content = (\r\n <ERPUIContext.Provider value={contextValue}>\r\n {/* <ThemeProvider theme={theme}>\r\n {enableCssBaseline && <CssBaseline />} */}\r\n {/* <Suspense fallback={<Loader />}> */}\r\n <MUIThemeWrapper theme={theme} enableCssBaseline={enableCssBaseline}>\r\n {children}\r\n </MUIThemeWrapper>\r\n {/* </Suspense> */}\r\n {/* </ThemeProvider> */}\r\n </ERPUIContext.Provider>\r\n );\r\n\r\n // Wrap with snackbar provider if enabled\r\n if (enableSnackbar) {\r\n content = (\r\n <SnackbarProvider {...snackbarConfig}>\r\n <SnackbarRefTracker />\r\n {content}\r\n </SnackbarProvider>\r\n );\r\n }\r\n\r\n // Wrap with page provider if enabled\r\n // if (enablePages) {\r\n // content = (\r\n // <PageProvider routeToColumnsMap={routeToColumnsMap} routeToResourceMap={routeToResourceMap}>\r\n // {content}\r\n // </PageProvider>\r\n // );\r\n // }\r\n\r\n // Wrap with permissions provider if enabled\r\n if (enablePermissions) {\r\n content = (\r\n <PermissionsProvider>\r\n {content}\r\n </PermissionsProvider>\r\n );\r\n }\r\n\r\n // Wrap with language provider if enabled\r\n if (enableLanguage) {\r\n content = (\r\n <LanguageProvider>\r\n {content}\r\n </LanguageProvider>\r\n );\r\n }\r\n\r\n // Wrap with auth provider if enabled\r\n if (enableAuth) {\r\n content = (\r\n <AuthProvider publicRoutes={publicRoutes}>\r\n {content}\r\n </AuthProvider>\r\n );\r\n }\r\n\r\n // Wrap with router if enabled\r\n if (enableRouter) {\r\n content = (\r\n <BrowserRouter>\r\n {content}\r\n </BrowserRouter>\r\n );\r\n }\r\n\r\n // Wrap with Redux provider if enabled\r\n if (useRedux && store) {\r\n content = (\r\n <ReduxProvider store={store}>\r\n {content}\r\n </ReduxProvider>\r\n );\r\n }\r\n\r\n return content;\r\n};\r\n\r\nexport default ERPUIProvider;"],"names":["useState","getI18n","useAuth","useTranslation","useEffect","modules","loadModuleTranslations","usePages","useDispatch","useLocation","useCallback","useSnackbar","_a","enqueueSnackbar","createContext","useContext","initializeApiConfig","initializeApiBaseUrls","extendApiConfigurations","setModuleRoutes","store","createLibraryStore","createDarkTheme","createLightTheme","jsx","MUIThemeWrapper","jsxs","SnackbarProvider","PermissionsProvider","LanguageProvider","AuthProvider","BrowserRouter","ReduxProvider"],"mappings":";;;;;;;;;;;;;;;;;;AAQA,IAAI,0BAA0B;AAC9B,IAAI,kBAAkB;AACtB,IAAI,oBAAoB;AAEjB,MAAM,qBAAqB,MAAM;AACvC,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAS,iBAAiB;AAC5D,QAAM,WAAW,OAAO;AACxB,QAAM,eAAeC,aAAAA,QAAA;AACrB,QAAM,EAAE,MAAM,QAAA,IAAYC,gBAAA;AAC1B,QAAM,EAAE,EAAA,IAAMC,4BAAA;AAEdC,QAAAA,UAAU,MAAM;AACf,UAAM,aAAaC,QAAAA,QAAQ,CAAC;AAC5B,UAAM,cAAc,SAAS,SAAS,YAAA;AACtC,SAAG,6BAAM,OAAM,CAAC,SAAS;AAExB,YAAM,gBAAgB,WAAW;AAAA,QAChC,CAAC,QAAA;;AACA,qBAAI,KAAK,YAAA,MAAkB,iBAC3B,SAAI,oBAAJ,mBAAqB,KAAK,CAAC,UAAkB,YAAY,WAAW,MAAM,aAAa;AAAA;AAAA,MAAC;AAG1F,UAAI,gBAA0B,CAAA;AAE9B,UAAI,+CAAe,mBAAmB;AACrC,wBAAgB,CAAC,GAAG,cAAc,mBAAmB,QAAQ;AAAA,MAC9D,WAAW,CAAC,iBAAiB,gBAAgB,cAAc;AAC1D,wBAAgB,CAAC,QAAQ;AAAA,MAC1B;AAEA,UAAI,cAAc,SAAS,GAAG;AAC7B,cAAM,YAAY,CAAC,GAAG,aAAa,EAAE,KAAA,EAAO,KAAK,GAAG;AAGpD,YAAI,4BAA4B,aAAa,iBAAiB;AAC7D,cAAI,mBAAmB;AACtB,yBAAa,KAAK;AAClB,gCAAoB;AAAA,UACrB;AACA;AAAA,QACD;AAEA,0BAAkB;AAClB,kCAA0B;AAC1B,qBAAa,IAAI;AAEjBC,qBAAAA,uBAAuB,eAAe,YAAY,EAAE,QAAQ,MAAM;AACjE,4BAAkB;AAClB,uBAAa,KAAK;AAClB,8BAAoB;AAAA,QACrB,CAAC;AAAA,MACF,OAAO;AAEN,YAAI,mBAAmB;AACtB,uBAAa,KAAK;AAClB,8BAAoB;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA,EACD,GAAG,CAAC,SAAS,UAAU,GAAG,MAAM,OAAO,CAAC;AAExC,SAAO,EAAE,UAAA;AACV;AClDA,MAAM,wBAAwB,CAC7B,MACA,YACA,aACA,gBAAqB,IACrB,YACA,gBAAyB,MACzB,eAAqB,CAAA,MACjB;AACJ,QAAM,EAAE,WAAA,IAAeC,2BAAA;AACvB,QAAM,WAAWC,WAAAA,YAAA;AACjB,QAAM,WAAWC,eAAAA,YAAA;AAEjB,QAAM,gBAAgB,MAAM,QAAQ,IAAI,IAAI,6BAAM,OAAO,CAAC,QAAa,IAAI,WAAW,yCAAY;AAElG,QAAM,CAAC,aAAa,cAAc,IAAIT,MAAAA,SAAwB,IAAI;AAClE,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAAA,SAAgB,CAAA,CAAE;AAE9DI,QAAAA,UAAU,MAAM;AACf,QAAI,iBAAgB,qCAAU,WAAU;AACvC,qBAAe,qCAAU,QAAQ;AACjC,wBAAkB,CAAA,CAAE;AAAA,IACrB;AAAA,EACD,GAAG,CAAC,qCAAU,UAAU,WAAW,CAAC;AAEpCA,QAAAA,UAAU,MAAM;AACf,QAAI,iBAAgB,qCAAU,cAAY,+CAAe,UAAS,GAAG;AACpE,UAAI,KAAK,UAAU,cAAc,MAAM,KAAK,UAAU,aAAa,GAAG;AACrE,0BAAkB,aAAa;AAAA,MAChC;AAAA,IACD;AAAA,EACD,GAAG,CAAC,qCAAU,UAAU,aAAa,aAAa,CAAC;AAEnD,QAAM,sBAAsBM,MAAAA,YAAY,MAAM;AAC7C,UAAM,EAAE,sBAAsB,cAAc,CAAA;AAC5C,UAAM,eAAc,uDAAmB,WAAW,SAAS,QAAO;AAClE,UAAM,mBAAmB,YAAY,SAAS,IAAI,WAAW,KAAK;AAClE,QAAI,UAAU;AAEd,QAAI,kBAAkB;AACrB,gBAAU,UAAU,IAAI,OAAO,GAAG,gBAAgB,MAAM,IAAI,gBAAgB;AAAA,IAC7E,WAAW,SAAS;AACnB,gBAAU,IAAI,OAAO;AAAA,IACtB;AAEA,WAAO,WAAW;AAAA,EAEnB,GAAG,CAAC,WAAW,mBAAmB,aAAa,CAAC;AAEhD,QAAM,YAAYA,MAAAA,YAAY,MAAM;AACnC,QAAI,CAAC,aAAa;AACjB;AAAA,IACD;AACA,UAAM,EAAE,OAAO,MAAM,OAAA,IAAW;AAEhC,QAAI,CAAC,kBAAkB,eAAe,WAAW,EAAG;AAEpD,UAAM,UAAU,oBAAA;AAChB,UAAM,iBAAiB,iDAAgB,OAAO,CAAC,OAAO,GAAG;AAEzD,UAAM,iBAAgB,iDAAgB,UAAS,IAAI,IAAI,iDACpD;AAAA,MAAI,CAAC,SAAA;;AACN,2BAAK,gBAAL,mBAAkB,SAAS,QACxB,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,IAC7B,KAAK;AAAA;AAAA,KACR,GAAG,gBAAgB,gCAAgC,EAAE,IAAG,6CAAc,UAAS,IAAI,6CAAc,KAAK,IAAI,KAAK,EAAE,MAAM;AACzH,UAAM,UAAwB;AAAA,MAC7B,OAAM,yCAAY,UAAQ,yCAAY;AAAA,MACtC,OAAO,WAAW;AAAA,MAClB;AAAA,MACA,QAAQ;AAAA,MACR,GAAI,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,IAAI,KAAK,OAAO,KAAK,CAAC,GAAA;AAAA,MACrD,GAAI,WAAW,EAAE,QAAA;AAAA,IAAQ;AAG1B,aAAS,YAAY,OAAO,CAAC;AAAA,EAE9B,GAAG;AAAA,IACF;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,IAKX,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ;AAAA;AAAA,IAEA,GAAI,cAAc,CAAA;AAAA,EAAC,CACnB;AAID,SAAO;AACR;ACtGA,IAAI,wBAA6B;AAE1B,MAAM,iBAAiB,MAAY;AACxC,QAAM,EAAE,iBAAiB,aAAA,IAAiBC,sBAAA;AAC1C,0BAAwB;AAC1B;AAEO,SAAS,UACd,KACA,UACA,yBACM;;AACN,QAAI,gCAAK,SAAL,mBAAW,mBAAkB,YAAY;AAC3C,UAAM,gBAAgB,MAAM;;AAC1B,UAAI;AACF,cAAM,QAAMC,MAAA,IAAI,UAAJ,gBAAAA,IAAW,cAAW,gCAAK,YAAL,mBAAc;AAChD,eAAO,MAAM,KAAK,MAAM,GAAG,IAAI;AAAA,MACjC,QAAQ;AACN,eAAO,EAAE,WAAS,SAAI,UAAJ,mBAAW,cAAW,gCAAK,YAAL,mBAAc,YAAW,uBAAA;AAAA,MACnE;AAAA,IACF,GAAA;AAEA,UAAM,WAAW,6CAAc;AAC/B,QAAI,UAAU;AAEd,QAAI,OAAO,aAAa,UAAU;AAChC,gBAAU,SAAS,QAAQ,UAAU,EAAE,EAAE,KAAA;AAAA,IAC3C,WAAW,YAAY,OAAO,aAAa,UAAU;AACnD,gBAAW,SAAiB,WAAW,KAAK,UAAU,QAAQ;AAAA,IAChE,WAAW,UAAU;AACnB,gBAAU,OAAO,QAAQ;AAAA,IAC3B;AAEA,UAAM,WAAW,OAAO,4BAA4B,aAChD,0BACC,yBAAyBC,UAAAA;AAE9B,QAAI,OAAO,aAAa,YAAY;AAClC,eAAS,SAAS,EAAE,SAAS,QAAA,CAAS;AAAA,IACxC;AACA;AAAA,EACF;AAEA,MAAI,UAAU;AACZ,QAAI,OAAO,aAAa,YAAY;AAClC,UAAI;AACF,iBAAA;AAAA,MACF,SAAS,KAAK;AACZ,gBAAQ,MAAM,wCAAwC,GAAG;AAAA,MAC3D;AAAA,IACF,OAAO;AACL,cAAQ,KAAK,oDAAoD,OAAO,QAAQ;AAAA,IAClF;AAAA,EACF;AACF;AC/CA,MAAM,qBAA+B,MAAM;AACzC,iBAAA;AACA,SAAO;AACT;AAaA,MAAM,eAAeC,MAAAA,cAAiC;AAAA,EACpD,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AACb,CAAC;AAEM,MAAM,WAAW,MAAMC,MAAAA,WAAW,YAAY;AAsD9C,MAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA;AAAA,EAGA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,qBAAqB,CAAA;AAAA;AAAA,EAGrB,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AAAA,EACA,YAAY;AAAA;AAAA,EAGZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,eAAe;AAAA;AAAA,EACf,iBAAiB;AAAA;AAAA,EAGjB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,cAAc,EAAE,UAAU,OAAO,YAAY,QAAA;AAAA,IAC7C,kBAAkB;AAAA,EAAA;AAAA;AAAA,EAIpB,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe,CAAA;AAAA;AACjB,MAAM;AACJ,UAAQ,IAAI,0CAA0C,2BAA2B;AAKjF,QAAM,gBAAgB,MAAM,OAAO,KAAK;AAExC,MAAI,qBAAqB,CAAC,cAAc,SAAS;AAC/C,QAAI;AACFC,gBAAAA,oBAAoB,iBAAiB;AACrCC,mCAAA;AACA,UAAI,6BAA6B;AAC/BC,eAAAA,wBAAwB,2BAA2B;AAAA,MACrD;AAEA,UAAI,cAAc;AAChBC,2BAAAA,gBAAgB,YAAY;AAAA,MAC9B;AACA,oBAAc,UAAU;AAAA,IAC1B,SAAS,OAAO;AACd,cAAQ,MAAM,2CAA2C,KAAK;AAAA,IAChE;AAAA,EACF;AAMA,QAAMC,UAAQ,MAAM,QAAQ,MAAM;AAChC,QAAI,CAAC,SAAU,QAAO;AAEtB,QAAI,YAAY;AACd,aAAO;AAAA,IACT;AAEA,WAAOC,MAAAA,mBAAmB,oBAAoB,SAAS;AAAA,EACzD,GAAG,CAAC,UAAU,YAAY,oBAAoB,SAAS,CAAC;AAGxD,QAAM,QAAQ,MAAM,QAAQ,MAAM;AAChC,QAAI,aAAa;AACf,aAAO;AAAA,IACT;AAEA,UAAM,eAAe,cAAc,SAASC,UAAAA,kBAAkBC,UAAAA;AAC9D,UAAM,EAAE,OAAO,eAAA,IAAmB,aAAa,cAAc,SAAS;AACtE,WAAO;AAAA,EACT,GAAG,CAAC,aAAa,WAAW,cAAc,SAAS,CAAC;AAGpD,QAAM,eAAkC;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIF,MAAI,UACFC,2BAAAA,kBAAAA,IAAC,aAAa,UAAb,EAAsB,OAAO,cAI5B,UAAAA,2BAAAA,kBAAAA,IAACC,UAAAA,iBAAA,EAAgB,OAAc,mBAC5B,SAAA,CACH,GAGF;AAIF,MAAI,gBAAgB;AAClB,cACEC,2BAAAA,kBAAAA,KAACC,UAAAA,kBAAA,EAAkB,GAAG,gBACpB,UAAA;AAAA,MAAAH,2BAAAA,kBAAAA,IAAC,oBAAA,EAAmB;AAAA,MACnB;AAAA,IAAA,GACH;AAAA,EAEJ;AAYA,MAAI,mBAAmB;AACrB,cACEA,2BAAAA,kBAAAA,IAACI,YAAAA,uBACE,UAAA,QAAA,CACH;AAAA,EAEJ;AAGA,MAAI,gBAAgB;AAClB,cACEJ,2BAAAA,kBAAAA,IAACK,gBAAAA,oBACE,UAAA,QAAA,CACH;AAAA,EAEJ;AAGA,MAAI,YAAY;AACd,cACEL,2BAAAA,kBAAAA,IAACM,QAAAA,cAAA,EAAa,cACX,UAAA,SACH;AAAA,EAEJ;AAGA,MAAI,cAAc;AAChB,cACEN,2BAAAA,kBAAAA,IAACO,eAAAA,iBACE,UAAA,QAAA,CACH;AAAA,EAEJ;AAGA,MAAI,YAAYX,SAAO;AACrB,cACEI,2BAAAA,kBAAAA,IAACQ,WAAAA,UAAA,EAAA,OAAcZ,SACZ,UAAA,SACH;AAAA,EAEJ;AAEA,SAAO;AACT;;;;;;;"}
1
+ {"version":3,"file":"ERPUIProvider-D-3gvvdJ.js","sources":["../../src/hooks/use-translations.ts","../../src/hooks/useDataFetcher.tsx","../../src/hooks/apiHelper.ts","../../src/components/providers/ERPUIProvider.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\n// import { useLocation } from 'react-router-dom'\r\nimport { getI18n, useTranslation } from 'react-i18next'\r\nimport { loadModuleTranslations } from '../utils/translations'\r\nimport modules from '../constants/modules'\r\nimport { useAuth } from './useAuth'\r\n\r\n// Global state to prevent duplicate calls across all hook instances\r\nlet globalLastLoadedModules = ''\r\nlet globalIsLoading = false\r\nlet globalInitialLoad = false\r\n\r\nexport const useAppTranslations = () => {\r\n\tconst [isLoading, setIsLoading] = useState(globalInitialLoad)\r\n\tconst location = window.location\r\n\tconst i18nInstance = getI18n()\r\n\tconst { user, loading } = useAuth()\r\n\tconst { t } = useTranslation()\r\n\r\n\tuseEffect(() => {\r\n\t\tconst erpModules = modules(t)\r\n\t\tconst currentPath = location.pathname.toLowerCase()\r\n\t\tif(user?.id && !loading) {\r\n\t\r\n\t\t\tconst matchedModule = erpModules.find(\r\n\t\t\t\t(mod) =>\r\n\t\t\t\t\tmod.link.toLowerCase() === currentPath ||\r\n\t\t\t\t\tmod.connectedRoutes?.some((route: string) => currentPath.startsWith(route.toLowerCase()))\r\n\t\t\t)\r\n\t\r\n\t\t\tlet modulesToLoad: string[] = []\r\n\t\r\n\t\t\tif (matchedModule?.translationModule) {\r\n\t\t\t\tmodulesToLoad = [...matchedModule.translationModule, 'common']\r\n\t\t\t} else if (!matchedModule && currentPath === '/dashboard') {\r\n\t\t\t\tmodulesToLoad = ['common']\r\n\t\t\t}\r\n\t\r\n\t\t\tif (modulesToLoad.length > 0) {\r\n\t\t\t\tconst moduleKey = [...modulesToLoad].sort().join(',')\r\n\t\r\n\t\t\t\t// Skip if same modules are already loaded or currently loading\r\n\t\t\t\tif (globalLastLoadedModules === moduleKey || globalIsLoading) {\r\n\t\t\t\t\tif (globalInitialLoad) {\r\n\t\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tglobalIsLoading = true\r\n\t\t\t\tglobalLastLoadedModules = moduleKey\r\n\t\t\t\tsetIsLoading(true)\r\n\t\r\n\t\t\t\tloadModuleTranslations(modulesToLoad, i18nInstance).finally(() => {\r\n\t\t\t\t\tglobalIsLoading = false\r\n\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\t// No modules to load, but still need to handle initial load state\r\n\t\t\t\tif (globalInitialLoad) {\r\n\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}, [location.pathname, t, user, loading])\r\n\r\n\treturn { isLoading }\r\n};\r\n\r\nexport default useAppTranslations;\r\n","import { useCallback, useState, useEffect } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { usePages } from './use-pages';\r\nimport { useLocation } from 'react-router-dom';\r\ninterface FilterParams {\r\n\tskip: number;\r\n\tlimit: number;\r\n\tsearch?: string;\r\n\tselect?: string;\r\n\torder?: string;\r\n\tfilters?: string;\r\n}\r\n\r\ninterface ActivePage {\r\n\tsort?: { id: string; desc: boolean };\r\n\tfilterQueryString?: string;\r\n\tsearch?: string;\r\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\r\n}\r\n\r\nconst useGenericDataFetcher = (\r\n\tcols?: ActivePage,\r\n\tpagination: { skip: number; limit: number },\r\n\tfetchAction: (filters: FilterParams) => void,\r\n\tcustomeFilter: any = '',\r\n\tcustomDeps?: any[],\r\n\tshowCreatedBy: boolean = true,\r\n\tcustomFields?: any = []\r\n) => {\r\n\tconst { activePage } = usePages();\r\n\tconst dispatch = useDispatch();\r\n\tconst location = useLocation();\r\n\r\n\tconst sourceColumns = Array.isArray(cols) ? cols?.filter((col: any) => col.visible) : activePage?.visible_columns;\r\n\r\n\tconst [trackedPath, setTrackedPath] = useState<string | null>(null);\r\n\tconst [trackedColumns, setTrackedColumns] = useState<any[]>([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (trackedPath !== location?.pathname) {\r\n\t\t\tsetTrackedPath(location?.pathname);\r\n\t\t\tsetTrackedColumns([]);\r\n\t\t}\r\n\t}, [location?.pathname, trackedPath]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (trackedPath === location?.pathname && sourceColumns?.length > 0) {\r\n\t\t\tif (JSON.stringify(trackedColumns) !== JSON.stringify(sourceColumns)) {\r\n\t\t\t\tsetTrackedColumns(sourceColumns);\r\n\t\t\t}\r\n\t\t}\r\n\t}, [location?.pathname, trackedPath, sourceColumns]);\r\n\r\n\tconst getProcessedFilters = useCallback(() => {\r\n\t\tconst { filterQueryString } = activePage || {};\r\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, \"\") || '';\r\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\r\n\t\tlet filters = customeFilter;\r\n\r\n\t\tif (extraQueryString) {\r\n\t\t\tfilters = filters ? `(${filters}${extraQueryString})` : `(${extraQueryString})`;\r\n\t\t} else if (filters) {\r\n\t\t\tfilters = `(${filters})`;\r\n\t\t}\r\n\r\n\t\treturn filters || undefined;\r\n\t\t//eslint-disable-next-line\r\n\t}, [activePage.filterQueryString, customeFilter]);\r\n\r\n\tconst fetchData = useCallback(() => {\r\n\t\tif (!fetchAction) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst { sort = null, search } = activePage;\r\n\r\n\t\tif (!trackedColumns || trackedColumns.length === 0) return;\r\n\r\n\t\tconst filters = getProcessedFilters();\r\n\t\tconst visibleColumns = trackedColumns?.filter((vc) => vc.visible)\r\n\r\n\t\tconst selectPayload = visibleColumns?.length > 0 ? `[${visibleColumns\r\n\t\t\t?.map((item) =>\r\n\t\t\t\titem.accessorKey?.includes(\".\")\r\n\t\t\t\t\t? item.accessorKey.split(\".\")[0]\r\n\t\t\t\t\t: item.accessorKey\r\n\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]` : undefined\r\n\t\tconst payload: FilterParams = {\r\n\t\t\tskip: activePage?.skip || pagination?.skip,\r\n\t\t\tlimit: pagination.limit,\r\n\t\t\tsearch,\r\n\t\t\tselect: selectPayload,\r\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\r\n\t\t\t...(filters && { filters }),\r\n\t\t};\r\n\r\n\t\tdispatch(fetchAction(payload));\r\n\t\t//eslint-disable-next-line\r\n\t}, [\r\n\t\ttrackedColumns,\r\n\t\tactivePage.sort,\r\n\t\tactivePage.filterQueryString,\r\n\t\tactivePage.search,\r\n\t\t// pagination?.skip intentionally omitted: the Pagination component already\r\n\t\t// mirrors skip into activePage.skip on pageNo change; including pagination.skip\r\n\t\t// here would make fetchData identity change twice per pagination click,\r\n\t\t// triggering the listing useEffect twice and causing duplicate API calls.\r\n\t\tactivePage?.skip,\r\n\t\tpagination?.limit,\r\n\t\tdispatch,\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t...(customDeps || []),\r\n\t]);\r\n\r\n\r\n\r\n\treturn fetchData;\r\n};\r\n\r\nexport default useGenericDataFetcher;\r\n","import { enqueueSnackbar, useSnackbar } from 'notistack';\r\n\r\ntype ApiResponse = {\r\n meta?: {\r\n requestStatus?: string;\r\n };\r\n error?: {\r\n message?: string;\r\n };\r\n payload?: any\r\n};\r\n\r\ntype Callback = () => void;\r\n\r\nlet globalEnqueueSnackbar: any = null;\r\n\r\nexport const useSnackbarRef = (): void => {\r\n const { enqueueSnackbar: snackbarHook } = useSnackbar();\r\n globalEnqueueSnackbar = snackbarHook;\r\n};\r\n\r\nexport function apiHelper(\r\n res: ApiResponse,\r\n callBack?: Callback,\r\n enqueueSnackbarOverride?: any\r\n): void {\r\n if (res?.meta?.requestStatus === \"rejected\") {\r\n const errorMessage = (() => {\r\n try {\r\n const msg = res.error?.message || res?.payload?.message;\r\n return msg ? JSON.parse(msg) : null;\r\n } catch {\r\n return { message: res.error?.message || res?.payload?.message || \"Something went wrong\" };\r\n }\r\n })();\r\n\r\n const rawError = errorMessage?.message;\r\n let message = \"Something went wrong\";\r\n\r\n if (typeof rawError === \"string\") {\r\n message = rawError.replace(\"Error:\", \"\").trim();\r\n } else if (rawError && typeof rawError === \"object\") {\r\n message = (rawError as any).message || JSON.stringify(rawError);\r\n } else if (rawError) {\r\n message = String(rawError);\r\n }\r\n\r\n const snackbar = typeof enqueueSnackbarOverride === 'function'\r\n ? enqueueSnackbarOverride\r\n : (globalEnqueueSnackbar || enqueueSnackbar);\r\n\r\n if (typeof snackbar === \"function\") {\r\n snackbar(message, { variant: \"error\" });\r\n }\r\n return;\r\n }\r\n\r\n if (callBack) {\r\n if (typeof callBack === \"function\") {\r\n try {\r\n callBack();\r\n } catch (err) {\r\n console.error(\"[apiHelper] callBack threw an error:\", err);\r\n }\r\n } else {\r\n console.warn(\"[apiHelper] Provided callBack is not a function:\", typeof callBack);\r\n }\r\n }\r\n}\r\n","import React, { createContext, useContext, ReactNode, Suspense } from 'react';\r\nimport { Provider as ReduxProvider } from 'react-redux';\r\nimport { ThemeProvider } from '@mui/material/styles';\r\nimport CssBaseline from '@mui/material/CssBaseline';\r\nimport { SnackbarProvider } from 'notistack';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { createLibraryStore, ApiClientConfig } from '../../redux';\r\nimport { createLightTheme, createDarkTheme, Color } from '../../theme';\r\nimport { AuthProvider } from '../../contexts/AuthContext';\r\nimport { LanguageProvider } from '../../contexts/languageContext';\r\nimport { PageProvider } from '../../contexts/page-context';\r\nimport { PermissionsProvider } from '../../contexts/permission-context';\r\nimport MUIThemeWrapper from '../../theme/themeWrapper';\r\nimport Loader from '../loader';\r\nimport useAppTranslations from '../../hooks/use-translations';\r\nimport '../../utils/i18n';\r\nimport { initializeApiConfig, ApiConfig } from '../../utils/api-config';\r\nimport { initializeApiBaseUrls, extendApiConfigurations } from '../../utils/api';\r\nimport { setModuleRoutes } from '../../utils/module-routes-config';\r\nimport { useSnackbarRef } from '../../hooks/apiHelper';\r\n\r\nconst SnackbarRefTracker: React.FC = () => {\r\n useSnackbarRef();\r\n return null;\r\n};\r\n\r\n\r\n// Context for library configuration\r\ninterface ERPUIContextValue {\r\n useRedux: boolean;\r\n apiClient?: ApiClientConfig;\r\n theme?: any;\r\n themeMode: 'light' | 'dark';\r\n direction: 'ltr' | 'rtl';\r\n primaryColor?: Color;\r\n}\r\n\r\nconst ERPUIContext = createContext<ERPUIContextValue>({\r\n useRedux: false,\r\n themeMode: 'light',\r\n direction: 'ltr',\r\n});\r\n\r\nexport const useERPUI = () => useContext(ERPUIContext);\r\n\r\n// Provider props interface\r\ninterface ERPUIProviderProps {\r\n children: ReactNode;\r\n\r\n // Redux configuration\r\n useRedux?: boolean;\r\n reduxStore?: any;\r\n apiClient?: ApiClientConfig;\r\n additionalReducers?: Record<string, any>;\r\n\r\n // Theme configuration\r\n theme?: any;\r\n themeMode?: 'light' | 'dark';\r\n primaryColor?: Color;\r\n direction?: 'ltr' | 'rtl';\r\n\r\n // Context providers configuration\r\n enableAuth?: boolean;\r\n enableLanguage?: boolean;\r\n enablePages?: boolean;\r\n enablePermissions?: boolean;\r\n enableRouter?: boolean;\r\n enableSnackbar?: boolean;\r\n\r\n // Other configuration\r\n enableCssBaseline?: boolean;\r\n snackbarConfig?: {\r\n maxSnack?: number;\r\n anchorOrigin?: {\r\n vertical: 'top' | 'bottom';\r\n horizontal: 'left' | 'center' | 'right';\r\n };\r\n autoHideDuration?: number;\r\n };\r\n\r\n // API configuration\r\n apiConfig?: ApiConfig;\r\n\r\n // Additional API configurations to extend the shared apiConfigurations map\r\n additionalApiConfigurations?: Record<string, any>;\r\n\r\n // Module routes override — allows MFE apps to inject their own full route set\r\n // so the header module dropdown can match routes correctly.\r\n // Example: { hrms: Object.values(PathnameHrms).map(p => Pathname.DASHBOARD_HRMS + p) }\r\n moduleRoutes?: Record<string, string[]>;\r\n\r\n // Route maps\r\n routeToColumnsMap?: Record<string, any>;\r\n routeToResourceMap?: Record<string, any>;\r\n publicRoutes?: string[]; // Optional prop to allow customization of public routes in AuthProvider\r\n}\r\n\r\nexport const ERPUIProvider: React.FC<ERPUIProviderProps> = ({\r\n children,\r\n\r\n // Redux props\r\n useRedux = false,\r\n reduxStore,\r\n apiClient,\r\n additionalReducers = {},\r\n\r\n // Theme props\r\n theme: customTheme,\r\n themeMode = 'light',\r\n primaryColor,\r\n direction = 'ltr',\r\n\r\n // Context providers configuration\r\n enableAuth = true,\r\n enableLanguage = true,\r\n enablePages = true,\r\n enablePermissions = true,\r\n enableRouter = false, // Default false since consuming app usually provides router\r\n enableSnackbar = true,\r\n\r\n // Other props\r\n enableCssBaseline = true,\r\n snackbarConfig = {\r\n maxSnack: 3,\r\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\r\n autoHideDuration: 5000,\r\n },\r\n\r\n // API configuration\r\n apiConfig: providedApiConfig,\r\n additionalApiConfigurations,\r\n moduleRoutes,\r\n routeToColumnsMap,\r\n routeToResourceMap,\r\n publicRoutes = [], // Default empty array for public routes in AuthProvider \r\n}) => {\r\n console.log(\"additionalApiConfigurations...........\", additionalApiConfigurations)\r\n\r\n // Initialize API configuration synchronously before first render\r\n // This prevents \"API configuration not initialized\" errors when components\r\n // try to use the API during initial render\r\n const isInitialized = React.useRef(false);\r\n\r\n if (providedApiConfig && !isInitialized.current) {\r\n try {\r\n initializeApiConfig(providedApiConfig);\r\n initializeApiBaseUrls();\r\n if (additionalApiConfigurations) {\r\n extendApiConfigurations(additionalApiConfigurations);\r\n }\r\n // Inject MFE-provided module routes so the header can resolve modules\r\n if (moduleRoutes) {\r\n setModuleRoutes(moduleRoutes);\r\n }\r\n isInitialized.current = true;\r\n } catch (error) {\r\n console.error('Failed to initialize API configuration:', error);\r\n }\r\n }\r\n // const { isLoading } = useAppTranslations();\r\n // if (isLoading) {\r\n // return <Loader />;\r\n // }\r\n // Create or use provided Redux store\r\n const store = React.useMemo(() => {\r\n if (!useRedux) return null;\r\n\r\n if (reduxStore) {\r\n return reduxStore;\r\n }\r\n\r\n return createLibraryStore(additionalReducers, apiClient);\r\n }, [useRedux, reduxStore, additionalReducers, apiClient]);\r\n\r\n // Create theme\r\n const theme = React.useMemo(() => {\r\n if (customTheme) {\r\n return customTheme;\r\n }\r\n\r\n const themeCreator = themeMode === 'dark' ? createDarkTheme : createLightTheme;\r\n const { theme: generatedTheme } = themeCreator(primaryColor, direction);\r\n return generatedTheme;\r\n }, [customTheme, themeMode, primaryColor, direction]);\r\n\r\n // Context value\r\n const contextValue: ERPUIContextValue = {\r\n useRedux,\r\n apiClient,\r\n theme,\r\n themeMode,\r\n direction,\r\n primaryColor,\r\n };\r\n\r\n // Build provider tree from inside out\r\n let content = (\r\n <ERPUIContext.Provider value={contextValue}>\r\n {/* <ThemeProvider theme={theme}>\r\n {enableCssBaseline && <CssBaseline />} */}\r\n {/* <Suspense fallback={<Loader />}> */}\r\n <MUIThemeWrapper theme={theme} enableCssBaseline={enableCssBaseline}>\r\n {children}\r\n </MUIThemeWrapper>\r\n {/* </Suspense> */}\r\n {/* </ThemeProvider> */}\r\n </ERPUIContext.Provider>\r\n );\r\n\r\n // Wrap with snackbar provider if enabled\r\n if (enableSnackbar) {\r\n content = (\r\n <SnackbarProvider {...snackbarConfig}>\r\n <SnackbarRefTracker />\r\n {content}\r\n </SnackbarProvider>\r\n );\r\n }\r\n\r\n // Wrap with page provider if enabled\r\n // if (enablePages) {\r\n // content = (\r\n // <PageProvider routeToColumnsMap={routeToColumnsMap} routeToResourceMap={routeToResourceMap}>\r\n // {content}\r\n // </PageProvider>\r\n // );\r\n // }\r\n\r\n // Wrap with permissions provider if enabled\r\n if (enablePermissions) {\r\n content = (\r\n <PermissionsProvider>\r\n {content}\r\n </PermissionsProvider>\r\n );\r\n }\r\n\r\n // Wrap with language provider if enabled\r\n if (enableLanguage) {\r\n content = (\r\n <LanguageProvider>\r\n {content}\r\n </LanguageProvider>\r\n );\r\n }\r\n\r\n // Wrap with auth provider if enabled\r\n if (enableAuth) {\r\n content = (\r\n <AuthProvider publicRoutes={publicRoutes}>\r\n {content}\r\n </AuthProvider>\r\n );\r\n }\r\n\r\n // Wrap with router if enabled\r\n if (enableRouter) {\r\n content = (\r\n <BrowserRouter>\r\n {content}\r\n </BrowserRouter>\r\n );\r\n }\r\n\r\n // Wrap with Redux provider if enabled\r\n if (useRedux && store) {\r\n content = (\r\n <ReduxProvider store={store}>\r\n {content}\r\n </ReduxProvider>\r\n );\r\n }\r\n\r\n return content;\r\n};\r\n\r\nexport default ERPUIProvider;"],"names":["useState","getI18n","useAuth","useTranslation","useEffect","modules","loadModuleTranslations","usePages","useDispatch","useLocation","useCallback","useSnackbar","_a","enqueueSnackbar","createContext","useContext","initializeApiConfig","initializeApiBaseUrls","extendApiConfigurations","setModuleRoutes","store","createLibraryStore","createDarkTheme","createLightTheme","jsx","MUIThemeWrapper","jsxs","SnackbarProvider","PermissionsProvider","LanguageProvider","AuthProvider","BrowserRouter","ReduxProvider"],"mappings":"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"}
@@ -1,19 +1,19 @@
1
1
  import React__default, { useState, useEffect, useCallback, useContext, createContext } from "react";
2
2
  import { getI18n, useTranslation } from "react-i18next";
3
- import { l as loadModuleTranslations } from "./translations-DVs6ljbG.esm.js";
3
+ import { l as loadModuleTranslations } from "./translations-CK5EHeud.esm.js";
4
4
  import { m as modules } from "./modules-Dw3Ho8Qj.esm.js";
5
- import { u as useAuth, a as AuthProvider } from "./useAuth-Cc85zx55.esm.js";
5
+ import { u as useAuth, a as AuthProvider } from "./useAuth-DGqryENW.esm.js";
6
6
  import { useDispatch, Provider } from "react-redux";
7
- import { f as usePages } from "./useAccountSetting-B9iSkd0R.esm.js";
7
+ import { f as usePages } from "./useAccountSetting-CmJnSLPN.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 { useSnackbar, enqueueSnackbar, SnackbarProvider } from "notistack";
11
- import { c as createLibraryStore } from "./store-DY2m64HU.esm.js";
11
+ import { c as createLibraryStore } from "./store-BkBUeiow.esm.js";
12
12
  import { M as MUIThemeWrapper, c as createDarkTheme, a as createLightTheme } from "./theme-impl-BPCaapgh.esm.js";
13
- import { a as LanguageProvider } from "./languageContext-DvTW1NGX.esm.js";
14
- import { c as PermissionsProvider } from "./page-context-_PTfsRfz.esm.js";
13
+ import { a as LanguageProvider } from "./languageContext-D3Y6DfeZ.esm.js";
14
+ import { c as PermissionsProvider } from "./page-context-DyIp7imO.esm.js";
15
15
  import { i as initializeApiConfig } from "./api-config-GOys-syK.esm.js";
16
- import { a$ as initializeApiBaseUrls, z as extendApiConfigurations } from "./common-KSaUU42L.esm.js";
16
+ import { a$ as initializeApiBaseUrls, z as extendApiConfigurations } from "./common-DM8k-KPd.esm.js";
17
17
  import { s as setModuleRoutes } from "./module-routes-config-CCkZEtfg.esm.js";
18
18
  let globalLastLoadedModules = "";
19
19
  let globalIsLoading = false;
@@ -301,4 +301,4 @@ export {
301
301
  useSnackbarRef as d,
302
302
  useERPUI as u
303
303
  };
304
- //# sourceMappingURL=ERPUIProvider-Cl_IkhGu.esm.js.map
304
+ //# sourceMappingURL=ERPUIProvider-Dt58Xhz0.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ERPUIProvider-Cl_IkhGu.esm.js","sources":["../../src/hooks/use-translations.ts","../../src/hooks/useDataFetcher.tsx","../../src/hooks/apiHelper.ts","../../src/components/providers/ERPUIProvider.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\n// import { useLocation } from 'react-router-dom'\r\nimport { getI18n, useTranslation } from 'react-i18next'\r\nimport { loadModuleTranslations } from '../utils/translations'\r\nimport modules from '../constants/modules'\r\nimport { useAuth } from './useAuth'\r\n\r\n// Global state to prevent duplicate calls across all hook instances\r\nlet globalLastLoadedModules = ''\r\nlet globalIsLoading = false\r\nlet globalInitialLoad = false\r\n\r\nexport const useAppTranslations = () => {\r\n\tconst [isLoading, setIsLoading] = useState(globalInitialLoad)\r\n\tconst location = window.location\r\n\tconst i18nInstance = getI18n()\r\n\tconst { user, loading } = useAuth()\r\n\tconst { t } = useTranslation()\r\n\r\n\tuseEffect(() => {\r\n\t\tconst erpModules = modules(t)\r\n\t\tconst currentPath = location.pathname.toLowerCase()\r\n\t\tif(user?.id && !loading) {\r\n\t\r\n\t\t\tconst matchedModule = erpModules.find(\r\n\t\t\t\t(mod) =>\r\n\t\t\t\t\tmod.link.toLowerCase() === currentPath ||\r\n\t\t\t\t\tmod.connectedRoutes?.some((route: string) => currentPath.startsWith(route.toLowerCase()))\r\n\t\t\t)\r\n\t\r\n\t\t\tlet modulesToLoad: string[] = []\r\n\t\r\n\t\t\tif (matchedModule?.translationModule) {\r\n\t\t\t\tmodulesToLoad = [...matchedModule.translationModule, 'common']\r\n\t\t\t} else if (!matchedModule && currentPath === '/dashboard') {\r\n\t\t\t\tmodulesToLoad = ['common']\r\n\t\t\t}\r\n\t\r\n\t\t\tif (modulesToLoad.length > 0) {\r\n\t\t\t\tconst moduleKey = [...modulesToLoad].sort().join(',')\r\n\t\r\n\t\t\t\t// Skip if same modules are already loaded or currently loading\r\n\t\t\t\tif (globalLastLoadedModules === moduleKey || globalIsLoading) {\r\n\t\t\t\t\tif (globalInitialLoad) {\r\n\t\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tglobalIsLoading = true\r\n\t\t\t\tglobalLastLoadedModules = moduleKey\r\n\t\t\t\tsetIsLoading(true)\r\n\t\r\n\t\t\t\tloadModuleTranslations(modulesToLoad, i18nInstance).finally(() => {\r\n\t\t\t\t\tglobalIsLoading = false\r\n\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\t// No modules to load, but still need to handle initial load state\r\n\t\t\t\tif (globalInitialLoad) {\r\n\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}, [location.pathname, t, user, loading])\r\n\r\n\treturn { isLoading }\r\n};\r\n\r\nexport default useAppTranslations;\r\n","import { useCallback, useState, useEffect } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { usePages } from './use-pages';\r\nimport { useLocation } from 'react-router-dom';\r\ninterface FilterParams {\r\n\tskip: number;\r\n\tlimit: number;\r\n\tsearch?: string;\r\n\tselect?: string;\r\n\torder?: string;\r\n\tfilters?: string;\r\n}\r\n\r\ninterface ActivePage {\r\n\tsort?: { id: string; desc: boolean };\r\n\tfilterQueryString?: string;\r\n\tsearch?: string;\r\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\r\n}\r\n\r\nconst useGenericDataFetcher = (\r\n\tcols?: ActivePage,\r\n\tpagination: { skip: number; limit: number },\r\n\tfetchAction: (filters: FilterParams) => void,\r\n\tcustomeFilter: any = '',\r\n\tcustomDeps?: any[],\r\n\tshowCreatedBy: boolean = true,\r\n\tcustomFields?: any = []\r\n) => {\r\n\tconst { activePage } = usePages();\r\n\tconst dispatch = useDispatch();\r\n\tconst location = useLocation();\r\n\r\n\tconst sourceColumns = Array.isArray(cols) ? cols?.filter((col: any) => col.visible) : activePage?.visible_columns;\r\n\r\n\tconst [trackedPath, setTrackedPath] = useState<string | null>(null);\r\n\tconst [trackedColumns, setTrackedColumns] = useState<any[]>([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (trackedPath !== location?.pathname) {\r\n\t\t\tsetTrackedPath(location?.pathname);\r\n\t\t\tsetTrackedColumns([]);\r\n\t\t}\r\n\t}, [location?.pathname, trackedPath]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (trackedPath === location?.pathname && sourceColumns?.length > 0) {\r\n\t\t\tif (JSON.stringify(trackedColumns) !== JSON.stringify(sourceColumns)) {\r\n\t\t\t\tsetTrackedColumns(sourceColumns);\r\n\t\t\t}\r\n\t\t}\r\n\t}, [location?.pathname, trackedPath, sourceColumns]);\r\n\r\n\tconst getProcessedFilters = useCallback(() => {\r\n\t\tconst { filterQueryString } = activePage || {};\r\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, \"\") || '';\r\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\r\n\t\tlet filters = customeFilter;\r\n\r\n\t\tif (extraQueryString) {\r\n\t\t\tfilters = filters ? `(${filters}${extraQueryString})` : `(${extraQueryString})`;\r\n\t\t} else if (filters) {\r\n\t\t\tfilters = `(${filters})`;\r\n\t\t}\r\n\r\n\t\treturn filters || undefined;\r\n\t\t//eslint-disable-next-line\r\n\t}, [activePage.filterQueryString, customeFilter]);\r\n\r\n\tconst fetchData = useCallback(() => {\r\n\t\tif (!fetchAction) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst { sort = null, search } = activePage;\r\n\r\n\t\tif (!trackedColumns || trackedColumns.length === 0) return;\r\n\r\n\t\tconst filters = getProcessedFilters();\r\n\t\tconst visibleColumns = trackedColumns?.filter((vc) => vc.visible)\r\n\r\n\t\tconst selectPayload = visibleColumns?.length > 0 ? `[${visibleColumns\r\n\t\t\t?.map((item) =>\r\n\t\t\t\titem.accessorKey?.includes(\".\")\r\n\t\t\t\t\t? item.accessorKey.split(\".\")[0]\r\n\t\t\t\t\t: item.accessorKey\r\n\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]` : undefined\r\n\t\tconst payload: FilterParams = {\r\n\t\t\tskip: activePage?.skip || pagination?.skip,\r\n\t\t\tlimit: pagination.limit,\r\n\t\t\tsearch,\r\n\t\t\tselect: selectPayload,\r\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\r\n\t\t\t...(filters && { filters }),\r\n\t\t};\r\n\r\n\t\tdispatch(fetchAction(payload));\r\n\t\t//eslint-disable-next-line\r\n\t}, [\r\n\t\ttrackedColumns,\r\n\t\tactivePage.sort,\r\n\t\tactivePage.filterQueryString,\r\n\t\tactivePage.search,\r\n\t\t// pagination?.skip intentionally omitted: the Pagination component already\r\n\t\t// mirrors skip into activePage.skip on pageNo change; including pagination.skip\r\n\t\t// here would make fetchData identity change twice per pagination click,\r\n\t\t// triggering the listing useEffect twice and causing duplicate API calls.\r\n\t\tactivePage?.skip,\r\n\t\tpagination?.limit,\r\n\t\tdispatch,\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t...(customDeps || []),\r\n\t]);\r\n\r\n\r\n\r\n\treturn fetchData;\r\n};\r\n\r\nexport default useGenericDataFetcher;\r\n","import { enqueueSnackbar, useSnackbar } from 'notistack';\r\n\r\ntype ApiResponse = {\r\n meta?: {\r\n requestStatus?: string;\r\n };\r\n error?: {\r\n message?: string;\r\n };\r\n payload?: any\r\n};\r\n\r\ntype Callback = () => void;\r\n\r\nlet globalEnqueueSnackbar: any = null;\r\n\r\nexport const useSnackbarRef = (): void => {\r\n const { enqueueSnackbar: snackbarHook } = useSnackbar();\r\n globalEnqueueSnackbar = snackbarHook;\r\n};\r\n\r\nexport function apiHelper(\r\n res: ApiResponse,\r\n callBack?: Callback,\r\n enqueueSnackbarOverride?: any\r\n): void {\r\n if (res?.meta?.requestStatus === \"rejected\") {\r\n const errorMessage = (() => {\r\n try {\r\n const msg = res.error?.message || res?.payload?.message;\r\n return msg ? JSON.parse(msg) : null;\r\n } catch {\r\n return { message: res.error?.message || res?.payload?.message || \"Something went wrong\" };\r\n }\r\n })();\r\n\r\n const rawError = errorMessage?.message;\r\n let message = \"Something went wrong\";\r\n\r\n if (typeof rawError === \"string\") {\r\n message = rawError.replace(\"Error:\", \"\").trim();\r\n } else if (rawError && typeof rawError === \"object\") {\r\n message = (rawError as any).message || JSON.stringify(rawError);\r\n } else if (rawError) {\r\n message = String(rawError);\r\n }\r\n\r\n const snackbar = typeof enqueueSnackbarOverride === 'function'\r\n ? enqueueSnackbarOverride\r\n : (globalEnqueueSnackbar || enqueueSnackbar);\r\n\r\n if (typeof snackbar === \"function\") {\r\n snackbar(message, { variant: \"error\" });\r\n }\r\n return;\r\n }\r\n\r\n if (callBack) {\r\n if (typeof callBack === \"function\") {\r\n try {\r\n callBack();\r\n } catch (err) {\r\n console.error(\"[apiHelper] callBack threw an error:\", err);\r\n }\r\n } else {\r\n console.warn(\"[apiHelper] Provided callBack is not a function:\", typeof callBack);\r\n }\r\n }\r\n}\r\n","import React, { createContext, useContext, ReactNode, Suspense } from 'react';\r\nimport { Provider as ReduxProvider } from 'react-redux';\r\nimport { ThemeProvider } from '@mui/material/styles';\r\nimport CssBaseline from '@mui/material/CssBaseline';\r\nimport { SnackbarProvider } from 'notistack';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { createLibraryStore, ApiClientConfig } from '../../redux';\r\nimport { createLightTheme, createDarkTheme, Color } from '../../theme';\r\nimport { AuthProvider } from '../../contexts/AuthContext';\r\nimport { LanguageProvider } from '../../contexts/languageContext';\r\nimport { PageProvider } from '../../contexts/page-context';\r\nimport { PermissionsProvider } from '../../contexts/permission-context';\r\nimport MUIThemeWrapper from '../../theme/themeWrapper';\r\nimport Loader from '../loader';\r\nimport useAppTranslations from '../../hooks/use-translations';\r\nimport '../../utils/i18n';\r\nimport { initializeApiConfig, ApiConfig } from '../../utils/api-config';\r\nimport { initializeApiBaseUrls, extendApiConfigurations } from '../../utils/api';\r\nimport { setModuleRoutes } from '../../utils/module-routes-config';\r\nimport { useSnackbarRef } from '../../hooks/apiHelper';\r\n\r\nconst SnackbarRefTracker: React.FC = () => {\r\n useSnackbarRef();\r\n return null;\r\n};\r\n\r\n\r\n// Context for library configuration\r\ninterface ERPUIContextValue {\r\n useRedux: boolean;\r\n apiClient?: ApiClientConfig;\r\n theme?: any;\r\n themeMode: 'light' | 'dark';\r\n direction: 'ltr' | 'rtl';\r\n primaryColor?: Color;\r\n}\r\n\r\nconst ERPUIContext = createContext<ERPUIContextValue>({\r\n useRedux: false,\r\n themeMode: 'light',\r\n direction: 'ltr',\r\n});\r\n\r\nexport const useERPUI = () => useContext(ERPUIContext);\r\n\r\n// Provider props interface\r\ninterface ERPUIProviderProps {\r\n children: ReactNode;\r\n\r\n // Redux configuration\r\n useRedux?: boolean;\r\n reduxStore?: any;\r\n apiClient?: ApiClientConfig;\r\n additionalReducers?: Record<string, any>;\r\n\r\n // Theme configuration\r\n theme?: any;\r\n themeMode?: 'light' | 'dark';\r\n primaryColor?: Color;\r\n direction?: 'ltr' | 'rtl';\r\n\r\n // Context providers configuration\r\n enableAuth?: boolean;\r\n enableLanguage?: boolean;\r\n enablePages?: boolean;\r\n enablePermissions?: boolean;\r\n enableRouter?: boolean;\r\n enableSnackbar?: boolean;\r\n\r\n // Other configuration\r\n enableCssBaseline?: boolean;\r\n snackbarConfig?: {\r\n maxSnack?: number;\r\n anchorOrigin?: {\r\n vertical: 'top' | 'bottom';\r\n horizontal: 'left' | 'center' | 'right';\r\n };\r\n autoHideDuration?: number;\r\n };\r\n\r\n // API configuration\r\n apiConfig?: ApiConfig;\r\n\r\n // Additional API configurations to extend the shared apiConfigurations map\r\n additionalApiConfigurations?: Record<string, any>;\r\n\r\n // Module routes override — allows MFE apps to inject their own full route set\r\n // so the header module dropdown can match routes correctly.\r\n // Example: { hrms: Object.values(PathnameHrms).map(p => Pathname.DASHBOARD_HRMS + p) }\r\n moduleRoutes?: Record<string, string[]>;\r\n\r\n // Route maps\r\n routeToColumnsMap?: Record<string, any>;\r\n routeToResourceMap?: Record<string, any>;\r\n publicRoutes?: string[]; // Optional prop to allow customization of public routes in AuthProvider\r\n}\r\n\r\nexport const ERPUIProvider: React.FC<ERPUIProviderProps> = ({\r\n children,\r\n\r\n // Redux props\r\n useRedux = false,\r\n reduxStore,\r\n apiClient,\r\n additionalReducers = {},\r\n\r\n // Theme props\r\n theme: customTheme,\r\n themeMode = 'light',\r\n primaryColor,\r\n direction = 'ltr',\r\n\r\n // Context providers configuration\r\n enableAuth = true,\r\n enableLanguage = true,\r\n enablePages = true,\r\n enablePermissions = true,\r\n enableRouter = false, // Default false since consuming app usually provides router\r\n enableSnackbar = true,\r\n\r\n // Other props\r\n enableCssBaseline = true,\r\n snackbarConfig = {\r\n maxSnack: 3,\r\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\r\n autoHideDuration: 5000,\r\n },\r\n\r\n // API configuration\r\n apiConfig: providedApiConfig,\r\n additionalApiConfigurations,\r\n moduleRoutes,\r\n routeToColumnsMap,\r\n routeToResourceMap,\r\n publicRoutes = [], // Default empty array for public routes in AuthProvider \r\n}) => {\r\n console.log(\"additionalApiConfigurations...........\", additionalApiConfigurations)\r\n\r\n // Initialize API configuration synchronously before first render\r\n // This prevents \"API configuration not initialized\" errors when components\r\n // try to use the API during initial render\r\n const isInitialized = React.useRef(false);\r\n\r\n if (providedApiConfig && !isInitialized.current) {\r\n try {\r\n initializeApiConfig(providedApiConfig);\r\n initializeApiBaseUrls();\r\n if (additionalApiConfigurations) {\r\n extendApiConfigurations(additionalApiConfigurations);\r\n }\r\n // Inject MFE-provided module routes so the header can resolve modules\r\n if (moduleRoutes) {\r\n setModuleRoutes(moduleRoutes);\r\n }\r\n isInitialized.current = true;\r\n } catch (error) {\r\n console.error('Failed to initialize API configuration:', error);\r\n }\r\n }\r\n // const { isLoading } = useAppTranslations();\r\n // if (isLoading) {\r\n // return <Loader />;\r\n // }\r\n // Create or use provided Redux store\r\n const store = React.useMemo(() => {\r\n if (!useRedux) return null;\r\n\r\n if (reduxStore) {\r\n return reduxStore;\r\n }\r\n\r\n return createLibraryStore(additionalReducers, apiClient);\r\n }, [useRedux, reduxStore, additionalReducers, apiClient]);\r\n\r\n // Create theme\r\n const theme = React.useMemo(() => {\r\n if (customTheme) {\r\n return customTheme;\r\n }\r\n\r\n const themeCreator = themeMode === 'dark' ? createDarkTheme : createLightTheme;\r\n const { theme: generatedTheme } = themeCreator(primaryColor, direction);\r\n return generatedTheme;\r\n }, [customTheme, themeMode, primaryColor, direction]);\r\n\r\n // Context value\r\n const contextValue: ERPUIContextValue = {\r\n useRedux,\r\n apiClient,\r\n theme,\r\n themeMode,\r\n direction,\r\n primaryColor,\r\n };\r\n\r\n // Build provider tree from inside out\r\n let content = (\r\n <ERPUIContext.Provider value={contextValue}>\r\n {/* <ThemeProvider theme={theme}>\r\n {enableCssBaseline && <CssBaseline />} */}\r\n {/* <Suspense fallback={<Loader />}> */}\r\n <MUIThemeWrapper theme={theme} enableCssBaseline={enableCssBaseline}>\r\n {children}\r\n </MUIThemeWrapper>\r\n {/* </Suspense> */}\r\n {/* </ThemeProvider> */}\r\n </ERPUIContext.Provider>\r\n );\r\n\r\n // Wrap with snackbar provider if enabled\r\n if (enableSnackbar) {\r\n content = (\r\n <SnackbarProvider {...snackbarConfig}>\r\n <SnackbarRefTracker />\r\n {content}\r\n </SnackbarProvider>\r\n );\r\n }\r\n\r\n // Wrap with page provider if enabled\r\n // if (enablePages) {\r\n // content = (\r\n // <PageProvider routeToColumnsMap={routeToColumnsMap} routeToResourceMap={routeToResourceMap}>\r\n // {content}\r\n // </PageProvider>\r\n // );\r\n // }\r\n\r\n // Wrap with permissions provider if enabled\r\n if (enablePermissions) {\r\n content = (\r\n <PermissionsProvider>\r\n {content}\r\n </PermissionsProvider>\r\n );\r\n }\r\n\r\n // Wrap with language provider if enabled\r\n if (enableLanguage) {\r\n content = (\r\n <LanguageProvider>\r\n {content}\r\n </LanguageProvider>\r\n );\r\n }\r\n\r\n // Wrap with auth provider if enabled\r\n if (enableAuth) {\r\n content = (\r\n <AuthProvider publicRoutes={publicRoutes}>\r\n {content}\r\n </AuthProvider>\r\n );\r\n }\r\n\r\n // Wrap with router if enabled\r\n if (enableRouter) {\r\n content = (\r\n <BrowserRouter>\r\n {content}\r\n </BrowserRouter>\r\n );\r\n }\r\n\r\n // Wrap with Redux provider if enabled\r\n if (useRedux && store) {\r\n content = (\r\n <ReduxProvider store={store}>\r\n {content}\r\n </ReduxProvider>\r\n );\r\n }\r\n\r\n return content;\r\n};\r\n\r\nexport default ERPUIProvider;"],"names":["_a","React","jsx","jsxs","ReduxProvider"],"mappings":"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"}
1
+ {"version":3,"file":"ERPUIProvider-Dt58Xhz0.esm.js","sources":["../../src/hooks/use-translations.ts","../../src/hooks/useDataFetcher.tsx","../../src/hooks/apiHelper.ts","../../src/components/providers/ERPUIProvider.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\n// import { useLocation } from 'react-router-dom'\r\nimport { getI18n, useTranslation } from 'react-i18next'\r\nimport { loadModuleTranslations } from '../utils/translations'\r\nimport modules from '../constants/modules'\r\nimport { useAuth } from './useAuth'\r\n\r\n// Global state to prevent duplicate calls across all hook instances\r\nlet globalLastLoadedModules = ''\r\nlet globalIsLoading = false\r\nlet globalInitialLoad = false\r\n\r\nexport const useAppTranslations = () => {\r\n\tconst [isLoading, setIsLoading] = useState(globalInitialLoad)\r\n\tconst location = window.location\r\n\tconst i18nInstance = getI18n()\r\n\tconst { user, loading } = useAuth()\r\n\tconst { t } = useTranslation()\r\n\r\n\tuseEffect(() => {\r\n\t\tconst erpModules = modules(t)\r\n\t\tconst currentPath = location.pathname.toLowerCase()\r\n\t\tif(user?.id && !loading) {\r\n\t\r\n\t\t\tconst matchedModule = erpModules.find(\r\n\t\t\t\t(mod) =>\r\n\t\t\t\t\tmod.link.toLowerCase() === currentPath ||\r\n\t\t\t\t\tmod.connectedRoutes?.some((route: string) => currentPath.startsWith(route.toLowerCase()))\r\n\t\t\t)\r\n\t\r\n\t\t\tlet modulesToLoad: string[] = []\r\n\t\r\n\t\t\tif (matchedModule?.translationModule) {\r\n\t\t\t\tmodulesToLoad = [...matchedModule.translationModule, 'common']\r\n\t\t\t} else if (!matchedModule && currentPath === '/dashboard') {\r\n\t\t\t\tmodulesToLoad = ['common']\r\n\t\t\t}\r\n\t\r\n\t\t\tif (modulesToLoad.length > 0) {\r\n\t\t\t\tconst moduleKey = [...modulesToLoad].sort().join(',')\r\n\t\r\n\t\t\t\t// Skip if same modules are already loaded or currently loading\r\n\t\t\t\tif (globalLastLoadedModules === moduleKey || globalIsLoading) {\r\n\t\t\t\t\tif (globalInitialLoad) {\r\n\t\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tglobalIsLoading = true\r\n\t\t\t\tglobalLastLoadedModules = moduleKey\r\n\t\t\t\tsetIsLoading(true)\r\n\t\r\n\t\t\t\tloadModuleTranslations(modulesToLoad, i18nInstance).finally(() => {\r\n\t\t\t\t\tglobalIsLoading = false\r\n\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\t// No modules to load, but still need to handle initial load state\r\n\t\t\t\tif (globalInitialLoad) {\r\n\t\t\t\t\tsetIsLoading(false)\r\n\t\t\t\t\tglobalInitialLoad = false\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}, [location.pathname, t, user, loading])\r\n\r\n\treturn { isLoading }\r\n};\r\n\r\nexport default useAppTranslations;\r\n","import { useCallback, useState, useEffect } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { usePages } from './use-pages';\r\nimport { useLocation } from 'react-router-dom';\r\ninterface FilterParams {\r\n\tskip: number;\r\n\tlimit: number;\r\n\tsearch?: string;\r\n\tselect?: string;\r\n\torder?: string;\r\n\tfilters?: string;\r\n}\r\n\r\ninterface ActivePage {\r\n\tsort?: { id: string; desc: boolean };\r\n\tfilterQueryString?: string;\r\n\tsearch?: string;\r\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\r\n}\r\n\r\nconst useGenericDataFetcher = (\r\n\tcols?: ActivePage,\r\n\tpagination: { skip: number; limit: number },\r\n\tfetchAction: (filters: FilterParams) => void,\r\n\tcustomeFilter: any = '',\r\n\tcustomDeps?: any[],\r\n\tshowCreatedBy: boolean = true,\r\n\tcustomFields?: any = []\r\n) => {\r\n\tconst { activePage } = usePages();\r\n\tconst dispatch = useDispatch();\r\n\tconst location = useLocation();\r\n\r\n\tconst sourceColumns = Array.isArray(cols) ? cols?.filter((col: any) => col.visible) : activePage?.visible_columns;\r\n\r\n\tconst [trackedPath, setTrackedPath] = useState<string | null>(null);\r\n\tconst [trackedColumns, setTrackedColumns] = useState<any[]>([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (trackedPath !== location?.pathname) {\r\n\t\t\tsetTrackedPath(location?.pathname);\r\n\t\t\tsetTrackedColumns([]);\r\n\t\t}\r\n\t}, [location?.pathname, trackedPath]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (trackedPath === location?.pathname && sourceColumns?.length > 0) {\r\n\t\t\tif (JSON.stringify(trackedColumns) !== JSON.stringify(sourceColumns)) {\r\n\t\t\t\tsetTrackedColumns(sourceColumns);\r\n\t\t\t}\r\n\t\t}\r\n\t}, [location?.pathname, trackedPath, sourceColumns]);\r\n\r\n\tconst getProcessedFilters = useCallback(() => {\r\n\t\tconst { filterQueryString } = activePage || {};\r\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, \"\") || '';\r\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\r\n\t\tlet filters = customeFilter;\r\n\r\n\t\tif (extraQueryString) {\r\n\t\t\tfilters = filters ? `(${filters}${extraQueryString})` : `(${extraQueryString})`;\r\n\t\t} else if (filters) {\r\n\t\t\tfilters = `(${filters})`;\r\n\t\t}\r\n\r\n\t\treturn filters || undefined;\r\n\t\t//eslint-disable-next-line\r\n\t}, [activePage.filterQueryString, customeFilter]);\r\n\r\n\tconst fetchData = useCallback(() => {\r\n\t\tif (!fetchAction) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst { sort = null, search } = activePage;\r\n\r\n\t\tif (!trackedColumns || trackedColumns.length === 0) return;\r\n\r\n\t\tconst filters = getProcessedFilters();\r\n\t\tconst visibleColumns = trackedColumns?.filter((vc) => vc.visible)\r\n\r\n\t\tconst selectPayload = visibleColumns?.length > 0 ? `[${visibleColumns\r\n\t\t\t?.map((item) =>\r\n\t\t\t\titem.accessorKey?.includes(\".\")\r\n\t\t\t\t\t? item.accessorKey.split(\".\")[0]\r\n\t\t\t\t\t: item.accessorKey\r\n\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]` : undefined\r\n\t\tconst payload: FilterParams = {\r\n\t\t\tskip: activePage?.skip || pagination?.skip,\r\n\t\t\tlimit: pagination.limit,\r\n\t\t\tsearch,\r\n\t\t\tselect: selectPayload,\r\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\r\n\t\t\t...(filters && { filters }),\r\n\t\t};\r\n\r\n\t\tdispatch(fetchAction(payload));\r\n\t\t//eslint-disable-next-line\r\n\t}, [\r\n\t\ttrackedColumns,\r\n\t\tactivePage.sort,\r\n\t\tactivePage.filterQueryString,\r\n\t\tactivePage.search,\r\n\t\t// pagination?.skip intentionally omitted: the Pagination component already\r\n\t\t// mirrors skip into activePage.skip on pageNo change; including pagination.skip\r\n\t\t// here would make fetchData identity change twice per pagination click,\r\n\t\t// triggering the listing useEffect twice and causing duplicate API calls.\r\n\t\tactivePage?.skip,\r\n\t\tpagination?.limit,\r\n\t\tdispatch,\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t...(customDeps || []),\r\n\t]);\r\n\r\n\r\n\r\n\treturn fetchData;\r\n};\r\n\r\nexport default useGenericDataFetcher;\r\n","import { enqueueSnackbar, useSnackbar } from 'notistack';\r\n\r\ntype ApiResponse = {\r\n meta?: {\r\n requestStatus?: string;\r\n };\r\n error?: {\r\n message?: string;\r\n };\r\n payload?: any\r\n};\r\n\r\ntype Callback = () => void;\r\n\r\nlet globalEnqueueSnackbar: any = null;\r\n\r\nexport const useSnackbarRef = (): void => {\r\n const { enqueueSnackbar: snackbarHook } = useSnackbar();\r\n globalEnqueueSnackbar = snackbarHook;\r\n};\r\n\r\nexport function apiHelper(\r\n res: ApiResponse,\r\n callBack?: Callback,\r\n enqueueSnackbarOverride?: any\r\n): void {\r\n if (res?.meta?.requestStatus === \"rejected\") {\r\n const errorMessage = (() => {\r\n try {\r\n const msg = res.error?.message || res?.payload?.message;\r\n return msg ? JSON.parse(msg) : null;\r\n } catch {\r\n return { message: res.error?.message || res?.payload?.message || \"Something went wrong\" };\r\n }\r\n })();\r\n\r\n const rawError = errorMessage?.message;\r\n let message = \"Something went wrong\";\r\n\r\n if (typeof rawError === \"string\") {\r\n message = rawError.replace(\"Error:\", \"\").trim();\r\n } else if (rawError && typeof rawError === \"object\") {\r\n message = (rawError as any).message || JSON.stringify(rawError);\r\n } else if (rawError) {\r\n message = String(rawError);\r\n }\r\n\r\n const snackbar = typeof enqueueSnackbarOverride === 'function'\r\n ? enqueueSnackbarOverride\r\n : (globalEnqueueSnackbar || enqueueSnackbar);\r\n\r\n if (typeof snackbar === \"function\") {\r\n snackbar(message, { variant: \"error\" });\r\n }\r\n return;\r\n }\r\n\r\n if (callBack) {\r\n if (typeof callBack === \"function\") {\r\n try {\r\n callBack();\r\n } catch (err) {\r\n console.error(\"[apiHelper] callBack threw an error:\", err);\r\n }\r\n } else {\r\n console.warn(\"[apiHelper] Provided callBack is not a function:\", typeof callBack);\r\n }\r\n }\r\n}\r\n","import React, { createContext, useContext, ReactNode, Suspense } from 'react';\r\nimport { Provider as ReduxProvider } from 'react-redux';\r\nimport { ThemeProvider } from '@mui/material/styles';\r\nimport CssBaseline from '@mui/material/CssBaseline';\r\nimport { SnackbarProvider } from 'notistack';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { createLibraryStore, ApiClientConfig } from '../../redux';\r\nimport { createLightTheme, createDarkTheme, Color } from '../../theme';\r\nimport { AuthProvider } from '../../contexts/AuthContext';\r\nimport { LanguageProvider } from '../../contexts/languageContext';\r\nimport { PageProvider } from '../../contexts/page-context';\r\nimport { PermissionsProvider } from '../../contexts/permission-context';\r\nimport MUIThemeWrapper from '../../theme/themeWrapper';\r\nimport Loader from '../loader';\r\nimport useAppTranslations from '../../hooks/use-translations';\r\nimport '../../utils/i18n';\r\nimport { initializeApiConfig, ApiConfig } from '../../utils/api-config';\r\nimport { initializeApiBaseUrls, extendApiConfigurations } from '../../utils/api';\r\nimport { setModuleRoutes } from '../../utils/module-routes-config';\r\nimport { useSnackbarRef } from '../../hooks/apiHelper';\r\n\r\nconst SnackbarRefTracker: React.FC = () => {\r\n useSnackbarRef();\r\n return null;\r\n};\r\n\r\n\r\n// Context for library configuration\r\ninterface ERPUIContextValue {\r\n useRedux: boolean;\r\n apiClient?: ApiClientConfig;\r\n theme?: any;\r\n themeMode: 'light' | 'dark';\r\n direction: 'ltr' | 'rtl';\r\n primaryColor?: Color;\r\n}\r\n\r\nconst ERPUIContext = createContext<ERPUIContextValue>({\r\n useRedux: false,\r\n themeMode: 'light',\r\n direction: 'ltr',\r\n});\r\n\r\nexport const useERPUI = () => useContext(ERPUIContext);\r\n\r\n// Provider props interface\r\ninterface ERPUIProviderProps {\r\n children: ReactNode;\r\n\r\n // Redux configuration\r\n useRedux?: boolean;\r\n reduxStore?: any;\r\n apiClient?: ApiClientConfig;\r\n additionalReducers?: Record<string, any>;\r\n\r\n // Theme configuration\r\n theme?: any;\r\n themeMode?: 'light' | 'dark';\r\n primaryColor?: Color;\r\n direction?: 'ltr' | 'rtl';\r\n\r\n // Context providers configuration\r\n enableAuth?: boolean;\r\n enableLanguage?: boolean;\r\n enablePages?: boolean;\r\n enablePermissions?: boolean;\r\n enableRouter?: boolean;\r\n enableSnackbar?: boolean;\r\n\r\n // Other configuration\r\n enableCssBaseline?: boolean;\r\n snackbarConfig?: {\r\n maxSnack?: number;\r\n anchorOrigin?: {\r\n vertical: 'top' | 'bottom';\r\n horizontal: 'left' | 'center' | 'right';\r\n };\r\n autoHideDuration?: number;\r\n };\r\n\r\n // API configuration\r\n apiConfig?: ApiConfig;\r\n\r\n // Additional API configurations to extend the shared apiConfigurations map\r\n additionalApiConfigurations?: Record<string, any>;\r\n\r\n // Module routes override — allows MFE apps to inject their own full route set\r\n // so the header module dropdown can match routes correctly.\r\n // Example: { hrms: Object.values(PathnameHrms).map(p => Pathname.DASHBOARD_HRMS + p) }\r\n moduleRoutes?: Record<string, string[]>;\r\n\r\n // Route maps\r\n routeToColumnsMap?: Record<string, any>;\r\n routeToResourceMap?: Record<string, any>;\r\n publicRoutes?: string[]; // Optional prop to allow customization of public routes in AuthProvider\r\n}\r\n\r\nexport const ERPUIProvider: React.FC<ERPUIProviderProps> = ({\r\n children,\r\n\r\n // Redux props\r\n useRedux = false,\r\n reduxStore,\r\n apiClient,\r\n additionalReducers = {},\r\n\r\n // Theme props\r\n theme: customTheme,\r\n themeMode = 'light',\r\n primaryColor,\r\n direction = 'ltr',\r\n\r\n // Context providers configuration\r\n enableAuth = true,\r\n enableLanguage = true,\r\n enablePages = true,\r\n enablePermissions = true,\r\n enableRouter = false, // Default false since consuming app usually provides router\r\n enableSnackbar = true,\r\n\r\n // Other props\r\n enableCssBaseline = true,\r\n snackbarConfig = {\r\n maxSnack: 3,\r\n anchorOrigin: { vertical: 'top', horizontal: 'right' },\r\n autoHideDuration: 5000,\r\n },\r\n\r\n // API configuration\r\n apiConfig: providedApiConfig,\r\n additionalApiConfigurations,\r\n moduleRoutes,\r\n routeToColumnsMap,\r\n routeToResourceMap,\r\n publicRoutes = [], // Default empty array for public routes in AuthProvider \r\n}) => {\r\n console.log(\"additionalApiConfigurations...........\", additionalApiConfigurations)\r\n\r\n // Initialize API configuration synchronously before first render\r\n // This prevents \"API configuration not initialized\" errors when components\r\n // try to use the API during initial render\r\n const isInitialized = React.useRef(false);\r\n\r\n if (providedApiConfig && !isInitialized.current) {\r\n try {\r\n initializeApiConfig(providedApiConfig);\r\n initializeApiBaseUrls();\r\n if (additionalApiConfigurations) {\r\n extendApiConfigurations(additionalApiConfigurations);\r\n }\r\n // Inject MFE-provided module routes so the header can resolve modules\r\n if (moduleRoutes) {\r\n setModuleRoutes(moduleRoutes);\r\n }\r\n isInitialized.current = true;\r\n } catch (error) {\r\n console.error('Failed to initialize API configuration:', error);\r\n }\r\n }\r\n // const { isLoading } = useAppTranslations();\r\n // if (isLoading) {\r\n // return <Loader />;\r\n // }\r\n // Create or use provided Redux store\r\n const store = React.useMemo(() => {\r\n if (!useRedux) return null;\r\n\r\n if (reduxStore) {\r\n return reduxStore;\r\n }\r\n\r\n return createLibraryStore(additionalReducers, apiClient);\r\n }, [useRedux, reduxStore, additionalReducers, apiClient]);\r\n\r\n // Create theme\r\n const theme = React.useMemo(() => {\r\n if (customTheme) {\r\n return customTheme;\r\n }\r\n\r\n const themeCreator = themeMode === 'dark' ? createDarkTheme : createLightTheme;\r\n const { theme: generatedTheme } = themeCreator(primaryColor, direction);\r\n return generatedTheme;\r\n }, [customTheme, themeMode, primaryColor, direction]);\r\n\r\n // Context value\r\n const contextValue: ERPUIContextValue = {\r\n useRedux,\r\n apiClient,\r\n theme,\r\n themeMode,\r\n direction,\r\n primaryColor,\r\n };\r\n\r\n // Build provider tree from inside out\r\n let content = (\r\n <ERPUIContext.Provider value={contextValue}>\r\n {/* <ThemeProvider theme={theme}>\r\n {enableCssBaseline && <CssBaseline />} */}\r\n {/* <Suspense fallback={<Loader />}> */}\r\n <MUIThemeWrapper theme={theme} enableCssBaseline={enableCssBaseline}>\r\n {children}\r\n </MUIThemeWrapper>\r\n {/* </Suspense> */}\r\n {/* </ThemeProvider> */}\r\n </ERPUIContext.Provider>\r\n );\r\n\r\n // Wrap with snackbar provider if enabled\r\n if (enableSnackbar) {\r\n content = (\r\n <SnackbarProvider {...snackbarConfig}>\r\n <SnackbarRefTracker />\r\n {content}\r\n </SnackbarProvider>\r\n );\r\n }\r\n\r\n // Wrap with page provider if enabled\r\n // if (enablePages) {\r\n // content = (\r\n // <PageProvider routeToColumnsMap={routeToColumnsMap} routeToResourceMap={routeToResourceMap}>\r\n // {content}\r\n // </PageProvider>\r\n // );\r\n // }\r\n\r\n // Wrap with permissions provider if enabled\r\n if (enablePermissions) {\r\n content = (\r\n <PermissionsProvider>\r\n {content}\r\n </PermissionsProvider>\r\n );\r\n }\r\n\r\n // Wrap with language provider if enabled\r\n if (enableLanguage) {\r\n content = (\r\n <LanguageProvider>\r\n {content}\r\n </LanguageProvider>\r\n );\r\n }\r\n\r\n // Wrap with auth provider if enabled\r\n if (enableAuth) {\r\n content = (\r\n <AuthProvider publicRoutes={publicRoutes}>\r\n {content}\r\n </AuthProvider>\r\n );\r\n }\r\n\r\n // Wrap with router if enabled\r\n if (enableRouter) {\r\n content = (\r\n <BrowserRouter>\r\n {content}\r\n </BrowserRouter>\r\n );\r\n }\r\n\r\n // Wrap with Redux provider if enabled\r\n if (useRedux && store) {\r\n content = (\r\n <ReduxProvider store={store}>\r\n {content}\r\n </ReduxProvider>\r\n );\r\n }\r\n\r\n return content;\r\n};\r\n\r\nexport default ERPUIProvider;"],"names":["_a","React","jsx","jsxs","ReduxProvider"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  const api = require("./api-BygscvSz.js");
3
- const common = require("./common-mZRiR8Bu.js");
3
+ const common = require("./common-CMIXV2ag.js");
4
4
  const toolkit = require("@reduxjs/toolkit");
5
5
  const _ = require("lodash");
6
6
  const createParties = toolkit.createAsyncThunk(
@@ -75,4 +75,4 @@ exports.getCurrency = getCurrency;
75
75
  exports.getItems = getItems;
76
76
  exports.getLocation = getLocation;
77
77
  exports.getOptions = getOptions;
78
- //# sourceMappingURL=actionCreator-BrkbDoSD.js.map
78
+ //# sourceMappingURL=actionCreator-49uJfvCF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actionCreator-BrkbDoSD.js","sources":["../../src/redux/actionCreator.ts"],"sourcesContent":["import { getV1Currency, postV1Parties } from \"@/api-client/api.accounting/api\";\r\nimport { getV1InventoryItems, getV1WarehouseLocation } from \"@/api-client/api.inventory/api\";\r\nimport { LabelKeyFunction } from \"@/types\";\r\nimport { getToken } from \"@/utils\";\r\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\r\nimport _ from \"lodash\";\r\n\r\n// Stub implementation for Redux actions - consuming applications should provide their own implementation\r\nexport const createParties = createAsyncThunk(\r\n \"parties/create\",\r\n async (payload: any) => {\r\n const response = await postV1Parties({\r\n ...payload,\r\n ...getToken(),\r\n });\r\n return response;\r\n }\r\n);\r\nexport const getOptions = async (\r\n apiFunc: any,\r\n filters: any,\r\n dataKey: string,\r\n labelKey: string | LabelKeyFunction,\r\n valueKey?: any\r\n) => {\r\n const response = await apiFunc({\r\n ...filters,\r\n ...getToken(),\r\n });\r\n\r\n const options: any[] =\r\n response?.data?.[dataKey]?.map((d) => ({\r\n ...d,\r\n label: labelKey instanceof Function ? labelKey(d) : _.get(d, labelKey),\r\n value: valueKey ? _.get(d, valueKey, d.id) : d.id,\r\n })) || [];\r\n return options;\r\n};\r\n\r\nexport const getLocation = createAsyncThunk(\r\n \"location/fetch\",\r\n async (filter: any) => {\r\n const locationFilter = {\r\n ...filter,\r\n };\r\n const response = await getOptions(\r\n getV1WarehouseLocation,\r\n locationFilter,\r\n \"warehouseLocationList\",\r\n \"name\"\r\n );\r\n return response;\r\n }\r\n);\r\n\r\nexport const getItems = createAsyncThunk(\"item/fetch\", async (filter: any) => {\r\n const itemFilter = {\r\n ...filter,\r\n order: \"name:1\",\r\n // select:\"[id,name,type,unit_of_measurement,default_tax_id,vendor_informatio]\"\r\n };\r\n const response = await getOptions(\r\n getV1InventoryItems,\r\n itemFilter,\r\n \"inventoryItemsList\",\r\n \"name\"\r\n );\r\n return response;\r\n});\r\n\r\nexport const getCurrency = createAsyncThunk(\r\n \"currency/fetch\",\r\n async (filter: any) => {\r\n const currencyFiter = {\r\n ...filter,\r\n };\r\n const response = await getOptions(\r\n getV1Currency,\r\n currencyFiter,\r\n \"currencies\",\r\n \"currency_name\"\r\n );\r\n return response;\r\n }\r\n);"],"names":["createAsyncThunk","postV1Parties","getToken","getV1WarehouseLocation","getV1InventoryItems","getV1Currency"],"mappings":";;;;;AAQO,MAAM,gBAAgBA,QAAAA;AAAAA,EAC3B;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW,MAAMC,kBAAc;AAAA,MACnC,GAAG;AAAA,MACH,GAAGC,OAAAA,SAAA;AAAA,IAAS,CACb;AACD,WAAO;AAAA,EACT;AACF;AACO,MAAM,aAAa,OACxB,SACA,SACA,SACA,UACA,aACG;;AACH,QAAM,WAAW,MAAM,QAAQ;AAAA,IAC7B,GAAG;AAAA,IACH,GAAGA,OAAAA,SAAA;AAAA,EAAS,CACb;AAED,QAAM,YACJ,gDAAU,SAAV,mBAAiB,aAAjB,mBAA2B,IAAI,CAAC,OAAO;AAAA,IACrC,GAAG;AAAA,IACH,OAAO,oBAAoB,WAAW,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ;AAAA,IACrE,OAAO,WAAW,EAAE,IAAI,GAAG,UAAU,EAAE,EAAE,IAAI,EAAE;AAAA,EAAA,QAC1C,CAAA;AACT,SAAO;AACT;AAEO,MAAM,cAAcF,QAAAA;AAAAA,EACzB;AAAA,EACA,OAAO,WAAgB;AACrB,UAAM,iBAAiB;AAAA,MACrB,GAAG;AAAA,IAAA;AAEL,UAAM,WAAW,MAAM;AAAA,MACrBG,IAAAA;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,WAAO;AAAA,EACT;AACF;AAEO,MAAM,WAAWH,QAAAA,iBAAiB,cAAc,OAAO,WAAgB;AAC5E,QAAM,aAAa;AAAA,IACjB,GAAG;AAAA,IACH,OAAO;AAAA;AAAA,EAAA;AAGT,QAAM,WAAW,MAAM;AAAA,IACrBI,IAAAA;AAAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,SAAO;AACT,CAAC;AAEM,MAAM,cAAcJ,QAAAA;AAAAA,EACzB;AAAA,EACA,OAAO,WAAgB;AACrB,UAAM,gBAAgB;AAAA,MACpB,GAAG;AAAA,IAAA;AAEL,UAAM,WAAW,MAAM;AAAA,MACrBK,IAAAA;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,WAAO;AAAA,EACT;AACF;;;;;;"}
1
+ {"version":3,"file":"actionCreator-49uJfvCF.js","sources":["../../src/redux/actionCreator.ts"],"sourcesContent":["import { getV1Currency, postV1Parties } from \"@/api-client/api.accounting/api\";\r\nimport { getV1InventoryItems, getV1WarehouseLocation } from \"@/api-client/api.inventory/api\";\r\nimport { LabelKeyFunction } from \"@/types\";\r\nimport { getToken } from \"@/utils\";\r\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\r\nimport _ from \"lodash\";\r\n\r\n// Stub implementation for Redux actions - consuming applications should provide their own implementation\r\nexport const createParties = createAsyncThunk(\r\n \"parties/create\",\r\n async (payload: any) => {\r\n const response = await postV1Parties({\r\n ...payload,\r\n ...getToken(),\r\n });\r\n return response;\r\n }\r\n);\r\nexport const getOptions = async (\r\n apiFunc: any,\r\n filters: any,\r\n dataKey: string,\r\n labelKey: string | LabelKeyFunction,\r\n valueKey?: any\r\n) => {\r\n const response = await apiFunc({\r\n ...filters,\r\n ...getToken(),\r\n });\r\n\r\n const options: any[] =\r\n response?.data?.[dataKey]?.map((d) => ({\r\n ...d,\r\n label: labelKey instanceof Function ? labelKey(d) : _.get(d, labelKey),\r\n value: valueKey ? _.get(d, valueKey, d.id) : d.id,\r\n })) || [];\r\n return options;\r\n};\r\n\r\nexport const getLocation = createAsyncThunk(\r\n \"location/fetch\",\r\n async (filter: any) => {\r\n const locationFilter = {\r\n ...filter,\r\n };\r\n const response = await getOptions(\r\n getV1WarehouseLocation,\r\n locationFilter,\r\n \"warehouseLocationList\",\r\n \"name\"\r\n );\r\n return response;\r\n }\r\n);\r\n\r\nexport const getItems = createAsyncThunk(\"item/fetch\", async (filter: any) => {\r\n const itemFilter = {\r\n ...filter,\r\n order: \"name:1\",\r\n // select:\"[id,name,type,unit_of_measurement,default_tax_id,vendor_informatio]\"\r\n };\r\n const response = await getOptions(\r\n getV1InventoryItems,\r\n itemFilter,\r\n \"inventoryItemsList\",\r\n \"name\"\r\n );\r\n return response;\r\n});\r\n\r\nexport const getCurrency = createAsyncThunk(\r\n \"currency/fetch\",\r\n async (filter: any) => {\r\n const currencyFiter = {\r\n ...filter,\r\n };\r\n const response = await getOptions(\r\n getV1Currency,\r\n currencyFiter,\r\n \"currencies\",\r\n \"currency_name\"\r\n );\r\n return response;\r\n }\r\n);"],"names":["createAsyncThunk","postV1Parties","getToken","getV1WarehouseLocation","getV1InventoryItems","getV1Currency"],"mappings":";;;;;AAQO,MAAM,gBAAgBA,QAAAA;AAAAA,EAC3B;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW,MAAMC,kBAAc;AAAA,MACnC,GAAG;AAAA,MACH,GAAGC,OAAAA,SAAA;AAAA,IAAS,CACb;AACD,WAAO;AAAA,EACT;AACF;AACO,MAAM,aAAa,OACxB,SACA,SACA,SACA,UACA,aACG;;AACH,QAAM,WAAW,MAAM,QAAQ;AAAA,IAC7B,GAAG;AAAA,IACH,GAAGA,OAAAA,SAAA;AAAA,EAAS,CACb;AAED,QAAM,YACJ,gDAAU,SAAV,mBAAiB,aAAjB,mBAA2B,IAAI,CAAC,OAAO;AAAA,IACrC,GAAG;AAAA,IACH,OAAO,oBAAoB,WAAW,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ;AAAA,IACrE,OAAO,WAAW,EAAE,IAAI,GAAG,UAAU,EAAE,EAAE,IAAI,EAAE;AAAA,EAAA,QAC1C,CAAA;AACT,SAAO;AACT;AAEO,MAAM,cAAcF,QAAAA;AAAAA,EACzB;AAAA,EACA,OAAO,WAAgB;AACrB,UAAM,iBAAiB;AAAA,MACrB,GAAG;AAAA,IAAA;AAEL,UAAM,WAAW,MAAM;AAAA,MACrBG,IAAAA;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,WAAO;AAAA,EACT;AACF;AAEO,MAAM,WAAWH,QAAAA,iBAAiB,cAAc,OAAO,WAAgB;AAC5E,QAAM,aAAa;AAAA,IACjB,GAAG;AAAA,IACH,OAAO;AAAA;AAAA,EAAA;AAGT,QAAM,WAAW,MAAM;AAAA,IACrBI,IAAAA;AAAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,SAAO;AACT,CAAC;AAEM,MAAM,cAAcJ,QAAAA;AAAAA,EACzB;AAAA,EACA,OAAO,WAAgB;AACrB,UAAM,gBAAgB;AAAA,MACpB,GAAG;AAAA,IAAA;AAEL,UAAM,WAAW,MAAM;AAAA,MACrBK,IAAAA;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,WAAO;AAAA,EACT;AACF;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { p as postV1Parties, n as getV1WarehouseLocation, o as getV1Currency, q as getV1InventoryItems } from "./api-CAAYzky9.esm.js";
2
- import { at as getToken } from "./common-KSaUU42L.esm.js";
2
+ import { at as getToken } from "./common-DM8k-KPd.esm.js";
3
3
  import { createAsyncThunk } from "@reduxjs/toolkit";
4
4
  import _ from "lodash";
5
5
  const createParties = createAsyncThunk(
@@ -76,4 +76,4 @@ export {
76
76
  getOptions as d,
77
77
  getCurrency as g
78
78
  };
79
- //# sourceMappingURL=actionCreator-DpYNRFa8.esm.js.map
79
+ //# sourceMappingURL=actionCreator-BwFse5bg.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actionCreator-DpYNRFa8.esm.js","sources":["../../src/redux/actionCreator.ts"],"sourcesContent":["import { getV1Currency, postV1Parties } from \"@/api-client/api.accounting/api\";\r\nimport { getV1InventoryItems, getV1WarehouseLocation } from \"@/api-client/api.inventory/api\";\r\nimport { LabelKeyFunction } from \"@/types\";\r\nimport { getToken } from \"@/utils\";\r\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\r\nimport _ from \"lodash\";\r\n\r\n// Stub implementation for Redux actions - consuming applications should provide their own implementation\r\nexport const createParties = createAsyncThunk(\r\n \"parties/create\",\r\n async (payload: any) => {\r\n const response = await postV1Parties({\r\n ...payload,\r\n ...getToken(),\r\n });\r\n return response;\r\n }\r\n);\r\nexport const getOptions = async (\r\n apiFunc: any,\r\n filters: any,\r\n dataKey: string,\r\n labelKey: string | LabelKeyFunction,\r\n valueKey?: any\r\n) => {\r\n const response = await apiFunc({\r\n ...filters,\r\n ...getToken(),\r\n });\r\n\r\n const options: any[] =\r\n response?.data?.[dataKey]?.map((d) => ({\r\n ...d,\r\n label: labelKey instanceof Function ? labelKey(d) : _.get(d, labelKey),\r\n value: valueKey ? _.get(d, valueKey, d.id) : d.id,\r\n })) || [];\r\n return options;\r\n};\r\n\r\nexport const getLocation = createAsyncThunk(\r\n \"location/fetch\",\r\n async (filter: any) => {\r\n const locationFilter = {\r\n ...filter,\r\n };\r\n const response = await getOptions(\r\n getV1WarehouseLocation,\r\n locationFilter,\r\n \"warehouseLocationList\",\r\n \"name\"\r\n );\r\n return response;\r\n }\r\n);\r\n\r\nexport const getItems = createAsyncThunk(\"item/fetch\", async (filter: any) => {\r\n const itemFilter = {\r\n ...filter,\r\n order: \"name:1\",\r\n // select:\"[id,name,type,unit_of_measurement,default_tax_id,vendor_informatio]\"\r\n };\r\n const response = await getOptions(\r\n getV1InventoryItems,\r\n itemFilter,\r\n \"inventoryItemsList\",\r\n \"name\"\r\n );\r\n return response;\r\n});\r\n\r\nexport const getCurrency = createAsyncThunk(\r\n \"currency/fetch\",\r\n async (filter: any) => {\r\n const currencyFiter = {\r\n ...filter,\r\n };\r\n const response = await getOptions(\r\n getV1Currency,\r\n currencyFiter,\r\n \"currencies\",\r\n \"currency_name\"\r\n );\r\n return response;\r\n }\r\n);"],"names":[],"mappings":";;;;AAQO,MAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW,MAAM,cAAc;AAAA,MACnC,GAAG;AAAA,MACH,GAAG,SAAA;AAAA,IAAS,CACb;AACD,WAAO;AAAA,EACT;AACF;AACO,MAAM,aAAa,OACxB,SACA,SACA,SACA,UACA,aACG;;AACH,QAAM,WAAW,MAAM,QAAQ;AAAA,IAC7B,GAAG;AAAA,IACH,GAAG,SAAA;AAAA,EAAS,CACb;AAED,QAAM,YACJ,gDAAU,SAAV,mBAAiB,aAAjB,mBAA2B,IAAI,CAAC,OAAO;AAAA,IACrC,GAAG;AAAA,IACH,OAAO,oBAAoB,WAAW,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ;AAAA,IACrE,OAAO,WAAW,EAAE,IAAI,GAAG,UAAU,EAAE,EAAE,IAAI,EAAE;AAAA,EAAA,QAC1C,CAAA;AACT,SAAO;AACT;AAEO,MAAM,cAAc;AAAA,EACzB;AAAA,EACA,OAAO,WAAgB;AACrB,UAAM,iBAAiB;AAAA,MACrB,GAAG;AAAA,IAAA;AAEL,UAAM,WAAW,MAAM;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,WAAO;AAAA,EACT;AACF;AAEO,MAAM,WAAW,iBAAiB,cAAc,OAAO,WAAgB;AAC5E,QAAM,aAAa;AAAA,IACjB,GAAG;AAAA,IACH,OAAO;AAAA;AAAA,EAAA;AAGT,QAAM,WAAW,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,SAAO;AACT,CAAC;AAEM,MAAM,cAAc;AAAA,EACzB;AAAA,EACA,OAAO,WAAgB;AACrB,UAAM,gBAAgB;AAAA,MACpB,GAAG;AAAA,IAAA;AAEL,UAAM,WAAW,MAAM;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,WAAO;AAAA,EACT;AACF;"}
1
+ {"version":3,"file":"actionCreator-BwFse5bg.esm.js","sources":["../../src/redux/actionCreator.ts"],"sourcesContent":["import { getV1Currency, postV1Parties } from \"@/api-client/api.accounting/api\";\r\nimport { getV1InventoryItems, getV1WarehouseLocation } from \"@/api-client/api.inventory/api\";\r\nimport { LabelKeyFunction } from \"@/types\";\r\nimport { getToken } from \"@/utils\";\r\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\r\nimport _ from \"lodash\";\r\n\r\n// Stub implementation for Redux actions - consuming applications should provide their own implementation\r\nexport const createParties = createAsyncThunk(\r\n \"parties/create\",\r\n async (payload: any) => {\r\n const response = await postV1Parties({\r\n ...payload,\r\n ...getToken(),\r\n });\r\n return response;\r\n }\r\n);\r\nexport const getOptions = async (\r\n apiFunc: any,\r\n filters: any,\r\n dataKey: string,\r\n labelKey: string | LabelKeyFunction,\r\n valueKey?: any\r\n) => {\r\n const response = await apiFunc({\r\n ...filters,\r\n ...getToken(),\r\n });\r\n\r\n const options: any[] =\r\n response?.data?.[dataKey]?.map((d) => ({\r\n ...d,\r\n label: labelKey instanceof Function ? labelKey(d) : _.get(d, labelKey),\r\n value: valueKey ? _.get(d, valueKey, d.id) : d.id,\r\n })) || [];\r\n return options;\r\n};\r\n\r\nexport const getLocation = createAsyncThunk(\r\n \"location/fetch\",\r\n async (filter: any) => {\r\n const locationFilter = {\r\n ...filter,\r\n };\r\n const response = await getOptions(\r\n getV1WarehouseLocation,\r\n locationFilter,\r\n \"warehouseLocationList\",\r\n \"name\"\r\n );\r\n return response;\r\n }\r\n);\r\n\r\nexport const getItems = createAsyncThunk(\"item/fetch\", async (filter: any) => {\r\n const itemFilter = {\r\n ...filter,\r\n order: \"name:1\",\r\n // select:\"[id,name,type,unit_of_measurement,default_tax_id,vendor_informatio]\"\r\n };\r\n const response = await getOptions(\r\n getV1InventoryItems,\r\n itemFilter,\r\n \"inventoryItemsList\",\r\n \"name\"\r\n );\r\n return response;\r\n});\r\n\r\nexport const getCurrency = createAsyncThunk(\r\n \"currency/fetch\",\r\n async (filter: any) => {\r\n const currencyFiter = {\r\n ...filter,\r\n };\r\n const response = await getOptions(\r\n getV1Currency,\r\n currencyFiter,\r\n \"currencies\",\r\n \"currency_name\"\r\n );\r\n return response;\r\n }\r\n);"],"names":[],"mappings":";;;;AAQO,MAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA,OAAO,YAAiB;AACtB,UAAM,WAAW,MAAM,cAAc;AAAA,MACnC,GAAG;AAAA,MACH,GAAG,SAAA;AAAA,IAAS,CACb;AACD,WAAO;AAAA,EACT;AACF;AACO,MAAM,aAAa,OACxB,SACA,SACA,SACA,UACA,aACG;;AACH,QAAM,WAAW,MAAM,QAAQ;AAAA,IAC7B,GAAG;AAAA,IACH,GAAG,SAAA;AAAA,EAAS,CACb;AAED,QAAM,YACJ,gDAAU,SAAV,mBAAiB,aAAjB,mBAA2B,IAAI,CAAC,OAAO;AAAA,IACrC,GAAG;AAAA,IACH,OAAO,oBAAoB,WAAW,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ;AAAA,IACrE,OAAO,WAAW,EAAE,IAAI,GAAG,UAAU,EAAE,EAAE,IAAI,EAAE;AAAA,EAAA,QAC1C,CAAA;AACT,SAAO;AACT;AAEO,MAAM,cAAc;AAAA,EACzB;AAAA,EACA,OAAO,WAAgB;AACrB,UAAM,iBAAiB;AAAA,MACrB,GAAG;AAAA,IAAA;AAEL,UAAM,WAAW,MAAM;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,WAAO;AAAA,EACT;AACF;AAEO,MAAM,WAAW,iBAAiB,cAAc,OAAO,WAAgB;AAC5E,QAAM,aAAa;AAAA,IACjB,GAAG;AAAA,IACH,OAAO;AAAA;AAAA,EAAA;AAGT,QAAM,WAAW,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,SAAO;AACT,CAAC;AAEM,MAAM,cAAc;AAAA,EACzB;AAAA,EACA,OAAO,WAAgB;AACrB,UAAM,gBAAgB;AAAA,MACpB,GAAG;AAAA,IAAA;AAEL,UAAM,WAAW,MAAM;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,WAAO;AAAA,EACT;AACF;"}
@@ -1,7 +1,7 @@
1
1
  import { j as jsxRuntimeExports } from "./jsx-runtime-ClFauRgV.esm.js";
2
2
  import { A as internal_processStyles, e as _objectWithoutPropertiesLoose, x as styled$1, _ as _extends, j as capitalize, b as createTheme, o as isPlainObject, i as internal_serializeStyles, v as styleFunctionSx, B as resolveProps, D as formatMuiErrorMessage, E as clamp, P as PropTypes, F as handleBreakpoints, H as resolveBreakpointValues, I as createUnarySpacing, n as deepmerge, J as mergeBreakpointsInOrder, g as generateUtilityClass, K as getValue, d as defaultTheme$1, T as THEME_ID, k as interopRequireDefaultExports, l as getDefaultExportFromCjs, L as commonjsGlobal, u as useDefaultProps, f as alpha_1, y as lighten_1, z as darken_1 } from "./identifier-0SZUhw_A.esm.js";
3
- import { y as default_1$a, B as Button$1, M as Modal, S as SearchBar, E as Typography$1, _ as _inheritsLoose, V as forceReflow, i as Transition, W as classNamesShape, h as ButtonBase, o as chainPropTypes, u as useTheme$4, X as useSlotProps, P as Paper, Y as Fade, s as Modal$1, Z as Backdrop, $ as Portal, U as refType, p as HTMLElementType, a0 as Grow, a1 as FocusTrap, z as List, v as ListItem, a2 as TransitionGroup, a3 as isHostComponent, k as elementTypeAcceptingRef, N as Menu$1, m as getReactElementRef, I as resolveComponentProps, G as o, q as useRtl, O as MenuItem$1, a4 as MenuList, a5 as Divider$1, T as TextField$2, e as Tooltip$1, F as default_1$c, x as default_1$d, c as ConfirmPopUp, D as DynamicInput, d as Toast, n as elementAcceptingRef, a6 as exactProp, f as Box$1, b as Avatar } from "./appbar-hgvnXu2W.esm.js";
4
- import { d as useEnhancedEffect, r as requireCreateSvgIcon, T as Typography, i as default_1$b, t as useId, l as ownerDocument, e as useForkRef, k as useEventCallback, q as useControlled, v as unsupportedProp, o as ownerWindow, h as debounce$1, p as isMuiElement, u as useAuth } from "./useAuth-Cc85zx55.esm.js";
3
+ import { y as default_1$a, B as Button$1, M as Modal, S as SearchBar, E as Typography$1, _ as _inheritsLoose, V as forceReflow, i as Transition, W as classNamesShape, h as ButtonBase, o as chainPropTypes, u as useTheme$4, X as useSlotProps, P as Paper, Y as Fade, s as Modal$1, Z as Backdrop, $ as Portal, U as refType, p as HTMLElementType, a0 as Grow, a1 as FocusTrap, z as List, v as ListItem, a2 as TransitionGroup, a3 as isHostComponent, k as elementTypeAcceptingRef, N as Menu$1, m as getReactElementRef, I as resolveComponentProps, G as o, q as useRtl, O as MenuItem$1, a4 as MenuList, a5 as Divider$1, T as TextField$2, e as Tooltip$1, F as default_1$c, x as default_1$d, c as ConfirmPopUp, D as DynamicInput, d as Toast, n as elementAcceptingRef, a6 as exactProp, f as Box$1, b as Avatar } from "./appbar-DCbjpgYi.esm.js";
4
+ import { d as useEnhancedEffect, r as requireCreateSvgIcon, T as Typography, i as default_1$b, t as useId, l as ownerDocument, e as useForkRef, k as useEventCallback, q as useControlled, v as unsupportedProp, o as ownerWindow, h as debounce$1, p as isMuiElement, u as useAuth } from "./useAuth-DGqryENW.esm.js";
5
5
  import { AccordionSummary, AccordionDetails, styled as styled$2, Accordion as Accordion$1, InputAdornment as InputAdornment$1, TextField as TextField$1, Box, CircularProgress, FormHelperText as FormHelperText$1, Select as Select$2, useTheme as useTheme$3, useMediaQuery as useMediaQuery$1, DialogTitle, IconButton as IconButton$1, Tabs as Tabs$1, Tab as Tab$1, MenuItem, DialogActions as DialogActions$1, Checkbox as Checkbox$1, Radio as Radio$1, RadioGroup, FormControlLabel, Tooltip, Divider, OutlinedInput as OutlinedInput$1, ListItemIcon, ListItemText, Grid, DialogContent as DialogContent$1, Stack as Stack$1, Autocomplete, Menu as Menu$3, Alert as Alert$1, FormControl as FormControl$1, Chip as Chip$2, Dialog as Dialog$1, Grow as Grow$1, Breadcrumbs, List as List$1, ListItem as ListItem$1, ListItemAvatar, Switch as Switch$1 } from "@mui/material";
6
6
  import { useDrag, useDrop } from "react-dnd";
7
7
  /* empty css */
@@ -12,17 +12,17 @@ import { Controller, useWatch, useFormContext, useForm, FormProvider } from "rea
12
12
  /* empty css */
13
13
  import { useTranslation } from "react-i18next";
14
14
  import { h as getDisplayName, e as extendSxProp, a as clsx, b as composeClasses, s as styled$3, g as generateUtilityClasses, c as createSvgIcon, i as require$$1, r as rootShouldForwardProp, f as reactIsExports, j as slotShouldForwardProp } from "./notification-_WEc_EZI.esm.js";
15
- import { C as Chip$1, M as Menu$2, t as transformTableColumns, f as formBuilderDeConversion } from "./form-builder-deconversion-Dp1EYW-T.esm.js";
15
+ import { C as Chip$1, M as Menu$2, t as transformTableColumns, f as formBuilderDeConversion } from "./form-builder-deconversion-BMZYKavd.esm.js";
16
16
  import * as Yup from "yup";
17
17
  import dayjs from "dayjs";
18
- import { aX as formatText, A as fetchApi, p as checkUniqueFields, aa as getErrorMessage, aR as toFixedWithNumbers, ae as getFileName, M as formatAmount, Q as formatDate, W as formatLabel, S as SECTION_TYPES, aO as skuGenerator, aW as fetchOptions, at as getToken, b0 as postV1Designation, b1 as postV1DepartmentsTeams, b2 as postV1Departments, a1 as generateFields, a2 as generateQueryString, aG as postImportSheet, ak as getOperatorLabel, ab as getExcelExportTemplate, ao as getPdfExportTemplate, ac as getExcelTemplateGenerateTemplate, a3 as generateRandomId } from "./common-KSaUU42L.esm.js";
18
+ import { aX as formatText, A as fetchApi, p as checkUniqueFields, aa as getErrorMessage, aR as toFixedWithNumbers, ae as getFileName, M as formatAmount, Q as formatDate, W as formatLabel, S as SECTION_TYPES, aO as skuGenerator, aW as fetchOptions, at as getToken, b0 as postV1Designation, b1 as postV1DepartmentsTeams, b2 as postV1Departments, a1 as generateFields, a2 as generateQueryString, aG as postImportSheet, ak as getOperatorLabel, ab as getExcelExportTemplate, ao as getPdfExportTemplate, ac as getExcelTemplateGenerateTemplate, a3 as generateRandomId } from "./common-DM8k-KPd.esm.js";
19
19
  import _, { sortBy, debounce as debounce$2, flatMap } from "lodash";
20
20
  import { Add as Add$1, Close, Upload, KeyboardArrowUp, KeyboardArrowDown as KeyboardArrowDown$1, Cancel, Share, Save as Save$1 } from "@mui/icons-material";
21
- import { a as useApi, f as usePages, b as useDeepMemo, u as useAccountingSetting, d as useLocationFilter, g as usePermissions } from "./useAccountSetting-B9iSkd0R.esm.js";
21
+ import { a as useApi, f as usePages, b as useDeepMemo, u as useAccountingSetting, d as useLocationFilter, g as usePermissions } from "./useAccountSetting-CmJnSLPN.esm.js";
22
22
  import { v as viewTypes } from "./action-bar-BsXTcYpL.esm.js";
23
23
  import { QueryBuilder } from "react-querybuilder";
24
24
  import { QueryBuilderMaterial } from "@react-querybuilder/material";
25
- import { u as useLanguage } from "./useLangauge-MakL7mDD.esm.js";
25
+ import { u as useLanguage } from "./useLangauge-DsIhmkGI.esm.js";
26
26
  import { a as ArrowDown, T as Trash, C as CheckBoxIcon, r as RecgtangleIcon, F as FilledCircle, B as BlankCircle, M as MoreIcon, S as Save, f as Close$1, c as ArrowUpDown, E as Edit, k as FolderSave, b as ArrowDownTwo, t as Filter$1, j as FilterRemove, i as Export, D as DocumentDownload, l as Import } from "./trash-UdiORwWn.esm.js";
27
27
  import { br as getV1CompanyId, bs as postV1PaymentTerms, bt as postV1JournalTypes, bu as postV1SourceTypes, bv as postV1PartiesIndustry, bw as postV1CategoryItems, bx as postV1Brand, by as postV1InventoryFixedAssetItems, p as postV1Parties, bz as postV1WarehouseLocation, bA as getV1FilterFilterTable, bB as deleteV1FilterId, bC as putV1FilterId, A as getV1FilterResource, bD as postV1Filter } from "./api-CAAYzky9.esm.js";
28
28
  import { a as auth, b as getApiConfigSafe } from "./api-config-GOys-syK.esm.js";
@@ -31,10 +31,10 @@ import { P as PathnameHrms, a as PathnameUsers, b0 as routeToResourceMap } from
31
31
  import { useNavigate, useLocation, Link, Navigate } from "react-router-dom";
32
32
  import { u as useAppDispatch, a as useAppSelector } from "./hooks-Cj9Yhy-E.esm.js";
33
33
  import { useDropzone } from "react-dropzone";
34
- import { i as initialFilter, d as defaultPageState } from "./page-context-_PTfsRfz.esm.js";
34
+ import { i as initialFilter, d as defaultPageState } from "./page-context-DyIp7imO.esm.js";
35
35
  import { S as Search$1 } from "./tick-wc8bi2Fu.esm.js";
36
36
  import { useDispatch, useSelector } from "react-redux";
37
- import { b as setSharedPage, w as getAllUserAndDepartmentDropdown, p as pinToDashboardList, z as sharePage } from "./reducer-BqCQLXEh.esm.js";
37
+ import { b as setSharedPage, w as getAllUserAndDepartmentDropdown, p as pinToDashboardList, z as sharePage } from "./reducer-KYnbK8j_.esm.js";
38
38
  import ReactPhoneInput from "react-phone-input-2";
39
39
  import { useMaterialReactTable, MaterialReactTable } from "material-react-table";
40
40
  import { u as useTheme$1, a as useTheme$2, G as GlobalStyles } from "./CssBaseline-DD305XvW.esm.js";
@@ -42,7 +42,7 @@ import { D as Document } from "./document-rki7DMqA.esm.js";
42
42
  import { P as PathnameDocument } from "./modules-Dw3Ho8Qj.esm.js";
43
43
  import { f as PathnameRental, b as PathnameCrm, e as PathnamePurchase, d as PathnameManufacturing, c as PathnameInventory, a as PathnameAccounting } from "./pathname.rental-VYOFVGX6.esm.js";
44
44
  import parsePhoneNumberFromString from "libphonenumber-js";
45
- import { c as createParties } from "./actionCreator-DpYNRFa8.esm.js";
45
+ import { c as createParties } from "./actionCreator-BwFse5bg.esm.js";
46
46
  let cachedType;
47
47
  function detectScrollType() {
48
48
  if (cachedType) {
@@ -27682,23 +27682,24 @@ const InlineEditFields = ({
27682
27682
  const editFields = Object.keys(row._valuesCache || {});
27683
27683
  const dValues = {};
27684
27684
  row.getAllCells().forEach((cell) => {
27685
- var _a2, _b2, _c2, _d2, _e2;
27685
+ var _a2, _b2, _c2, _d2, _e2, _f2;
27686
27686
  if (((_a2 = cell.column.columnDef) == null ? void 0 : _a2.enableEditing) === void 0 || ((_b2 = cell.column.columnDef) == null ? void 0 : _b2.enableEditing) === true) {
27687
27687
  const { is_multiple, valueKey: valueKey2 } = ((_c2 = cell.column.columnDef) == null ? void 0 : _c2.editProperties) || {};
27688
- if (editFields.includes(cell.column.id)) {
27688
+ if (editFields.length === 0 || editFields.includes(cell.column.id)) {
27689
+ const cachedValue = (_d2 = row._valuesCache) == null ? void 0 : _d2[cell.column.id];
27689
27690
  const vl = _.get(row.original, valueKey2);
27690
27691
  if (editVariant === "select" && is_multiple) {
27691
- dValues[cell.column.id] = vl ? Array.isArray(vl) ? vl : [vl] : [];
27692
+ dValues[cell.column.id] = cachedValue ?? (vl ? Array.isArray(vl) ? vl : [vl] : []);
27692
27693
  } else if (editVariant === "date" || editVariant === "date_time") {
27693
- dValues[cell.column.id] = vl ? dayjs(vl).isValid() ? dayjs(vl) : void 0 : dayjs(row.original[cell.column.id]).isValid() ? dayjs(row.original[cell.column.id]) : void 0;
27694
+ dValues[cell.column.id] = cachedValue ?? (vl ? dayjs(vl).isValid() ? dayjs(vl) : void 0 : dayjs(row.original[cell.column.id]).isValid() ? dayjs(row.original[cell.column.id]) : void 0);
27694
27695
  } else {
27695
27696
  const rawValue = _.get(
27696
27697
  row.original,
27697
27698
  valueKey2,
27698
27699
  row.original[cell.column.id]
27699
27700
  );
27700
- const cellDefaultValue = (_e2 = (_d2 = cell.column.columnDef) == null ? void 0 : _d2.editProperties) == null ? void 0 : _e2.defaultValue;
27701
- dValues[cell.column.id] = (rawValue === "" || rawValue === void 0 || rawValue === null) && cellDefaultValue !== void 0 ? cellDefaultValue : rawValue;
27701
+ const cellDefaultValue = (_f2 = (_e2 = cell.column.columnDef) == null ? void 0 : _e2.editProperties) == null ? void 0 : _f2.defaultValue;
27702
+ dValues[cell.column.id] = cachedValue ?? ((rawValue === "" || rawValue === void 0 || rawValue === null) && cellDefaultValue !== void 0 ? cellDefaultValue : rawValue);
27702
27703
  }
27703
27704
  }
27704
27705
  }
@@ -28264,7 +28265,6 @@ const MaterialTable = React__default.memo(({
28264
28265
  col: c,
28265
28266
  row: row2,
28266
28267
  table: table2,
28267
- callback: (s) => console.log("Save", s),
28268
28268
  errors: validationErrors,
28269
28269
  validationSchema: validationSchema2,
28270
28270
  setValidationErrors,
@@ -28940,7 +28940,7 @@ function CustomerVendorModal({
28940
28940
  const { t } = useTranslation();
28941
28941
  const dispatch = useDispatch();
28942
28942
  const { user } = useAuth();
28943
- const isKSA = ((_a = getApiConfigSafe()) == null ? void 0 : _a.zatcaEnvironment) === "ksa";
28943
+ const isKSA = ((_a = getApiConfigSafe()) == null ? void 0 : _a.countryEnv) === "ksa";
28944
28944
  const locationRef = useRef(defaultLocationState);
28945
28945
  const [addressRows, setAddressRows] = useState([]);
28946
28946
  const [contactRows, setContactRows] = useState([]);
@@ -41796,4 +41796,4 @@ export {
41796
41796
  DynamicTable as y,
41797
41797
  DynamicTagsInput as z
41798
41798
  };
41799
- //# sourceMappingURL=android-12-switch-C54QA5wF.esm.js.map
41799
+ //# sourceMappingURL=android-12-switch-33rztRB8.esm.js.map