@erpsquad/common 1.9.97 → 1.9.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{android-12-switch-D3fU6Qtm.esm.js → android-12-switch-C3WlgdKQ.esm.js} +11 -9
- package/dist/chunks/{android-12-switch-D3fU6Qtm.esm.js.map → android-12-switch-C3WlgdKQ.esm.js.map} +1 -1
- package/dist/chunks/{android-12-switch-B5UmJZxg.js → android-12-switch-CVH-tc4s.js} +11 -9
- package/dist/chunks/{android-12-switch-B5UmJZxg.js.map → android-12-switch-CVH-tc4s.js.map} +1 -1
- package/dist/chunks/{apiHelper-BvnhN2uo.esm.js → apiHelper-DOCeCGD-.esm.js} +9 -4
- package/dist/chunks/apiHelper-DOCeCGD-.esm.js.map +1 -0
- package/dist/chunks/{apiHelper-BrzRrxpx.js → apiHelper-DSbRnRC1.js} +9 -4
- package/dist/chunks/apiHelper-DSbRnRC1.js.map +1 -0
- package/dist/chunks/{appbar-Dn00gF0A.esm.js → appbar-CrH_SjSo.esm.js} +2 -2
- package/dist/chunks/{appbar-Dn00gF0A.esm.js.map → appbar-CrH_SjSo.esm.js.map} +1 -1
- package/dist/chunks/{appbar-dBRF2bDa.js → appbar-D6bWAv8x.js} +2 -2
- package/dist/chunks/{appbar-dBRF2bDa.js.map → appbar-D6bWAv8x.js.map} +1 -1
- package/dist/chunks/{default-data-BCroqbYg.js → default-data-9-BQ_0wq.js} +7 -7
- package/dist/chunks/{default-data-BCroqbYg.js.map → default-data-9-BQ_0wq.js.map} +1 -1
- package/dist/chunks/{default-data-otyfdCNu.esm.js → default-data-D1f8nbl6.esm.js} +7 -7
- package/dist/chunks/{default-data-otyfdCNu.esm.js.map → default-data-D1f8nbl6.esm.js.map} +1 -1
- package/dist/chunks/{fullScreen-BHrQ0vTa.js → fullScreen-BtbOZq50.js} +2 -2
- package/dist/chunks/{fullScreen-BHrQ0vTa.js.map → fullScreen-BtbOZq50.js.map} +1 -1
- package/dist/chunks/{fullScreen-BdyRsEBm.esm.js → fullScreen-DSPrY2tY.esm.js} +2 -2
- package/dist/chunks/{fullScreen-BdyRsEBm.esm.js.map → fullScreen-DSPrY2tY.esm.js.map} +1 -1
- package/dist/chunks/module-routes-config-B8IucBuj.js +19 -0
- package/dist/chunks/module-routes-config-B8IucBuj.js.map +1 -0
- package/dist/chunks/module-routes-config-CCkZEtfg.esm.js +20 -0
- package/dist/chunks/module-routes-config-CCkZEtfg.esm.js.map +1 -0
- package/dist/chunks/{modules-BDHGBfwa.js → modules-C3T2Pnwc.js} +10 -5
- package/dist/chunks/modules-C3T2Pnwc.js.map +1 -0
- package/dist/chunks/{modules-UIv-lDBW.esm.js → modules-D5_hDIg9.esm.js} +10 -5
- package/dist/chunks/modules-D5_hDIg9.esm.js.map +1 -0
- package/dist/chunks/{page-context-DRbgpYFO.js → page-context-BKgBvHxw.js} +2 -2
- package/dist/chunks/{page-context-DRbgpYFO.js.map → page-context-BKgBvHxw.js.map} +1 -1
- package/dist/chunks/{page-context-DLUB4Qx9.esm.js → page-context-DATjzley.esm.js} +2 -2
- package/dist/chunks/{page-context-DLUB4Qx9.esm.js.map → page-context-DATjzley.esm.js.map} +1 -1
- package/dist/chunks/pathname.hrms-2_BEXO_r.js +262 -0
- package/dist/chunks/pathname.hrms-2_BEXO_r.js.map +1 -0
- package/dist/chunks/pathname.hrms-C5ojsho0.esm.js +263 -0
- package/dist/chunks/pathname.hrms-C5ojsho0.esm.js.map +1 -0
- package/dist/chunks/{route-page-map-DPlRjCJm.esm.js → route-page-map-C4wM0M4A.esm.js} +2 -2
- package/dist/chunks/{route-page-map-DPlRjCJm.esm.js.map → route-page-map-C4wM0M4A.esm.js.map} +1 -1
- package/dist/chunks/{route-page-map-Btth_lp5.js → route-page-map-CJLyl6P1.js} +2 -2
- package/dist/chunks/{route-page-map-Btth_lp5.js.map → route-page-map-CJLyl6P1.js.map} +1 -1
- package/dist/chunks/{sidebar-Dcw_6aQ7.js → sidebar-D2Q9rQrz.js} +2 -2
- package/dist/chunks/{sidebar-Dcw_6aQ7.js.map → sidebar-D2Q9rQrz.js.map} +1 -1
- package/dist/chunks/{sidebar-PZqii53B.esm.js → sidebar-gl6ML9FB.esm.js} +2 -2
- package/dist/chunks/{sidebar-PZqii53B.esm.js.map → sidebar-gl6ML9FB.esm.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-DY4Uklrh.esm.js → sidebarScreen-57BCIH9V.esm.js} +3 -3
- package/dist/chunks/{sidebarScreen-DY4Uklrh.esm.js.map → sidebarScreen-57BCIH9V.esm.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-FH1CEH8k.js → sidebarScreen-CnsblLHN.js} +3 -3
- package/dist/chunks/{sidebarScreen-FH1CEH8k.js.map → sidebarScreen-CnsblLHN.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-UBPKubPh.js → uom-field-wrapper-CjqCwlbR.js} +9 -9
- package/dist/chunks/{uom-field-wrapper-UBPKubPh.js.map → uom-field-wrapper-CjqCwlbR.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-CeeTt3Ph.esm.js → uom-field-wrapper-CzXOP8fb.esm.js} +9 -9
- package/dist/chunks/{uom-field-wrapper-CeeTt3Ph.esm.js.map → uom-field-wrapper-CzXOP8fb.esm.js.map} +1 -1
- package/dist/chunks/{useAccountSetting-B5qXSiGa.js → useAccountSetting-ChWinjqQ.js} +2 -2
- package/dist/chunks/{useAccountSetting-B5qXSiGa.js.map → useAccountSetting-ChWinjqQ.js.map} +1 -1
- package/dist/chunks/{useAccountSetting-BcPg1o6H.esm.js → useAccountSetting-nBdUAbgS.esm.js} +2 -2
- package/dist/chunks/{useAccountSetting-BcPg1o6H.esm.js.map → useAccountSetting-nBdUAbgS.esm.js.map} +1 -1
- package/dist/chunks/{useReduxIntegration-CPPcf1p7.esm.js → useReduxIntegration--sS2yQ4F.esm.js} +2 -2
- package/dist/chunks/{useReduxIntegration-CPPcf1p7.esm.js.map → useReduxIntegration--sS2yQ4F.esm.js.map} +1 -1
- package/dist/chunks/{useReduxIntegration-DvUNoDIr.js → useReduxIntegration-D6MZKdkS.js} +2 -2
- package/dist/chunks/{useReduxIntegration-DvUNoDIr.js.map → useReduxIntegration-D6MZKdkS.js.map} +1 -1
- package/dist/components/index.esm.js +6 -6
- package/dist/components/index.js +6 -6
- package/dist/components/providers/ERPUIProvider.d.ts +1 -0
- package/dist/constants/index.esm.js +3 -3
- package/dist/constants/index.js +3 -3
- package/dist/constants/pathnames/pathname.hrms.d.ts +61 -3
- package/dist/contexts/index.esm.js +1 -1
- package/dist/contexts/index.js +1 -1
- package/dist/hooks/index.esm.js +3 -3
- package/dist/hooks/index.js +3 -3
- package/dist/index.esm.js +45 -40
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +19 -14
- package/dist/index.js.map +1 -1
- package/dist/layout/index.esm.js +2 -2
- package/dist/layout/index.js +2 -2
- package/dist/src/components/providers/ERPUIProvider.d.ts +1 -0
- package/dist/src/constants/pathnames/pathname.hrms.d.ts +61 -3
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/module-routes-config.d.ts +34 -0
- package/dist/src/views/form-builder/utils/common.d.ts +1 -1
- package/dist/utils/index.esm.js +5 -0
- package/dist/utils/index.esm.js.map +1 -1
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/module-routes-config.d.ts +34 -0
- package/dist/views/form-builder/utils/common.d.ts +1 -1
- package/dist/views/index.esm.js +7 -7
- package/dist/views/index.js +6 -6
- package/package.json +1 -1
- package/dist/chunks/apiHelper-BrzRrxpx.js.map +0 -1
- package/dist/chunks/apiHelper-BvnhN2uo.esm.js.map +0 -1
- package/dist/chunks/modules-BDHGBfwa.js.map +0 -1
- package/dist/chunks/modules-UIv-lDBW.esm.js.map +0 -1
- package/dist/chunks/pathname.hrms-BVwbtB1M.js +0 -109
- package/dist/chunks/pathname.hrms-BVwbtB1M.js.map +0 -1
- package/dist/chunks/pathname.hrms-BiL7sQv0.esm.js +0 -110
- package/dist/chunks/pathname.hrms-BiL7sQv0.esm.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const jsxRuntime = require("./jsx-runtime-B6vEU3CM.js");
|
|
3
|
-
const appbar = require("./appbar-
|
|
3
|
+
const appbar = require("./appbar-D6bWAv8x.js");
|
|
4
4
|
const mui_constants = require("./mui.constants-CJEIUmWO.js");
|
|
5
5
|
const CssBaseline = require("./CssBaseline-Ba0wbudi.js");
|
|
6
6
|
const FullscreenLayout = (props) => {
|
|
@@ -12,4 +12,4 @@ const FullscreenLayout = (props) => {
|
|
|
12
12
|
] });
|
|
13
13
|
};
|
|
14
14
|
exports.FullscreenLayout = FullscreenLayout;
|
|
15
|
-
//# sourceMappingURL=fullScreen-
|
|
15
|
+
//# sourceMappingURL=fullScreen-BtbOZq50.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullScreen-
|
|
1
|
+
{"version":3,"file":"fullScreen-BtbOZq50.js","sources":["../../src/layout/fullScreen/fullScreen.tsx"],"sourcesContent":["import CssBaseline from '@mui/material/CssBaseline';\nimport Box from '@mui/material/Box';\n\nimport AppBar from '../../components/appbar/appbar';\nimport ActivityArea from '../../components/activityArea/activityArea';\n\nimport drawerWidth from '../../constants/mui.constants';\n\nexport interface IFullscreenLayoutProps {\n children: React.ReactNode;\n}\n\nexport const FullscreenLayout = (props: IFullscreenLayoutProps) => {\n\tconst { children } = props;\n\treturn (\n\t\t<Box sx={{ display: 'flex' }}>\n\t\t\t<CssBaseline />\n\t\t\t<AppBar width={drawerWidth} />\n\t\t\t<ActivityArea>{children}</ActivityArea>\n\t\t</Box>\n\t);\n};\n\nexport default FullscreenLayout;\n"],"names":["Box","jsx","CssBaseline","AppBar","drawerWidth","ActivityArea"],"mappings":";;;;;AAYO,MAAM,mBAAmB,CAAC,UAAkC;AAClE,QAAM,EAAE,aAAa;AACrB,2DACEA,OAAAA,KAAA,EAAI,IAAI,EAAE,SAAS,UACnB,UAAA;AAAA,IAAAC,2BAAAA,kBAAAA,IAACC,YAAAA,aAAA,EAAY;AAAA,IACbD,2BAAAA,kBAAAA,IAACE,OAAAA,eAAA,EAAO,OAAOC,cAAAA,YAAA,CAAa;AAAA,IAC5BH,iDAACI,OAAAA,gBAAc,SAAA,CAAS;AAAA,EAAA,GACzB;AAEF;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "./jsx-runtime-ClFauRgV.esm.js";
|
|
2
|
-
import { f as Box, a as AppBarWrapper, A as ActivityArea } from "./appbar-
|
|
2
|
+
import { f as Box, a as AppBarWrapper, A as ActivityArea } from "./appbar-CrH_SjSo.esm.js";
|
|
3
3
|
import { d as drawerWidth } from "./mui.constants-BFBzxaiA.esm.js";
|
|
4
4
|
import { C as CssBaseline } from "./CssBaseline-qnbPrAjr.esm.js";
|
|
5
5
|
const FullscreenLayout = (props) => {
|
|
@@ -13,4 +13,4 @@ const FullscreenLayout = (props) => {
|
|
|
13
13
|
export {
|
|
14
14
|
FullscreenLayout as F
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=fullScreen-
|
|
16
|
+
//# sourceMappingURL=fullScreen-DSPrY2tY.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullScreen-
|
|
1
|
+
{"version":3,"file":"fullScreen-DSPrY2tY.esm.js","sources":["../../src/layout/fullScreen/fullScreen.tsx"],"sourcesContent":["import CssBaseline from '@mui/material/CssBaseline';\nimport Box from '@mui/material/Box';\n\nimport AppBar from '../../components/appbar/appbar';\nimport ActivityArea from '../../components/activityArea/activityArea';\n\nimport drawerWidth from '../../constants/mui.constants';\n\nexport interface IFullscreenLayoutProps {\n children: React.ReactNode;\n}\n\nexport const FullscreenLayout = (props: IFullscreenLayoutProps) => {\n\tconst { children } = props;\n\treturn (\n\t\t<Box sx={{ display: 'flex' }}>\n\t\t\t<CssBaseline />\n\t\t\t<AppBar width={drawerWidth} />\n\t\t\t<ActivityArea>{children}</ActivityArea>\n\t\t</Box>\n\t);\n};\n\nexport default FullscreenLayout;\n"],"names":["jsx","AppBar"],"mappings":";;;;AAYO,MAAM,mBAAmB,CAAC,UAAkC;AAClE,QAAM,EAAE,aAAa;AACrB,gDACE,KAAA,EAAI,IAAI,EAAE,SAAS,UACnB,UAAA;AAAA,IAAAA,kCAAAA,IAAC,aAAA,EAAY;AAAA,IACbA,kCAAAA,IAACC,eAAA,EAAO,OAAO,YAAA,CAAa;AAAA,IAC5BD,sCAAC,gBAAc,SAAA,CAAS;AAAA,EAAA,GACzB;AAEF;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
let moduleRoutes = {};
|
|
3
|
+
function setModuleRoutes(routes) {
|
|
4
|
+
moduleRoutes = { ...moduleRoutes, ...routes };
|
|
5
|
+
}
|
|
6
|
+
function getModuleRoutes(moduleKey) {
|
|
7
|
+
return moduleRoutes[moduleKey] ?? [];
|
|
8
|
+
}
|
|
9
|
+
function getAllModuleRoutes() {
|
|
10
|
+
return moduleRoutes;
|
|
11
|
+
}
|
|
12
|
+
function resetModuleRoutes() {
|
|
13
|
+
moduleRoutes = {};
|
|
14
|
+
}
|
|
15
|
+
exports.getAllModuleRoutes = getAllModuleRoutes;
|
|
16
|
+
exports.getModuleRoutes = getModuleRoutes;
|
|
17
|
+
exports.resetModuleRoutes = resetModuleRoutes;
|
|
18
|
+
exports.setModuleRoutes = setModuleRoutes;
|
|
19
|
+
//# sourceMappingURL=module-routes-config-B8IucBuj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-routes-config-B8IucBuj.js","sources":["../../src/utils/module-routes-config.ts"],"sourcesContent":["/**\n * module-routes-config.ts\n *\n * Singleton store for per-module connected routes.\n * Each MFE app (hrms-fe, crm-fe, etc.) can inject its own full set of routes\n * via ERPUIProvider's `moduleRoutes` prop. modules.ts then reads from this\n * store instead of relying on the potentially-stale common-hub pathname files.\n *\n * Usage in consuming app (e.g. hrms-fe main.tsx):\n * <ERPUIProvider moduleRoutes={{ hrms: Object.values(PathnameHrms) }} ...>\n *\n * Usage in modules.ts:\n * import { getModuleRoutes } from '../utils/module-routes-config';\n * const hrmsRoutes = getModuleRoutes('hrms');\n */\n\ntype ModuleRoutesMap = Record<string, string[]>;\n\nlet moduleRoutes: ModuleRoutesMap = {};\n\n/**\n * Set module routes — called by ERPUIProvider when `moduleRoutes` prop is provided.\n */\nexport function setModuleRoutes(routes: ModuleRoutesMap): void {\n moduleRoutes = { ...moduleRoutes, ...routes };\n}\n\n/**\n * Get all connected routes for a given module key (e.g. 'hrms', 'crm').\n * Returns an empty array if no routes have been registered for that module.\n */\nexport function getModuleRoutes(moduleKey: string): string[] {\n return moduleRoutes[moduleKey] ?? [];\n}\n\n/**\n * Get the full routes map.\n */\nexport function getAllModuleRoutes(): ModuleRoutesMap {\n return moduleRoutes;\n}\n\n/**\n * Reset — primarily for testing.\n */\nexport function resetModuleRoutes(): void {\n moduleRoutes = {};\n}\n"],"names":[],"mappings":";AAkBA,IAAI,eAAgC,CAAA;AAK7B,SAAS,gBAAgB,QAA+B;AAC3D,iBAAe,EAAE,GAAG,cAAc,GAAG,OAAA;AACzC;AAMO,SAAS,gBAAgB,WAA6B;AACzD,SAAO,aAAa,SAAS,KAAK,CAAA;AACtC;AAKO,SAAS,qBAAsC;AAClD,SAAO;AACX;AAKO,SAAS,oBAA0B;AACtC,iBAAe,CAAA;AACnB;;;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
let moduleRoutes = {};
|
|
2
|
+
function setModuleRoutes(routes) {
|
|
3
|
+
moduleRoutes = { ...moduleRoutes, ...routes };
|
|
4
|
+
}
|
|
5
|
+
function getModuleRoutes(moduleKey) {
|
|
6
|
+
return moduleRoutes[moduleKey] ?? [];
|
|
7
|
+
}
|
|
8
|
+
function getAllModuleRoutes() {
|
|
9
|
+
return moduleRoutes;
|
|
10
|
+
}
|
|
11
|
+
function resetModuleRoutes() {
|
|
12
|
+
moduleRoutes = {};
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
getModuleRoutes as a,
|
|
16
|
+
getAllModuleRoutes as g,
|
|
17
|
+
resetModuleRoutes as r,
|
|
18
|
+
setModuleRoutes as s
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=module-routes-config-CCkZEtfg.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-routes-config-CCkZEtfg.esm.js","sources":["../../src/utils/module-routes-config.ts"],"sourcesContent":["/**\n * module-routes-config.ts\n *\n * Singleton store for per-module connected routes.\n * Each MFE app (hrms-fe, crm-fe, etc.) can inject its own full set of routes\n * via ERPUIProvider's `moduleRoutes` prop. modules.ts then reads from this\n * store instead of relying on the potentially-stale common-hub pathname files.\n *\n * Usage in consuming app (e.g. hrms-fe main.tsx):\n * <ERPUIProvider moduleRoutes={{ hrms: Object.values(PathnameHrms) }} ...>\n *\n * Usage in modules.ts:\n * import { getModuleRoutes } from '../utils/module-routes-config';\n * const hrmsRoutes = getModuleRoutes('hrms');\n */\n\ntype ModuleRoutesMap = Record<string, string[]>;\n\nlet moduleRoutes: ModuleRoutesMap = {};\n\n/**\n * Set module routes — called by ERPUIProvider when `moduleRoutes` prop is provided.\n */\nexport function setModuleRoutes(routes: ModuleRoutesMap): void {\n moduleRoutes = { ...moduleRoutes, ...routes };\n}\n\n/**\n * Get all connected routes for a given module key (e.g. 'hrms', 'crm').\n * Returns an empty array if no routes have been registered for that module.\n */\nexport function getModuleRoutes(moduleKey: string): string[] {\n return moduleRoutes[moduleKey] ?? [];\n}\n\n/**\n * Get the full routes map.\n */\nexport function getAllModuleRoutes(): ModuleRoutesMap {\n return moduleRoutes;\n}\n\n/**\n * Reset — primarily for testing.\n */\nexport function resetModuleRoutes(): void {\n moduleRoutes = {};\n}\n"],"names":[],"mappings":"AAkBA,IAAI,eAAgC,CAAA;AAK7B,SAAS,gBAAgB,QAA+B;AAC3D,iBAAe,EAAE,GAAG,cAAc,GAAG,OAAA;AACzC;AAMO,SAAS,gBAAgB,WAA6B;AACzD,SAAO,aAAa,SAAS,KAAK,CAAA;AACtC;AAKO,SAAS,qBAAsC;AAClD,SAAO;AACX;AAKO,SAAS,oBAA0B;AACtC,iBAAe,CAAA;AACnB;"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const pathname_rental = require("./pathname.rental-C9fm1WTq.js");
|
|
3
3
|
const images = require("./images-Cmybjd2S.js");
|
|
4
|
-
const pathname_hrms = require("./pathname.hrms-
|
|
4
|
+
const pathname_hrms = require("./pathname.hrms-2_BEXO_r.js");
|
|
5
5
|
const apiConfig = require("./api-config-DXwDMFn-.js");
|
|
6
|
+
const moduleRoutesConfig = require("./module-routes-config-B8IucBuj.js");
|
|
6
7
|
let PathnameDocument = {
|
|
7
8
|
LANDING_PAGE: "/",
|
|
8
9
|
PRIVATE: "/private",
|
|
@@ -176,9 +177,13 @@ const modules = (t) => {
|
|
|
176
177
|
permission: "",
|
|
177
178
|
beModuleName: "hrms",
|
|
178
179
|
bg: "rgba(75, 179, 255, 0.10)",
|
|
179
|
-
connectedRoutes:
|
|
180
|
-
|
|
181
|
-
|
|
180
|
+
connectedRoutes: (() => {
|
|
181
|
+
const mfeRoutes = moduleRoutesConfig.getModuleRoutes("hrms");
|
|
182
|
+
if (mfeRoutes.length > 0) return mfeRoutes;
|
|
183
|
+
return Object.values(pathname_hrms.PathnameHrms).map(
|
|
184
|
+
(path) => pathname_rental.Pathname.DASHBOARD_HRMS + path
|
|
185
|
+
);
|
|
186
|
+
})(),
|
|
182
187
|
translationModule: ["hrms"]
|
|
183
188
|
},
|
|
184
189
|
{
|
|
@@ -237,4 +242,4 @@ const modules = (t) => {
|
|
|
237
242
|
};
|
|
238
243
|
exports.PathnameDocument = PathnameDocument;
|
|
239
244
|
exports.modules = modules;
|
|
240
|
-
//# sourceMappingURL=modules-
|
|
245
|
+
//# sourceMappingURL=modules-C3T2Pnwc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules-C3T2Pnwc.js","sources":["../../src/constants/pathnames/pathname.document.ts","../../src/constants/pathnames/pathname.onboarding.ts","../../src/constants/modules.ts"],"sourcesContent":["import { Pathname } from \"./pathname\";\n\nexport const PathnameGenerator = (name: string) => {\n return Pathname.DASHBOARD_DOCUMENT + name;\n};\n\nexport let PathnameDocument = {\n LANDING_PAGE: \"/\",\n PRIVATE: \"/private\",\n SHARED: \"/shared\",\n PUBLIC: \"/public\",\n SETTING: \"/setting\",\n FORMS: \"/setting/forms\",\n ADD_CUSTOM_FIELDS: \"/setting/forms/add-custom-fields\",\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pathname } from \"./pathname\";\n\nexport const PathnameGenerator = (name: string): string => Pathname.DASHBOARD_ONBOARDING + name;\n\nconst CRUD_ACTIONS = { ADD: 'add', VIEW: 'view', EDIT: 'edit' } as const;\n\ntype ModulePaths = Record<string, string>;\n\nexport const MAIN_MENU: ModulePaths = {\n SETTINGS: 'settings',\n};\n\nexport const MODULES: ModulePaths = {\n SETTINGS: 'settings',\n};\n\nexport const generateCrudPaths = (\n base: string,\n entity: string,\n prefix = '',\n keyPostfix = ''\n) =>\n { \n // console.log(\"CROSS_HIRE_ORDERS_GRNS 111\", MODULES[base])\n return Object.fromEntries(\n Object.entries(CRUD_ACTIONS).map(([key, action]) => {\n const isEditOrView = action === 'edit' || action === 'view';\n const id = (isEditOrView && MODULES[base]?.includes(':id')) ? `:${entity?.replace('-', \"\")}Id` : ':id'\n const routeParts = [prefix, MODULES[base]];\n if (isEditOrView) {\n routeParts.push(id, `${action}-${entity}`);\n } else {\n routeParts.push(`${action}-${entity}`);\n }\n\n return [\n `${key}_${keyPostfix.replace(/[^a-zA-Z0-9]/g, '_').toUpperCase()}`,\n `/${routeParts.filter(Boolean).join('/')}`,\n ];\n })\n );\n}\n\n\nexport const generateModulePaths = (mainModule: keyof typeof MAIN_MENU, subModule: keyof typeof MODULES = '', entity: string, keyPostfix = '') => ({\n [subModule.replace(/[^a-zA-Z0-9]/g, '_').toUpperCase()]: `/${[MAIN_MENU[mainModule], MODULES[subModule]].filter(Boolean).join('/')}`,\n ...generateCrudPaths(subModule, entity, MAIN_MENU[mainModule], keyPostfix),\n});\n\nexport const PathnameOnBoarding: Record<any, string> = {\n LANDING_PAGE: '/',\n LIST: '/list',\n FORMS: \"/settings/forms\",\n};\n\n","import { Pathname } from \"./pathnames/pathname\";\nimport image from \"../assets/images\";\nimport { PathnameUsers } from \"./pathnames/pathname.user\";\nimport { PathnameAccounting } from \"./pathnames/pathname.accounting\";\nimport { PathnameDocument } from \"./pathnames/pathname.document\";\nimport { PathnameInventory } from \"./pathnames/pathname.inventory\";\nimport { PathnameManufacturing } from \"./pathnames/pathname.manufacturing\";\nimport { PathnameCrm } from \"./pathnames/pathname.crm\";\nimport { PathnamePurchase } from \"./pathnames/pathname.procurement\";\nimport { PathnameRental } from \"./pathnames/pathname.rental\";\nimport { PathnameHrms } from \"./pathnames/pathname.hrms\";\nimport { PathnameOnBoarding } from \"./pathnames/pathname.onboarding\";\nimport { getApiConfig } from \"../utils/api-config\";\nimport { getModuleRoutes } from \"../utils/module-routes-config\";\n\n// Helper to conditionally create the onboarding menu item\nconst getOnboardingMenuItem = (t: any, env: string) => {\n if (!['ksa'].includes(env)) {\n return [];\n }\n\n return [\n {\n label: t(\"onboarding.name\"),\n link: Pathname.DASHBOARD_ONBOARDING,\n sidebar: image.sidebar.user,\n bacModuleName: \"user\",\n icon: image.user,\n permission: \"\",\n beModuleName: \"rbac\",\n bg: \"rgba(204, 172, 255, 0.10)\",\n connectedRoutes: Object.values(PathnameOnBoarding).map(\n (path: string) => Pathname.DASHBOARD_ONBOARDING + path\n ),\n translationModule: [\"onboarding\"],\n },\n ];\n};\n\nconst modules = (t: any) => {\n const u_data = localStorage.getItem(\"_u_data\") || undefined;\n const userData = u_data ? JSON.parse(u_data) : \"\";\n const config: any = getApiConfig();\n const access_modules = userData?.module_access || [];\n const VITE_APP_ENV = config?.zatcaEnvironment || 'simulation';\n const accessibleModules = access_modules.map((module: any) => module.module_name);\n const accessibleModulesSet = new Set(accessibleModules);\n\n const MenuBar = [\n {\n label: t(\"user.name\"),\n link: Pathname.DASHBOARD_USER,\n sidebar: image.sidebar.user,\n bacModuleName: \"user\",\n icon: image.user,\n permission: \"\",\n beModuleName: \"rbac\",\n bg: \"rgba(204, 172, 255, 0.10)\",\n connectedRoutes: Object.values(PathnameUsers).map(\n (path: string) => Pathname.DASHBOARD_USER + path\n ),\n translationModule: [\"user\"]\n },\n {\n label: t(\"document.name\"),\n link: Pathname.DASHBOARD_DOCUMENT,\n sidebar: image.sidebar.document,\n bacModuleName: \"document\",\n icon: image.document,\n permission: \"\",\n beModuleName: \"document\",\n bg: \"rgba(255, 164, 125, 0.10)\",\n connectedRoutes: Object.values(PathnameDocument).map(\n (path: string) => Pathname.DASHBOARD_DOCUMENT + path\n ),\n translationModule: [\"document\"]\n },\n {\n label: t(\"accounting.name\"),\n link: Pathname.DASHBOARD_ACCOUNTING,\n sidebar: image.sidebar.accountingIcon,\n bacModuleName: \"accounts-and-finance\",\n icon: image.accounting,\n permission: \"\",\n beModuleName: \"accounts-and-finance\",\n bg: \"rgba(102, 215, 113, 0.10)\",\n connectedRoutes: Object.values(PathnameAccounting).map(\n (path: string) => Pathname.DASHBOARD_ACCOUNTING + path\n ),\n translationModule: [\"accounting\"]\n },\n {\n label: t(\"inventory.name\"),\n link: Pathname.DASHBOARD_INVENTORY,\n sidebar: image.sidebar.inventoryIcon,\n bacModuleName: \"inventory\",\n icon: image.inventory,\n permission: \"\",\n beModuleName: \"inventory\",\n bg: \"rgba(102, 120, 215, 0.20)\",\n connectedRoutes: Object.values(PathnameInventory).map(\n (path: string) => Pathname.DASHBOARD_INVENTORY + path\n ),\n translationModule: [\"inventory\"]\n },\n {\n label: t(\"project.name\"),\n link: Pathname.DASHBOARD_PROJECT,\n sidebar: image.sidebar.projectIcon,\n bacModuleName: \"project\",\n icon: image.project,\n permission: \"\",\n beModuleName: \"project\",\n bg: \"rgba(215, 102, 170, 0.10)\",\n connectedRoutes: [],\n translationModule: [\"project\"]\n },\n {\n label: t(\"procurement.name\"),\n link: Pathname.DASHBOARD_PROCUREMENT,\n sidebar: image.sidebar.procurementIcon,\n bacModuleName: \"purchase\",\n icon: image.procurement,\n permission: \"\",\n beModuleName: \"purchase\",\n bg: \"rgba(255, 125, 172, 0.10)\",\n connectedRoutes: Object.values(PathnamePurchase).map(\n (path: string) => Pathname.DASHBOARD_PROCUREMENT + path\n ),\n // connectedRoutes: [],\n translationModule: [\"procurement\"]\n },\n {\n label: t(\"manufacturing.name\"),\n link: Pathname.DASHBOARD_MANUFACTURING,\n sidebar: image.sidebar.manufacturingIcon,\n bacModuleName: \"manufacturing\",\n icon: image.manufacturing,\n permission: \"\",\n beModuleName: \"manufacturing\",\n bg: \"rgba(244, 96, 54, 0.10)\",\n connectedRoutes: Object.values(PathnameManufacturing).map(\n (path: string) => Pathname.DASHBOARD_MANUFACTURING + path\n ),\n translationModule: [\"manufacturing\"]\n },\n {\n label: t(\"crm.name\"),\n link: Pathname.DASHBOARD_CRM,\n sidebar: image.sidebar.crmIcon,\n bacModuleName: \"sales\",\n icon: image.crm,\n permission: \"\",\n beModuleName: \"sales\",\n bg: \"rgba(111, 102, 215, 0.10)\",\n connectedRoutes: Object.values(PathnameCrm).map(\n (path: string) => Pathname.DASHBOARD_CRM + path\n ),\n translationModule: [\"crm\"]\n },\n // {\n // label: t(\"purchase.name\"),\n // link: Pathname.DASHBOARD_PURCHASE,\n // sidebar: image.sidebar.purchaseIcon,\n // icon: image.sidebar.purchaseIcon,\n // permission: \"\",\n // bg: \"rgba(111, 102, 215, 0.10)\",\n // connectedRoutes: [],\n // },\n {\n label: t(\"hrms.name\"),\n link: Pathname.DASHBOARD_HRMS,\n sidebar: image.sidebar.hrmsIcon,\n bacModuleName: \"hrms\",\n icon: image.hrms,\n permission: \"\",\n beModuleName: \"hrms\",\n bg: \"rgba(75, 179, 255, 0.10)\",\n connectedRoutes: (() => {\n // Prefer MFE-injected routes (set via ERPUIProvider's moduleRoutes prop)\n // which contain the full, up-to-date route list from the HRMS MFE.\n // Fall back to common-hub's PathnameHrms if no MFE routes were injected.\n const mfeRoutes = getModuleRoutes('hrms');\n if (mfeRoutes.length > 0) return mfeRoutes;\n return Object.values(PathnameHrms).map(\n (path: string) => Pathname.DASHBOARD_HRMS + path\n );\n })(),\n translationModule: [\"hrms\"]\n },\n {\n label: t(\"office.name\"),\n link: Pathname.DASHBOARD_OFFICE,\n sidebar: image.sidebar.officeIcon,\n bacModuleName: \"office\",\n icon: image.office,\n permission: \"\",\n beModuleName: \"office\",\n bg: \"rgba(0, 172, 131, 0.10)\",\n connectedRoutes: [],\n translationModule: [\"office\"]\n },\n {\n label: t(\"rental.name\"),\n link: Pathname.DASHBOARD_RENTAL,\n sidebar: image.sidebar.rentalIcon,\n bacModuleName: \"rental\",\n icon: image.rental,\n permission: \"\",\n beModuleName: \"rental\",\n bg: \"rgba(0, 121, 63, 0.10)\",\n connectedRoutes: Object.values(PathnameRental).map(\n (path: string) => Pathname.DASHBOARD_RENTAL + path\n ),\n translationModule: [\"rental\",\"inventory\"]\n },\n {\n label: \"Settings\",\n link: Pathname.DASHBOARD_QUOTES,\n sidebar: image.sidebar.setting,\n bacModuleName: \"setting\",\n icon: image.settings,\n permission: \"\",\n beModuleName: \"setting\",\n bg: \"rgba(125, 154, 255, 0.10)\",\n connectedRoutes: [],\n translationModule: [\"settings\"]\n },\n ...getOnboardingMenuItem(t, VITE_APP_ENV),\n ];\n\n function filterMenu(menu: any[]) {\n return menu.filter((item) => {\n const isModuleAccessible = accessibleModulesSet.has(item.bacModuleName);\n let hasValidSubmenu = false;\n\n if (item.submenu && item.submenu.length > 0) {\n item.submenu = filterMenu(item.submenu); // Recursively filter submenu\n hasValidSubmenu = item.submenu.length > 0;\n }\n\n return isModuleAccessible || hasValidSubmenu;\n });\n }\n\n const filteredMenu = filterMenu(MenuBar);\n\n return filteredMenu;\n};\n\nexport default modules;"],"names":["Pathname","image","getApiConfig","module","PathnameUsers","PathnameAccounting","PathnameInventory","PathnamePurchase","PathnameManufacturing","PathnameCrm","getModuleRoutes","PathnameHrms","PathnameRental"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { P as Pathname, a as PathnameAccounting, c as PathnameInventory, e as PathnamePurchase, d as PathnameManufacturing, b as PathnameCrm, f as PathnameRental } from "./pathname.rental-VYOFVGX6.esm.js";
|
|
2
2
|
import { i as images } from "./images-BY6aQF32.esm.js";
|
|
3
|
-
import { a as PathnameUsers, P as PathnameHrms } from "./pathname.hrms-
|
|
3
|
+
import { a as PathnameUsers, P as PathnameHrms } from "./pathname.hrms-C5ojsho0.esm.js";
|
|
4
4
|
import { g as getApiConfig } from "./api-config-GOys-syK.esm.js";
|
|
5
|
+
import { a as getModuleRoutes } from "./module-routes-config-CCkZEtfg.esm.js";
|
|
5
6
|
let PathnameDocument = {
|
|
6
7
|
LANDING_PAGE: "/",
|
|
7
8
|
PRIVATE: "/private",
|
|
@@ -175,9 +176,13 @@ const modules = (t) => {
|
|
|
175
176
|
permission: "",
|
|
176
177
|
beModuleName: "hrms",
|
|
177
178
|
bg: "rgba(75, 179, 255, 0.10)",
|
|
178
|
-
connectedRoutes:
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
connectedRoutes: (() => {
|
|
180
|
+
const mfeRoutes = getModuleRoutes("hrms");
|
|
181
|
+
if (mfeRoutes.length > 0) return mfeRoutes;
|
|
182
|
+
return Object.values(PathnameHrms).map(
|
|
183
|
+
(path) => Pathname.DASHBOARD_HRMS + path
|
|
184
|
+
);
|
|
185
|
+
})(),
|
|
181
186
|
translationModule: ["hrms"]
|
|
182
187
|
},
|
|
183
188
|
{
|
|
@@ -238,4 +243,4 @@ export {
|
|
|
238
243
|
PathnameDocument as P,
|
|
239
244
|
modules as m
|
|
240
245
|
};
|
|
241
|
-
//# sourceMappingURL=modules-
|
|
246
|
+
//# sourceMappingURL=modules-D5_hDIg9.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules-D5_hDIg9.esm.js","sources":["../../src/constants/pathnames/pathname.document.ts","../../src/constants/pathnames/pathname.onboarding.ts","../../src/constants/modules.ts"],"sourcesContent":["import { Pathname } from \"./pathname\";\n\nexport const PathnameGenerator = (name: string) => {\n return Pathname.DASHBOARD_DOCUMENT + name;\n};\n\nexport let PathnameDocument = {\n LANDING_PAGE: \"/\",\n PRIVATE: \"/private\",\n SHARED: \"/shared\",\n PUBLIC: \"/public\",\n SETTING: \"/setting\",\n FORMS: \"/setting/forms\",\n ADD_CUSTOM_FIELDS: \"/setting/forms/add-custom-fields\",\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pathname } from \"./pathname\";\n\nexport const PathnameGenerator = (name: string): string => Pathname.DASHBOARD_ONBOARDING + name;\n\nconst CRUD_ACTIONS = { ADD: 'add', VIEW: 'view', EDIT: 'edit' } as const;\n\ntype ModulePaths = Record<string, string>;\n\nexport const MAIN_MENU: ModulePaths = {\n SETTINGS: 'settings',\n};\n\nexport const MODULES: ModulePaths = {\n SETTINGS: 'settings',\n};\n\nexport const generateCrudPaths = (\n base: string,\n entity: string,\n prefix = '',\n keyPostfix = ''\n) =>\n { \n // console.log(\"CROSS_HIRE_ORDERS_GRNS 111\", MODULES[base])\n return Object.fromEntries(\n Object.entries(CRUD_ACTIONS).map(([key, action]) => {\n const isEditOrView = action === 'edit' || action === 'view';\n const id = (isEditOrView && MODULES[base]?.includes(':id')) ? `:${entity?.replace('-', \"\")}Id` : ':id'\n const routeParts = [prefix, MODULES[base]];\n if (isEditOrView) {\n routeParts.push(id, `${action}-${entity}`);\n } else {\n routeParts.push(`${action}-${entity}`);\n }\n\n return [\n `${key}_${keyPostfix.replace(/[^a-zA-Z0-9]/g, '_').toUpperCase()}`,\n `/${routeParts.filter(Boolean).join('/')}`,\n ];\n })\n );\n}\n\n\nexport const generateModulePaths = (mainModule: keyof typeof MAIN_MENU, subModule: keyof typeof MODULES = '', entity: string, keyPostfix = '') => ({\n [subModule.replace(/[^a-zA-Z0-9]/g, '_').toUpperCase()]: `/${[MAIN_MENU[mainModule], MODULES[subModule]].filter(Boolean).join('/')}`,\n ...generateCrudPaths(subModule, entity, MAIN_MENU[mainModule], keyPostfix),\n});\n\nexport const PathnameOnBoarding: Record<any, string> = {\n LANDING_PAGE: '/',\n LIST: '/list',\n FORMS: \"/settings/forms\",\n};\n\n","import { Pathname } from \"./pathnames/pathname\";\nimport image from \"../assets/images\";\nimport { PathnameUsers } from \"./pathnames/pathname.user\";\nimport { PathnameAccounting } from \"./pathnames/pathname.accounting\";\nimport { PathnameDocument } from \"./pathnames/pathname.document\";\nimport { PathnameInventory } from \"./pathnames/pathname.inventory\";\nimport { PathnameManufacturing } from \"./pathnames/pathname.manufacturing\";\nimport { PathnameCrm } from \"./pathnames/pathname.crm\";\nimport { PathnamePurchase } from \"./pathnames/pathname.procurement\";\nimport { PathnameRental } from \"./pathnames/pathname.rental\";\nimport { PathnameHrms } from \"./pathnames/pathname.hrms\";\nimport { PathnameOnBoarding } from \"./pathnames/pathname.onboarding\";\nimport { getApiConfig } from \"../utils/api-config\";\nimport { getModuleRoutes } from \"../utils/module-routes-config\";\n\n// Helper to conditionally create the onboarding menu item\nconst getOnboardingMenuItem = (t: any, env: string) => {\n if (!['ksa'].includes(env)) {\n return [];\n }\n\n return [\n {\n label: t(\"onboarding.name\"),\n link: Pathname.DASHBOARD_ONBOARDING,\n sidebar: image.sidebar.user,\n bacModuleName: \"user\",\n icon: image.user,\n permission: \"\",\n beModuleName: \"rbac\",\n bg: \"rgba(204, 172, 255, 0.10)\",\n connectedRoutes: Object.values(PathnameOnBoarding).map(\n (path: string) => Pathname.DASHBOARD_ONBOARDING + path\n ),\n translationModule: [\"onboarding\"],\n },\n ];\n};\n\nconst modules = (t: any) => {\n const u_data = localStorage.getItem(\"_u_data\") || undefined;\n const userData = u_data ? JSON.parse(u_data) : \"\";\n const config: any = getApiConfig();\n const access_modules = userData?.module_access || [];\n const VITE_APP_ENV = config?.zatcaEnvironment || 'simulation';\n const accessibleModules = access_modules.map((module: any) => module.module_name);\n const accessibleModulesSet = new Set(accessibleModules);\n\n const MenuBar = [\n {\n label: t(\"user.name\"),\n link: Pathname.DASHBOARD_USER,\n sidebar: image.sidebar.user,\n bacModuleName: \"user\",\n icon: image.user,\n permission: \"\",\n beModuleName: \"rbac\",\n bg: \"rgba(204, 172, 255, 0.10)\",\n connectedRoutes: Object.values(PathnameUsers).map(\n (path: string) => Pathname.DASHBOARD_USER + path\n ),\n translationModule: [\"user\"]\n },\n {\n label: t(\"document.name\"),\n link: Pathname.DASHBOARD_DOCUMENT,\n sidebar: image.sidebar.document,\n bacModuleName: \"document\",\n icon: image.document,\n permission: \"\",\n beModuleName: \"document\",\n bg: \"rgba(255, 164, 125, 0.10)\",\n connectedRoutes: Object.values(PathnameDocument).map(\n (path: string) => Pathname.DASHBOARD_DOCUMENT + path\n ),\n translationModule: [\"document\"]\n },\n {\n label: t(\"accounting.name\"),\n link: Pathname.DASHBOARD_ACCOUNTING,\n sidebar: image.sidebar.accountingIcon,\n bacModuleName: \"accounts-and-finance\",\n icon: image.accounting,\n permission: \"\",\n beModuleName: \"accounts-and-finance\",\n bg: \"rgba(102, 215, 113, 0.10)\",\n connectedRoutes: Object.values(PathnameAccounting).map(\n (path: string) => Pathname.DASHBOARD_ACCOUNTING + path\n ),\n translationModule: [\"accounting\"]\n },\n {\n label: t(\"inventory.name\"),\n link: Pathname.DASHBOARD_INVENTORY,\n sidebar: image.sidebar.inventoryIcon,\n bacModuleName: \"inventory\",\n icon: image.inventory,\n permission: \"\",\n beModuleName: \"inventory\",\n bg: \"rgba(102, 120, 215, 0.20)\",\n connectedRoutes: Object.values(PathnameInventory).map(\n (path: string) => Pathname.DASHBOARD_INVENTORY + path\n ),\n translationModule: [\"inventory\"]\n },\n {\n label: t(\"project.name\"),\n link: Pathname.DASHBOARD_PROJECT,\n sidebar: image.sidebar.projectIcon,\n bacModuleName: \"project\",\n icon: image.project,\n permission: \"\",\n beModuleName: \"project\",\n bg: \"rgba(215, 102, 170, 0.10)\",\n connectedRoutes: [],\n translationModule: [\"project\"]\n },\n {\n label: t(\"procurement.name\"),\n link: Pathname.DASHBOARD_PROCUREMENT,\n sidebar: image.sidebar.procurementIcon,\n bacModuleName: \"purchase\",\n icon: image.procurement,\n permission: \"\",\n beModuleName: \"purchase\",\n bg: \"rgba(255, 125, 172, 0.10)\",\n connectedRoutes: Object.values(PathnamePurchase).map(\n (path: string) => Pathname.DASHBOARD_PROCUREMENT + path\n ),\n // connectedRoutes: [],\n translationModule: [\"procurement\"]\n },\n {\n label: t(\"manufacturing.name\"),\n link: Pathname.DASHBOARD_MANUFACTURING,\n sidebar: image.sidebar.manufacturingIcon,\n bacModuleName: \"manufacturing\",\n icon: image.manufacturing,\n permission: \"\",\n beModuleName: \"manufacturing\",\n bg: \"rgba(244, 96, 54, 0.10)\",\n connectedRoutes: Object.values(PathnameManufacturing).map(\n (path: string) => Pathname.DASHBOARD_MANUFACTURING + path\n ),\n translationModule: [\"manufacturing\"]\n },\n {\n label: t(\"crm.name\"),\n link: Pathname.DASHBOARD_CRM,\n sidebar: image.sidebar.crmIcon,\n bacModuleName: \"sales\",\n icon: image.crm,\n permission: \"\",\n beModuleName: \"sales\",\n bg: \"rgba(111, 102, 215, 0.10)\",\n connectedRoutes: Object.values(PathnameCrm).map(\n (path: string) => Pathname.DASHBOARD_CRM + path\n ),\n translationModule: [\"crm\"]\n },\n // {\n // label: t(\"purchase.name\"),\n // link: Pathname.DASHBOARD_PURCHASE,\n // sidebar: image.sidebar.purchaseIcon,\n // icon: image.sidebar.purchaseIcon,\n // permission: \"\",\n // bg: \"rgba(111, 102, 215, 0.10)\",\n // connectedRoutes: [],\n // },\n {\n label: t(\"hrms.name\"),\n link: Pathname.DASHBOARD_HRMS,\n sidebar: image.sidebar.hrmsIcon,\n bacModuleName: \"hrms\",\n icon: image.hrms,\n permission: \"\",\n beModuleName: \"hrms\",\n bg: \"rgba(75, 179, 255, 0.10)\",\n connectedRoutes: (() => {\n // Prefer MFE-injected routes (set via ERPUIProvider's moduleRoutes prop)\n // which contain the full, up-to-date route list from the HRMS MFE.\n // Fall back to common-hub's PathnameHrms if no MFE routes were injected.\n const mfeRoutes = getModuleRoutes('hrms');\n if (mfeRoutes.length > 0) return mfeRoutes;\n return Object.values(PathnameHrms).map(\n (path: string) => Pathname.DASHBOARD_HRMS + path\n );\n })(),\n translationModule: [\"hrms\"]\n },\n {\n label: t(\"office.name\"),\n link: Pathname.DASHBOARD_OFFICE,\n sidebar: image.sidebar.officeIcon,\n bacModuleName: \"office\",\n icon: image.office,\n permission: \"\",\n beModuleName: \"office\",\n bg: \"rgba(0, 172, 131, 0.10)\",\n connectedRoutes: [],\n translationModule: [\"office\"]\n },\n {\n label: t(\"rental.name\"),\n link: Pathname.DASHBOARD_RENTAL,\n sidebar: image.sidebar.rentalIcon,\n bacModuleName: \"rental\",\n icon: image.rental,\n permission: \"\",\n beModuleName: \"rental\",\n bg: \"rgba(0, 121, 63, 0.10)\",\n connectedRoutes: Object.values(PathnameRental).map(\n (path: string) => Pathname.DASHBOARD_RENTAL + path\n ),\n translationModule: [\"rental\",\"inventory\"]\n },\n {\n label: \"Settings\",\n link: Pathname.DASHBOARD_QUOTES,\n sidebar: image.sidebar.setting,\n bacModuleName: \"setting\",\n icon: image.settings,\n permission: \"\",\n beModuleName: \"setting\",\n bg: \"rgba(125, 154, 255, 0.10)\",\n connectedRoutes: [],\n translationModule: [\"settings\"]\n },\n ...getOnboardingMenuItem(t, VITE_APP_ENV),\n ];\n\n function filterMenu(menu: any[]) {\n return menu.filter((item) => {\n const isModuleAccessible = accessibleModulesSet.has(item.bacModuleName);\n let hasValidSubmenu = false;\n\n if (item.submenu && item.submenu.length > 0) {\n item.submenu = filterMenu(item.submenu); // Recursively filter submenu\n hasValidSubmenu = item.submenu.length > 0;\n }\n\n return isModuleAccessible || hasValidSubmenu;\n });\n }\n\n const filteredMenu = filterMenu(MenuBar);\n\n return filteredMenu;\n};\n\nexport default modules;"],"names":["image"],"mappings":";;;;;AAMO,IAAI,mBAAmB;AAAA,EAC5B,cAAc;AAAA,EACd,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,mBAAmB;AACrB;ACoCO,MAAM,qBAA0C;AAAA,EACrD,cAAc;AAAA,EACd,MAAM;AAAA,EACN,OAAO;AACT;ACtCA,MAAM,wBAAwB,CAAC,GAAQ,QAAgB;AACrD,MAAI,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG;AAC1B,WAAO,CAAA;AAAA,EACT;AAEA,SAAO;AAAA,IACL;AAAA,MACE,OAAO,EAAE,iBAAiB;AAAA,MAC1B,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,OAAO,OAAO,kBAAkB,EAAE;AAAA,QACjD,CAAC,SAAiB,SAAS,uBAAuB;AAAA,MAAA;AAAA,MAEpD,mBAAmB,CAAC,YAAY;AAAA,IAAA;AAAA,EAClC;AAEJ;AAEA,MAAM,UAAU,CAAC,MAAW;AAC1B,QAAM,SAAS,aAAa,QAAQ,SAAS,KAAK;AAClD,QAAM,WAAW,SAAS,KAAK,MAAM,MAAM,IAAI;AAC/C,QAAM,SAAc,aAAA;AACpB,QAAM,kBAAiB,qCAAU,kBAAiB,CAAA;AAClD,QAAM,gBAAe,iCAAQ,qBAAoB;AACjD,QAAM,oBAAoB,eAAe,IAAI,CAAC,WAAgB,OAAO,WAAW;AAChF,QAAM,uBAAuB,IAAI,IAAI,iBAAiB;AAEtD,QAAM,UAAU;AAAA,IACd;AAAA,MACE,OAAO,EAAE,WAAW;AAAA,MACpB,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,OAAO,OAAO,aAAa,EAAE;AAAA,QAC5C,CAAC,SAAiB,SAAS,iBAAiB;AAAA,MAAA;AAAA,MAE9C,mBAAmB,CAAC,MAAM;AAAA,IAAA;AAAA,IAE5B;AAAA,MACE,OAAO,EAAE,eAAe;AAAA,MACxB,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,OAAO,OAAO,gBAAgB,EAAE;AAAA,QAC/C,CAAC,SAAiB,SAAS,qBAAqB;AAAA,MAAA;AAAA,MAElD,mBAAmB,CAAC,UAAU;AAAA,IAAA;AAAA,IAEhC;AAAA,MACE,OAAO,EAAE,iBAAiB;AAAA,MAC1B,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,OAAO,OAAO,kBAAkB,EAAE;AAAA,QACjD,CAAC,SAAiB,SAAS,uBAAuB;AAAA,MAAA;AAAA,MAEpD,mBAAmB,CAAC,YAAY;AAAA,IAAA;AAAA,IAElC;AAAA,MACE,OAAO,EAAE,gBAAgB;AAAA,MACzB,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,OAAO,OAAO,iBAAiB,EAAE;AAAA,QAChD,CAAC,SAAiB,SAAS,sBAAsB;AAAA,MAAA;AAAA,MAEnD,mBAAmB,CAAC,WAAW;AAAA,IAAA;AAAA,IAEjC;AAAA,MACE,OAAO,EAAE,cAAc;AAAA,MACvB,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,CAAA;AAAA,MACjB,mBAAmB,CAAC,SAAS;AAAA,IAAA;AAAA,IAE/B;AAAA,MACE,OAAO,EAAE,kBAAkB;AAAA,MAC3B,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,OAAO,OAAO,gBAAgB,EAAE;AAAA,QAC/C,CAAC,SAAiB,SAAS,wBAAwB;AAAA,MAAA;AAAA;AAAA,MAGrD,mBAAmB,CAAC,aAAa;AAAA,IAAA;AAAA,IAEnC;AAAA,MACE,OAAO,EAAE,oBAAoB;AAAA,MAC7B,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,OAAO,OAAO,qBAAqB,EAAE;AAAA,QACpD,CAAC,SAAiB,SAAS,0BAA0B;AAAA,MAAA;AAAA,MAEvD,mBAAmB,CAAC,eAAe;AAAA,IAAA;AAAA,IAErC;AAAA,MACE,OAAO,EAAE,UAAU;AAAA,MACnB,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,OAAO,OAAO,WAAW,EAAE;AAAA,QAC1C,CAAC,SAAiB,SAAS,gBAAgB;AAAA,MAAA;AAAA,MAE7C,mBAAmB,CAAC,KAAK;AAAA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAW3B;AAAA,MACE,OAAO,EAAE,WAAW;AAAA,MACpB,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,kBAAkB,MAAM;AAItB,cAAM,YAAY,gBAAgB,MAAM;AACxC,YAAI,UAAU,SAAS,EAAG,QAAO;AACjC,eAAO,OAAO,OAAO,YAAY,EAAE;AAAA,UACjC,CAAC,SAAiB,SAAS,iBAAiB;AAAA,QAAA;AAAA,MAEhD,GAAA;AAAA,MACA,mBAAmB,CAAC,MAAM;AAAA,IAAA;AAAA,IAE5B;AAAA,MACE,OAAO,EAAE,aAAa;AAAA,MACtB,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,CAAA;AAAA,MACjB,mBAAmB,CAAC,QAAQ;AAAA,IAAA;AAAA,IAE9B;AAAA,MACE,OAAO,EAAE,aAAa;AAAA,MACtB,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,OAAO,OAAO,cAAc,EAAE;AAAA,QAC7C,CAAC,SAAiB,SAAS,mBAAmB;AAAA,MAAA;AAAA,MAEhD,mBAAmB,CAAC,UAAS,WAAW;AAAA,IAAA;AAAA,IAE1C;AAAA,MACE,OAAO;AAAA,MACP,MAAM,SAAS;AAAA,MACf,SAASA,OAAM,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,MAAMA,OAAM;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,iBAAiB,CAAA;AAAA,MACjB,mBAAmB,CAAC,UAAU;AAAA,IAAA;AAAA,IAEhC,GAAG,sBAAsB,GAAG,YAAY;AAAA,EAAA;AAG1C,WAAS,WAAW,MAAa;AAC/B,WAAO,KAAK,OAAO,CAAC,SAAS;AAC3B,YAAM,qBAAqB,qBAAqB,IAAI,KAAK,aAAa;AACtE,UAAI,kBAAkB;AAEtB,UAAI,KAAK,WAAW,KAAK,QAAQ,SAAS,GAAG;AAC3C,aAAK,UAAU,WAAW,KAAK,OAAO;AACtC,0BAAkB,KAAK,QAAQ,SAAS;AAAA,MAC1C;AAEA,aAAO,sBAAsB;AAAA,IAC/B,CAAC;AAAA,EACH;AAEA,QAAM,eAAe,WAAW,OAAO;AAEvC,SAAO;AACT;"}
|
|
@@ -5,7 +5,7 @@ const common = require("./common-QvMCr1xx.js");
|
|
|
5
5
|
const hooks = require("./hooks-DsdahmnZ.js");
|
|
6
6
|
const reactRouterDom = require("react-router-dom");
|
|
7
7
|
const api = require("./api-DJMpbRRM.js");
|
|
8
|
-
const routePageMap = require("./route-page-map-
|
|
8
|
+
const routePageMap = require("./route-page-map-CJLyl6P1.js");
|
|
9
9
|
const _ = require("lodash");
|
|
10
10
|
const material = require("@mui/material");
|
|
11
11
|
const notification = require("./notification-lAbbtOBF.js");
|
|
@@ -461,4 +461,4 @@ exports.PermissionsContext = PermissionsContext;
|
|
|
461
461
|
exports.PermissionsProvider = PermissionsProvider;
|
|
462
462
|
exports.defaultPageState = defaultPageState;
|
|
463
463
|
exports.initialFilter = initialFilter;
|
|
464
|
-
//# sourceMappingURL=page-context-
|
|
464
|
+
//# sourceMappingURL=page-context-BKgBvHxw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-context-DRbgpYFO.js","sources":["../../src/contexts/permission-context.tsx","../../src/components/loaders/erp-loader.tsx","../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport React, { createContext, useMemo, ReactNode } from \"react\";\nimport { formatLabel } from \"../utils/format-text\";\nimport { useAppSelector } from \"../redux/hooks\";\n\n// Define the types for permissions\ntype PermissionActions = \"canEdit\" | \"canView\" | \"canAdd\" | \"canDelete\" | \"canAddForOthers\";\ntype SubModulePermissions = Partial<Record<PermissionActions, boolean>>;\ntype ModulePermissions = SubModulePermissions & Record<string, SubModulePermissions>;\n\nexport interface PermissionsContextType {\n [module: string]: ModulePermissions;\n}\n\ninterface PermissionsProviderProps {\n children: ReactNode;\n}\n\n// Create a context with a default value\nexport const PermissionsContext = createContext<PermissionsContextType | null>(null);\n\nexport const PermissionsProvider: React.FC<PermissionsProviderProps> = ({ children }) => {\n const { setIsPermissionLoaded = false } = useAppSelector(\n (store) => store.roles ?? {}\n );\n\n const storagePermission = useMemo(() => {\n return localStorage.getItem(\"role-permission\")\n }, [localStorage.getItem(\"role-permission\")])\n\n const permissions: Record<string, any> = useMemo(() => {\n const rawValue = storagePermission;\n\n if (!rawValue) {\n return {};\n }\n\n try {\n return JSON.parse(rawValue);\n } catch (error) {\n console.warn(\n \"[PermissionsProvider] Failed to parse stored permissions. Clearing corrupted value.\",\n error\n );\n localStorage.removeItem(\"role-permission\");\n return {};\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setIsPermissionLoaded, storagePermission]);\n const computedPermissions = useMemo(() => {\n const checkPermission = (module: string, action: string): boolean =>\n Boolean(permissions?.[module]?.[action]);\n\n const dynamicPermissions: PermissionsContextType = {};\n\n Object.keys(permissions)\n // .filter((key) => key.startsWith(\"rental-\"))\n .forEach((module) => {\n const formattedModule = formatLabel(\n module.replace(/p$/gi, \"\").replace(/-p-/gi, \"-\")\n ).replace(/[^a-zA-Z0-9]/gi, \"\");\n\n // Extract the main module name (e.g., \"RentalQuotations\")\n const [baseModule, subModule, ...subModuleParts] = formattedModule.split(/(?=[A-Z])/);\n const subModuleName = subModuleParts.join(\"\");\n const bModule = baseModule + (subModule || \"\")\n\n if (!dynamicPermissions[bModule]) {\n dynamicPermissions[bModule] = {};\n }\n\n const actionMap: Record<string, PermissionActions> = {\n u: \"canEdit\",\n e: \"canEdit\",\n r: \"canView\",\n w: \"canAdd\",\n d: \"canDelete\",\n wo: \"canAddForOthers\"\n };\n\n Object.entries(actionMap).forEach(([key, actionName]) => {\n if (subModuleName) {\n // Store sub-module actions separately\n if (!dynamicPermissions[bModule][subModuleName]) {\n dynamicPermissions[bModule][subModuleName] = {};\n }\n const currentValue = (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] || false;\n (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\n } else {\n // Store main module actions\n const currentValue = (dynamicPermissions[bModule] as SubModulePermissions)[actionName] || false;\n (dynamicPermissions[bModule] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\n }\n });\n });\n\n\n return dynamicPermissions;\n }, [permissions]);\n\n return (\n <PermissionsContext.Provider value={computedPermissions}>\n {children}\n </PermissionsContext.Provider>\n );\n};\n","import React from \"react\"\nimport { Box, CircularProgress, CircularProgressProps } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst Loader = styled(CircularProgress)(({theme})=>({\n color: theme.palette?.theme?.primary[500]||\"#1976d2\"\n}))\n\nconst ErpLoader = (props:CircularProgressProps) => {\n\treturn <Box position=\"fixed\" left='50%' top=\"50%\">\n <Loader size={50} {...props}/>\n </Box>\n};\n\nexport { ErpLoader };\nexport default ErpLoader;\n","/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData: Record<string, any>\n\tsetFormData: (data: Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n\trouteToColumnsMap?: Record<string, any>;\n\trouteToResourceMap?: Record<string, any>;\n}\n\nconst UpdatePageInfo = () => { };\nconst UpdateGeneratedColumns = () => { };\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => { },\n\tsetActivePage: () => { },\n\tsetPages: () => { },\n\tschemaFields: [],\n\tinitializeColumns: () => { },\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\t// if (dColumns && dColumns?.length) {\n\t\t// \tdefaultColumns = defaultColumns.map((column) => {\n\t\t// \t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t// \t\treturn f || column\n\t\t// \t})\n\t\t// }\n\t\tif (dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\tconst merged = f ? { ...column, ...f } : column;\n\t\t\t\treturn merged\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field) => !field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && { typeArrayAccessorKey: field.accessorKey || '' }),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false : true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues(_.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey || column.enableSorting === false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children, routeToColumnsMap: customRouteToColumnsMap, routeToResourceMap: customRouteToResourceMap }) => {\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToResourceMap:\", customRouteToResourceMap)\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToColumnsMap:\", customRouteToColumnsMap)\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst { user } = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = (customRouteToColumnsMap?.[curPathName] || routeToColumnsMap[curPathName])?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName, customRouteToColumnsMap]);\n\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = customRouteToResourceMap?.[curPathName] || routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName, customRouteToResourceMap]);\n\n\t//Translation\n\tconst { t } = useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\t\t\tconsole.log('PageContext: Entering fetchPageData', { currentPath, currentDefaultColumnsLength: currentDefaultColumns?.length, hasResources: !!currentResources });\n\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed', { ref: currentPathnameRef.current, current: currentPath });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\tconsole.log('PageContext: Resources Check:', { currentDefaultColumns, currentResources });\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '', formResource = '' } = currentResources;\n\n\t\t\t\t\tconsole.log('PageContext: Pathname:', currentPath);\n\t\t\t\t\tconsole.log('PageContext: Default Columns:', currentDefaultColumns);\n\t\t\t\t\tconsole.log('PageContext: Resources:', currentResources);\n\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [pageResponse, fieldResponse, formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }) : Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters: `(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\tconsole.log('PageContext: API Responses:', { pageResponse, fieldResponse, formResponse });\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({ ...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label }));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n\t\t\t\t\tconsole.log('PageContext: Generated Columns:', gColumns);\n\n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait getV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\n\t};\n\n\tconst addOrDeletePage = async (restPages?: any[]) => {\n\t\ttry {\n\t\t\tconst filteredPages = restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name == p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n\t\t\t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg = restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t}\n\t}\n\n\tconst deletePage = async (pages: string) => {\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\n\t\t// Fetch data for new page with current values\n\t\tconsole.log('PageContext: useEffect Triggered', { curPathName, defaultColumnsLength: defaultColumns?.length, hasResources: !!resources });\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\t// Removed loading check to prevent blank page during loading\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\n\t}\n\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\n\t}\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["createContext","useAppSelector","useMemo","module","formatLabel","styled","CircularProgress","jsx","Box","field","useLocation","useState","useAuth","useRef","routeToColumnsMap","routeToResourceMap","useTranslation","useCallback","getV1PagesResource","getToken","getV1FormBuilderSchemaFieldsName","getV1FormBuilder","_a","pages","sharedPages","getV1FilterResource","removeIdStaticIdsFromMongoObject","patchV1PagesPageId","enqueueSnackbar","useEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"page-context-BKgBvHxw.js","sources":["../../src/contexts/permission-context.tsx","../../src/components/loaders/erp-loader.tsx","../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport React, { createContext, useMemo, ReactNode } from \"react\";\nimport { formatLabel } from \"../utils/format-text\";\nimport { useAppSelector } from \"../redux/hooks\";\n\n// Define the types for permissions\ntype PermissionActions = \"canEdit\" | \"canView\" | \"canAdd\" | \"canDelete\" | \"canAddForOthers\";\ntype SubModulePermissions = Partial<Record<PermissionActions, boolean>>;\ntype ModulePermissions = SubModulePermissions & Record<string, SubModulePermissions>;\n\nexport interface PermissionsContextType {\n [module: string]: ModulePermissions;\n}\n\ninterface PermissionsProviderProps {\n children: ReactNode;\n}\n\n// Create a context with a default value\nexport const PermissionsContext = createContext<PermissionsContextType | null>(null);\n\nexport const PermissionsProvider: React.FC<PermissionsProviderProps> = ({ children }) => {\n const { setIsPermissionLoaded = false } = useAppSelector(\n (store) => store.roles ?? {}\n );\n\n const storagePermission = useMemo(() => {\n return localStorage.getItem(\"role-permission\")\n }, [localStorage.getItem(\"role-permission\")])\n\n const permissions: Record<string, any> = useMemo(() => {\n const rawValue = storagePermission;\n\n if (!rawValue) {\n return {};\n }\n\n try {\n return JSON.parse(rawValue);\n } catch (error) {\n console.warn(\n \"[PermissionsProvider] Failed to parse stored permissions. Clearing corrupted value.\",\n error\n );\n localStorage.removeItem(\"role-permission\");\n return {};\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setIsPermissionLoaded, storagePermission]);\n const computedPermissions = useMemo(() => {\n const checkPermission = (module: string, action: string): boolean =>\n Boolean(permissions?.[module]?.[action]);\n\n const dynamicPermissions: PermissionsContextType = {};\n\n Object.keys(permissions)\n // .filter((key) => key.startsWith(\"rental-\"))\n .forEach((module) => {\n const formattedModule = formatLabel(\n module.replace(/p$/gi, \"\").replace(/-p-/gi, \"-\")\n ).replace(/[^a-zA-Z0-9]/gi, \"\");\n\n // Extract the main module name (e.g., \"RentalQuotations\")\n const [baseModule, subModule, ...subModuleParts] = formattedModule.split(/(?=[A-Z])/);\n const subModuleName = subModuleParts.join(\"\");\n const bModule = baseModule + (subModule || \"\")\n\n if (!dynamicPermissions[bModule]) {\n dynamicPermissions[bModule] = {};\n }\n\n const actionMap: Record<string, PermissionActions> = {\n u: \"canEdit\",\n e: \"canEdit\",\n r: \"canView\",\n w: \"canAdd\",\n d: \"canDelete\",\n wo: \"canAddForOthers\"\n };\n\n Object.entries(actionMap).forEach(([key, actionName]) => {\n if (subModuleName) {\n // Store sub-module actions separately\n if (!dynamicPermissions[bModule][subModuleName]) {\n dynamicPermissions[bModule][subModuleName] = {};\n }\n const currentValue = (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] || false;\n (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\n } else {\n // Store main module actions\n const currentValue = (dynamicPermissions[bModule] as SubModulePermissions)[actionName] || false;\n (dynamicPermissions[bModule] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\n }\n });\n });\n\n\n return dynamicPermissions;\n }, [permissions]);\n\n return (\n <PermissionsContext.Provider value={computedPermissions}>\n {children}\n </PermissionsContext.Provider>\n );\n};\n","import React from \"react\"\nimport { Box, CircularProgress, CircularProgressProps } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst Loader = styled(CircularProgress)(({theme})=>({\n color: theme.palette?.theme?.primary[500]||\"#1976d2\"\n}))\n\nconst ErpLoader = (props:CircularProgressProps) => {\n\treturn <Box position=\"fixed\" left='50%' top=\"50%\">\n <Loader size={50} {...props}/>\n </Box>\n};\n\nexport { ErpLoader };\nexport default ErpLoader;\n","/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData: Record<string, any>\n\tsetFormData: (data: Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n\trouteToColumnsMap?: Record<string, any>;\n\trouteToResourceMap?: Record<string, any>;\n}\n\nconst UpdatePageInfo = () => { };\nconst UpdateGeneratedColumns = () => { };\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => { },\n\tsetActivePage: () => { },\n\tsetPages: () => { },\n\tschemaFields: [],\n\tinitializeColumns: () => { },\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\t// if (dColumns && dColumns?.length) {\n\t\t// \tdefaultColumns = defaultColumns.map((column) => {\n\t\t// \t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t// \t\treturn f || column\n\t\t// \t})\n\t\t// }\n\t\tif (dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\tconst merged = f ? { ...column, ...f } : column;\n\t\t\t\treturn merged\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field) => !field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && { typeArrayAccessorKey: field.accessorKey || '' }),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false : true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues(_.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey || column.enableSorting === false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children, routeToColumnsMap: customRouteToColumnsMap, routeToResourceMap: customRouteToResourceMap }) => {\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToResourceMap:\", customRouteToResourceMap)\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToColumnsMap:\", customRouteToColumnsMap)\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst { user } = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = (customRouteToColumnsMap?.[curPathName] || routeToColumnsMap[curPathName])?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName, customRouteToColumnsMap]);\n\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = customRouteToResourceMap?.[curPathName] || routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName, customRouteToResourceMap]);\n\n\t//Translation\n\tconst { t } = useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\t\t\tconsole.log('PageContext: Entering fetchPageData', { currentPath, currentDefaultColumnsLength: currentDefaultColumns?.length, hasResources: !!currentResources });\n\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed', { ref: currentPathnameRef.current, current: currentPath });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\n\t\t\ttry {\n\t\t\t\tconsole.log('PageContext: Resources Check:', { currentDefaultColumns, currentResources });\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '', formResource = '' } = currentResources;\n\n\t\t\t\t\tconsole.log('PageContext: Pathname:', currentPath);\n\t\t\t\t\tconsole.log('PageContext: Default Columns:', currentDefaultColumns);\n\t\t\t\t\tconsole.log('PageContext: Resources:', currentResources);\n\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [pageResponse, fieldResponse, formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }) : Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters: `(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\tconsole.log('PageContext: API Responses:', { pageResponse, fieldResponse, formResponse });\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({ ...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label }));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n\t\t\t\t\tconsole.log('PageContext: Generated Columns:', gColumns);\n\n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait getV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\n\t};\n\n\tconst addOrDeletePage = async (restPages?: any[]) => {\n\t\ttry {\n\t\t\tconst filteredPages = restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name == p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n\t\t\t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg = restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t}\n\t}\n\n\tconst deletePage = async (pages: string) => {\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\n\t\t// Fetch data for new page with current values\n\t\tconsole.log('PageContext: useEffect Triggered', { curPathName, defaultColumnsLength: defaultColumns?.length, hasResources: !!resources });\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\t// Removed loading check to prevent blank page during loading\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\n\t}\n\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\n\t}\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["createContext","useAppSelector","useMemo","module","formatLabel","styled","CircularProgress","jsx","Box","field","useLocation","useState","useAuth","useRef","routeToColumnsMap","routeToResourceMap","useTranslation","useCallback","getV1PagesResource","getToken","getV1FormBuilderSchemaFieldsName","getV1FormBuilder","_a","pages","sharedPages","getV1FilterResource","removeIdStaticIdsFromMongoObject","patchV1PagesPageId","enqueueSnackbar","useEffect"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { W as formatLabel, ar as getToken, aH as removeIdStaticIdsFromMongoObjec
|
|
|
4
4
|
import { a as useAppSelector } from "./hooks-Cj9Yhy-E.esm.js";
|
|
5
5
|
import { useLocation } from "react-router-dom";
|
|
6
6
|
import { v as getV1PagesResource, w as getV1FormBuilderSchemaFieldsName, x as getV1FormBuilder, y as patchV1PagesPageId, z as getV1FilterResource } from "./api-BAbF3OU7.esm.js";
|
|
7
|
-
import { aY as routeToColumnsMap, aZ as routeToResourceMap } from "./route-page-map-
|
|
7
|
+
import { aY as routeToColumnsMap, aZ as routeToResourceMap } from "./route-page-map-C4wM0M4A.esm.js";
|
|
8
8
|
import _ from "lodash";
|
|
9
9
|
import { Box, CircularProgress } from "@mui/material";
|
|
10
10
|
import { s as styled } from "./notification-Dr_nE2Dc.esm.js";
|
|
@@ -462,4 +462,4 @@ export {
|
|
|
462
462
|
defaultPageState as d,
|
|
463
463
|
initialFilter as i
|
|
464
464
|
};
|
|
465
|
-
//# sourceMappingURL=page-context-
|
|
465
|
+
//# sourceMappingURL=page-context-DATjzley.esm.js.map
|