@erpsquad/common 1.10.1-test → 1.10.2-test

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/{Tooltip-0Msd6gJs.js → Tooltip-BWIywPIG.js} +2 -2
  2. package/dist/{Tooltip-0Msd6gJs.js.map → Tooltip-BWIywPIG.js.map} +1 -1
  3. package/dist/{Tooltip-DBg9E0nY.esm.js → Tooltip-BuKMQR27.esm.js} +5 -5
  4. package/dist/{Tooltip-DBg9E0nY.esm.js.map → Tooltip-BuKMQR27.esm.js.map} +1 -1
  5. package/dist/{android-12-switch-C2yR_ny0.js → android-12-switch-Cwoy0lqC.js} +2 -2
  6. package/dist/{android-12-switch-C2yR_ny0.js.map → android-12-switch-Cwoy0lqC.js.map} +1 -1
  7. package/dist/{android-12-switch-CFHHRoXl.esm.js → android-12-switch-DIRd6Hz1.esm.js} +10 -10
  8. package/dist/{android-12-switch-CFHHRoXl.esm.js.map → android-12-switch-DIRd6Hz1.esm.js.map} +1 -1
  9. package/dist/{apiHelper-C7xLzw2l.esm.js → apiHelper-BLkPhudw.esm.js} +5 -5
  10. package/dist/{apiHelper-C7xLzw2l.esm.js.map → apiHelper-BLkPhudw.esm.js.map} +1 -1
  11. package/dist/{apiHelper-uNnzNGPt.js → apiHelper-DurABKEn.js} +2 -2
  12. package/dist/{apiHelper-uNnzNGPt.js.map → apiHelper-DurABKEn.js.map} +1 -1
  13. package/dist/{arrow-up-RDVMEaNg.esm.js → arrow-up-BYufujcs.esm.js} +47 -48
  14. package/dist/arrow-up-BYufujcs.esm.js.map +1 -0
  15. package/dist/{arrow-up-CZCTjL2a.js → arrow-up-u2i6ArLB.js} +47 -47
  16. package/dist/arrow-up-u2i6ArLB.js.map +1 -0
  17. package/dist/components/icons/create-custom-icon.d.ts +16 -0
  18. package/dist/components/index.esm.js +14 -14
  19. package/dist/components/index.js +1 -1
  20. package/dist/contexts/index.esm.js +3 -3
  21. package/dist/contexts/index.js +1 -1
  22. package/dist/{dashboard-BU3Ivh-m.esm.js → dashboard-BHs900IA.esm.js} +3 -3
  23. package/dist/dashboard-BHs900IA.esm.js.map +1 -0
  24. package/dist/{dashboard-DC1wsH2n.js → dashboard-ecHBMV8C.js} +3 -3
  25. package/dist/dashboard-ecHBMV8C.js.map +1 -0
  26. package/dist/{default-data-DMRyIpbS.js → default-data-kq9UR-LT.js} +2 -2
  27. package/dist/{default-data-DMRyIpbS.js.map → default-data-kq9UR-LT.js.map} +1 -1
  28. package/dist/{default-data-DZ7_2K9V.esm.js → default-data-rqQOC7ed.esm.js} +10 -10
  29. package/dist/{default-data-DZ7_2K9V.esm.js.map → default-data-rqQOC7ed.esm.js.map} +1 -1
  30. package/dist/{document-MTw-RQlt.js → document-Dat2mYKY.js} +7 -7
  31. package/dist/document-Dat2mYKY.js.map +1 -0
  32. package/dist/{document-jQDTo49w.esm.js → document-Dc0e4Wgt.esm.js} +3 -4
  33. package/dist/document-Dc0e4Wgt.esm.js.map +1 -0
  34. package/dist/{form-builder-deconversion-DUwJpbWi.js → form-builder-deconversion-Bt6_FHty.js} +2 -2
  35. package/dist/{form-builder-deconversion-DUwJpbWi.js.map → form-builder-deconversion-Bt6_FHty.js.map} +1 -1
  36. package/dist/{form-builder-deconversion-BmnMG6UA.esm.js → form-builder-deconversion-CjCls618.esm.js} +3 -3
  37. package/dist/{form-builder-deconversion-BmnMG6UA.esm.js.map → form-builder-deconversion-CjCls618.esm.js.map} +1 -1
  38. package/dist/{fullScreen-bLbPf_Sx.esm.js → fullScreen-B7NBNLnc.esm.js} +2 -2
  39. package/dist/{fullScreen-bLbPf_Sx.esm.js.map → fullScreen-B7NBNLnc.esm.js.map} +1 -1
  40. package/dist/{fullScreen-z8Ci7IBM.js → fullScreen-Bk29OQHQ.js} +2 -2
  41. package/dist/{fullScreen-z8Ci7IBM.js.map → fullScreen-Bk29OQHQ.js.map} +1 -1
  42. package/dist/hooks/index.esm.js +5 -5
  43. package/dist/hooks/index.js +1 -1
  44. package/dist/icons/index.esm.js +7 -7
  45. package/dist/icons/index.js +1 -1
  46. package/dist/{index-abVANnYO.esm.js → index-CasNCevI.esm.js} +3 -3
  47. package/dist/{index-abVANnYO.esm.js.map → index-CasNCevI.esm.js.map} +1 -1
  48. package/dist/{index-C2m4EKMw.js → index-D6O6Gc88.js} +2 -2
  49. package/dist/{index-C2m4EKMw.js.map → index-D6O6Gc88.js.map} +1 -1
  50. package/dist/index.esm.js +19 -19
  51. package/dist/index.js +1 -1
  52. package/dist/{languageContext-z0EIAM7m.esm.js → languageContext-BqGnL8Sv.esm.js} +2 -2
  53. package/dist/{languageContext-z0EIAM7m.esm.js.map → languageContext-BqGnL8Sv.esm.js.map} +1 -1
  54. package/dist/{languageContext-7DprjT6b.js → languageContext-hAPMY56Y.js} +2 -2
  55. package/dist/{languageContext-7DprjT6b.js.map → languageContext-hAPMY56Y.js.map} +1 -1
  56. package/dist/layout/index.esm.js +4 -4
  57. package/dist/layout/index.js +1 -1
  58. package/dist/{migration-utils-DRGPH-n4.js → migration-utils-Bh98qTkC.js} +2 -2
  59. package/dist/{migration-utils-DRGPH-n4.js.map → migration-utils-Bh98qTkC.js.map} +1 -1
  60. package/dist/{migration-utils-BzRKOUW0.esm.js → migration-utils-byCdwgkF.esm.js} +2 -2
  61. package/dist/{migration-utils-BzRKOUW0.esm.js.map → migration-utils-byCdwgkF.esm.js.map} +1 -1
  62. package/dist/notification-BsWK2s3n.js +7 -0
  63. package/dist/notification-BsWK2s3n.js.map +1 -0
  64. package/dist/{notification-BNeR5Dyl.esm.js → notification-Dbo3l5Vw.esm.js} +27 -5
  65. package/dist/notification-Dbo3l5Vw.esm.js.map +1 -0
  66. package/dist/{sidebar-C6-wzTTF.esm.js → sidebar-DTv1DxTn.esm.js} +5 -5
  67. package/dist/{sidebar-C6-wzTTF.esm.js.map → sidebar-DTv1DxTn.esm.js.map} +1 -1
  68. package/dist/{sidebar-BT_zTOCc.js → sidebar-U2vsFarM.js} +2 -2
  69. package/dist/{sidebar-BT_zTOCc.js.map → sidebar-U2vsFarM.js.map} +1 -1
  70. package/dist/src/components/icons/create-custom-icon.d.ts +16 -0
  71. package/dist/{tick-CcyPwRXL.esm.js → tick-Cogsd5aG.esm.js} +8 -9
  72. package/dist/tick-Cogsd5aG.esm.js.map +1 -0
  73. package/dist/{tick-Ct-Ir-1S.js → tick-XKXM5oTD.js} +22 -22
  74. package/dist/tick-XKXM5oTD.js.map +1 -0
  75. package/dist/{toggle-switch-FMTO6609.esm.js → toggle-switch-Day9cZg5.esm.js} +3 -4
  76. package/dist/toggle-switch-Day9cZg5.esm.js.map +1 -0
  77. package/dist/{toggle-switch-BghzgMG8.js → toggle-switch-P3dX3iMp.js} +5 -5
  78. package/dist/toggle-switch-P3dX3iMp.js.map +1 -0
  79. package/dist/{trash-BTwzTBYO.esm.js → trash-cWyby5W5.esm.js} +36 -37
  80. package/dist/trash-cWyby5W5.esm.js.map +1 -0
  81. package/dist/{trash-5CZCQE4a.js → trash-iM5WzuPQ.js} +124 -124
  82. package/dist/trash-iM5WzuPQ.js.map +1 -0
  83. package/dist/{uom-field-wrapper-6F9MCc0-.js → uom-field-wrapper-D4vafbb3.js} +2 -2
  84. package/dist/{uom-field-wrapper-6F9MCc0-.js.map → uom-field-wrapper-D4vafbb3.js.map} +1 -1
  85. package/dist/{uom-field-wrapper-3usHZZm1.esm.js → uom-field-wrapper-DHzy94__.esm.js} +12 -12
  86. package/dist/{uom-field-wrapper-3usHZZm1.esm.js.map → uom-field-wrapper-DHzy94__.esm.js.map} +1 -1
  87. package/dist/{useAccountSetting-ChWt7JwC.js → useAccountSetting-CNoWakIN.js} +2 -2
  88. package/dist/{useAccountSetting-ChWt7JwC.js.map → useAccountSetting-CNoWakIN.js.map} +1 -1
  89. package/dist/{useAccountSetting-BEKGFdbo.esm.js → useAccountSetting-D2gUGGca.esm.js} +2 -2
  90. package/dist/{useAccountSetting-BEKGFdbo.esm.js.map → useAccountSetting-D2gUGGca.esm.js.map} +1 -1
  91. package/dist/{useAuth-C18aZa1n.esm.js → useAuth-Bvid1bpz.esm.js} +2 -2
  92. package/dist/{useAuth-C18aZa1n.esm.js.map → useAuth-Bvid1bpz.esm.js.map} +1 -1
  93. package/dist/{useAuth-Dpe5kDa6.js → useAuth-CVokk6Ra.js} +2 -2
  94. package/dist/{useAuth-Dpe5kDa6.js.map → useAuth-CVokk6Ra.js.map} +1 -1
  95. package/dist/{useLangauge-DKPl4qKr.esm.js → useLangauge-BQjH-l_B.esm.js} +2 -2
  96. package/dist/{useLangauge-DKPl4qKr.esm.js.map → useLangauge-BQjH-l_B.esm.js.map} +1 -1
  97. package/dist/{useLangauge-DaCaybJt.js → useLangauge-ySJIB0GV.js} +2 -2
  98. package/dist/{useLangauge-DaCaybJt.js.map → useLangauge-ySJIB0GV.js.map} +1 -1
  99. package/dist/utils/index.esm.js +3 -3
  100. package/dist/utils/index.js +1 -1
  101. package/dist/views/index.esm.js +5 -5
  102. package/dist/views/index.js +1 -1
  103. package/package.json +1 -1
  104. package/dist/arrow-up-CZCTjL2a.js.map +0 -1
  105. package/dist/arrow-up-RDVMEaNg.esm.js.map +0 -1
  106. package/dist/dashboard-BU3Ivh-m.esm.js.map +0 -1
  107. package/dist/dashboard-DC1wsH2n.js.map +0 -1
  108. package/dist/document-MTw-RQlt.js.map +0 -1
  109. package/dist/document-jQDTo49w.esm.js.map +0 -1
  110. package/dist/notification-BNeR5Dyl.esm.js.map +0 -1
  111. package/dist/notification-BmKHaKZF.js +0 -6
  112. package/dist/notification-BmKHaKZF.js.map +0 -1
  113. package/dist/tick-CcyPwRXL.esm.js.map +0 -1
  114. package/dist/tick-Ct-Ir-1S.js.map +0 -1
  115. package/dist/toggle-switch-BghzgMG8.js.map +0 -1
  116. package/dist/toggle-switch-FMTO6609.esm.js.map +0 -1
  117. package/dist/trash-5CZCQE4a.js.map +0 -1
  118. package/dist/trash-BTwzTBYO.esm.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index-abVANnYO.esm.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 */\r\nimport React, { createContext, useMemo, ReactNode } from \"react\";\r\nimport { formatLabel } from \"../utils/format-text\";\r\nimport { useAppSelector } from \"../redux/hooks\";\r\n\r\n// Define the types for permissions\r\ntype PermissionActions = \"canEdit\" | \"canView\" | \"canAdd\" | \"canDelete\" | \"canAddForOthers\";\r\ntype SubModulePermissions = Partial<Record<PermissionActions, boolean>>;\r\ntype ModulePermissions = SubModulePermissions & Record<string, SubModulePermissions>;\r\n\r\nexport interface PermissionsContextType {\r\n [module: string]: ModulePermissions;\r\n}\r\n\r\ninterface PermissionsProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n// Create a context with a default value\r\nexport const PermissionsContext = createContext<PermissionsContextType | null>(null);\r\n\r\nexport const PermissionsProvider: React.FC<PermissionsProviderProps> = ({ children }) => {\r\n const { setIsPermissionLoaded = false } = useAppSelector(\r\n (store) => store.roles ?? {}\r\n );\r\n\r\n const storagePermission = useMemo(() => {\r\n return localStorage.getItem(\"role-permission\")\r\n }, [localStorage.getItem(\"role-permission\")])\r\n\r\n const permissions: Record<string, any> = useMemo(() => {\r\n const rawValue = storagePermission;\r\n\r\n if (!rawValue) {\r\n return {};\r\n }\r\n\r\n try {\r\n return JSON.parse(rawValue);\r\n } catch (error) {\r\n console.warn(\r\n \"[PermissionsProvider] Failed to parse stored permissions. Clearing corrupted value.\",\r\n error\r\n );\r\n localStorage.removeItem(\"role-permission\");\r\n return {};\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [setIsPermissionLoaded, storagePermission]);\r\n const computedPermissions = useMemo(() => {\r\n const checkPermission = (module: string, action: string): boolean =>\r\n Boolean(permissions?.[module]?.[action]);\r\n\r\n const dynamicPermissions: PermissionsContextType = {};\r\n\r\n Object.keys(permissions)\r\n // .filter((key) => key.startsWith(\"rental-\"))\r\n .forEach((module) => {\r\n const formattedModule = formatLabel(\r\n module.replace(/p$/gi, \"\").replace(/-p-/gi, \"-\")\r\n ).replace(/[^a-zA-Z0-9]/gi, \"\");\r\n\r\n // Extract the main module name (e.g., \"RentalQuotations\")\r\n const [baseModule, subModule, ...subModuleParts] = formattedModule.split(/(?=[A-Z])/);\r\n const subModuleName = subModuleParts.join(\"\");\r\n const bModule = baseModule + (subModule || \"\")\r\n\r\n if (!dynamicPermissions[bModule]) {\r\n dynamicPermissions[bModule] = {};\r\n }\r\n\r\n const actionMap: Record<string, PermissionActions> = {\r\n u: \"canEdit\",\r\n e: \"canEdit\",\r\n r: \"canView\",\r\n w: \"canAdd\",\r\n d: \"canDelete\",\r\n wo: \"canAddForOthers\"\r\n };\r\n\r\n Object.entries(actionMap).forEach(([key, actionName]) => {\r\n if (subModuleName) {\r\n // Store sub-module actions separately\r\n if (!dynamicPermissions[bModule][subModuleName]) {\r\n dynamicPermissions[bModule][subModuleName] = {};\r\n }\r\n const currentValue = (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] || false;\r\n (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\r\n } else {\r\n // Store main module actions\r\n const currentValue = (dynamicPermissions[bModule] as SubModulePermissions)[actionName] || false;\r\n (dynamicPermissions[bModule] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\r\n }\r\n });\r\n });\r\n\r\n\r\n return dynamicPermissions;\r\n }, [permissions]);\r\n\r\n return (\r\n <PermissionsContext.Provider value={computedPermissions}>\r\n {children}\r\n </PermissionsContext.Provider>\r\n );\r\n};\r\n","import React from \"react\"\r\nimport { Box, CircularProgress, CircularProgressProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\nconst Loader = styled(CircularProgress)(({theme})=>({\r\n color: theme.palette?.theme?.primary[500]||\"#1976d2\"\r\n}))\r\n\r\nconst ErpLoader = (props:CircularProgressProps) => {\r\n\treturn <Box position=\"fixed\" left='50%' top=\"50%\">\r\n <Loader size={50} {...props}/>\r\n </Box>\r\n};\r\n\r\nexport { ErpLoader };\r\nexport default ErpLoader;\r\n","/* eslint-disable react-refresh/only-export-components */\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\n\r\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport {\r\n\tgetV1FilterResource,\r\n\tgetV1FormBuilder,\r\n\tgetV1FormBuilderSchemaFieldsName,\r\n\tgetV1PagesResource,\r\n\tpatchV1PagesPageId\r\n} from '../api-client/api.system-feature/api';\r\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\r\nimport { RuleGroupType } from 'react-querybuilder';\r\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\r\nimport _ from 'lodash';\r\nimport { formatLabel } from '../utils/format-text';\r\nimport ErpLoader from '../components/loaders/erp-loader';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useAuth } from '../hooks/useAuth';\r\n// import { usePermissions } from '../hooks/use-permissions';\r\n\r\n/* Interfaces and types */\r\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\r\n\r\ninterface SchemaFields {\r\n\tselect: string;\r\n\talias: string;\r\n\ttype: string;\r\n\tfilter_type?: string;\r\n\tfilter_name?: string;\r\n\trequired?: boolean;\r\n\tisOrderAllowed?: boolean;\r\n\tisDefault?: boolean;\r\n\tisFilterAllowed?: boolean;\r\n\tlabel?: string;\r\n\tkey: string;\r\n\taccessorKey?: string;\r\n\tjoinKey?: string;\r\n\tenum?: string | string[];\r\n}\r\nexport interface SavedViewType {\r\n\tlabel: ViewType;\r\n\tposition: number;\r\n}\r\nexport interface PageState {\r\n\t_id: string | number;\r\n\tname: string;\r\n\tpage_size: number;\r\n\tcolumn_order: string[];\r\n\tvisible_columns: MaterialTableColumnProps[];\r\n\tviews: SavedViewType[];\r\n\tactive_view: ViewType;\r\n\tfilters: RuleGroupType;\r\n\tfilterQueryString: string;\r\n\tsort: Record<any, any> | null;\r\n\tsearch: string;\r\n\tenabled_views: ViewType[];\r\n\tisShared: boolean;\r\n\tcolumn_sizes: Record<string, number>;\r\n}\r\n\r\nexport interface GeneratedColumnsState {\r\n\tcolumns: MaterialTableColumnProps[];\r\n\torderKeys: string[];\r\n}\r\n\r\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\r\n\r\ninterface PageContextValue {\r\n\tpageTemplateId: string;\r\n\tactivePage: PageState;\r\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\r\n\tloading: boolean;\r\n\tisSaving: boolean;\r\n\terror: string | null;\r\n\tpages: any[];\r\n\tsavePages: () => void;\r\n\tsetActivePage: (data: any) => void;\r\n\tsetPages: React.Dispatch<any>;\r\n\tschemaFields: SchemaFields[];\r\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\r\n\tgeneratedColumns: GeneratedColumnsState;\r\n\tsharedPages: any[];\r\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\r\n\tformData: Record<string, any>\r\n\tsetFormData: (data: Record<string, any>) => void\r\n}\r\n\r\nexport const defaultPageState: PageState = {\r\n\t_id: '',\r\n\tname: '',\r\n\tpage_size: 10,\r\n\tcolumn_order: ['id'],\r\n\tvisible_columns: [],\r\n\tviews: [],\r\n\tactive_view: '',\r\n\tfilters: initialFilter,\r\n\tfilterQueryString: '',\r\n\tsort: null,\r\n\tsearch: '',\r\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\r\n\tisShared: false,\r\n\tcolumn_sizes: {}\r\n};\r\ninterface PageProviderProps {\r\n\tchildren: React.ReactNode;\r\n\trouteToColumnsMap?: Record<string, any>;\r\n\trouteToResourceMap?: Record<string, any>;\r\n}\r\n\r\nconst UpdatePageInfo = () => { };\r\nconst UpdateGeneratedColumns = () => { };\r\n\r\nexport const PageContext = createContext<PageContextValue>({\r\n\tpageTemplateId: '',\r\n\tactivePage: defaultPageState,\r\n\tupdatePageInfo: UpdatePageInfo,\r\n\tloading: false,\r\n\tisSaving: false,\r\n\terror: null,\r\n\tpages: [],\r\n\tsharedPages: [],\r\n\tsavePages: () => { },\r\n\tsetActivePage: () => { },\r\n\tsetPages: () => { },\r\n\tschemaFields: [],\r\n\tinitializeColumns: () => { },\r\n\tgeneratedColumns: { columns: [], orderKeys: [] },\r\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\r\n});\r\n\r\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\r\n\t// Create a Set from the first array for efficient lookups\r\n\tconst array1Set = new Set(array1);\r\n\r\n\t// Filter the second array to find elements not in the first array\r\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\r\n\r\n\t// Combine the original first array with the new elements\r\n\treturn [...array1, ...elementsToAdd];\r\n}\r\n\r\nconst generateColumnSchema = (\r\n\tdefaultColumns: MaterialTableColumnProps[],\r\n\tschemaFields: SchemaFields[],\r\n\tcolumnOrders: string[],\r\n\tdColumns?: any[],\r\n\tt?: any\r\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\r\n\ttry {\r\n\t\t// if (dColumns && dColumns?.length) {\r\n\t\t// \tdefaultColumns = defaultColumns.map((column) => {\r\n\t\t// \t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\r\n\t\t// \t\treturn f || column\r\n\t\t// \t})\r\n\t\t// }\r\n\t\tif (dColumns && dColumns?.length) {\r\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\r\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\r\n\t\t\t\tconst merged = f ? { ...column, ...f } : column;\r\n\t\t\t\treturn merged\r\n\t\t\t})\r\n\t\t}\r\n\t\tlet orderKeys = columnOrders.length\r\n\t\t\t? columnOrders\r\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\r\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\r\n\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\r\n\r\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\r\n\t\tconst updatedFields = schemaFields.map((field) => ({\r\n\t\t\t...field,\r\n\t\t\tkey: field.key.replace('__replaceKey', '')\r\n\t\t})).filter((field) => !field.is_inner_join);\r\n\r\n\t\tconst uniqueFields = _.differenceWith(\r\n\t\t\tupdatedFields,\r\n\t\t\tupdatedFields,\r\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\r\n\t\t);\r\n\r\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\r\n\t\tconst unmatchedFields = _.differenceWith(\r\n\t\t\tuniqueFields,\r\n\t\t\tdefaultColumns,\r\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\r\n\t\t);\r\n\r\n\t\t// Map unique fields to MaterialTableColumn structure\r\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\r\n\t\t\t(field) => ({\r\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\r\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\r\n\t\t\t\tvisible: false,\r\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\r\n\t\t\t\t...(field.type === 'array' && { typeArrayAccessorKey: field.accessorKey || '' }),\r\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false : true,\r\n\t\t\t\t...(field?.type === 'boolean' ? {\r\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues(_.keyBy(\r\n\t\t\t\t\t\tfield?.values.map(item => ({\r\n\t\t\t\t\t\t\tkey: item.name,\r\n\t\t\t\t\t\t\tvalue: item.label\r\n\t\t\t\t\t\t})),\r\n\t\t\t\t\t\t'key'\r\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\r\n\t\t\t\t} : {})\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\r\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\r\n\t\t\treturn {\r\n\t\t\t\t...column,\r\n\t\t\t\t...((field?.type === 'object' || field?.joinKey || column.enableSorting === false) ? { enableSorting: false } : {})\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Combine default columns and additional columns\r\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\r\n\r\n\t\t// Generate an array of column keys for ordering\r\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\r\n\r\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\r\n\r\n\t\treturn { columns, orderKeys };\r\n\t} catch (error) {\r\n\t\treturn {\r\n\t\t\tcolumns: defaultColumns,\r\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\r\n\t\t};\r\n\t}\r\n};\r\n\r\nexport const PageProvider: React.FC<PageProviderProps> = ({ children, routeToColumnsMap: customRouteToColumnsMap, routeToResourceMap: customRouteToResourceMap }) => {\r\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToResourceMap:\", customRouteToResourceMap)\r\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToColumnsMap:\", customRouteToColumnsMap)\r\n\tconst location = useLocation();\r\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\r\n\t// const permissions=usePermissions();\r\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\r\n\tconst [loading, setLoading] = useState<boolean>(true);\r\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\r\n\tconst [error, setError] = useState<string | null>(null);\r\n\tconst [pages, setPages] = useState<any>([]);\r\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\r\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\r\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\r\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\r\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\r\n\tconst [formData, setFormData] = useState<any>({});\r\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\r\n\t\tcolumns: MaterialTableColumnProps[];\r\n\t\torderKeys: string[];\r\n\t}>({ columns: [], orderKeys: [] });\r\n\tconst { user } = useAuth()\r\n\t// Add ref to track current pathname for race condition prevention\r\n\tconst currentPathnameRef = useRef<string>(location.pathname);\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Get current page's default columns and resources\r\n\tconst defaultColumns: any[] = useMemo(() => {\r\n\t\tconst columns = (customRouteToColumnsMap?.[curPathName] || routeToColumnsMap[curPathName])?.defaultColumns || [];\r\n\t\treturn columns;\r\n\t}, [curPathName, customRouteToColumnsMap]);\r\n\r\n\tconst resources: IResources = useMemo(() => {\r\n\t\tconst resource = customRouteToResourceMap?.[curPathName] || routeToResourceMap[curPathName] || null;\r\n\t\treturn resource;\r\n\t}, [curPathName, customRouteToResourceMap]);\r\n\r\n\t//Translation\r\n\tconst { t } = useTranslation()\r\n\r\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\r\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\r\n\t\t//! Remove the function if not needed\r\n\t};\r\n\r\n\t// Fetch page-related information from API\r\n\tconst fetchPageData = useCallback(\r\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\r\n\t\t\tconsole.log('PageContext: Entering fetchPageData', { currentPath, currentDefaultColumnsLength: currentDefaultColumns?.length, hasResources: !!currentResources });\r\n\r\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\r\n\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed', { ref: currentPathnameRef.current, current: currentPath });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetError(null);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconsole.log('PageContext: Resources Check:', { currentDefaultColumns, currentResources });\r\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\r\n\t\t\t\t\tconst { pageResource = '', fieldResource = '', formResource = '' } = currentResources;\r\n\r\n\t\t\t\t\tconsole.log('PageContext: Pathname:', currentPath);\r\n\t\t\t\t\tconsole.log('PageContext: Default Columns:', currentDefaultColumns);\r\n\t\t\t\t\tconsole.log('PageContext: Resources:', currentResources);\r\n\r\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst [pageResponse, fieldResponse, formResponse] = await Promise.all([\r\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }) : Promise.resolve(null),\r\n\r\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\r\n\t\t\t\t\t\t\tname: fieldResource,\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tskip: 0,\r\n\t\t\t\t\t\t\tlimit: 999\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetV1FormBuilder({\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tfilters: `(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t]);\r\n\r\n\t\t\t\t\tconsole.log('PageContext: API Responses:', { pageResponse, fieldResponse, formResponse });\r\n\r\n\t\t\t\t\t// Final check - ensure pathname still matches\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({ ...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label }));\r\n\r\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\r\n\t\t\t\t\tconsole.log('PageContext: Generated Columns:', gColumns);\r\n\r\n\t\t\t\t\tconst pages =\r\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\r\n\t\t\t\t\t\t\t...defaultPageState,\r\n\t\t\t\t\t\t\t...p,\r\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\r\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\r\n\t\t\t\t\t\t\t\tfields,\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\r\n\t\t\t\t\t\t\t\tt\r\n\t\t\t\t\t\t\t).columns,\r\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t})) || [];\r\n\t\t\t\t\tconst sharedPages =\r\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\r\n\t\t\t\t\t\t\t...sPages.details,\r\n\t\t\t\t\t\t\tisShared: true,\r\n\t\t\t\t\t\t\towner: sPages.owner,\r\n\t\t\t\t\t\t\t_id: sPages.id\r\n\t\t\t\t\t\t})) || [];\r\n\r\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\r\n\r\n\t\t\t\t\t// Only update state if we're still on the same path\r\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\t\tawait Promise.all([\r\n\t\t\t\t\t\t\tsetSchemaFields(fields),\r\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\r\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\r\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\r\n\t\t\t\t\t\t\tsetPages(uPages || []),\r\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\r\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t\t\t\t...prev,\r\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\r\n\t\t\t\t\t\t\t}))\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t\t// Only set error if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetError('Failed to load page data');\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\t// Only update loading state if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[] // Remove dependencies to prevent stale closures\r\n\t);\r\n\r\n\t// Update page state dynamically\r\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\r\n\t\tsetActivePageData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t\t!isInitialLoad && setIsChanged(true)\r\n\t\tsetIsInitialLoad(false)\r\n\t};\r\n\r\n\t// Update columns state dynamically\r\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\r\n\t\tsetGeneratedColumns((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t};\r\n\r\n\tconst setActivePage = (page: PageState) => {\r\n\t\tconst uPages = pages.map((p) =>\r\n\t\t\tp._id == activePage?._id ? activePage : p\r\n\t\t);\r\n\t\tsetPages(uPages);\r\n\t\tsetActivePageData(page);\r\n\t};\r\n\r\n\tconst savePages = async () => {\r\n\t\tsetError(null);\r\n\t\tsetIsSaving(true);\r\n\t\tawait addOrDeletePage()\r\n\t\tsetTimeout(() => {\r\n\t\t\tsetIsSaving(false);\r\n\t\t}, 1000);\r\n\t};\r\n\tconst fetchSavedFilters = async (): Promise<void> => {\r\n\r\n\t\tawait getV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\r\n\r\n\t};\r\n\r\n\tconst addOrDeletePage = async (restPages?: any[]) => {\r\n\t\ttry {\r\n\t\t\tconst filteredPages = restPages?.length ? restPages : pages.filter((page) => !page.isShared);\r\n\t\t\tconst uPages = filteredPages.map((p) =>\r\n\t\t\t\t(p._id == activePage?._id && activePage.name == p.name) ? activePage : p\r\n\t\t\t);\r\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\r\n\r\n\t\t\tconst response = await patchV1PagesPageId({\r\n\t\t\t\t...getToken(),\r\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\r\n\t\t\t});\r\n\t\t\tif (response.status_code === 200) {\r\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\r\n\t\t\t\tsetPages(updatedPages);\r\n\t\t\t\tfetchSavedFilters();\r\n\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t...prev,\r\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\r\n\t\t\t\t}));\r\n\t\t\t\tsetIsChanged(false);\r\n\t\t\t\tsetIsCreatePage(false);\r\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\r\n\t\t\t\tconst msg = restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\r\n\t\t\t\tenqueueSnackbar(msg);\r\n\t\t\t}\r\n\t\t\treturn response\r\n\t\t} catch (err) {\r\n\t\t\tsetError('Failed to save page data');\r\n\t\t}\r\n\t}\r\n\r\n\tconst deletePage = async (pages: string) => {\r\n\t\taddOrDeletePage(pages);\r\n\t}\r\n\r\n\t// Handle pathname changes\r\n\tuseEffect(() => {\r\n\t\t// Update the ref immediately\r\n\t\tcurrentPathnameRef.current = curPathName;\r\n\r\n\t\t// Reset state for new page\r\n\t\tsetLoading(true);\r\n\t\tsetIsSaving(false);\r\n\t\tsetActivePageData(defaultPageState);\r\n\t\tsetIsChanged(false);\r\n\t\tsetIsInitialLoad(true);\r\n\r\n\t\t// Clear previous data to prevent showing stale data\r\n\t\tsetSchemaFields([]);\r\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\r\n\t\tsetPages([]);\r\n\t\tsetSharedPages([]);\r\n\t\tsetPageTemplateId('');\r\n\t\tsetError(null);\r\n\r\n\t\t// Fetch data for new page with current values\r\n\t\tconsole.log('PageContext: useEffect Triggered', { curPathName, defaultColumnsLength: defaultColumns?.length, hasResources: !!resources });\r\n\t\tfetchPageData(curPathName, defaultColumns, resources);\r\n\r\n\t\treturn () => { setLoading(true) }\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\r\n\r\n\r\n\t// Removed loading check to prevent blank page during loading\r\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\r\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\r\n\t}\r\n\r\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\r\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\r\n\t}\r\n\r\n\treturn (\r\n\t\t<PageContext.Provider\r\n\t\t\tvalue={{\r\n\t\t\t\tpageTemplateId,\r\n\t\t\t\tactivePage,\r\n\t\t\t\tpages,\r\n\t\t\t\tsharedPages,\r\n\t\t\t\tschemaFields,\r\n\t\t\t\tsetPages,\r\n\t\t\t\tupdatePageInfo,\r\n\t\t\t\tsavePages,\r\n\t\t\t\tsetActivePage,\r\n\t\t\t\tisSaving,\r\n\t\t\t\tloading,\r\n\t\t\t\terror,\r\n\t\t\t\tinitializeColumns,\r\n\t\t\t\tgeneratedColumns,\r\n\t\t\t\tupdateGeneratedColumns,\r\n\t\t\t\tisChanged,\r\n\t\t\t\tdeletePage,\r\n\t\t\t\tisCreatePage,\r\n\t\t\t\tsetIsCreatePage,\r\n\t\t\t\taddOrDeletePage,\r\n\t\t\t\tsetIsChanged,\r\n\t\t\t\tformData\r\n\t\t\t}}>\r\n\t\t\t{children}\r\n\t\t</PageContext.Provider>\r\n\t);\r\n};\r\n"],"names":["field","_a","pages","sharedPages"],"mappings":";;;;;;;;;;;;;;AAmBO,MAAM,qBAAqB,cAA6C,IAAI;AAE5E,MAAM,sBAA0D,CAAC,EAAE,eAAe;AACvF,QAAM,EAAE,wBAAwB,MAAA,IAAU;AAAA,IACxC,CAAC,UAAU,MAAM,SAAS,CAAA;AAAA,EAAC;AAG7B,QAAM,oBAAoB,QAAQ,MAAM;AACtC,WAAO,aAAa,QAAQ,iBAAiB;AAAA,EAC/C,GAAG,CAAC,aAAa,QAAQ,iBAAiB,CAAC,CAAC;AAE5C,QAAM,cAAmC,QAAQ,MAAM;AACrD,UAAM,WAAW;AAEjB,QAAI,CAAC,UAAU;AACb,aAAO,CAAA;AAAA,IACT;AAEA,QAAI;AACF,aAAO,KAAK,MAAM,QAAQ;AAAA,IAC5B,SAAS,OAAO;AACd,cAAQ;AAAA,QACN;AAAA,QACA;AAAA,MAAA;AAEF,mBAAa,WAAW,iBAAiB;AACzC,aAAO,CAAA;AAAA,IACT;AAAA,EAEF,GAAG,CAAC,uBAAuB,iBAAiB,CAAC;AAC7C,QAAM,sBAAsB,QAAQ,MAAM;AACxC,UAAM,kBAAkB,CAAC,QAAgB,WAAA;;AACvC,sBAAQ,gDAAc,YAAd,mBAAwB,OAAO;AAAA;AAEzC,UAAM,qBAA6C,CAAA;AAEnD,WAAO,KAAK,WAAW,EAEpB,QAAQ,CAAC,WAAW;AACnB,YAAM,kBAAkB;AAAA,QACtB,OAAO,QAAQ,QAAQ,EAAE,EAAE,QAAQ,SAAS,GAAG;AAAA,MAAA,EAC/C,QAAQ,kBAAkB,EAAE;AAG9B,YAAM,CAAC,YAAY,WAAW,GAAG,cAAc,IAAI,gBAAgB,MAAM,WAAW;AACpF,YAAM,gBAAgB,eAAe,KAAK,EAAE;AAC5C,YAAM,UAAU,cAAc,aAAa;AAE3C,UAAI,CAAC,mBAAmB,OAAO,GAAG;AAChC,2BAAmB,OAAO,IAAI,CAAA;AAAA,MAChC;AAEA,YAAM,YAA+C;AAAA,QACnD,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,IAAI;AAAA,MAAA;AAGN,aAAO,QAAQ,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAK,UAAU,MAAM;AACvD,YAAI,eAAe;AAEjB,cAAI,CAAC,mBAAmB,OAAO,EAAE,aAAa,GAAG;AAC/C,+BAAmB,OAAO,EAAE,aAAa,IAAI,CAAA;AAAA,UAC/C;AACA,gBAAM,eAAgB,mBAAmB,OAAO,EAAE,aAAa,EAA2B,UAAU,KAAK;AACxG,6BAAmB,OAAO,EAAE,aAAa,EAA2B,UAAU,IAAI,gBAAgB,gBAAgB,QAAQ,GAAG;AAAA,QAChI,OAAO;AAEL,gBAAM,eAAgB,mBAAmB,OAAO,EAA2B,UAAU,KAAK;AACzF,6BAAmB,OAAO,EAA2B,UAAU,IAAI,gBAAgB,gBAAgB,QAAQ,GAAG;AAAA,QACjH;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAGH,WAAO;AAAA,EACT,GAAG,CAAC,WAAW,CAAC;AAEhB,6BACG,mBAAmB,UAAnB,EAA4B,OAAO,qBACjC,UACH;AAEJ;ACrGA,MAAM,SAAS,OAAO,gBAAgB,EAAE,CAAC,EAAC,YAAK;;AAAK;AAAA,IAClD,SAAO,iBAAM,YAAN,mBAAe,UAAf,mBAAsB,QAAQ,SAAM;AAAA,EAC7C;AAAA,CAAE;AAEF,MAAM,YAAY,CAAC,UAAgC;AAClD,SAAO,oBAAC,KAAA,EAAI,UAAS,SAAQ,MAAK,OAAM,KAAI,OACzC,UAAA,oBAAC,QAAA,EAAO,MAAM,IAAK,GAAG,OAAM,GAC9B;AACF;AC0DO,MAAM,gBAA+B,EAAE,YAAY,OAAO,OAAO,CAAA,EAAC;AAsBlE,MAAM,mBAA8B;AAAA,EAC1C,KAAK;AAAA,EACL,MAAM;AAAA,EACN,WAAW;AAAA,EACX,cAAc,CAAC,IAAI;AAAA,EACnB,iBAAiB,CAAA;AAAA,EACjB,OAAO,CAAA;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,eAAe,CAAC,SAAS,QAAQ,UAAU,YAAY,OAAO;AAAA,EAC9D,UAAU;AAAA,EACV,cAAc,CAAA;AACf;AAOA,MAAM,iBAAiB,MAAM;AAAE;AAC/B,MAAM,yBAAyB,MAAM;AAAE;AAEhC,MAAM,cAAc,cAAgC;AAAA,EAC1D,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,OAAO;AAAA,EACP,OAAO,CAAA;AAAA,EACP,aAAa,CAAA;AAAA,EACb,WAAW,MAAM;AAAA,EAAE;AAAA,EACnB,eAAe,MAAM;AAAA,EAAE;AAAA,EACvB,UAAU,MAAM;AAAA,EAAE;AAAA,EAClB,cAAc,CAAA;AAAA,EACd,mBAAmB,MAAM;AAAA,EAAE;AAAA,EAC3B,kBAAkB,EAAE,SAAS,IAAI,WAAW,CAAA,EAAC;AAAA,EAC7C,wBAAwB;AACzB,CAAC;AAED,SAAS,wBAAwB,QAAkB,QAA4B;AAE9E,QAAM,YAAY,IAAI,IAAI,MAAM;AAGhC,QAAM,gBAAgB,OAAO,OAAO,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC;AAGlE,SAAO,CAAC,GAAG,QAAQ,GAAG,aAAa;AACpC;AAEA,MAAM,uBAAuB,CAC5B,gBACA,cACA,cACA,UACA,MACkE;AAClE,MAAI;AAOH,QAAI,aAAY,qCAAU,SAAQ;AACjC,uBAAiB,eAAe,IAAI,CAAC,WAAW;AAC/C,cAAM,IAAI,SAAS,KAAK,CAAC,MAAM,EAAE,eAAe,OAAO,WAAW;AAClE,cAAM,SAAS,IAAI,EAAE,GAAG,QAAQ,GAAG,MAAM;AACzC,eAAO;AAAA,MACR,CAAC;AAAA,IACF;AACA,QAAI,YAAY,aAAa,SAC1B,eACC,eAAe,IAAI,CAAC,WAAW,OAAO,WAAW;AACrD,UAAM,wBAAwB,CAAC,UAC7B,MAAM,SAAS,aAAY,+BAAO,QAAQ,GAAG,MAAM,KAAK,IAAI,MAAM,WAAW,KAAK,MAAM;AAG1F,UAAM,gBAAgB,aAAa,IAAI,CAAC,WAAW;AAAA,MAClD,GAAG;AAAA,MACH,KAAK,MAAM,IAAI,QAAQ,gBAAgB,EAAE;AAAA,IAAA,EACxC,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,aAAa;AAE1C,UAAM,eAAe,EAAE;AAAA,MACtB;AAAA,MACA;AAAA,MACA,CAAC,QAAQ,WAAW,OAAO,SAAQ,iCAAQ;AAAA,IAAA;AAI5C,UAAM,kBAAkB,EAAE;AAAA,MACzB;AAAA,MACA;AAAA,MACA,CAAC,OAAO,WAAW,sBAAsB,KAAK,MAAM,OAAO;AAAA,IAAA;AAI5D,UAAM,oBAAgD,gBAAgB;AAAA,MACrE,CAAC,UAAA;;AAAW;AAAA,UACX,QAAQ,IAAI,cAAY,OAAE,+BAAO,KAAK,MAAd,mBAAiB,QAAQ,SAAS,QAAO,EAAE,IAAI,cAAY,oCAAO,UAAP,mBAAc,QAAQ,SAAS,QAAO,EAAE;AAAA,UAC3H,aAAa,sBAAsB,KAAK;AAAA,UACxC,SAAS;AAAA,UACT,OAAM,+BAAO,QAAO,WAAW,MAAM;AAAA,UACrC,GAAI,MAAM,SAAS,WAAW,EAAE,sBAAsB,MAAM,eAAe,GAAA;AAAA,UAC3E,eAAgB,MAAM,SAAS,WAAW,MAAM,SAAS,aAAY,+BAAO,QAAQ,QAAQ;AAAA,UAC5F,IAAI,+BAAO,UAAS,YAAY;AAAA,YAC/B,qBAAmB,oCAAO,WAAP,mBAAe,UAAS,EAAE,UAAU,EAAE;AAAA,cACxD,+BAAO,OAAO,IAAI,CAAA,UAAS;AAAA,gBAC1B,KAAK,KAAK;AAAA,gBACV,OAAO,KAAK;AAAA,cAAA;AAAA,cAEb;AAAA,YAAA,GACE,OAAO,IAAI,EAAE,GAAG,YAAY,GAAG,UAAU,OAAO,YAAY,MAAM,SAAA;AAAA,UAAS,IAC3E,CAAA;AAAA,QAAC;AAAA;AAAA,IACN;AAGD,UAAM,wBAAwB,iDAAgB,IAAI,CAAC,WAAW;AAC7D,YAAM,QAAQ,aAAa,KAAK,CAACA,WAAU,sBAAsBA,MAAK,MAAM,OAAO,WAAW;AAC9F,aAAO;AAAA,QACN,GAAG;AAAA,QACH,IAAK,+BAAO,UAAS,aAAY,+BAAO,YAAW,OAAO,kBAAkB,QAAS,EAAE,eAAe,MAAA,IAAU,CAAA;AAAA,MAAC;AAAA,IAEnH;AAGA,UAAM,UAAU,CAAC,GAAG,uBAAuB,GAAG,iBAAiB;AAG/D,UAAM,aAAa,QAAQ,IAAI,CAAC,WAAW,OAAO,WAAW;AAE7D,gBAAY,wBAAwB,WAAW,UAAU;AAEzD,WAAO,EAAE,SAAS,UAAA;AAAA,EACnB,SAAS,OAAO;AACf,WAAO;AAAA,MACN,SAAS;AAAA,MACT,WAAW,eAAe,IAAI,CAAC,WAAW,OAAO,WAAW;AAAA,IAAA;AAAA,EAE9D;AACD;AAEO,MAAM,eAA4C,CAAC,EAAE,UAAU,mBAAmB,yBAAyB,oBAAoB,+BAA+B;AACpK,UAAQ,IAAI,iDAAiD,wBAAwB;AACrF,UAAQ,IAAI,gDAAgD,uBAAuB;AACnF,QAAM,WAAW,YAAA;AACjB,QAAM,CAAC,YAAY,iBAAiB,IAAI,SAAoB,gBAAgB;AAE5E,QAAM,CAAC,cAAc,eAAe,IAAI,SAAyB,CAAA,CAAE;AACnE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAkB,IAAI;AACpD,QAAM,CAAC,UAAU,WAAW,IAAI,SAAkB,KAAK;AACvD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAc,CAAA,CAAE;AAC1C,QAAM,CAAC,aAAa,cAAc,IAAI,SAAc,CAAA,CAAE;AACtD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkB,KAAK;AACzD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAiB,EAAE;AAC/D,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAkB,IAAI;AAChE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAkB,KAAK;AAC/D,QAAM,CAAC,UAAU,WAAW,IAAI,SAAc,CAAA,CAAE;AAChD,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAG7C,EAAE,SAAS,CAAA,GAAI,WAAW,CAAA,GAAI;AACjC,QAAM,EAAE,KAAA,IAAS,QAAA;AAEjB,QAAM,qBAAqB,OAAe,SAAS,QAAQ;AAC3D,QAAM,cAAc,QAAQ,MAAM,SAAS,UAAU,CAAC,SAAS,QAAQ,CAAC;AAGxE,QAAM,iBAAwB,QAAQ,MAAM;;AAC3C,UAAM,YAAW,yEAA0B,iBAAgB,kBAAkB,WAAW,MAAvE,mBAA2E,mBAAkB,CAAA;AAC9G,WAAO;AAAA,EACR,GAAG,CAAC,aAAa,uBAAuB,CAAC;AAEzC,QAAM,YAAwB,QAAQ,MAAM;AAC3C,UAAM,YAAW,qEAA2B,iBAAgB,mBAAmB,WAAW,KAAK;AAC/F,WAAO;AAAA,EACR,GAAG,CAAC,aAAa,wBAAwB,CAAC;AAG1C,QAAM,EAAE,EAAA,IAAM,eAAA;AAGd,QAAM,oBAAoB,CAAC,YAAwC;AAAA,IAAA;AAAA,EAEnE;AAGA,QAAM,gBAAgB;AAAA,IACrB,OAAO,aAAqB,uBAA8B,qBAAiC;;AAC1F,cAAQ,IAAI,uCAAuC,EAAE,aAAa,6BAA6B,+DAAuB,QAAQ,cAAc,CAAC,CAAC,iBAAA,CAAkB;AAGhK,UAAI,mBAAmB,YAAY,aAAa;AAC/C,gBAAQ,IAAI,6CAA6C,EAAE,KAAK,mBAAmB,SAAS,SAAS,aAAa;AAClH;AAAA,MACD;AAEA,iBAAW,IAAI;AACf,eAAS,IAAI;AAEb,UAAI;AACH,gBAAQ,IAAI,iCAAiC,EAAE,uBAAuB,kBAAkB;AACxF,YAAI,sBAAsB,UAAU,kBAAkB;AACrD,gBAAM,EAAE,eAAe,IAAI,gBAAgB,IAAI,eAAe,OAAO;AAErE,kBAAQ,IAAI,0BAA0B,WAAW;AACjD,kBAAQ,IAAI,iCAAiC,qBAAqB;AAClE,kBAAQ,IAAI,2BAA2B,gBAAgB;AAGvD,cAAI,mBAAmB,YAAY,aAAa;AAC/C;AAAA,UACD;AAEA,gBAAM,CAAC,cAAc,eAAe,YAAY,IAAI,MAAM,QAAQ,IAAI;AAAA,YACrE,eAAe,mBAAmB,EAAE,GAAG,YAAY,UAAU,aAAA,CAAc,IAAI,QAAQ,QAAQ,IAAI;AAAA,YAEnG,iCAAiC;AAAA,cAChC,MAAM;AAAA,cACN,GAAG,SAAA;AAAA,YAGJ,CAAC;AAAA,YACD,iBAAiB;AAAA,cAChB,GAAG,SAAA;AAAA,cACH,SAAS,gBAAgB,YAAY,kBAAkB,6BAAM,UAAU;AAAA,YAAA,CACvE;AAAA,UAAA,CACD;AAED,kBAAQ,IAAI,+BAA+B,EAAE,cAAc,eAAe,cAAc;AAGxF,cAAI,mBAAmB,YAAY,aAAa;AAC/C,oBAAQ,IAAI,0DAA0D;AACtE;AAAA,UACD;AAEA,gBAAM,UAAS,0DAAe,SAAf,mBAAqB,WAArB,mBAA6B,IAAI,CAAA,MAAA;;AAAM,qBAAE,GAAG,GAAG,OAAO,GAACC,MAAA,uBAAG,UAAH,gBAAAA,IAAU,UAAS,YAAY,EAAE,GAAG,IAAI,EAAE,MAAA;AAAA;AAEhH,gBAAM,WAAW,qBAAqB,uBAAuB,QAAQ,CAAA,GAAI,CAAA,GAAI,CAAC;AAC9E,kBAAQ,IAAI,mCAAmC,QAAQ;AAEvD,gBAAMC,WACL,wDAAc,SAAd,mBAAoB,UAApB,mBAA2B,IAAI,CAAC,MAAA;;AAAO;AAAA,cACtC,GAAG;AAAA,cACH,GAAG;AAAA,cACH,iBAAiB;AAAA,kBAChBD,MAAA,EAAE,oBAAF,gBAAAA,IAAmB,UAAS,EAAE,kBAAkB;AAAA,gBAChD;AAAA,gBACA,EAAE,gBAAgB,CAAA;AAAA,gBAClB;AAAA,gBACA;AAAA,cAAA,EACC;AAAA,cACF,cAAc;AAAA,gBACb,EAAE,gBAAgB,CAAA;AAAA,gBAClB,EAAE,KAAK,SAAS,SAAS;AAAA,cAAA;AAAA,YAC1B;AAAA,iBACM,CAAA;AACR,gBAAME,iBACL,wDAAc,SAAd,mBAAoB,iBAApB,mBAAkC,IAAI,CAAC,YAAY;AAAA,YAClD,GAAG,OAAO;AAAA,YACV,UAAU;AAAA,YACV,OAAO,OAAO;AAAA,YACd,KAAK,OAAO;AAAA,UAAA,QACN,CAAA;AAER,gBAAM,SAAS,CAAC,GAAGD,QAAO,GAAGC,YAAW;AAGxC,cAAI,mBAAmB,YAAY,aAAa;AAC/C,kBAAM,QAAQ,IAAI;AAAA,cACjB,gBAAgB,MAAM;AAAA,cACtB,oBAAoB,QAAQ;AAAA,cAC5B,mBAAkB,kDAAc,SAAd,mBAAoB,GAAG;AAAA,cACzC,eAAeA,YAAW;AAAA,cAC1B,SAAS,UAAU,EAAE;AAAA,cACrB,cAAY,wDAAc,SAAd,mBAAoB,SAApB,mBAA2B,OAAM,CAAA,CAAE;AAAA,cAC/C,kBAAkB,CAAC,UAAU;AAAA,gBAC5B,GAAG;AAAA,gBACH,IAAID,iCAAQ,OAAM,CAAA;AAAA;AAAA,cAAC,EAClB;AAAA,YAAA,CACF;AAAA,UACF;AAAA,QACD;AAAA,MACD,SAAS,KAAK;AAEb,YAAI,mBAAmB,YAAY,aAAa;AAC/C,mBAAS,0BAA0B;AAAA,QACpC;AAAA,MACD,UAAA;AAEC,YAAI,mBAAmB,YAAY,aAAa;AAC/C,qBAAW,MAAM;AAChB,uBAAW,KAAK;AAAA,UACjB,GAAG,GAAI;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA;AAAA,IAEA,CAAA;AAAA;AAAA,EAAC;AAIF,QAAM,iBAAiB,CAAC,YAAgC;AACvD,sBAAkB,CAAC,UAAU;AAAA,MAC5B,GAAG;AAAA,MACH,GAAG;AAAA,IAAA,EACF;AACF,KAAC,iBAAiB,aAAa,IAAI;AACnC,qBAAiB,KAAK;AAAA,EACvB;AAGA,QAAM,yBAAyB,CAAC,YAA4C;AAC3E,wBAAoB,CAAC,UAAU;AAAA,MAC9B,GAAG;AAAA,MACH,GAAG;AAAA,IAAA,EACF;AAAA,EACH;AAEA,QAAM,gBAAgB,CAAC,SAAoB;AAC1C,UAAM,SAAS,MAAM;AAAA,MAAI,CAAC,MACzB,EAAE,QAAO,yCAAY,OAAM,aAAa;AAAA,IAAA;AAEzC,aAAS,MAAM;AACf,sBAAkB,IAAI;AAAA,EACvB;AAEA,QAAM,YAAY,YAAY;AAC7B,aAAS,IAAI;AACb,gBAAY,IAAI;AAChB,UAAM,gBAAA;AACN,eAAW,MAAM;AAChB,kBAAY,KAAK;AAAA,IAClB,GAAG,GAAI;AAAA,EACR;AACA,QAAM,oBAAoB,YAA2B;AAEpD,UAAM,oBAAoB,EAAE,GAAG,YAAY,WAAU,uCAAW,kBAAgB,uCAAW,gBAAe;AAAA,EAE3G;AAEA,QAAM,kBAAkB,OAAO,cAAsB;;AACpD,QAAI;AACH,YAAM,iBAAgB,uCAAW,UAAS,YAAY,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ;AAC3F,YAAM,SAAS,cAAc;AAAA,QAAI,CAAC,MAChC,EAAE,QAAO,yCAAY,QAAO,WAAW,QAAQ,EAAE,OAAQ,aAAa;AAAA,MAAA;AAExE,YAAM,iBAAiB,iCAAiC,MAAM;AAE9D,YAAM,WAAW,MAAM,mBAAmB;AAAA,QACzC,GAAG,SAAA;AAAA,QACH,GAAG,EAAE,SAAS,gBAAgB,OAAO,eAAA;AAAA,MAAe,CACpD;AACD,UAAI,SAAS,gBAAgB,KAAK;AACjC,cAAM,iBAAe,0CAAU,SAAV,mBAAgB,UAAS,CAAA;AAC9C,iBAAS,YAAY;AACrB,0BAAA;AACA,0BAAkB,CAAC,UAAU;AAAA,UAC5B,GAAG;AAAA,UACH,GAAI,aAAa,KAAK,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,KAAK,CAAA;AAAA,QAAC,EACrD;AACF,qBAAa,KAAK;AAClB,wBAAgB,KAAK;AACrB,sBAAY,gDAAU,SAAV,mBAAgB,SAAhB,mBAAuB,OAAM,CAAA,CAAE;AAC3C,cAAM,OAAM,uCAAW,UAAS,EAAE,kBAAkB,IAAI,EAAE,gBAAgB;AAC1E,wBAAgB,GAAG;AAAA,MACpB;AACA,aAAO;AAAA,IACR,SAAS,KAAK;AACb,eAAS,0BAA0B;AAAA,IACpC;AAAA,EACD;AAEA,QAAM,aAAa,OAAOA,WAAkB;AAC3C,oBAAgBA,MAAK;AAAA,EACtB;AAGA,YAAU,MAAM;AAEf,uBAAmB,UAAU;AAG7B,eAAW,IAAI;AACf,gBAAY,KAAK;AACjB,sBAAkB,gBAAgB;AAClC,iBAAa,KAAK;AAClB,qBAAiB,IAAI;AAGrB,oBAAgB,CAAA,CAAE;AAClB,wBAAoB,EAAE,SAAS,CAAA,GAAI,WAAW,CAAA,GAAI;AAClD,aAAS,CAAA,CAAE;AACX,mBAAe,CAAA,CAAE;AACjB,sBAAkB,EAAE;AACpB,aAAS,IAAI;AAGb,YAAQ,IAAI,oCAAoC,EAAE,aAAa,sBAAsB,iDAAgB,QAAQ,cAAc,CAAC,CAAC,UAAA,CAAW;AACxI,kBAAc,aAAa,gBAAgB,SAAS;AAEpD,WAAO,MAAM;AAAE,iBAAW,IAAI;AAAA,IAAE;AAAA,EAEjC,GAAG,CAAC,aAAa,KAAK,UAAU,cAAc,GAAG,KAAK,UAAU,SAAS,CAAC,CAAC;AAI3E,OAAK,WAAW,eAAe,mBAAmB,YAAY,WAAW;AACxE,+BAAQ,WAAA,EAAU;AAAA,EACnB;AAEA,OAAK,WAAW,eAAe,mBAAmB,YAAY,WAAW;AACxE,+BAAQ,WAAA,EAAU;AAAA,EACnB;AAEA,SACC;AAAA,IAAC,YAAY;AAAA,IAAZ;AAAA,MACA,OAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEA;AAAA,IAAA;AAAA,EAAA;AAGJ;"}
1
+ {"version":3,"file":"index-CasNCevI.esm.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 */\r\nimport React, { createContext, useMemo, ReactNode } from \"react\";\r\nimport { formatLabel } from \"../utils/format-text\";\r\nimport { useAppSelector } from \"../redux/hooks\";\r\n\r\n// Define the types for permissions\r\ntype PermissionActions = \"canEdit\" | \"canView\" | \"canAdd\" | \"canDelete\" | \"canAddForOthers\";\r\ntype SubModulePermissions = Partial<Record<PermissionActions, boolean>>;\r\ntype ModulePermissions = SubModulePermissions & Record<string, SubModulePermissions>;\r\n\r\nexport interface PermissionsContextType {\r\n [module: string]: ModulePermissions;\r\n}\r\n\r\ninterface PermissionsProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n// Create a context with a default value\r\nexport const PermissionsContext = createContext<PermissionsContextType | null>(null);\r\n\r\nexport const PermissionsProvider: React.FC<PermissionsProviderProps> = ({ children }) => {\r\n const { setIsPermissionLoaded = false } = useAppSelector(\r\n (store) => store.roles ?? {}\r\n );\r\n\r\n const storagePermission = useMemo(() => {\r\n return localStorage.getItem(\"role-permission\")\r\n }, [localStorage.getItem(\"role-permission\")])\r\n\r\n const permissions: Record<string, any> = useMemo(() => {\r\n const rawValue = storagePermission;\r\n\r\n if (!rawValue) {\r\n return {};\r\n }\r\n\r\n try {\r\n return JSON.parse(rawValue);\r\n } catch (error) {\r\n console.warn(\r\n \"[PermissionsProvider] Failed to parse stored permissions. Clearing corrupted value.\",\r\n error\r\n );\r\n localStorage.removeItem(\"role-permission\");\r\n return {};\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [setIsPermissionLoaded, storagePermission]);\r\n const computedPermissions = useMemo(() => {\r\n const checkPermission = (module: string, action: string): boolean =>\r\n Boolean(permissions?.[module]?.[action]);\r\n\r\n const dynamicPermissions: PermissionsContextType = {};\r\n\r\n Object.keys(permissions)\r\n // .filter((key) => key.startsWith(\"rental-\"))\r\n .forEach((module) => {\r\n const formattedModule = formatLabel(\r\n module.replace(/p$/gi, \"\").replace(/-p-/gi, \"-\")\r\n ).replace(/[^a-zA-Z0-9]/gi, \"\");\r\n\r\n // Extract the main module name (e.g., \"RentalQuotations\")\r\n const [baseModule, subModule, ...subModuleParts] = formattedModule.split(/(?=[A-Z])/);\r\n const subModuleName = subModuleParts.join(\"\");\r\n const bModule = baseModule + (subModule || \"\")\r\n\r\n if (!dynamicPermissions[bModule]) {\r\n dynamicPermissions[bModule] = {};\r\n }\r\n\r\n const actionMap: Record<string, PermissionActions> = {\r\n u: \"canEdit\",\r\n e: \"canEdit\",\r\n r: \"canView\",\r\n w: \"canAdd\",\r\n d: \"canDelete\",\r\n wo: \"canAddForOthers\"\r\n };\r\n\r\n Object.entries(actionMap).forEach(([key, actionName]) => {\r\n if (subModuleName) {\r\n // Store sub-module actions separately\r\n if (!dynamicPermissions[bModule][subModuleName]) {\r\n dynamicPermissions[bModule][subModuleName] = {};\r\n }\r\n const currentValue = (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] || false;\r\n (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\r\n } else {\r\n // Store main module actions\r\n const currentValue = (dynamicPermissions[bModule] as SubModulePermissions)[actionName] || false;\r\n (dynamicPermissions[bModule] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\r\n }\r\n });\r\n });\r\n\r\n\r\n return dynamicPermissions;\r\n }, [permissions]);\r\n\r\n return (\r\n <PermissionsContext.Provider value={computedPermissions}>\r\n {children}\r\n </PermissionsContext.Provider>\r\n );\r\n};\r\n","import React from \"react\"\r\nimport { Box, CircularProgress, CircularProgressProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\nconst Loader = styled(CircularProgress)(({theme})=>({\r\n color: theme.palette?.theme?.primary[500]||\"#1976d2\"\r\n}))\r\n\r\nconst ErpLoader = (props:CircularProgressProps) => {\r\n\treturn <Box position=\"fixed\" left='50%' top=\"50%\">\r\n <Loader size={50} {...props}/>\r\n </Box>\r\n};\r\n\r\nexport { ErpLoader };\r\nexport default ErpLoader;\r\n","/* eslint-disable react-refresh/only-export-components */\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\n\r\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport {\r\n\tgetV1FilterResource,\r\n\tgetV1FormBuilder,\r\n\tgetV1FormBuilderSchemaFieldsName,\r\n\tgetV1PagesResource,\r\n\tpatchV1PagesPageId\r\n} from '../api-client/api.system-feature/api';\r\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\r\nimport { RuleGroupType } from 'react-querybuilder';\r\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\r\nimport _ from 'lodash';\r\nimport { formatLabel } from '../utils/format-text';\r\nimport ErpLoader from '../components/loaders/erp-loader';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useAuth } from '../hooks/useAuth';\r\n// import { usePermissions } from '../hooks/use-permissions';\r\n\r\n/* Interfaces and types */\r\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\r\n\r\ninterface SchemaFields {\r\n\tselect: string;\r\n\talias: string;\r\n\ttype: string;\r\n\tfilter_type?: string;\r\n\tfilter_name?: string;\r\n\trequired?: boolean;\r\n\tisOrderAllowed?: boolean;\r\n\tisDefault?: boolean;\r\n\tisFilterAllowed?: boolean;\r\n\tlabel?: string;\r\n\tkey: string;\r\n\taccessorKey?: string;\r\n\tjoinKey?: string;\r\n\tenum?: string | string[];\r\n}\r\nexport interface SavedViewType {\r\n\tlabel: ViewType;\r\n\tposition: number;\r\n}\r\nexport interface PageState {\r\n\t_id: string | number;\r\n\tname: string;\r\n\tpage_size: number;\r\n\tcolumn_order: string[];\r\n\tvisible_columns: MaterialTableColumnProps[];\r\n\tviews: SavedViewType[];\r\n\tactive_view: ViewType;\r\n\tfilters: RuleGroupType;\r\n\tfilterQueryString: string;\r\n\tsort: Record<any, any> | null;\r\n\tsearch: string;\r\n\tenabled_views: ViewType[];\r\n\tisShared: boolean;\r\n\tcolumn_sizes: Record<string, number>;\r\n}\r\n\r\nexport interface GeneratedColumnsState {\r\n\tcolumns: MaterialTableColumnProps[];\r\n\torderKeys: string[];\r\n}\r\n\r\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\r\n\r\ninterface PageContextValue {\r\n\tpageTemplateId: string;\r\n\tactivePage: PageState;\r\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\r\n\tloading: boolean;\r\n\tisSaving: boolean;\r\n\terror: string | null;\r\n\tpages: any[];\r\n\tsavePages: () => void;\r\n\tsetActivePage: (data: any) => void;\r\n\tsetPages: React.Dispatch<any>;\r\n\tschemaFields: SchemaFields[];\r\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\r\n\tgeneratedColumns: GeneratedColumnsState;\r\n\tsharedPages: any[];\r\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\r\n\tformData: Record<string, any>\r\n\tsetFormData: (data: Record<string, any>) => void\r\n}\r\n\r\nexport const defaultPageState: PageState = {\r\n\t_id: '',\r\n\tname: '',\r\n\tpage_size: 10,\r\n\tcolumn_order: ['id'],\r\n\tvisible_columns: [],\r\n\tviews: [],\r\n\tactive_view: '',\r\n\tfilters: initialFilter,\r\n\tfilterQueryString: '',\r\n\tsort: null,\r\n\tsearch: '',\r\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\r\n\tisShared: false,\r\n\tcolumn_sizes: {}\r\n};\r\ninterface PageProviderProps {\r\n\tchildren: React.ReactNode;\r\n\trouteToColumnsMap?: Record<string, any>;\r\n\trouteToResourceMap?: Record<string, any>;\r\n}\r\n\r\nconst UpdatePageInfo = () => { };\r\nconst UpdateGeneratedColumns = () => { };\r\n\r\nexport const PageContext = createContext<PageContextValue>({\r\n\tpageTemplateId: '',\r\n\tactivePage: defaultPageState,\r\n\tupdatePageInfo: UpdatePageInfo,\r\n\tloading: false,\r\n\tisSaving: false,\r\n\terror: null,\r\n\tpages: [],\r\n\tsharedPages: [],\r\n\tsavePages: () => { },\r\n\tsetActivePage: () => { },\r\n\tsetPages: () => { },\r\n\tschemaFields: [],\r\n\tinitializeColumns: () => { },\r\n\tgeneratedColumns: { columns: [], orderKeys: [] },\r\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\r\n});\r\n\r\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\r\n\t// Create a Set from the first array for efficient lookups\r\n\tconst array1Set = new Set(array1);\r\n\r\n\t// Filter the second array to find elements not in the first array\r\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\r\n\r\n\t// Combine the original first array with the new elements\r\n\treturn [...array1, ...elementsToAdd];\r\n}\r\n\r\nconst generateColumnSchema = (\r\n\tdefaultColumns: MaterialTableColumnProps[],\r\n\tschemaFields: SchemaFields[],\r\n\tcolumnOrders: string[],\r\n\tdColumns?: any[],\r\n\tt?: any\r\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\r\n\ttry {\r\n\t\t// if (dColumns && dColumns?.length) {\r\n\t\t// \tdefaultColumns = defaultColumns.map((column) => {\r\n\t\t// \t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\r\n\t\t// \t\treturn f || column\r\n\t\t// \t})\r\n\t\t// }\r\n\t\tif (dColumns && dColumns?.length) {\r\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\r\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\r\n\t\t\t\tconst merged = f ? { ...column, ...f } : column;\r\n\t\t\t\treturn merged\r\n\t\t\t})\r\n\t\t}\r\n\t\tlet orderKeys = columnOrders.length\r\n\t\t\t? columnOrders\r\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\r\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\r\n\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\r\n\r\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\r\n\t\tconst updatedFields = schemaFields.map((field) => ({\r\n\t\t\t...field,\r\n\t\t\tkey: field.key.replace('__replaceKey', '')\r\n\t\t})).filter((field) => !field.is_inner_join);\r\n\r\n\t\tconst uniqueFields = _.differenceWith(\r\n\t\t\tupdatedFields,\r\n\t\t\tupdatedFields,\r\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\r\n\t\t);\r\n\r\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\r\n\t\tconst unmatchedFields = _.differenceWith(\r\n\t\t\tuniqueFields,\r\n\t\t\tdefaultColumns,\r\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\r\n\t\t);\r\n\r\n\t\t// Map unique fields to MaterialTableColumn structure\r\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\r\n\t\t\t(field) => ({\r\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\r\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\r\n\t\t\t\tvisible: false,\r\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\r\n\t\t\t\t...(field.type === 'array' && { typeArrayAccessorKey: field.accessorKey || '' }),\r\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false : true,\r\n\t\t\t\t...(field?.type === 'boolean' ? {\r\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues(_.keyBy(\r\n\t\t\t\t\t\tfield?.values.map(item => ({\r\n\t\t\t\t\t\t\tkey: item.name,\r\n\t\t\t\t\t\t\tvalue: item.label\r\n\t\t\t\t\t\t})),\r\n\t\t\t\t\t\t'key'\r\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\r\n\t\t\t\t} : {})\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\r\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\r\n\t\t\treturn {\r\n\t\t\t\t...column,\r\n\t\t\t\t...((field?.type === 'object' || field?.joinKey || column.enableSorting === false) ? { enableSorting: false } : {})\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Combine default columns and additional columns\r\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\r\n\r\n\t\t// Generate an array of column keys for ordering\r\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\r\n\r\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\r\n\r\n\t\treturn { columns, orderKeys };\r\n\t} catch (error) {\r\n\t\treturn {\r\n\t\t\tcolumns: defaultColumns,\r\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\r\n\t\t};\r\n\t}\r\n};\r\n\r\nexport const PageProvider: React.FC<PageProviderProps> = ({ children, routeToColumnsMap: customRouteToColumnsMap, routeToResourceMap: customRouteToResourceMap }) => {\r\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToResourceMap:\", customRouteToResourceMap)\r\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToColumnsMap:\", customRouteToColumnsMap)\r\n\tconst location = useLocation();\r\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\r\n\t// const permissions=usePermissions();\r\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\r\n\tconst [loading, setLoading] = useState<boolean>(true);\r\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\r\n\tconst [error, setError] = useState<string | null>(null);\r\n\tconst [pages, setPages] = useState<any>([]);\r\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\r\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\r\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\r\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\r\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\r\n\tconst [formData, setFormData] = useState<any>({});\r\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\r\n\t\tcolumns: MaterialTableColumnProps[];\r\n\t\torderKeys: string[];\r\n\t}>({ columns: [], orderKeys: [] });\r\n\tconst { user } = useAuth()\r\n\t// Add ref to track current pathname for race condition prevention\r\n\tconst currentPathnameRef = useRef<string>(location.pathname);\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Get current page's default columns and resources\r\n\tconst defaultColumns: any[] = useMemo(() => {\r\n\t\tconst columns = (customRouteToColumnsMap?.[curPathName] || routeToColumnsMap[curPathName])?.defaultColumns || [];\r\n\t\treturn columns;\r\n\t}, [curPathName, customRouteToColumnsMap]);\r\n\r\n\tconst resources: IResources = useMemo(() => {\r\n\t\tconst resource = customRouteToResourceMap?.[curPathName] || routeToResourceMap[curPathName] || null;\r\n\t\treturn resource;\r\n\t}, [curPathName, customRouteToResourceMap]);\r\n\r\n\t//Translation\r\n\tconst { t } = useTranslation()\r\n\r\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\r\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\r\n\t\t//! Remove the function if not needed\r\n\t};\r\n\r\n\t// Fetch page-related information from API\r\n\tconst fetchPageData = useCallback(\r\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\r\n\t\t\tconsole.log('PageContext: Entering fetchPageData', { currentPath, currentDefaultColumnsLength: currentDefaultColumns?.length, hasResources: !!currentResources });\r\n\r\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\r\n\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed', { ref: currentPathnameRef.current, current: currentPath });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetError(null);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconsole.log('PageContext: Resources Check:', { currentDefaultColumns, currentResources });\r\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\r\n\t\t\t\t\tconst { pageResource = '', fieldResource = '', formResource = '' } = currentResources;\r\n\r\n\t\t\t\t\tconsole.log('PageContext: Pathname:', currentPath);\r\n\t\t\t\t\tconsole.log('PageContext: Default Columns:', currentDefaultColumns);\r\n\t\t\t\t\tconsole.log('PageContext: Resources:', currentResources);\r\n\r\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst [pageResponse, fieldResponse, formResponse] = await Promise.all([\r\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }) : Promise.resolve(null),\r\n\r\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\r\n\t\t\t\t\t\t\tname: fieldResource,\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tskip: 0,\r\n\t\t\t\t\t\t\tlimit: 999\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetV1FormBuilder({\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tfilters: `(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t]);\r\n\r\n\t\t\t\t\tconsole.log('PageContext: API Responses:', { pageResponse, fieldResponse, formResponse });\r\n\r\n\t\t\t\t\t// Final check - ensure pathname still matches\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({ ...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label }));\r\n\r\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\r\n\t\t\t\t\tconsole.log('PageContext: Generated Columns:', gColumns);\r\n\r\n\t\t\t\t\tconst pages =\r\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\r\n\t\t\t\t\t\t\t...defaultPageState,\r\n\t\t\t\t\t\t\t...p,\r\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\r\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\r\n\t\t\t\t\t\t\t\tfields,\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\r\n\t\t\t\t\t\t\t\tt\r\n\t\t\t\t\t\t\t).columns,\r\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t})) || [];\r\n\t\t\t\t\tconst sharedPages =\r\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\r\n\t\t\t\t\t\t\t...sPages.details,\r\n\t\t\t\t\t\t\tisShared: true,\r\n\t\t\t\t\t\t\towner: sPages.owner,\r\n\t\t\t\t\t\t\t_id: sPages.id\r\n\t\t\t\t\t\t})) || [];\r\n\r\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\r\n\r\n\t\t\t\t\t// Only update state if we're still on the same path\r\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\t\tawait Promise.all([\r\n\t\t\t\t\t\t\tsetSchemaFields(fields),\r\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\r\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\r\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\r\n\t\t\t\t\t\t\tsetPages(uPages || []),\r\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\r\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t\t\t\t...prev,\r\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\r\n\t\t\t\t\t\t\t}))\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t\t// Only set error if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetError('Failed to load page data');\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\t// Only update loading state if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[] // Remove dependencies to prevent stale closures\r\n\t);\r\n\r\n\t// Update page state dynamically\r\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\r\n\t\tsetActivePageData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t\t!isInitialLoad && setIsChanged(true)\r\n\t\tsetIsInitialLoad(false)\r\n\t};\r\n\r\n\t// Update columns state dynamically\r\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\r\n\t\tsetGeneratedColumns((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t};\r\n\r\n\tconst setActivePage = (page: PageState) => {\r\n\t\tconst uPages = pages.map((p) =>\r\n\t\t\tp._id == activePage?._id ? activePage : p\r\n\t\t);\r\n\t\tsetPages(uPages);\r\n\t\tsetActivePageData(page);\r\n\t};\r\n\r\n\tconst savePages = async () => {\r\n\t\tsetError(null);\r\n\t\tsetIsSaving(true);\r\n\t\tawait addOrDeletePage()\r\n\t\tsetTimeout(() => {\r\n\t\t\tsetIsSaving(false);\r\n\t\t}, 1000);\r\n\t};\r\n\tconst fetchSavedFilters = async (): Promise<void> => {\r\n\r\n\t\tawait getV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\r\n\r\n\t};\r\n\r\n\tconst addOrDeletePage = async (restPages?: any[]) => {\r\n\t\ttry {\r\n\t\t\tconst filteredPages = restPages?.length ? restPages : pages.filter((page) => !page.isShared);\r\n\t\t\tconst uPages = filteredPages.map((p) =>\r\n\t\t\t\t(p._id == activePage?._id && activePage.name == p.name) ? activePage : p\r\n\t\t\t);\r\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\r\n\r\n\t\t\tconst response = await patchV1PagesPageId({\r\n\t\t\t\t...getToken(),\r\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\r\n\t\t\t});\r\n\t\t\tif (response.status_code === 200) {\r\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\r\n\t\t\t\tsetPages(updatedPages);\r\n\t\t\t\tfetchSavedFilters();\r\n\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t...prev,\r\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\r\n\t\t\t\t}));\r\n\t\t\t\tsetIsChanged(false);\r\n\t\t\t\tsetIsCreatePage(false);\r\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\r\n\t\t\t\tconst msg = restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\r\n\t\t\t\tenqueueSnackbar(msg);\r\n\t\t\t}\r\n\t\t\treturn response\r\n\t\t} catch (err) {\r\n\t\t\tsetError('Failed to save page data');\r\n\t\t}\r\n\t}\r\n\r\n\tconst deletePage = async (pages: string) => {\r\n\t\taddOrDeletePage(pages);\r\n\t}\r\n\r\n\t// Handle pathname changes\r\n\tuseEffect(() => {\r\n\t\t// Update the ref immediately\r\n\t\tcurrentPathnameRef.current = curPathName;\r\n\r\n\t\t// Reset state for new page\r\n\t\tsetLoading(true);\r\n\t\tsetIsSaving(false);\r\n\t\tsetActivePageData(defaultPageState);\r\n\t\tsetIsChanged(false);\r\n\t\tsetIsInitialLoad(true);\r\n\r\n\t\t// Clear previous data to prevent showing stale data\r\n\t\tsetSchemaFields([]);\r\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\r\n\t\tsetPages([]);\r\n\t\tsetSharedPages([]);\r\n\t\tsetPageTemplateId('');\r\n\t\tsetError(null);\r\n\r\n\t\t// Fetch data for new page with current values\r\n\t\tconsole.log('PageContext: useEffect Triggered', { curPathName, defaultColumnsLength: defaultColumns?.length, hasResources: !!resources });\r\n\t\tfetchPageData(curPathName, defaultColumns, resources);\r\n\r\n\t\treturn () => { setLoading(true) }\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\r\n\r\n\r\n\t// Removed loading check to prevent blank page during loading\r\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\r\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\r\n\t}\r\n\r\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\r\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\r\n\t}\r\n\r\n\treturn (\r\n\t\t<PageContext.Provider\r\n\t\t\tvalue={{\r\n\t\t\t\tpageTemplateId,\r\n\t\t\t\tactivePage,\r\n\t\t\t\tpages,\r\n\t\t\t\tsharedPages,\r\n\t\t\t\tschemaFields,\r\n\t\t\t\tsetPages,\r\n\t\t\t\tupdatePageInfo,\r\n\t\t\t\tsavePages,\r\n\t\t\t\tsetActivePage,\r\n\t\t\t\tisSaving,\r\n\t\t\t\tloading,\r\n\t\t\t\terror,\r\n\t\t\t\tinitializeColumns,\r\n\t\t\t\tgeneratedColumns,\r\n\t\t\t\tupdateGeneratedColumns,\r\n\t\t\t\tisChanged,\r\n\t\t\t\tdeletePage,\r\n\t\t\t\tisCreatePage,\r\n\t\t\t\tsetIsCreatePage,\r\n\t\t\t\taddOrDeletePage,\r\n\t\t\t\tsetIsChanged,\r\n\t\t\t\tformData\r\n\t\t\t}}>\r\n\t\t\t{children}\r\n\t\t</PageContext.Provider>\r\n\t);\r\n};\r\n"],"names":["field","_a","pages","sharedPages"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- "use strict";const e=require("./useAuth-Dpe5kDa6.js");require("./languageContext-7DprjT6b.js");const a=require("react/jsx-runtime"),r=require("react"),t=require("react-router-dom"),l=require("./api-By0ZkuF-.js"),o=require("./route-page-map-CVlSMCfE.js"),n=require("./common-8gzbBoY1.js"),s=require("lodash"),i=require("@mui/material"),u=require("@mui/material/styles"),d=require("notistack"),c=require("react-i18next"),m=require("./hooks-BdfwliGF.js");function v(e){return e&&e.__esModule?e.default:e}const p=/* @__PURE__ */v(s),g=r.createContext(null),y=u.styled(i.CircularProgress)(({theme:e})=>{var a,r;return{color:(null==(r=null==(a=e.palette)?void 0:a.theme)?void 0:r.primary[500])||"#1976d2"}}),f=e=>/* @__PURE__ */a.jsx(i.Box,{position:"fixed",left:"50%",top:"50%",children:/* @__PURE__ */a.jsx(y,{size:50,...e})}),h={combinator:"and",rules:[]},S={_id:"",name:"",page_size:10,column_order:["id"],visible_columns:[],views:[],active_view:"",filters:h,filterQueryString:"",sort:null,search:"",enabled_views:["Table","Grid","Kanban","Calendar","Gantt"],isShared:!1,column_sizes:{}},P=r.createContext({pageTemplateId:"",activePage:S,updatePageInfo:()=>{},loading:!1,isSaving:!1,error:null,pages:[],sharedPages:[],savePages:()=>{},setActivePage:()=>{},setPages:()=>{},schemaFields:[],initializeColumns:()=>{},generatedColumns:{columns:[],orderKeys:[]},updateGeneratedColumns:()=>{}});function b(e,a){const r=new Set(e),t=a.filter(e=>!r.has(e));return[...e,...t]}const _=(e,a,r,t,l)=>{try{t&&(null==t?void 0:t.length)&&(e=e.map(e=>{const a=t.find(a=>a.accessorKey==e.accessorKey);return a?{...e,...a}:e}));let o=r.length?r:e.map(e=>e.accessorKey);const s=e=>"object"===e.type||(null==e?void 0:e.join)?`${e.alias}.${e.accessorKey}`:e.key,i=a.map(e=>({...e,key:e.key.replace("__replaceKey","")})).filter(e=>!e.is_inner_join),u=p.differenceWith(i,i,(e,a)=>e.key===(null==a?void 0:a.joinKey)),d=p.differenceWith(u,e,(e,a)=>s(e)===a.accessorKey).map(e=>{var a,r,t;return{header:l?n.formatLabel((null==(a=l(null==e?void 0:e.label))?void 0:a.replace("_data",""))||""):n.formatLabel((null==(r=null==e?void 0:e.label)?void 0:r.replace("_data",""))||""),accessorKey:s(e),visible:!1,type:(null==e?void 0:e.enum)?"status":e.type,..."array"===e.type&&{typeArrayAccessorKey:e.accessorKey||""},enableSorting:"array"!==e.type&&"object"!==e.type&&!(null==e?void 0:e.join),..."boolean"===(null==e?void 0:e.type)?{typeBooleanLabels:(null==(t=null==e?void 0:e.values)?void 0:t.length)?p.mapValues(p.keyBy(null==e?void 0:e.values.map(e=>({key:e.name,value:e.label})),"key"),"value"):{0:"Inactive",1:"Active",false:"Inactive",true:"Active"}}:{}}}),c=[...null==e?void 0:e.map(e=>{const r=a.find(a=>s(a)===e.accessorKey);return{...e,..."object"===(null==r?void 0:r.type)||(null==r?void 0:r.joinKey)||!1===e.enableSorting?{enableSorting:!1}:{}}}),...d];return o=b(o,c.map(e=>e.accessorKey)),{columns:c,orderKeys:o}}catch(o){return{columns:e,orderKeys:e.map(e=>e.accessorKey)}}};exports.ErpLoader=f,exports.PageContext=P,exports.PageProvider=({children:s,routeToColumnsMap:i,routeToResourceMap:u})=>{const m=t.useLocation(),[v,g]=r.useState(S),[y,h]=r.useState([]),[j,x]=r.useState(!0),[C,K]=r.useState(!1),[k,q]=r.useState(null),[I,T]=r.useState([]),[w,A]=r.useState([]),[M,F]=r.useState(!1),[R,L]=r.useState(""),[O,E]=r.useState(!0),[V,z]=r.useState(!1),[B,$]=r.useState({}),[G,N]=r.useState({columns:[],orderKeys:[]}),{user:D}=e.useAuth(),J=r.useRef(m.pathname),W=r.useMemo(()=>m.pathname,[m.pathname]),Z=r.useMemo(()=>{var e;return(null==(e=(null==i?void 0:i[W])||o.routeToColumnsMap[W])?void 0:e.defaultColumns)||[]},[W,i]),Q=r.useMemo(()=>(null==u?void 0:u[W])||o.routeToResourceMap[W]||null,[W,u]),{t:H}=c.useTranslation(),U=r.useCallback(async(e,a,r)=>{var t,o,s,i,u,d,c,m,v;if(J.current===e){x(!0),q(null);try{if(a.length&&r){const{pageResource:y="",fieldResource:f="",formResource:P=""}=r;if(J.current!==e)return;const[j,x,C]=await Promise.all([y?l.getV1PagesResource({...n.getToken(),resource:y}):Promise.resolve(null),l.getV1FormBuilderSchemaFieldsName({name:f,...n.getToken()}),l.getV1FormBuilder({...n.getToken(),filters:`(resource.eq=${P}&company_id.eq=${null==D?void 0:D.company_id})`})]);if(J.current!==e)return;const K=null==(o=null==(t=null==x?void 0:x.data)?void 0:t.fields)?void 0:o.map(e=>{var a;return{...e,label:(null==(a=null==e?void 0:e.label)?void 0:a.trim())?e.label:n.formatLabel(e.key)}}),k=_(a,K,[],[],H),q=(null==(i=null==(s=null==j?void 0:j.data)?void 0:s.pages)?void 0:i.map(e=>{var r;return{...S,...e,visible_columns:_((null==(r=e.visible_columns)?void 0:r.length)?e.visible_columns:a,K,e.column_order||[],a,H).columns,column_order:b(e.column_order||[],p.uniq(k.orderKeys))}}))||[],I=(null==(d=null==(u=null==j?void 0:j.data)?void 0:u.shared_pages)?void 0:d.map(e=>({...e.details,isShared:!0,owner:e.owner,_id:e.id})))||[],w=[...q,...I];J.current===e&&await Promise.all([h(K),N(k),L(null==(c=null==j?void 0:j.data)?void 0:c._id),A(I),T(w||[]),$((null==(v=null==(m=null==C?void 0:C.data)?void 0:m.form)?void 0:v[0])||{}),g(e=>({...e,...(null==q?void 0:q[0])||{}}))])}}catch(y){J.current===e&&q("Failed to load page data")}finally{J.current===e&&setTimeout(()=>{x(!1)},1e3)}}},[]),X=async e=>{var a,r,t;try{const o=((null==e?void 0:e.length)?e:I.filter(e=>!e.isShared)).map(e=>e._id==(null==v?void 0:v._id)&&v.name==e.name?v:e),s=n.removeIdStaticIdsFromMongoObject(o),i=await l.patchV1PagesPageId({...n.getToken(),page_id:R,pages:s});if(200===i.status_code){const o=(null==(a=null==i?void 0:i.data)?void 0:a.pages)||[];T(o),(async()=>{await l.getV1FilterResource({...n.getToken(),resource:(null==Q?void 0:Q.pageResource)||(null==Q?void 0:Q.fieldResource)})})(),g(e=>({...e,...o.find(a=>a.name==e.name)||{}})),F(!1),z(!1),$((null==(t=null==(r=null==i?void 0:i.data)?void 0:r.form)?void 0:t[0])||{});const s=(null==e?void 0:e.length)?H("pages.msg.delete"):H("pages.msg.save");d.enqueueSnackbar(s)}return i}catch(o){q("Failed to save page data")}};return r.useEffect(()=>(J.current=W,x(!0),K(!1),g(S),F(!1),E(!0),h([]),N({columns:[],orderKeys:[]}),T([]),A([]),L(""),q(null),U(W,Z,Q),()=>{x(!0)}),[W,JSON.stringify(Z),JSON.stringify(Q)]),(j||W!=J.current)&&Q||(j||W!=J.current)&&Q?/* @__PURE__ */a.jsx(f,{}):/* @__PURE__ */a.jsx(P.Provider,{value:{pageTemplateId:R,activePage:v,pages:I,sharedPages:w,schemaFields:y,setPages:T,updatePageInfo:e=>{g(a=>({...a,...e})),!O&&F(!0),E(!1)},savePages:async()=>{q(null),K(!0),await X(),setTimeout(()=>{K(!1)},1e3)},setActivePage:e=>{const a=I.map(e=>e._id==(null==v?void 0:v._id)?v:e);T(a),g(e)},isSaving:C,loading:j,error:k,initializeColumns:e=>{},generatedColumns:G,updateGeneratedColumns:e=>{N(a=>({...a,...e}))},isChanged:M,deletePage:async e=>{X(e)},isCreatePage:V,setIsCreatePage:z,addOrDeletePage:X,setIsChanged:F,formData:B},children:s})},exports.PermissionsContext=g,exports.PermissionsProvider=({children:e})=>{const{setIsPermissionLoaded:t=!1}=m.useAppSelector(e=>e.roles??{}),l=r.useMemo(()=>localStorage.getItem("role-permission"),[localStorage.getItem("role-permission")]),o=r.useMemo(()=>{const e=l;if(!e)return{};try{return JSON.parse(e)}catch(a){return localStorage.removeItem("role-permission"),{}}},[t,l]),s=r.useMemo(()=>{const e=(e,a)=>{var r;return Boolean(null==(r=null==o?void 0:o[e])?void 0:r[a])},a={};return Object.keys(o).forEach(r=>{const t=n.formatLabel(r.replace(/p$/gi,"").replace(/-p-/gi,"-")).replace(/[^a-zA-Z0-9]/gi,""),[l,o,...s]=t.split(/(?=[A-Z])/),i=s.join(""),u=l+(o||"");a[u]||(a[u]={});Object.entries({u:"canEdit",e:"canEdit",r:"canView",w:"canAdd",d:"canDelete",wo:"canAddForOthers"}).forEach(([t,l])=>{if(i){a[u][i]||(a[u][i]={});const o=a[u][i][l]||!1;a[u][i][l]=o||e(r,t)}else{const o=a[u][l]||!1;a[u][l]=o||e(r,t)}})}),a},[o]);/* @__PURE__ */
1
+ "use strict";const e=require("./useAuth-CVokk6Ra.js");require("./languageContext-hAPMY56Y.js");const a=require("react/jsx-runtime"),r=require("react"),t=require("react-router-dom"),l=require("./api-By0ZkuF-.js"),o=require("./route-page-map-CVlSMCfE.js"),n=require("./common-8gzbBoY1.js"),s=require("lodash"),i=require("@mui/material"),u=require("@mui/material/styles"),d=require("notistack"),c=require("react-i18next"),m=require("./hooks-BdfwliGF.js");function v(e){return e&&e.__esModule?e.default:e}const p=/* @__PURE__ */v(s),g=r.createContext(null),y=u.styled(i.CircularProgress)(({theme:e})=>{var a,r;return{color:(null==(r=null==(a=e.palette)?void 0:a.theme)?void 0:r.primary[500])||"#1976d2"}}),f=e=>/* @__PURE__ */a.jsx(i.Box,{position:"fixed",left:"50%",top:"50%",children:/* @__PURE__ */a.jsx(y,{size:50,...e})}),h={combinator:"and",rules:[]},S={_id:"",name:"",page_size:10,column_order:["id"],visible_columns:[],views:[],active_view:"",filters:h,filterQueryString:"",sort:null,search:"",enabled_views:["Table","Grid","Kanban","Calendar","Gantt"],isShared:!1,column_sizes:{}},P=r.createContext({pageTemplateId:"",activePage:S,updatePageInfo:()=>{},loading:!1,isSaving:!1,error:null,pages:[],sharedPages:[],savePages:()=>{},setActivePage:()=>{},setPages:()=>{},schemaFields:[],initializeColumns:()=>{},generatedColumns:{columns:[],orderKeys:[]},updateGeneratedColumns:()=>{}});function b(e,a){const r=new Set(e),t=a.filter(e=>!r.has(e));return[...e,...t]}const _=(e,a,r,t,l)=>{try{t&&(null==t?void 0:t.length)&&(e=e.map(e=>{const a=t.find(a=>a.accessorKey==e.accessorKey);return a?{...e,...a}:e}));let o=r.length?r:e.map(e=>e.accessorKey);const s=e=>"object"===e.type||(null==e?void 0:e.join)?`${e.alias}.${e.accessorKey}`:e.key,i=a.map(e=>({...e,key:e.key.replace("__replaceKey","")})).filter(e=>!e.is_inner_join),u=p.differenceWith(i,i,(e,a)=>e.key===(null==a?void 0:a.joinKey)),d=p.differenceWith(u,e,(e,a)=>s(e)===a.accessorKey).map(e=>{var a,r,t;return{header:l?n.formatLabel((null==(a=l(null==e?void 0:e.label))?void 0:a.replace("_data",""))||""):n.formatLabel((null==(r=null==e?void 0:e.label)?void 0:r.replace("_data",""))||""),accessorKey:s(e),visible:!1,type:(null==e?void 0:e.enum)?"status":e.type,..."array"===e.type&&{typeArrayAccessorKey:e.accessorKey||""},enableSorting:"array"!==e.type&&"object"!==e.type&&!(null==e?void 0:e.join),..."boolean"===(null==e?void 0:e.type)?{typeBooleanLabels:(null==(t=null==e?void 0:e.values)?void 0:t.length)?p.mapValues(p.keyBy(null==e?void 0:e.values.map(e=>({key:e.name,value:e.label})),"key"),"value"):{0:"Inactive",1:"Active",false:"Inactive",true:"Active"}}:{}}}),c=[...null==e?void 0:e.map(e=>{const r=a.find(a=>s(a)===e.accessorKey);return{...e,..."object"===(null==r?void 0:r.type)||(null==r?void 0:r.joinKey)||!1===e.enableSorting?{enableSorting:!1}:{}}}),...d];return o=b(o,c.map(e=>e.accessorKey)),{columns:c,orderKeys:o}}catch(o){return{columns:e,orderKeys:e.map(e=>e.accessorKey)}}};exports.ErpLoader=f,exports.PageContext=P,exports.PageProvider=({children:s,routeToColumnsMap:i,routeToResourceMap:u})=>{const m=t.useLocation(),[v,g]=r.useState(S),[y,h]=r.useState([]),[j,x]=r.useState(!0),[C,K]=r.useState(!1),[k,q]=r.useState(null),[I,T]=r.useState([]),[w,A]=r.useState([]),[M,F]=r.useState(!1),[R,L]=r.useState(""),[O,E]=r.useState(!0),[V,z]=r.useState(!1),[B,$]=r.useState({}),[G,N]=r.useState({columns:[],orderKeys:[]}),{user:D}=e.useAuth(),J=r.useRef(m.pathname),W=r.useMemo(()=>m.pathname,[m.pathname]),Z=r.useMemo(()=>{var e;return(null==(e=(null==i?void 0:i[W])||o.routeToColumnsMap[W])?void 0:e.defaultColumns)||[]},[W,i]),Q=r.useMemo(()=>(null==u?void 0:u[W])||o.routeToResourceMap[W]||null,[W,u]),{t:H}=c.useTranslation(),U=r.useCallback(async(e,a,r)=>{var t,o,s,i,u,d,c,m,v;if(J.current===e){x(!0),q(null);try{if(a.length&&r){const{pageResource:y="",fieldResource:f="",formResource:P=""}=r;if(J.current!==e)return;const[j,x,C]=await Promise.all([y?l.getV1PagesResource({...n.getToken(),resource:y}):Promise.resolve(null),l.getV1FormBuilderSchemaFieldsName({name:f,...n.getToken()}),l.getV1FormBuilder({...n.getToken(),filters:`(resource.eq=${P}&company_id.eq=${null==D?void 0:D.company_id})`})]);if(J.current!==e)return;const K=null==(o=null==(t=null==x?void 0:x.data)?void 0:t.fields)?void 0:o.map(e=>{var a;return{...e,label:(null==(a=null==e?void 0:e.label)?void 0:a.trim())?e.label:n.formatLabel(e.key)}}),k=_(a,K,[],[],H),q=(null==(i=null==(s=null==j?void 0:j.data)?void 0:s.pages)?void 0:i.map(e=>{var r;return{...S,...e,visible_columns:_((null==(r=e.visible_columns)?void 0:r.length)?e.visible_columns:a,K,e.column_order||[],a,H).columns,column_order:b(e.column_order||[],p.uniq(k.orderKeys))}}))||[],I=(null==(d=null==(u=null==j?void 0:j.data)?void 0:u.shared_pages)?void 0:d.map(e=>({...e.details,isShared:!0,owner:e.owner,_id:e.id})))||[],w=[...q,...I];J.current===e&&await Promise.all([h(K),N(k),L(null==(c=null==j?void 0:j.data)?void 0:c._id),A(I),T(w||[]),$((null==(v=null==(m=null==C?void 0:C.data)?void 0:m.form)?void 0:v[0])||{}),g(e=>({...e,...(null==q?void 0:q[0])||{}}))])}}catch(y){J.current===e&&q("Failed to load page data")}finally{J.current===e&&setTimeout(()=>{x(!1)},1e3)}}},[]),X=async e=>{var a,r,t;try{const o=((null==e?void 0:e.length)?e:I.filter(e=>!e.isShared)).map(e=>e._id==(null==v?void 0:v._id)&&v.name==e.name?v:e),s=n.removeIdStaticIdsFromMongoObject(o),i=await l.patchV1PagesPageId({...n.getToken(),page_id:R,pages:s});if(200===i.status_code){const o=(null==(a=null==i?void 0:i.data)?void 0:a.pages)||[];T(o),(async()=>{await l.getV1FilterResource({...n.getToken(),resource:(null==Q?void 0:Q.pageResource)||(null==Q?void 0:Q.fieldResource)})})(),g(e=>({...e,...o.find(a=>a.name==e.name)||{}})),F(!1),z(!1),$((null==(t=null==(r=null==i?void 0:i.data)?void 0:r.form)?void 0:t[0])||{});const s=(null==e?void 0:e.length)?H("pages.msg.delete"):H("pages.msg.save");d.enqueueSnackbar(s)}return i}catch(o){q("Failed to save page data")}};return r.useEffect(()=>(J.current=W,x(!0),K(!1),g(S),F(!1),E(!0),h([]),N({columns:[],orderKeys:[]}),T([]),A([]),L(""),q(null),U(W,Z,Q),()=>{x(!0)}),[W,JSON.stringify(Z),JSON.stringify(Q)]),(j||W!=J.current)&&Q||(j||W!=J.current)&&Q?/* @__PURE__ */a.jsx(f,{}):/* @__PURE__ */a.jsx(P.Provider,{value:{pageTemplateId:R,activePage:v,pages:I,sharedPages:w,schemaFields:y,setPages:T,updatePageInfo:e=>{g(a=>({...a,...e})),!O&&F(!0),E(!1)},savePages:async()=>{q(null),K(!0),await X(),setTimeout(()=>{K(!1)},1e3)},setActivePage:e=>{const a=I.map(e=>e._id==(null==v?void 0:v._id)?v:e);T(a),g(e)},isSaving:C,loading:j,error:k,initializeColumns:e=>{},generatedColumns:G,updateGeneratedColumns:e=>{N(a=>({...a,...e}))},isChanged:M,deletePage:async e=>{X(e)},isCreatePage:V,setIsCreatePage:z,addOrDeletePage:X,setIsChanged:F,formData:B},children:s})},exports.PermissionsContext=g,exports.PermissionsProvider=({children:e})=>{const{setIsPermissionLoaded:t=!1}=m.useAppSelector(e=>e.roles??{}),l=r.useMemo(()=>localStorage.getItem("role-permission"),[localStorage.getItem("role-permission")]),o=r.useMemo(()=>{const e=l;if(!e)return{};try{return JSON.parse(e)}catch(a){return localStorage.removeItem("role-permission"),{}}},[t,l]),s=r.useMemo(()=>{const e=(e,a)=>{var r;return Boolean(null==(r=null==o?void 0:o[e])?void 0:r[a])},a={};return Object.keys(o).forEach(r=>{const t=n.formatLabel(r.replace(/p$/gi,"").replace(/-p-/gi,"-")).replace(/[^a-zA-Z0-9]/gi,""),[l,o,...s]=t.split(/(?=[A-Z])/),i=s.join(""),u=l+(o||"");a[u]||(a[u]={});Object.entries({u:"canEdit",e:"canEdit",r:"canView",w:"canAdd",d:"canDelete",wo:"canAddForOthers"}).forEach(([t,l])=>{if(i){a[u][i]||(a[u][i]={});const o=a[u][i][l]||!1;a[u][i][l]=o||e(r,t)}else{const o=a[u][l]||!1;a[u][l]=o||e(r,t)}})}),a},[o]);/* @__PURE__ */
2
2
  return a.jsx(g.Provider,{value:s,children:e})},exports.defaultPageState=S,exports.initialFilter=h;
3
- //# sourceMappingURL=index-C2m4EKMw.js.map
3
+ //# sourceMappingURL=index-D6O6Gc88.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-C2m4EKMw.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 */\r\nimport React, { createContext, useMemo, ReactNode } from \"react\";\r\nimport { formatLabel } from \"../utils/format-text\";\r\nimport { useAppSelector } from \"../redux/hooks\";\r\n\r\n// Define the types for permissions\r\ntype PermissionActions = \"canEdit\" | \"canView\" | \"canAdd\" | \"canDelete\" | \"canAddForOthers\";\r\ntype SubModulePermissions = Partial<Record<PermissionActions, boolean>>;\r\ntype ModulePermissions = SubModulePermissions & Record<string, SubModulePermissions>;\r\n\r\nexport interface PermissionsContextType {\r\n [module: string]: ModulePermissions;\r\n}\r\n\r\ninterface PermissionsProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n// Create a context with a default value\r\nexport const PermissionsContext = createContext<PermissionsContextType | null>(null);\r\n\r\nexport const PermissionsProvider: React.FC<PermissionsProviderProps> = ({ children }) => {\r\n const { setIsPermissionLoaded = false } = useAppSelector(\r\n (store) => store.roles ?? {}\r\n );\r\n\r\n const storagePermission = useMemo(() => {\r\n return localStorage.getItem(\"role-permission\")\r\n }, [localStorage.getItem(\"role-permission\")])\r\n\r\n const permissions: Record<string, any> = useMemo(() => {\r\n const rawValue = storagePermission;\r\n\r\n if (!rawValue) {\r\n return {};\r\n }\r\n\r\n try {\r\n return JSON.parse(rawValue);\r\n } catch (error) {\r\n console.warn(\r\n \"[PermissionsProvider] Failed to parse stored permissions. Clearing corrupted value.\",\r\n error\r\n );\r\n localStorage.removeItem(\"role-permission\");\r\n return {};\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [setIsPermissionLoaded, storagePermission]);\r\n const computedPermissions = useMemo(() => {\r\n const checkPermission = (module: string, action: string): boolean =>\r\n Boolean(permissions?.[module]?.[action]);\r\n\r\n const dynamicPermissions: PermissionsContextType = {};\r\n\r\n Object.keys(permissions)\r\n // .filter((key) => key.startsWith(\"rental-\"))\r\n .forEach((module) => {\r\n const formattedModule = formatLabel(\r\n module.replace(/p$/gi, \"\").replace(/-p-/gi, \"-\")\r\n ).replace(/[^a-zA-Z0-9]/gi, \"\");\r\n\r\n // Extract the main module name (e.g., \"RentalQuotations\")\r\n const [baseModule, subModule, ...subModuleParts] = formattedModule.split(/(?=[A-Z])/);\r\n const subModuleName = subModuleParts.join(\"\");\r\n const bModule = baseModule + (subModule || \"\")\r\n\r\n if (!dynamicPermissions[bModule]) {\r\n dynamicPermissions[bModule] = {};\r\n }\r\n\r\n const actionMap: Record<string, PermissionActions> = {\r\n u: \"canEdit\",\r\n e: \"canEdit\",\r\n r: \"canView\",\r\n w: \"canAdd\",\r\n d: \"canDelete\",\r\n wo: \"canAddForOthers\"\r\n };\r\n\r\n Object.entries(actionMap).forEach(([key, actionName]) => {\r\n if (subModuleName) {\r\n // Store sub-module actions separately\r\n if (!dynamicPermissions[bModule][subModuleName]) {\r\n dynamicPermissions[bModule][subModuleName] = {};\r\n }\r\n const currentValue = (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] || false;\r\n (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\r\n } else {\r\n // Store main module actions\r\n const currentValue = (dynamicPermissions[bModule] as SubModulePermissions)[actionName] || false;\r\n (dynamicPermissions[bModule] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\r\n }\r\n });\r\n });\r\n\r\n\r\n return dynamicPermissions;\r\n }, [permissions]);\r\n\r\n return (\r\n <PermissionsContext.Provider value={computedPermissions}>\r\n {children}\r\n </PermissionsContext.Provider>\r\n );\r\n};\r\n","import React from \"react\"\r\nimport { Box, CircularProgress, CircularProgressProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\nconst Loader = styled(CircularProgress)(({theme})=>({\r\n color: theme.palette?.theme?.primary[500]||\"#1976d2\"\r\n}))\r\n\r\nconst ErpLoader = (props:CircularProgressProps) => {\r\n\treturn <Box position=\"fixed\" left='50%' top=\"50%\">\r\n <Loader size={50} {...props}/>\r\n </Box>\r\n};\r\n\r\nexport { ErpLoader };\r\nexport default ErpLoader;\r\n","/* eslint-disable react-refresh/only-export-components */\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\n\r\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport {\r\n\tgetV1FilterResource,\r\n\tgetV1FormBuilder,\r\n\tgetV1FormBuilderSchemaFieldsName,\r\n\tgetV1PagesResource,\r\n\tpatchV1PagesPageId\r\n} from '../api-client/api.system-feature/api';\r\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\r\nimport { RuleGroupType } from 'react-querybuilder';\r\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\r\nimport _ from 'lodash';\r\nimport { formatLabel } from '../utils/format-text';\r\nimport ErpLoader from '../components/loaders/erp-loader';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useAuth } from '../hooks/useAuth';\r\n// import { usePermissions } from '../hooks/use-permissions';\r\n\r\n/* Interfaces and types */\r\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\r\n\r\ninterface SchemaFields {\r\n\tselect: string;\r\n\talias: string;\r\n\ttype: string;\r\n\tfilter_type?: string;\r\n\tfilter_name?: string;\r\n\trequired?: boolean;\r\n\tisOrderAllowed?: boolean;\r\n\tisDefault?: boolean;\r\n\tisFilterAllowed?: boolean;\r\n\tlabel?: string;\r\n\tkey: string;\r\n\taccessorKey?: string;\r\n\tjoinKey?: string;\r\n\tenum?: string | string[];\r\n}\r\nexport interface SavedViewType {\r\n\tlabel: ViewType;\r\n\tposition: number;\r\n}\r\nexport interface PageState {\r\n\t_id: string | number;\r\n\tname: string;\r\n\tpage_size: number;\r\n\tcolumn_order: string[];\r\n\tvisible_columns: MaterialTableColumnProps[];\r\n\tviews: SavedViewType[];\r\n\tactive_view: ViewType;\r\n\tfilters: RuleGroupType;\r\n\tfilterQueryString: string;\r\n\tsort: Record<any, any> | null;\r\n\tsearch: string;\r\n\tenabled_views: ViewType[];\r\n\tisShared: boolean;\r\n\tcolumn_sizes: Record<string, number>;\r\n}\r\n\r\nexport interface GeneratedColumnsState {\r\n\tcolumns: MaterialTableColumnProps[];\r\n\torderKeys: string[];\r\n}\r\n\r\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\r\n\r\ninterface PageContextValue {\r\n\tpageTemplateId: string;\r\n\tactivePage: PageState;\r\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\r\n\tloading: boolean;\r\n\tisSaving: boolean;\r\n\terror: string | null;\r\n\tpages: any[];\r\n\tsavePages: () => void;\r\n\tsetActivePage: (data: any) => void;\r\n\tsetPages: React.Dispatch<any>;\r\n\tschemaFields: SchemaFields[];\r\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\r\n\tgeneratedColumns: GeneratedColumnsState;\r\n\tsharedPages: any[];\r\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\r\n\tformData: Record<string, any>\r\n\tsetFormData: (data: Record<string, any>) => void\r\n}\r\n\r\nexport const defaultPageState: PageState = {\r\n\t_id: '',\r\n\tname: '',\r\n\tpage_size: 10,\r\n\tcolumn_order: ['id'],\r\n\tvisible_columns: [],\r\n\tviews: [],\r\n\tactive_view: '',\r\n\tfilters: initialFilter,\r\n\tfilterQueryString: '',\r\n\tsort: null,\r\n\tsearch: '',\r\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\r\n\tisShared: false,\r\n\tcolumn_sizes: {}\r\n};\r\ninterface PageProviderProps {\r\n\tchildren: React.ReactNode;\r\n\trouteToColumnsMap?: Record<string, any>;\r\n\trouteToResourceMap?: Record<string, any>;\r\n}\r\n\r\nconst UpdatePageInfo = () => { };\r\nconst UpdateGeneratedColumns = () => { };\r\n\r\nexport const PageContext = createContext<PageContextValue>({\r\n\tpageTemplateId: '',\r\n\tactivePage: defaultPageState,\r\n\tupdatePageInfo: UpdatePageInfo,\r\n\tloading: false,\r\n\tisSaving: false,\r\n\terror: null,\r\n\tpages: [],\r\n\tsharedPages: [],\r\n\tsavePages: () => { },\r\n\tsetActivePage: () => { },\r\n\tsetPages: () => { },\r\n\tschemaFields: [],\r\n\tinitializeColumns: () => { },\r\n\tgeneratedColumns: { columns: [], orderKeys: [] },\r\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\r\n});\r\n\r\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\r\n\t// Create a Set from the first array for efficient lookups\r\n\tconst array1Set = new Set(array1);\r\n\r\n\t// Filter the second array to find elements not in the first array\r\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\r\n\r\n\t// Combine the original first array with the new elements\r\n\treturn [...array1, ...elementsToAdd];\r\n}\r\n\r\nconst generateColumnSchema = (\r\n\tdefaultColumns: MaterialTableColumnProps[],\r\n\tschemaFields: SchemaFields[],\r\n\tcolumnOrders: string[],\r\n\tdColumns?: any[],\r\n\tt?: any\r\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\r\n\ttry {\r\n\t\t// if (dColumns && dColumns?.length) {\r\n\t\t// \tdefaultColumns = defaultColumns.map((column) => {\r\n\t\t// \t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\r\n\t\t// \t\treturn f || column\r\n\t\t// \t})\r\n\t\t// }\r\n\t\tif (dColumns && dColumns?.length) {\r\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\r\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\r\n\t\t\t\tconst merged = f ? { ...column, ...f } : column;\r\n\t\t\t\treturn merged\r\n\t\t\t})\r\n\t\t}\r\n\t\tlet orderKeys = columnOrders.length\r\n\t\t\t? columnOrders\r\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\r\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\r\n\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\r\n\r\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\r\n\t\tconst updatedFields = schemaFields.map((field) => ({\r\n\t\t\t...field,\r\n\t\t\tkey: field.key.replace('__replaceKey', '')\r\n\t\t})).filter((field) => !field.is_inner_join);\r\n\r\n\t\tconst uniqueFields = _.differenceWith(\r\n\t\t\tupdatedFields,\r\n\t\t\tupdatedFields,\r\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\r\n\t\t);\r\n\r\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\r\n\t\tconst unmatchedFields = _.differenceWith(\r\n\t\t\tuniqueFields,\r\n\t\t\tdefaultColumns,\r\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\r\n\t\t);\r\n\r\n\t\t// Map unique fields to MaterialTableColumn structure\r\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\r\n\t\t\t(field) => ({\r\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\r\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\r\n\t\t\t\tvisible: false,\r\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\r\n\t\t\t\t...(field.type === 'array' && { typeArrayAccessorKey: field.accessorKey || '' }),\r\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false : true,\r\n\t\t\t\t...(field?.type === 'boolean' ? {\r\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues(_.keyBy(\r\n\t\t\t\t\t\tfield?.values.map(item => ({\r\n\t\t\t\t\t\t\tkey: item.name,\r\n\t\t\t\t\t\t\tvalue: item.label\r\n\t\t\t\t\t\t})),\r\n\t\t\t\t\t\t'key'\r\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\r\n\t\t\t\t} : {})\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\r\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\r\n\t\t\treturn {\r\n\t\t\t\t...column,\r\n\t\t\t\t...((field?.type === 'object' || field?.joinKey || column.enableSorting === false) ? { enableSorting: false } : {})\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Combine default columns and additional columns\r\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\r\n\r\n\t\t// Generate an array of column keys for ordering\r\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\r\n\r\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\r\n\r\n\t\treturn { columns, orderKeys };\r\n\t} catch (error) {\r\n\t\treturn {\r\n\t\t\tcolumns: defaultColumns,\r\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\r\n\t\t};\r\n\t}\r\n};\r\n\r\nexport const PageProvider: React.FC<PageProviderProps> = ({ children, routeToColumnsMap: customRouteToColumnsMap, routeToResourceMap: customRouteToResourceMap }) => {\r\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToResourceMap:\", customRouteToResourceMap)\r\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToColumnsMap:\", customRouteToColumnsMap)\r\n\tconst location = useLocation();\r\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\r\n\t// const permissions=usePermissions();\r\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\r\n\tconst [loading, setLoading] = useState<boolean>(true);\r\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\r\n\tconst [error, setError] = useState<string | null>(null);\r\n\tconst [pages, setPages] = useState<any>([]);\r\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\r\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\r\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\r\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\r\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\r\n\tconst [formData, setFormData] = useState<any>({});\r\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\r\n\t\tcolumns: MaterialTableColumnProps[];\r\n\t\torderKeys: string[];\r\n\t}>({ columns: [], orderKeys: [] });\r\n\tconst { user } = useAuth()\r\n\t// Add ref to track current pathname for race condition prevention\r\n\tconst currentPathnameRef = useRef<string>(location.pathname);\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Get current page's default columns and resources\r\n\tconst defaultColumns: any[] = useMemo(() => {\r\n\t\tconst columns = (customRouteToColumnsMap?.[curPathName] || routeToColumnsMap[curPathName])?.defaultColumns || [];\r\n\t\treturn columns;\r\n\t}, [curPathName, customRouteToColumnsMap]);\r\n\r\n\tconst resources: IResources = useMemo(() => {\r\n\t\tconst resource = customRouteToResourceMap?.[curPathName] || routeToResourceMap[curPathName] || null;\r\n\t\treturn resource;\r\n\t}, [curPathName, customRouteToResourceMap]);\r\n\r\n\t//Translation\r\n\tconst { t } = useTranslation()\r\n\r\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\r\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\r\n\t\t//! Remove the function if not needed\r\n\t};\r\n\r\n\t// Fetch page-related information from API\r\n\tconst fetchPageData = useCallback(\r\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\r\n\t\t\tconsole.log('PageContext: Entering fetchPageData', { currentPath, currentDefaultColumnsLength: currentDefaultColumns?.length, hasResources: !!currentResources });\r\n\r\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\r\n\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed', { ref: currentPathnameRef.current, current: currentPath });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetError(null);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconsole.log('PageContext: Resources Check:', { currentDefaultColumns, currentResources });\r\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\r\n\t\t\t\t\tconst { pageResource = '', fieldResource = '', formResource = '' } = currentResources;\r\n\r\n\t\t\t\t\tconsole.log('PageContext: Pathname:', currentPath);\r\n\t\t\t\t\tconsole.log('PageContext: Default Columns:', currentDefaultColumns);\r\n\t\t\t\t\tconsole.log('PageContext: Resources:', currentResources);\r\n\r\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst [pageResponse, fieldResponse, formResponse] = await Promise.all([\r\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }) : Promise.resolve(null),\r\n\r\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\r\n\t\t\t\t\t\t\tname: fieldResource,\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tskip: 0,\r\n\t\t\t\t\t\t\tlimit: 999\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetV1FormBuilder({\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tfilters: `(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t]);\r\n\r\n\t\t\t\t\tconsole.log('PageContext: API Responses:', { pageResponse, fieldResponse, formResponse });\r\n\r\n\t\t\t\t\t// Final check - ensure pathname still matches\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({ ...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label }));\r\n\r\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\r\n\t\t\t\t\tconsole.log('PageContext: Generated Columns:', gColumns);\r\n\r\n\t\t\t\t\tconst pages =\r\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\r\n\t\t\t\t\t\t\t...defaultPageState,\r\n\t\t\t\t\t\t\t...p,\r\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\r\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\r\n\t\t\t\t\t\t\t\tfields,\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\r\n\t\t\t\t\t\t\t\tt\r\n\t\t\t\t\t\t\t).columns,\r\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t})) || [];\r\n\t\t\t\t\tconst sharedPages =\r\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\r\n\t\t\t\t\t\t\t...sPages.details,\r\n\t\t\t\t\t\t\tisShared: true,\r\n\t\t\t\t\t\t\towner: sPages.owner,\r\n\t\t\t\t\t\t\t_id: sPages.id\r\n\t\t\t\t\t\t})) || [];\r\n\r\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\r\n\r\n\t\t\t\t\t// Only update state if we're still on the same path\r\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\t\tawait Promise.all([\r\n\t\t\t\t\t\t\tsetSchemaFields(fields),\r\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\r\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\r\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\r\n\t\t\t\t\t\t\tsetPages(uPages || []),\r\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\r\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t\t\t\t...prev,\r\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\r\n\t\t\t\t\t\t\t}))\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t\t// Only set error if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetError('Failed to load page data');\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\t// Only update loading state if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[] // Remove dependencies to prevent stale closures\r\n\t);\r\n\r\n\t// Update page state dynamically\r\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\r\n\t\tsetActivePageData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t\t!isInitialLoad && setIsChanged(true)\r\n\t\tsetIsInitialLoad(false)\r\n\t};\r\n\r\n\t// Update columns state dynamically\r\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\r\n\t\tsetGeneratedColumns((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t};\r\n\r\n\tconst setActivePage = (page: PageState) => {\r\n\t\tconst uPages = pages.map((p) =>\r\n\t\t\tp._id == activePage?._id ? activePage : p\r\n\t\t);\r\n\t\tsetPages(uPages);\r\n\t\tsetActivePageData(page);\r\n\t};\r\n\r\n\tconst savePages = async () => {\r\n\t\tsetError(null);\r\n\t\tsetIsSaving(true);\r\n\t\tawait addOrDeletePage()\r\n\t\tsetTimeout(() => {\r\n\t\t\tsetIsSaving(false);\r\n\t\t}, 1000);\r\n\t};\r\n\tconst fetchSavedFilters = async (): Promise<void> => {\r\n\r\n\t\tawait getV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\r\n\r\n\t};\r\n\r\n\tconst addOrDeletePage = async (restPages?: any[]) => {\r\n\t\ttry {\r\n\t\t\tconst filteredPages = restPages?.length ? restPages : pages.filter((page) => !page.isShared);\r\n\t\t\tconst uPages = filteredPages.map((p) =>\r\n\t\t\t\t(p._id == activePage?._id && activePage.name == p.name) ? activePage : p\r\n\t\t\t);\r\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\r\n\r\n\t\t\tconst response = await patchV1PagesPageId({\r\n\t\t\t\t...getToken(),\r\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\r\n\t\t\t});\r\n\t\t\tif (response.status_code === 200) {\r\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\r\n\t\t\t\tsetPages(updatedPages);\r\n\t\t\t\tfetchSavedFilters();\r\n\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t...prev,\r\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\r\n\t\t\t\t}));\r\n\t\t\t\tsetIsChanged(false);\r\n\t\t\t\tsetIsCreatePage(false);\r\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\r\n\t\t\t\tconst msg = restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\r\n\t\t\t\tenqueueSnackbar(msg);\r\n\t\t\t}\r\n\t\t\treturn response\r\n\t\t} catch (err) {\r\n\t\t\tsetError('Failed to save page data');\r\n\t\t}\r\n\t}\r\n\r\n\tconst deletePage = async (pages: string) => {\r\n\t\taddOrDeletePage(pages);\r\n\t}\r\n\r\n\t// Handle pathname changes\r\n\tuseEffect(() => {\r\n\t\t// Update the ref immediately\r\n\t\tcurrentPathnameRef.current = curPathName;\r\n\r\n\t\t// Reset state for new page\r\n\t\tsetLoading(true);\r\n\t\tsetIsSaving(false);\r\n\t\tsetActivePageData(defaultPageState);\r\n\t\tsetIsChanged(false);\r\n\t\tsetIsInitialLoad(true);\r\n\r\n\t\t// Clear previous data to prevent showing stale data\r\n\t\tsetSchemaFields([]);\r\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\r\n\t\tsetPages([]);\r\n\t\tsetSharedPages([]);\r\n\t\tsetPageTemplateId('');\r\n\t\tsetError(null);\r\n\r\n\t\t// Fetch data for new page with current values\r\n\t\tconsole.log('PageContext: useEffect Triggered', { curPathName, defaultColumnsLength: defaultColumns?.length, hasResources: !!resources });\r\n\t\tfetchPageData(curPathName, defaultColumns, resources);\r\n\r\n\t\treturn () => { setLoading(true) }\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\r\n\r\n\r\n\t// Removed loading check to prevent blank page during loading\r\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\r\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\r\n\t}\r\n\r\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\r\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\r\n\t}\r\n\r\n\treturn (\r\n\t\t<PageContext.Provider\r\n\t\t\tvalue={{\r\n\t\t\t\tpageTemplateId,\r\n\t\t\t\tactivePage,\r\n\t\t\t\tpages,\r\n\t\t\t\tsharedPages,\r\n\t\t\t\tschemaFields,\r\n\t\t\t\tsetPages,\r\n\t\t\t\tupdatePageInfo,\r\n\t\t\t\tsavePages,\r\n\t\t\t\tsetActivePage,\r\n\t\t\t\tisSaving,\r\n\t\t\t\tloading,\r\n\t\t\t\terror,\r\n\t\t\t\tinitializeColumns,\r\n\t\t\t\tgeneratedColumns,\r\n\t\t\t\tupdateGeneratedColumns,\r\n\t\t\t\tisChanged,\r\n\t\t\t\tdeletePage,\r\n\t\t\t\tisCreatePage,\r\n\t\t\t\tsetIsCreatePage,\r\n\t\t\t\taddOrDeletePage,\r\n\t\t\t\tsetIsChanged,\r\n\t\t\t\tformData\r\n\t\t\t}}>\r\n\t\t\t{children}\r\n\t\t</PageContext.Provider>\r\n\t);\r\n};\r\n"],"names":["PermissionsContext","createContext","Loader","styled","CircularProgress","theme","color","_b","_a","palette","primary","ErpLoader","props","jsx","Box","position","left","top","children","size","initialFilter","combinator","rules","defaultPageState","_id","name","page_size","column_order","visible_columns","views","active_view","filters","filterQueryString","sort","search","enabled_views","isShared","column_sizes","PageContext","pageTemplateId","activePage","updatePageInfo","loading","isSaving","error","pages","sharedPages","savePages","setActivePage","setPages","schemaFields","initializeColumns","generatedColumns","columns","orderKeys","updateGeneratedColumns","mergeArraysKeepingOrder","array1","array2","array1Set","Set","elementsToAdd","filter","item","has","generateColumnSchema","defaultColumns","columnOrders","dColumns","t","length","map","column","f","find","c","accessorKey","getAccesorKeyViaField","field","type","join","alias","key","updatedFields","replace","is_inner_join","uniqueFields","_","differenceWith","fieldA","fieldB","joinKey","additionalColumns","header","formatLabel","label","visible","enum","typeArrayAccessorKey","enableSorting","typeBooleanLabels","_c","values","mapValues","keyBy","value","false","true","routeToColumnsMap","customRouteToColumnsMap","routeToResourceMap","customRouteToResourceMap","location","useLocation","setActivePageData","useState","setSchemaFields","setLoading","setIsSaving","setError","setSharedPages","isChanged","setIsChanged","setPageTemplateId","isInitialLoad","setIsInitialLoad","isCreatePage","setIsCreatePage","formData","setFormData","setGeneratedColumns","user","useAuth","currentPathnameRef","useRef","pathname","curPathName","useMemo","resources","useTranslation","fetchPageData","useCallback","async","currentPath","currentDefaultColumns","currentResources","current","pageResource","fieldResource","formResource","pageResponse","fieldResponse","formResponse","Promise","all","getV1PagesResource","getToken","resource","resolve","getV1FormBuilderSchemaFieldsName","getV1FormBuilder","company_id","fields","data","trim","gColumns","_d","p","uniq","_f","_e","shared_pages","sPages","details","owner","id","uPages","_g","_i","_h","form","prev","err","setTimeout","addOrDeletePage","restPages","page","sanitizedPages","removeIdStaticIdsFromMongoObject","response","patchV1PagesPageId","page_id","status_code","updatedPages","getV1FilterResource","fetchSavedFilters","msg","enqueueSnackbar","useEffect","JSON","stringify","Provider","updates","deletePage","setIsPermissionLoaded","useAppSelector","store","roles","storagePermission","localStorage","getItem","permissions","rawValue","parse","removeItem","computedPermissions","checkPermission","module","action","Boolean","dynamicPermissions","Object","keys","forEach","formattedModule","baseModule","subModule","subModuleParts","split","subModuleName","bModule","entries","u","e","r","w","d","wo","actionName","currentValue"],"mappings":"ihBAmBaA,EAAqBC,EAAAA,cAA6C,MCfzEC,EAASC,EAAAA,OAAOC,EAAAA,iBAAPD,CAAyB,EAAEE,oBAAU,MAAA,CAClDC,OAAO,OAAAC,EAAA,OAAAC,EAAAH,EAAMI,kBAASJ,YAAf,EAAAE,EAAsBG,QAAQ,OAAM,aAGvCC,EAAaC,kBACXC,EAAAA,IAACC,EAAAA,IAAA,CAAIC,SAAS,QAAQC,KAAK,MAAMC,IAAI,MACzCC,wBAAAL,EAAAA,IAACX,EAAA,CAAOiB,KAAM,MAAQP,MC4DbQ,EAA+B,CAAEC,WAAY,MAAOC,MAAO,IAsB3DC,EAA8B,CAC1CC,IAAK,GACLC,KAAM,GACNC,UAAW,GACXC,aAAc,CAAC,MACfC,gBAAiB,GACjBC,MAAO,GACPC,YAAa,GACbC,QAASX,EACTY,kBAAmB,GACnBC,KAAM,KACNC,OAAQ,GACRC,cAAe,CAAC,QAAS,OAAQ,SAAU,WAAY,SACvDC,UAAU,EACVC,aAAc,CAAA,GAWFC,EAAcrC,EAAAA,cAAgC,CAC1DsC,eAAgB,GAChBC,WAAYjB,EACZkB,eANsB,OAOtBC,SAAS,EACTC,UAAU,EACVC,MAAO,KACPC,MAAO,GACPC,YAAa,GACbC,UAAW,OACXC,cAAe,OACfC,SAAU,OACVC,aAAc,GACdC,kBAAmB,OACnBC,iBAAkB,CAAEC,QAAS,GAAIC,UAAW,IAC5CC,uBAjB8B,SAoB/B,SAASC,EAAwBC,EAAkBC,GAElD,MAAMC,EAAY,IAAIC,IAAIH,GAGpBI,EAAgBH,EAAOI,OAAQC,IAAUJ,EAAUK,IAAID,IAG7D,MAAO,IAAIN,KAAWI,EACvB,CAEA,MAAMI,EAAuB,CAC5BC,EACAhB,EACAiB,EACAC,EACAC,KAEA,IAOKD,UAAYA,WAAUE,UACzBJ,EAAiBA,EAAeK,IAAKC,IACpC,MAAMC,EAAIL,EAASM,KAAMC,GAAMA,EAAEC,aAAeJ,EAAOI,aAEvD,OADeH,EAAI,IAAKD,KAAWC,GAAMD,KAI3C,IAAIlB,EAAYa,EAAaG,OAC1BH,EACCD,EAAeK,IAAKC,GAAWA,EAAOI,aAC1C,MAAMC,EAAyBC,GACd,WAAfA,EAAMC,OAAqB,MAAAD,OAAA,EAAAA,EAAOE,MAAQ,GAAGF,EAAMG,SAASH,EAAMF,cAAgBE,EAAMI,IAGpFC,EAAgBjC,EAAaqB,IAAKO,IAAA,IACpCA,EACHI,IAAKJ,EAAMI,IAAIE,QAAQ,eAAgB,OACpCtB,OAAQgB,IAAWA,EAAMO,eAEvBC,EAAeC,EAAEC,eACtBL,EACAA,EACA,CAACM,EAAQC,IAAWD,EAAOP,OAAQ,MAAAQ,OAAA,EAAAA,EAAQC,UAWtCC,EAPkBL,EAAEC,eACzBF,EACApB,EACA,CAACY,EAAON,IAAWK,EAAsBC,KAAWN,EAAOI,aAIUL,IACpEO,cAAW,MAAA,CACXe,OAAQxB,EAAIyB,EAAAA,aAAY,OAAAtF,IAAE,MAAAsE,OAAA,EAAAA,EAAOiB,aAAT,EAAAvF,EAAiB4E,QAAQ,QAAS,MAAO,IAAMU,EAAAA,aAAY,OAAAvF,EAAA,MAAAuE,OAAA,EAAAA,EAAOiB,YAAP,EAAAxF,EAAc6E,QAAQ,QAAS,MAAO,IACzHR,YAAaC,EAAsBC,GACnCkB,SAAS,EACTjB,MAAM,MAAAD,OAAA,EAAAA,EAAOmB,MAAO,SAAWnB,EAAMC,QAClB,UAAfD,EAAMC,MAAoB,CAAEmB,qBAAsBpB,EAAMF,aAAe,IAC3EuB,cAA+B,UAAfrB,EAAMC,MAAmC,WAAfD,EAAMC,QAAqB,MAAAD,OAAA,EAAAA,EAAOE,SACxD,aAAhB,MAAAF,OAAA,EAAAA,EAAOC,MAAqB,CAC/BqB,mBAAmB,OAAAC,EAAA,MAAAvB,OAAA,EAAAA,EAAOwB,iBAAQhC,QAASiB,EAAEgB,UAAUhB,EAAEiB,MACxD,MAAA1B,OAAA,EAAAA,EAAOwB,OAAO/B,IAAIR,IAAA,CACjBmB,IAAKnB,EAAKtC,KACVgF,MAAO1C,EAAKgC,SAEb,OACE,SAAW,CAAE,EAAG,WAAY,EAAG,SAAUW,MAAO,WAAYC,KAAM,WAClE,CAAA,KAaAtD,EAAU,IATc,MAAAa,OAAA,EAAAA,EAAgBK,IAAKC,IAClD,MAAMM,EAAQ5B,EAAawB,KAAMI,GAAUD,EAAsBC,KAAWN,EAAOI,aACnF,MAAO,IACHJ,KACkB,YAAhB,MAAAM,OAAA,EAAAA,EAAOC,QAAqB,MAAAD,OAAA,EAAAA,EAAOa,WAAoC,IAAzBnB,EAAO2B,cAA2B,CAAEA,eAAe,GAAU,CAAA,QAKpEP,GAO9C,OAFAtC,EAAYE,EAAwBF,EAFjBD,EAAQkB,IAAKC,GAAWA,EAAOI,cAI3C,CAAEvB,UAASC,YACnB,OAASV,GACR,MAAO,CACNS,QAASa,EACTZ,UAAWY,EAAeK,IAAKC,GAAWA,EAAOI,aAEnD,kEAGwD,EAAG1D,WAAU0F,kBAAmBC,EAAyBC,mBAAoBC,MAGrI,MAAMC,EAAWC,EAAAA,eACVzE,EAAY0E,GAAqBC,EAAAA,SAAoB5F,IAErD2B,EAAckE,GAAmBD,EAAAA,SAAyB,KAC1DzE,EAAS2E,GAAcF,EAAAA,UAAkB,IACzCxE,EAAU2E,GAAeH,EAAAA,UAAkB,IAC3CvE,EAAO2E,GAAYJ,EAAAA,SAAwB,OAC3CtE,EAAOI,GAAYkE,EAAAA,SAAc,KACjCrE,EAAa0E,GAAkBL,EAAAA,SAAc,KAC7CM,EAAWC,GAAgBP,EAAAA,UAAkB,IAC7C5E,EAAgBoF,GAAqBR,EAAAA,SAAiB,KACtDS,EAAeC,GAAoBV,EAAAA,UAAkB,IACrDW,EAAcC,GAAmBZ,EAAAA,UAAkB,IACnDa,EAAUC,GAAed,EAAAA,SAAc,CAAA,IACvC/D,EAAkB8E,GAAuBf,EAAAA,SAG7C,CAAE9D,QAAS,GAAIC,UAAW,MACvB6E,KAAEA,GAASC,YAEXC,EAAqBC,EAAAA,OAAetB,EAASuB,UAC7CC,EAAcC,EAAAA,QAAQ,IAAMzB,EAASuB,SAAU,CAACvB,EAASuB,WAGzDrE,EAAwBuE,EAAAA,QAAQ,WAErC,OADiB,OAAAjI,oBAA0BgI,KAAgB5B,EAAAA,kBAAkB4B,SAA5D,EAAAhI,EAA2E0D,iBAAkB,IAE5G,CAACsE,EAAa3B,IAEX6B,EAAwBD,EAAAA,QAAQ,KACpB,MAAA1B,OAAA,EAAAA,EAA2ByB,KAAgB1B,EAAAA,mBAAmB0B,IAAgB,KAE7F,CAACA,EAAazB,KAGX1C,EAAEA,GAAMsE,mBAQRC,EAAgBC,EAAAA,YACrBC,MAAOC,EAAqBC,EAA8BC,2BAIzD,GAAIZ,EAAmBa,UAAYH,EAAnC,CAKA1B,GAAW,GACXE,EAAS,MAET,IAEC,GAAIyB,EAAsB1E,QAAU2E,EAAkB,CACrD,MAAME,aAAEA,EAAe,GAAAC,cAAIA,EAAgB,GAAAC,aAAIA,EAAe,IAAOJ,EAOrE,GAAIZ,EAAmBa,UAAYH,EAClC,OAGD,MAAOO,EAAcC,EAAeC,SAAsBC,QAAQC,IAAI,CACrEP,EAAeQ,EAAAA,mBAAmB,IAAKC,EAAAA,WAAYC,SAAUV,IAAkBM,QAAQK,QAAQ,MAE/FC,mCAAiC,CAChCtI,KAAM2H,KACHQ,EAAAA,aAIJI,mBAAiB,IACbJ,aACH7H,QAAS,gBAAgBsH,yBAA8BlB,WAAM8B,kBAO/D,GAAI5B,EAAmBa,UAAYH,EAElC,OAGD,MAAMmB,EAAS,OAAA3J,EAAA,0BAAe4J,WAAf,EAAA3J,EAAqB0J,aAArB,EAAA3J,EAA6BgE,IAAIE,UAAM,MAAA,IAAKA,EAAGsB,OAAQ,OAAAvF,QAAAiE,WAAGsB,YAAH,EAAAvF,EAAU4J,QAA8B3F,EAAEsB,MAAvBD,cAAYrB,EAAES,QAEjGmF,EAAWpG,EAAqB+E,EAAuBkB,EAAQ,GAAI,GAAI7F,GAGvExB,GACL,OAAAyH,EAAA,0BAAcH,WAAd,EAAA9D,EAAoBxD,YAApB,EAAAyH,EAA2B/F,IAAKgG,UAAO,MAAA,IACnChJ,KACAgJ,EACH3I,gBAAiBqC,GAChB,OAAAzD,EAAA+J,EAAE3I,wBAAFpB,EAAmB8D,QAASiG,EAAE3I,gBAAkBoH,EAChDkB,EACAK,EAAE5I,cAAgB,GAClBqH,EACA3E,GACChB,QACF1B,aAAc6B,EACb+G,EAAE5I,cAAgB,GAClB4D,EAAEiF,KAAKH,EAAS/G,iBAEX,GACFR,GACL,OAAA2H,EAAA,0BAAcN,WAAd,EAAAO,EAAoBC,mBAApB,EAAAF,EAAkClG,IAAKqG,IAAA,IACnCA,EAAOC,QACVzI,UAAU,EACV0I,MAAOF,EAAOE,MACdtJ,IAAKoJ,EAAOG,QACN,GAEFC,EAAS,IAAInI,KAAUC,GAGzBuF,EAAmBa,UAAYH,SAC5BU,QAAQC,IAAI,CACjBtC,EAAgB8C,GAChBhC,EAAoBmC,GACpB1C,EAAkB,OAAAsD,EAAA,MAAA3B,OAAA,EAAAA,EAAca,WAAd,EAAAc,EAAoBzJ,KACtCgG,EAAe1E,GACfG,EAAS+H,GAAU,IACnB/C,GAAY,OAAAiD,EAAA,0BAAcf,WAAd,EAAAgB,EAAoBC,WAApB,EAAAF,EAA2B,KAAM,CAAA,GAC7ChE,EAAmBmE,IAAA,IACfA,MACCxI,MAAAA,OAAAA,EAAAA,EAAQ,KAAM,CAAA,MAItB,CACD,OAASyI,GAEJjD,EAAmBa,UAAYH,GAClCxB,EAAS,2BAEX,CAAA,QAEKc,EAAmBa,UAAYH,GAClCwC,WAAW,KACVlE,GAAW,IACT,IAEL,CArGA,GAwGD,IA2CKmE,EAAkB1C,MAAO2C,cAC9B,IACC,MACMT,IADgB,MAAAS,OAAA,EAAAA,EAAWnH,QAASmH,EAAY5I,EAAMiB,OAAQ4H,IAAUA,EAAKtJ,WACtDmC,IAAKgG,GAChCA,EAAE/I,MAAO,MAAAgB,OAAA,EAAAA,EAAYhB,MAAOgB,EAAWf,MAAQ8I,EAAE9I,KAAQe,EAAa+H,GAElEoB,EAAiBC,EAAAA,iCAAiCZ,GAElDa,QAAiBC,qBAAmB,IACtClC,aACEmC,QAASxJ,EAAgBM,MAAO8I,IAEtC,GAA6B,MAAzBE,EAASG,YAAqB,CACjC,MAAMC,GAAe,OAAAzL,EAAA,MAAAqL,OAAA,EAAAA,EAAU1B,WAAV,EAAA3J,EAAgBqC,QAAS,GAC9CI,EAASgJ,GApBcnD,iBAEnBoD,EAAAA,oBAAoB,IAAKtC,EAAAA,WAAYC,UAAU,MAAAnB,OAAA,EAAAA,EAAWS,gBAAgB,MAAAT,OAAA,EAAAA,EAAWU,kBAmBzF+C,GACAjF,EAAmBmE,IAAA,IACfA,KACCY,EAAavH,KAAM6F,GAAMA,EAAE9I,MAAQ4J,EAAK5J,OAAS,CAAA,KAEtDiG,GAAa,GACbK,GAAgB,GAChBE,GAAY,OAAA5B,EAAA,0BAAU8D,WAAV,EAAA5J,EAAgB6K,WAAhB,EAAA/E,EAAuB,KAAM,CAAA,GACzC,MAAM+F,GAAM,MAAAX,OAAA,EAAAA,EAAWnH,QAASD,EAAE,oBAAsBA,EAAE,kBAC1DgI,EAAAA,gBAAgBD,EACjB,CACA,OAAOP,CACR,OAASP,GACR/D,EAAS,2BACV,GAqCD,OA7BA+E,EAAAA,UAAU,KAETjE,EAAmBa,QAAUV,EAG7BnB,GAAW,GACXC,GAAY,GACZJ,EAAkB3F,GAClBmG,GAAa,GACbG,GAAiB,GAGjBT,EAAgB,IAChBc,EAAoB,CAAE7E,QAAS,GAAIC,UAAW,KAC9CL,EAAS,IACTuE,EAAe,IACfG,EAAkB,IAClBJ,EAAS,MAITqB,EAAcJ,EAAatE,EAAgBwE,GAEpC,KAAQrB,GAAW,KAExB,CAACmB,EAAa+D,KAAKC,UAAUtI,GAAiBqI,KAAKC,UAAU9D,MAI3DhG,GAAW8F,GAAeH,EAAmBa,UAAYR,IAIzDhG,GAAW8F,GAAeH,EAAmBa,UAAYR,uBAHrD/H,EAAA,mBAQRE,EAAAA,IAACyB,EAAYmK,SAAZ,CACAhG,MAAO,CACNlE,iBACAC,aACAK,QACAC,cACAI,eACAD,WACAR,eA1HqBiK,IACvBxF,EAAmBmE,IAAA,IACfA,KACAqB,MAEH9E,GAAiBF,GAAa,GAC/BG,GAAiB,IAqHf9E,UAlGe+F,UACjBvB,EAAS,MACTD,GAAY,SACNkE,IACND,WAAW,KACVjE,GAAY,IACV,MA6FDtE,cA3GoB0I,IACtB,MAAMV,EAASnI,EAAM0B,IAAKgG,GACzBA,EAAE/I,MAAO,MAAAgB,OAAA,EAAAA,EAAYhB,KAAMgB,EAAa+H,GAEzCtH,EAAS+H,GACT9D,EAAkBwE,IAuGhB/I,WACAD,UACAE,QACAO,kBAzPwBE,MA0PxBD,mBACAG,uBAxH6BmJ,IAC/BxE,EAAqBmD,IAAA,IACjBA,KACAqB,MAsHFjF,YACAkF,WA7DgB7D,MAAOjG,IACzB2I,EAAgB3I,IA6DdiF,eACAC,kBACAyD,kBACA9D,eACAM,YAEA9G,uEFtgBmE,EAAGA,eACxE,MAAM0L,sBAAEA,GAAwB,GAAUC,EAAAA,eACvCC,GAAUA,EAAMC,OAAS,CAAA,GAGtBC,EAAoBvE,EAAAA,QAAQ,IACzBwE,aAAaC,QAAQ,mBAC3B,CAACD,aAAaC,QAAQ,qBAEnBC,EAAmC1E,EAAAA,QAAQ,KAC/C,MAAM2E,EAAWJ,EAEjB,IAAKI,EACH,MAAO,CAAA,EAGT,IACE,OAAOb,KAAKc,MAAMD,EACpB,OAASxK,GAMP,OADAqK,aAAaK,WAAW,mBACjB,CAAA,CACT,GAEC,CAACV,EAAuBI,IACrBO,EAAsB9E,EAAAA,QAAQ,KAClC,MAAM+E,EAAkB,CAACC,EAAgBC,WACvC,OAAAC,QAAQ,OAAAnN,EAAA,MAAA2M,OAAA,EAAAA,EAAcM,SAAd,EAAAjN,EAAwBkN,KAE5BE,EAA6C,CAAA,EA4CnD,OA1CAC,OAAOC,KAAKX,GAETY,QAASN,IACR,MAAMO,EAAkBlI,EAAAA,YACtB2H,EAAOrI,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,MAC5CA,QAAQ,iBAAkB,KAGrB6I,EAAYC,KAAcC,GAAkBH,EAAgBI,MAAM,aACnEC,EAAgBF,EAAenJ,KAAK,IACpCsJ,EAAUL,GAAcC,GAAa,IAEtCN,EAAmBU,KACtBV,EAAmBU,GAAW,CAAA,GAYhCT,OAAOU,QAT8C,CACnDC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,SACHC,EAAG,YACHC,GAAI,oBAGoBd,QAAQ,EAAE7I,EAAK4J,MACvC,GAAIT,EAAe,CAEZT,EAAmBU,GAASD,KAC/BT,EAAmBU,GAASD,GAAiB,CAAA,GAE/C,MAAMU,EAAgBnB,EAAmBU,GAASD,GAAwCS,KAAe,EACxGlB,EAAmBU,GAASD,GAAwCS,GAAcC,GAAgBvB,EAAgBC,EAAQvI,EAC7H,KAAO,CAEL,MAAM6J,EAAgBnB,EAAmBU,GAAkCQ,KAAe,EACzFlB,EAAmBU,GAAkCQ,GAAcC,GAAgBvB,EAAgBC,EAAQvI,EAC9G,MAKC0I,GACN,CAACT;AAEJ,aACGnN,EAAmByM,SAAnB,CAA4BhG,MAAO8G,EACjCrM"}
1
+ {"version":3,"file":"index-D6O6Gc88.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 */\r\nimport React, { createContext, useMemo, ReactNode } from \"react\";\r\nimport { formatLabel } from \"../utils/format-text\";\r\nimport { useAppSelector } from \"../redux/hooks\";\r\n\r\n// Define the types for permissions\r\ntype PermissionActions = \"canEdit\" | \"canView\" | \"canAdd\" | \"canDelete\" | \"canAddForOthers\";\r\ntype SubModulePermissions = Partial<Record<PermissionActions, boolean>>;\r\ntype ModulePermissions = SubModulePermissions & Record<string, SubModulePermissions>;\r\n\r\nexport interface PermissionsContextType {\r\n [module: string]: ModulePermissions;\r\n}\r\n\r\ninterface PermissionsProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n// Create a context with a default value\r\nexport const PermissionsContext = createContext<PermissionsContextType | null>(null);\r\n\r\nexport const PermissionsProvider: React.FC<PermissionsProviderProps> = ({ children }) => {\r\n const { setIsPermissionLoaded = false } = useAppSelector(\r\n (store) => store.roles ?? {}\r\n );\r\n\r\n const storagePermission = useMemo(() => {\r\n return localStorage.getItem(\"role-permission\")\r\n }, [localStorage.getItem(\"role-permission\")])\r\n\r\n const permissions: Record<string, any> = useMemo(() => {\r\n const rawValue = storagePermission;\r\n\r\n if (!rawValue) {\r\n return {};\r\n }\r\n\r\n try {\r\n return JSON.parse(rawValue);\r\n } catch (error) {\r\n console.warn(\r\n \"[PermissionsProvider] Failed to parse stored permissions. Clearing corrupted value.\",\r\n error\r\n );\r\n localStorage.removeItem(\"role-permission\");\r\n return {};\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [setIsPermissionLoaded, storagePermission]);\r\n const computedPermissions = useMemo(() => {\r\n const checkPermission = (module: string, action: string): boolean =>\r\n Boolean(permissions?.[module]?.[action]);\r\n\r\n const dynamicPermissions: PermissionsContextType = {};\r\n\r\n Object.keys(permissions)\r\n // .filter((key) => key.startsWith(\"rental-\"))\r\n .forEach((module) => {\r\n const formattedModule = formatLabel(\r\n module.replace(/p$/gi, \"\").replace(/-p-/gi, \"-\")\r\n ).replace(/[^a-zA-Z0-9]/gi, \"\");\r\n\r\n // Extract the main module name (e.g., \"RentalQuotations\")\r\n const [baseModule, subModule, ...subModuleParts] = formattedModule.split(/(?=[A-Z])/);\r\n const subModuleName = subModuleParts.join(\"\");\r\n const bModule = baseModule + (subModule || \"\")\r\n\r\n if (!dynamicPermissions[bModule]) {\r\n dynamicPermissions[bModule] = {};\r\n }\r\n\r\n const actionMap: Record<string, PermissionActions> = {\r\n u: \"canEdit\",\r\n e: \"canEdit\",\r\n r: \"canView\",\r\n w: \"canAdd\",\r\n d: \"canDelete\",\r\n wo: \"canAddForOthers\"\r\n };\r\n\r\n Object.entries(actionMap).forEach(([key, actionName]) => {\r\n if (subModuleName) {\r\n // Store sub-module actions separately\r\n if (!dynamicPermissions[bModule][subModuleName]) {\r\n dynamicPermissions[bModule][subModuleName] = {};\r\n }\r\n const currentValue = (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] || false;\r\n (dynamicPermissions[bModule][subModuleName] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\r\n } else {\r\n // Store main module actions\r\n const currentValue = (dynamicPermissions[bModule] as SubModulePermissions)[actionName] || false;\r\n (dynamicPermissions[bModule] as SubModulePermissions)[actionName] = currentValue || checkPermission(module, key);\r\n }\r\n });\r\n });\r\n\r\n\r\n return dynamicPermissions;\r\n }, [permissions]);\r\n\r\n return (\r\n <PermissionsContext.Provider value={computedPermissions}>\r\n {children}\r\n </PermissionsContext.Provider>\r\n );\r\n};\r\n","import React from \"react\"\r\nimport { Box, CircularProgress, CircularProgressProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\nconst Loader = styled(CircularProgress)(({theme})=>({\r\n color: theme.palette?.theme?.primary[500]||\"#1976d2\"\r\n}))\r\n\r\nconst ErpLoader = (props:CircularProgressProps) => {\r\n\treturn <Box position=\"fixed\" left='50%' top=\"50%\">\r\n <Loader size={50} {...props}/>\r\n </Box>\r\n};\r\n\r\nexport { ErpLoader };\r\nexport default ErpLoader;\r\n","/* eslint-disable react-refresh/only-export-components */\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\n\r\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport {\r\n\tgetV1FilterResource,\r\n\tgetV1FormBuilder,\r\n\tgetV1FormBuilderSchemaFieldsName,\r\n\tgetV1PagesResource,\r\n\tpatchV1PagesPageId\r\n} from '../api-client/api.system-feature/api';\r\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\r\nimport { RuleGroupType } from 'react-querybuilder';\r\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\r\nimport _ from 'lodash';\r\nimport { formatLabel } from '../utils/format-text';\r\nimport ErpLoader from '../components/loaders/erp-loader';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useAuth } from '../hooks/useAuth';\r\n// import { usePermissions } from '../hooks/use-permissions';\r\n\r\n/* Interfaces and types */\r\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\r\n\r\ninterface SchemaFields {\r\n\tselect: string;\r\n\talias: string;\r\n\ttype: string;\r\n\tfilter_type?: string;\r\n\tfilter_name?: string;\r\n\trequired?: boolean;\r\n\tisOrderAllowed?: boolean;\r\n\tisDefault?: boolean;\r\n\tisFilterAllowed?: boolean;\r\n\tlabel?: string;\r\n\tkey: string;\r\n\taccessorKey?: string;\r\n\tjoinKey?: string;\r\n\tenum?: string | string[];\r\n}\r\nexport interface SavedViewType {\r\n\tlabel: ViewType;\r\n\tposition: number;\r\n}\r\nexport interface PageState {\r\n\t_id: string | number;\r\n\tname: string;\r\n\tpage_size: number;\r\n\tcolumn_order: string[];\r\n\tvisible_columns: MaterialTableColumnProps[];\r\n\tviews: SavedViewType[];\r\n\tactive_view: ViewType;\r\n\tfilters: RuleGroupType;\r\n\tfilterQueryString: string;\r\n\tsort: Record<any, any> | null;\r\n\tsearch: string;\r\n\tenabled_views: ViewType[];\r\n\tisShared: boolean;\r\n\tcolumn_sizes: Record<string, number>;\r\n}\r\n\r\nexport interface GeneratedColumnsState {\r\n\tcolumns: MaterialTableColumnProps[];\r\n\torderKeys: string[];\r\n}\r\n\r\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\r\n\r\ninterface PageContextValue {\r\n\tpageTemplateId: string;\r\n\tactivePage: PageState;\r\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\r\n\tloading: boolean;\r\n\tisSaving: boolean;\r\n\terror: string | null;\r\n\tpages: any[];\r\n\tsavePages: () => void;\r\n\tsetActivePage: (data: any) => void;\r\n\tsetPages: React.Dispatch<any>;\r\n\tschemaFields: SchemaFields[];\r\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\r\n\tgeneratedColumns: GeneratedColumnsState;\r\n\tsharedPages: any[];\r\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\r\n\tformData: Record<string, any>\r\n\tsetFormData: (data: Record<string, any>) => void\r\n}\r\n\r\nexport const defaultPageState: PageState = {\r\n\t_id: '',\r\n\tname: '',\r\n\tpage_size: 10,\r\n\tcolumn_order: ['id'],\r\n\tvisible_columns: [],\r\n\tviews: [],\r\n\tactive_view: '',\r\n\tfilters: initialFilter,\r\n\tfilterQueryString: '',\r\n\tsort: null,\r\n\tsearch: '',\r\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\r\n\tisShared: false,\r\n\tcolumn_sizes: {}\r\n};\r\ninterface PageProviderProps {\r\n\tchildren: React.ReactNode;\r\n\trouteToColumnsMap?: Record<string, any>;\r\n\trouteToResourceMap?: Record<string, any>;\r\n}\r\n\r\nconst UpdatePageInfo = () => { };\r\nconst UpdateGeneratedColumns = () => { };\r\n\r\nexport const PageContext = createContext<PageContextValue>({\r\n\tpageTemplateId: '',\r\n\tactivePage: defaultPageState,\r\n\tupdatePageInfo: UpdatePageInfo,\r\n\tloading: false,\r\n\tisSaving: false,\r\n\terror: null,\r\n\tpages: [],\r\n\tsharedPages: [],\r\n\tsavePages: () => { },\r\n\tsetActivePage: () => { },\r\n\tsetPages: () => { },\r\n\tschemaFields: [],\r\n\tinitializeColumns: () => { },\r\n\tgeneratedColumns: { columns: [], orderKeys: [] },\r\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\r\n});\r\n\r\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\r\n\t// Create a Set from the first array for efficient lookups\r\n\tconst array1Set = new Set(array1);\r\n\r\n\t// Filter the second array to find elements not in the first array\r\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\r\n\r\n\t// Combine the original first array with the new elements\r\n\treturn [...array1, ...elementsToAdd];\r\n}\r\n\r\nconst generateColumnSchema = (\r\n\tdefaultColumns: MaterialTableColumnProps[],\r\n\tschemaFields: SchemaFields[],\r\n\tcolumnOrders: string[],\r\n\tdColumns?: any[],\r\n\tt?: any\r\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\r\n\ttry {\r\n\t\t// if (dColumns && dColumns?.length) {\r\n\t\t// \tdefaultColumns = defaultColumns.map((column) => {\r\n\t\t// \t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\r\n\t\t// \t\treturn f || column\r\n\t\t// \t})\r\n\t\t// }\r\n\t\tif (dColumns && dColumns?.length) {\r\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\r\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\r\n\t\t\t\tconst merged = f ? { ...column, ...f } : column;\r\n\t\t\t\treturn merged\r\n\t\t\t})\r\n\t\t}\r\n\t\tlet orderKeys = columnOrders.length\r\n\t\t\t? columnOrders\r\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\r\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\r\n\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\r\n\r\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\r\n\t\tconst updatedFields = schemaFields.map((field) => ({\r\n\t\t\t...field,\r\n\t\t\tkey: field.key.replace('__replaceKey', '')\r\n\t\t})).filter((field) => !field.is_inner_join);\r\n\r\n\t\tconst uniqueFields = _.differenceWith(\r\n\t\t\tupdatedFields,\r\n\t\t\tupdatedFields,\r\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\r\n\t\t);\r\n\r\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\r\n\t\tconst unmatchedFields = _.differenceWith(\r\n\t\t\tuniqueFields,\r\n\t\t\tdefaultColumns,\r\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\r\n\t\t);\r\n\r\n\t\t// Map unique fields to MaterialTableColumn structure\r\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\r\n\t\t\t(field) => ({\r\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\r\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\r\n\t\t\t\tvisible: false,\r\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\r\n\t\t\t\t...(field.type === 'array' && { typeArrayAccessorKey: field.accessorKey || '' }),\r\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false : true,\r\n\t\t\t\t...(field?.type === 'boolean' ? {\r\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues(_.keyBy(\r\n\t\t\t\t\t\tfield?.values.map(item => ({\r\n\t\t\t\t\t\t\tkey: item.name,\r\n\t\t\t\t\t\t\tvalue: item.label\r\n\t\t\t\t\t\t})),\r\n\t\t\t\t\t\t'key'\r\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\r\n\t\t\t\t} : {})\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\r\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\r\n\t\t\treturn {\r\n\t\t\t\t...column,\r\n\t\t\t\t...((field?.type === 'object' || field?.joinKey || column.enableSorting === false) ? { enableSorting: false } : {})\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Combine default columns and additional columns\r\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\r\n\r\n\t\t// Generate an array of column keys for ordering\r\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\r\n\r\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\r\n\r\n\t\treturn { columns, orderKeys };\r\n\t} catch (error) {\r\n\t\treturn {\r\n\t\t\tcolumns: defaultColumns,\r\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\r\n\t\t};\r\n\t}\r\n};\r\n\r\nexport const PageProvider: React.FC<PageProviderProps> = ({ children, routeToColumnsMap: customRouteToColumnsMap, routeToResourceMap: customRouteToResourceMap }) => {\r\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToResourceMap:\", customRouteToResourceMap)\r\n\tconsole.log(\"🚀 ~ PageProvider ~ customRouteToColumnsMap:\", customRouteToColumnsMap)\r\n\tconst location = useLocation();\r\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\r\n\t// const permissions=usePermissions();\r\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\r\n\tconst [loading, setLoading] = useState<boolean>(true);\r\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\r\n\tconst [error, setError] = useState<string | null>(null);\r\n\tconst [pages, setPages] = useState<any>([]);\r\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\r\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\r\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\r\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\r\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\r\n\tconst [formData, setFormData] = useState<any>({});\r\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\r\n\t\tcolumns: MaterialTableColumnProps[];\r\n\t\torderKeys: string[];\r\n\t}>({ columns: [], orderKeys: [] });\r\n\tconst { user } = useAuth()\r\n\t// Add ref to track current pathname for race condition prevention\r\n\tconst currentPathnameRef = useRef<string>(location.pathname);\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Get current page's default columns and resources\r\n\tconst defaultColumns: any[] = useMemo(() => {\r\n\t\tconst columns = (customRouteToColumnsMap?.[curPathName] || routeToColumnsMap[curPathName])?.defaultColumns || [];\r\n\t\treturn columns;\r\n\t}, [curPathName, customRouteToColumnsMap]);\r\n\r\n\tconst resources: IResources = useMemo(() => {\r\n\t\tconst resource = customRouteToResourceMap?.[curPathName] || routeToResourceMap[curPathName] || null;\r\n\t\treturn resource;\r\n\t}, [curPathName, customRouteToResourceMap]);\r\n\r\n\t//Translation\r\n\tconst { t } = useTranslation()\r\n\r\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\r\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\r\n\t\t//! Remove the function if not needed\r\n\t};\r\n\r\n\t// Fetch page-related information from API\r\n\tconst fetchPageData = useCallback(\r\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\r\n\t\t\tconsole.log('PageContext: Entering fetchPageData', { currentPath, currentDefaultColumnsLength: currentDefaultColumns?.length, hasResources: !!currentResources });\r\n\r\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\r\n\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed', { ref: currentPathnameRef.current, current: currentPath });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetError(null);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconsole.log('PageContext: Resources Check:', { currentDefaultColumns, currentResources });\r\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\r\n\t\t\t\t\tconst { pageResource = '', fieldResource = '', formResource = '' } = currentResources;\r\n\r\n\t\t\t\t\tconsole.log('PageContext: Pathname:', currentPath);\r\n\t\t\t\t\tconsole.log('PageContext: Default Columns:', currentDefaultColumns);\r\n\t\t\t\t\tconsole.log('PageContext: Resources:', currentResources);\r\n\r\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst [pageResponse, fieldResponse, formResponse] = await Promise.all([\r\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }) : Promise.resolve(null),\r\n\r\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\r\n\t\t\t\t\t\t\tname: fieldResource,\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tskip: 0,\r\n\t\t\t\t\t\t\tlimit: 999\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetV1FormBuilder({\r\n\t\t\t\t\t\t\t...getToken(),\r\n\t\t\t\t\t\t\tfilters: `(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t]);\r\n\r\n\t\t\t\t\tconsole.log('PageContext: API Responses:', { pageResponse, fieldResponse, formResponse });\r\n\r\n\t\t\t\t\t// Final check - ensure pathname still matches\r\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\r\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({ ...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label }));\r\n\r\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\r\n\t\t\t\t\tconsole.log('PageContext: Generated Columns:', gColumns);\r\n\r\n\t\t\t\t\tconst pages =\r\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\r\n\t\t\t\t\t\t\t...defaultPageState,\r\n\t\t\t\t\t\t\t...p,\r\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\r\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\r\n\t\t\t\t\t\t\t\tfields,\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\r\n\t\t\t\t\t\t\t\tt\r\n\t\t\t\t\t\t\t).columns,\r\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\r\n\t\t\t\t\t\t\t\tp.column_order || [],\r\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t})) || [];\r\n\t\t\t\t\tconst sharedPages =\r\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\r\n\t\t\t\t\t\t\t...sPages.details,\r\n\t\t\t\t\t\t\tisShared: true,\r\n\t\t\t\t\t\t\towner: sPages.owner,\r\n\t\t\t\t\t\t\t_id: sPages.id\r\n\t\t\t\t\t\t})) || [];\r\n\r\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\r\n\r\n\t\t\t\t\t// Only update state if we're still on the same path\r\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\t\tawait Promise.all([\r\n\t\t\t\t\t\t\tsetSchemaFields(fields),\r\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\r\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\r\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\r\n\t\t\t\t\t\t\tsetPages(uPages || []),\r\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\r\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t\t\t\t...prev,\r\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\r\n\t\t\t\t\t\t\t}))\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t\t// Only set error if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetError('Failed to load page data');\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\t// Only update loading state if we're still on the same path\r\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[] // Remove dependencies to prevent stale closures\r\n\t);\r\n\r\n\t// Update page state dynamically\r\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\r\n\t\tsetActivePageData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t\t!isInitialLoad && setIsChanged(true)\r\n\t\tsetIsInitialLoad(false)\r\n\t};\r\n\r\n\t// Update columns state dynamically\r\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\r\n\t\tsetGeneratedColumns((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t...updates\r\n\t\t}));\r\n\t};\r\n\r\n\tconst setActivePage = (page: PageState) => {\r\n\t\tconst uPages = pages.map((p) =>\r\n\t\t\tp._id == activePage?._id ? activePage : p\r\n\t\t);\r\n\t\tsetPages(uPages);\r\n\t\tsetActivePageData(page);\r\n\t};\r\n\r\n\tconst savePages = async () => {\r\n\t\tsetError(null);\r\n\t\tsetIsSaving(true);\r\n\t\tawait addOrDeletePage()\r\n\t\tsetTimeout(() => {\r\n\t\t\tsetIsSaving(false);\r\n\t\t}, 1000);\r\n\t};\r\n\tconst fetchSavedFilters = async (): Promise<void> => {\r\n\r\n\t\tawait getV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\r\n\r\n\t};\r\n\r\n\tconst addOrDeletePage = async (restPages?: any[]) => {\r\n\t\ttry {\r\n\t\t\tconst filteredPages = restPages?.length ? restPages : pages.filter((page) => !page.isShared);\r\n\t\t\tconst uPages = filteredPages.map((p) =>\r\n\t\t\t\t(p._id == activePage?._id && activePage.name == p.name) ? activePage : p\r\n\t\t\t);\r\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\r\n\r\n\t\t\tconst response = await patchV1PagesPageId({\r\n\t\t\t\t...getToken(),\r\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\r\n\t\t\t});\r\n\t\t\tif (response.status_code === 200) {\r\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\r\n\t\t\t\tsetPages(updatedPages);\r\n\t\t\t\tfetchSavedFilters();\r\n\t\t\t\tsetActivePageData((prev) => ({\r\n\t\t\t\t\t...prev,\r\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\r\n\t\t\t\t}));\r\n\t\t\t\tsetIsChanged(false);\r\n\t\t\t\tsetIsCreatePage(false);\r\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\r\n\t\t\t\tconst msg = restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\r\n\t\t\t\tenqueueSnackbar(msg);\r\n\t\t\t}\r\n\t\t\treturn response\r\n\t\t} catch (err) {\r\n\t\t\tsetError('Failed to save page data');\r\n\t\t}\r\n\t}\r\n\r\n\tconst deletePage = async (pages: string) => {\r\n\t\taddOrDeletePage(pages);\r\n\t}\r\n\r\n\t// Handle pathname changes\r\n\tuseEffect(() => {\r\n\t\t// Update the ref immediately\r\n\t\tcurrentPathnameRef.current = curPathName;\r\n\r\n\t\t// Reset state for new page\r\n\t\tsetLoading(true);\r\n\t\tsetIsSaving(false);\r\n\t\tsetActivePageData(defaultPageState);\r\n\t\tsetIsChanged(false);\r\n\t\tsetIsInitialLoad(true);\r\n\r\n\t\t// Clear previous data to prevent showing stale data\r\n\t\tsetSchemaFields([]);\r\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\r\n\t\tsetPages([]);\r\n\t\tsetSharedPages([]);\r\n\t\tsetPageTemplateId('');\r\n\t\tsetError(null);\r\n\r\n\t\t// Fetch data for new page with current values\r\n\t\tconsole.log('PageContext: useEffect Triggered', { curPathName, defaultColumnsLength: defaultColumns?.length, hasResources: !!resources });\r\n\t\tfetchPageData(curPathName, defaultColumns, resources);\r\n\r\n\t\treturn () => { setLoading(true) }\r\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\r\n\r\n\r\n\t// Removed loading check to prevent blank page during loading\r\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\r\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\r\n\t}\r\n\r\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\r\n\t\treturn <ErpLoader />; // Show loader before rendering anything else\r\n\t}\r\n\r\n\treturn (\r\n\t\t<PageContext.Provider\r\n\t\t\tvalue={{\r\n\t\t\t\tpageTemplateId,\r\n\t\t\t\tactivePage,\r\n\t\t\t\tpages,\r\n\t\t\t\tsharedPages,\r\n\t\t\t\tschemaFields,\r\n\t\t\t\tsetPages,\r\n\t\t\t\tupdatePageInfo,\r\n\t\t\t\tsavePages,\r\n\t\t\t\tsetActivePage,\r\n\t\t\t\tisSaving,\r\n\t\t\t\tloading,\r\n\t\t\t\terror,\r\n\t\t\t\tinitializeColumns,\r\n\t\t\t\tgeneratedColumns,\r\n\t\t\t\tupdateGeneratedColumns,\r\n\t\t\t\tisChanged,\r\n\t\t\t\tdeletePage,\r\n\t\t\t\tisCreatePage,\r\n\t\t\t\tsetIsCreatePage,\r\n\t\t\t\taddOrDeletePage,\r\n\t\t\t\tsetIsChanged,\r\n\t\t\t\tformData\r\n\t\t\t}}>\r\n\t\t\t{children}\r\n\t\t</PageContext.Provider>\r\n\t);\r\n};\r\n"],"names":["PermissionsContext","createContext","Loader","styled","CircularProgress","theme","color","_b","_a","palette","primary","ErpLoader","props","jsx","Box","position","left","top","children","size","initialFilter","combinator","rules","defaultPageState","_id","name","page_size","column_order","visible_columns","views","active_view","filters","filterQueryString","sort","search","enabled_views","isShared","column_sizes","PageContext","pageTemplateId","activePage","updatePageInfo","loading","isSaving","error","pages","sharedPages","savePages","setActivePage","setPages","schemaFields","initializeColumns","generatedColumns","columns","orderKeys","updateGeneratedColumns","mergeArraysKeepingOrder","array1","array2","array1Set","Set","elementsToAdd","filter","item","has","generateColumnSchema","defaultColumns","columnOrders","dColumns","t","length","map","column","f","find","c","accessorKey","getAccesorKeyViaField","field","type","join","alias","key","updatedFields","replace","is_inner_join","uniqueFields","_","differenceWith","fieldA","fieldB","joinKey","additionalColumns","header","formatLabel","label","visible","enum","typeArrayAccessorKey","enableSorting","typeBooleanLabels","_c","values","mapValues","keyBy","value","false","true","routeToColumnsMap","customRouteToColumnsMap","routeToResourceMap","customRouteToResourceMap","location","useLocation","setActivePageData","useState","setSchemaFields","setLoading","setIsSaving","setError","setSharedPages","isChanged","setIsChanged","setPageTemplateId","isInitialLoad","setIsInitialLoad","isCreatePage","setIsCreatePage","formData","setFormData","setGeneratedColumns","user","useAuth","currentPathnameRef","useRef","pathname","curPathName","useMemo","resources","useTranslation","fetchPageData","useCallback","async","currentPath","currentDefaultColumns","currentResources","current","pageResource","fieldResource","formResource","pageResponse","fieldResponse","formResponse","Promise","all","getV1PagesResource","getToken","resource","resolve","getV1FormBuilderSchemaFieldsName","getV1FormBuilder","company_id","fields","data","trim","gColumns","_d","p","uniq","_f","_e","shared_pages","sPages","details","owner","id","uPages","_g","_i","_h","form","prev","err","setTimeout","addOrDeletePage","restPages","page","sanitizedPages","removeIdStaticIdsFromMongoObject","response","patchV1PagesPageId","page_id","status_code","updatedPages","getV1FilterResource","fetchSavedFilters","msg","enqueueSnackbar","useEffect","JSON","stringify","Provider","updates","deletePage","setIsPermissionLoaded","useAppSelector","store","roles","storagePermission","localStorage","getItem","permissions","rawValue","parse","removeItem","computedPermissions","checkPermission","module","action","Boolean","dynamicPermissions","Object","keys","forEach","formattedModule","baseModule","subModule","subModuleParts","split","subModuleName","bModule","entries","u","e","r","w","d","wo","actionName","currentValue"],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -1,23 +1,23 @@
1
1
  import { i } from "./images-ChUMOM-_.esm.js";
2
- import { A, a, b, c, d, e, e as e2, B, C, f, g, h, D, i as i2, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, E, F, G, H, I, J, K, O, R, L, V, M, N, P, Q, S, T, U, W, X, X as X2, Y, Z, _, _ as _2, $, a0, a1, a2, a3, a4, a5, a6, a7, a7 as a72, a8, a9, aa, ab, ab as ab2, ac, ad, ae, af, ag, ah, ai, aj, ak, al } from "./android-12-switch-CFHHRoXl.esm.js";
3
- import { A as A2, a as a10, b as b2, c as c2, d as d2, e as e3, f as f2, g as g2, B as B2, C as C2, h as h2, i as i3, j as j2, k as k2, l as l2, m as m2, n as n2, D as D2, E as E2, I as I2, L as L2, o as o2, p as p2, O as O2, q as q2, P as P2, r as r2, s as s2, t as t2, R as R2, u as u2, v as v2, w as w2, x as x2, y as y2, S as S2, z as z2, F as F2, G as G2, H as H2, J as J2, T as T2, K as K2, M as M2, W as W2, N as N2 } from "./arrow-up-RDVMEaNg.esm.js";
4
- import { A as A3, a as a11, a as a12, b as b3, B as B3, C as C3, C as C4, D as D3, H as H3, M as M3, R as R3, S as S3, c as c3, T as T3, d as d3, e as e4 } from "./Tooltip-DBg9E0nY.esm.js";
5
- import { A as A4, a as a13, b as b4, B as B4, D as D4, c as c4, d as d4, e as e5, f as f3, g as g3, h as h3, i as i4, i as i5, C as C5, j as j3, j as j4, k as k3, l as l3, m as m3, n as n3, o as o3, p as p3, G as G3, q as q3, r as r3, s as s3, t as t3, s as s4, t as t4, u as u3, v as v3, w as w3, x as x3, y as y3, z as z3, E as E3, F as F3, H as H4, I as I3, J as J3, K as K3, L as L3, M as M4, M as M5, N as N3, O as O3, P as P3, Q as Q2, R as R4, S as S4, T as T4, U as U2, V as V2, W as W3, X as X3, Y as Y2, Y as Y3, Z as Z2, _ as _3, $ as $2, a0 as a02, _ as _4, a1 as a14, a2 as a22, a3 as a32, a4 as a42, a5 as a52, a6 as a62, U as U3, a7 as a73, a8 as a82, a9 as a92, aa as aa2, ab as ab3, ab as ab4, ac as ac2, ad as ad2, ae as ae2, af as af2, ag as ag2, ah as ah2, ai as ai2, aj as aj2, ak as ak2, al as al2, am } from "./uom-field-wrapper-3usHZZm1.esm.js";
6
- import { A as A5, a as a15, B as B5, b as b5, C as C6, c as c5, d as d5, e as e6, f as f4, g as g4, D as D5, E as E4, h as h4, i as i6, M as M6, j as j5, F as F4, k as k4, l as l4, m as m4, H as H5, I as I4, L as L4, N as N4, P as P4, n as n4, T as T5, R as R5, S as S5, o as o4, p as p4, q as q4, r as r4, s as s5, t as t5, u as u4, v as v4, w as w4, x as x4, y as y4, z as z4, G as G4, J as J4, K as K4, O as O4, Q as Q3, U as U4, V as V3, W as W4, X as X4, Y as Y4, Z as Z3, _ as _5, $ as $3, a0 as a03, a1 as a16, a2 as a23, a3 as a33, a4 as a43, a5 as a53, a6 as a63, a7 as a74, a8 as a83, a9 as a93, aa as aa3, ab as ab5, ac as ac3, ad as ad3, ae as ae3, af as af3, ag as ag3, ah as ah3, ai as ai3, aj as aj3, ak as ak3 } from "./default-data-DZ7_2K9V.esm.js";
7
- import { A as A6, a as a17, b as b6, B as B6, C as C7, c as c6, d as d6, e as e7, D as D6, f as f5, E as E5, g as g5, h as h5, F as F5, i as i7, j as j6, G as G5, H as H6, I as I5, k as k5, l as l5, L as L5, m as m5, n as n5, M as M7, P as P5, o as o5, p as p5, R as R6, q as q5, S as S6, T as T6 } from "./trash-BTwzTBYO.esm.js";
8
- import { A as A7, E as E6, a as a18, S as S7, b as b7, T as T7 } from "./tick-CcyPwRXL.esm.js";
9
- import { C as C8, D as D7, M as M8, V as V4, c as c7, a as a19, f as f6, b as b8, g as g6, d as d7, r as r5, e as e8, t as t6 } from "./form-builder-deconversion-BmnMG6UA.esm.js";
10
- import { A as A8, a as a20, C as C9, T as T8, c as c8, g as g7, n as n6, u as u5, b as b9 } from "./useAuth-C18aZa1n.esm.js";
11
- import { D as D8 } from "./document-jQDTo49w.esm.js";
12
- import { E as E7, a as a21, b as b10, c as c9, u as u6 } from "./apiHelper-C7xLzw2l.esm.js";
2
+ import { A, a, b, c, d, e, e as e2, B, C, f, g, h, D, i as i2, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, E, F, G, H, I, J, K, O, R, L, V, M, N, P, Q, S, T, U, W, X, X as X2, Y, Z, _, _ as _2, $, a0, a1, a2, a3, a4, a5, a6, a7, a7 as a72, a8, a9, aa, ab, ab as ab2, ac, ad, ae, af, ag, ah, ai, aj, ak, al } from "./android-12-switch-DIRd6Hz1.esm.js";
3
+ import { A as A2, a as a10, b as b2, c as c2, d as d2, e as e3, f as f2, g as g2, B as B2, C as C2, h as h2, i as i3, j as j2, k as k2, l as l2, m as m2, n as n2, D as D2, E as E2, I as I2, L as L2, o as o2, p as p2, O as O2, q as q2, P as P2, r as r2, s as s2, t as t2, R as R2, u as u2, v as v2, w as w2, x as x2, y as y2, S as S2, z as z2, F as F2, G as G2, H as H2, J as J2, T as T2, K as K2, M as M2, W as W2, N as N2 } from "./arrow-up-BYufujcs.esm.js";
4
+ import { A as A3, a as a11, a as a12, b as b3, B as B3, C as C3, C as C4, D as D3, H as H3, M as M3, R as R3, S as S3, c as c3, T as T3, d as d3, e as e4 } from "./Tooltip-BuKMQR27.esm.js";
5
+ import { A as A4, a as a13, b as b4, B as B4, D as D4, c as c4, d as d4, e as e5, f as f3, g as g3, h as h3, i as i4, i as i5, C as C5, j as j3, j as j4, k as k3, l as l3, m as m3, n as n3, o as o3, p as p3, G as G3, q as q3, r as r3, s as s3, t as t3, s as s4, t as t4, u as u3, v as v3, w as w3, x as x3, y as y3, z as z3, E as E3, F as F3, H as H4, I as I3, J as J3, K as K3, L as L3, M as M4, M as M5, N as N3, O as O3, P as P3, Q as Q2, R as R4, S as S4, T as T4, U as U2, V as V2, W as W3, X as X3, Y as Y2, Y as Y3, Z as Z2, _ as _3, $ as $2, a0 as a02, _ as _4, a1 as a14, a2 as a22, a3 as a32, a4 as a42, a5 as a52, a6 as a62, U as U3, a7 as a73, a8 as a82, a9 as a92, aa as aa2, ab as ab3, ab as ab4, ac as ac2, ad as ad2, ae as ae2, af as af2, ag as ag2, ah as ah2, ai as ai2, aj as aj2, ak as ak2, al as al2, am } from "./uom-field-wrapper-DHzy94__.esm.js";
6
+ import { A as A5, a as a15, B as B5, b as b5, C as C6, c as c5, d as d5, e as e6, f as f4, g as g4, D as D5, E as E4, h as h4, i as i6, M as M6, j as j5, F as F4, k as k4, l as l4, m as m4, H as H5, I as I4, L as L4, N as N4, P as P4, n as n4, T as T5, R as R5, S as S5, o as o4, p as p4, q as q4, r as r4, s as s5, t as t5, u as u4, v as v4, w as w4, x as x4, y as y4, z as z4, G as G4, J as J4, K as K4, O as O4, Q as Q3, U as U4, V as V3, W as W4, X as X4, Y as Y4, Z as Z3, _ as _5, $ as $3, a0 as a03, a1 as a16, a2 as a23, a3 as a33, a4 as a43, a5 as a53, a6 as a63, a7 as a74, a8 as a83, a9 as a93, aa as aa3, ab as ab5, ac as ac3, ad as ad3, ae as ae3, af as af3, ag as ag3, ah as ah3, ai as ai3, aj as aj3, ak as ak3 } from "./default-data-rqQOC7ed.esm.js";
7
+ import { A as A6, a as a17, b as b6, B as B6, C as C7, c as c6, d as d6, e as e7, D as D6, f as f5, E as E5, g as g5, h as h5, F as F5, i as i7, j as j6, G as G5, H as H6, I as I5, k as k5, l as l5, L as L5, m as m5, n as n5, M as M7, P as P5, o as o5, p as p5, R as R6, q as q5, S as S6, T as T6 } from "./trash-cWyby5W5.esm.js";
8
+ import { A as A7, E as E6, a as a18, S as S7, b as b7, T as T7 } from "./tick-Cogsd5aG.esm.js";
9
+ import { C as C8, D as D7, M as M8, V as V4, c as c7, a as a19, f as f6, b as b8, g as g6, d as d7, r as r5, e as e8, t as t6 } from "./form-builder-deconversion-CjCls618.esm.js";
10
+ import { A as A8, a as a20, C as C9, T as T8, c as c8, g as g7, n as n6, u as u5, b as b9 } from "./useAuth-Bvid1bpz.esm.js";
11
+ import { D as D8 } from "./document-Dc0e4Wgt.esm.js";
12
+ import { E as E7, a as a21, b as b10, c as c9, u as u6 } from "./apiHelper-BLkPhudw.esm.js";
13
13
  import { CustomEditor, CustomEditor as CustomEditor2 } from "./custom-editor-Bs6nzXfk.esm.js";
14
- import { E as E8, P as P6, a as a24, b as b11, c as c10, d as d8, i as i8 } from "./index-abVANnYO.esm.js";
15
- import { F as F6 } from "./fullScreen-bLbPf_Sx.esm.js";
16
- import { L as L6, a as a25 } from "./languageContext-z0EIAM7m.esm.js";
14
+ import { E as E8, P as P6, a as a24, b as b11, c as c10, d as d8, i as i8 } from "./index-CasNCevI.esm.js";
15
+ import { F as F6 } from "./fullScreen-B7NBNLnc.esm.js";
16
+ import { L as L6, a as a25 } from "./languageContext-BqGnL8Sv.esm.js";
17
17
  import { M as M9, M as M10, c as c11, a as a26, t as t7 } from "./theme-impl-BbSSNl6F.esm.js";
18
- import { C as C10, M as M11, a as a27, b as b12, c as c12, S as S8, d as d9, e as e9, f as f7, g as g8, h as h6, i as i9, j as j7, k as k6, l as l6, m as m6, n as n7, o as o6, p as p6, q as q6, r as r6, u as u7 } from "./migration-utils-BzRKOUW0.esm.js";
19
- import { N as N5, S as S9 } from "./notification-BNeR5Dyl.esm.js";
20
- import { S as S10 } from "./sidebar-C6-wzTTF.esm.js";
18
+ import { C as C10, M as M11, a as a27, b as b12, c as c12, S as S8, d as d9, e as e9, f as f7, g as g8, h as h6, i as i9, j as j7, k as k6, l as l6, m as m6, n as n7, o as o6, p as p6, q as q6, r as r6, u as u7 } from "./migration-utils-byCdwgkF.esm.js";
19
+ import { N as N5, S as S9 } from "./notification-Dbo3l5Vw.esm.js";
20
+ import { S as S10 } from "./sidebar-DTv1DxTn.esm.js";
21
21
  import { SidebarLayout } from "./layout/index.esm.js";
22
22
  import { ThemeSelector, getTheme, ThemeSelector as ThemeSelector2 } from "./theme/index.esm.js";
23
23
  import { PathnameOffice, PathnameProject, PathnameQuotes, S3_BUCKET_URL, StatusTypes, ar_resource, en_resource, es_resource, resource } from "./constants/index.esm.js";
@@ -26,7 +26,7 @@ import { d as d11, f as f9 } from "./form-builder-conversion-KJf0Sbu2.esm.js";
26
26
  import { d as d12 } from "./mui.constants-BFBzxaiA.esm.js";
27
27
  import { P as P8, m as m8 } from "./modules-MCM9DFEp.esm.js";
28
28
  import { U as U6, c as c14, d as d13, c as c15, s as s7, a as a30, b as b14, r as r8, U as U7, e as e11, g as g10, f as f10, p as p8, h as h8, i as i11, j as j9, k as k8, s as s8, l as l8, b as b15, m as m9, n as n9, o as o8, q as q8, t as t9, u as u9 } from "./reducer-C-IYa90u.esm.js";
29
- import { u as u10, a as a31, b as b16, c as c16, d as d14, e as e12, f as f11, g as g11 } from "./useAccountSetting-BEKGFdbo.esm.js";
29
+ import { u as u10, a as a31, b as b16, c as c16, d as d14, e as e12, f as f11, g as g11 } from "./useAccountSetting-D2gUGGca.esm.js";
30
30
  import { apiType, capitalizeWords, convertEmptyToNull, defaultUserCurrency, formatNumber, formatTime, formateDate, getAvailableSteelTypes, getAvailableTubeTypes, recursiveSort, removeExtraKeys, sortData, useLanguageFallback, useLanguageState, useMaterialCalculations, useNameSkuUniquenessCheck, useReduxIntegration, useUniquenessCheck, validateFormValues, valueWithCurrency } from "./hooks/index.esm.js";
31
31
  import { v as v6 } from "./action-bar-BsXTcYpL.esm.js";
32
32
  import { API_METHOD_GROUPS, createConfiguredApiClient, createModuleSlice, fetchBom, fetchCompanies, getAllUserAndDepartmentDropdown, headerSlice, inventoryReportsTitleBarSlice, reportsTitleBarSlice, resetHeaderState, resetInventoryReportsTitleBarState, resetLanguagesState, resetReportsTitleBarState, resetState, setAssemblyItems, setBomData, setCurrentLanguage, setDepartments, setItems, setLanguages, setLanguagesData, setUsers, setWarehouseLocations, sharePage, shareSlice, validateApiClient } from "./redux/index.esm.js";
@@ -43,7 +43,7 @@ import { default as default2 } from "i18next";
43
43
  import { l as l12 } from "./translations-CfmEuVuv.esm.js";
44
44
  import { p as p11, a as a47, r as r13, b as b21, s as s13, t as t12 } from "./typography-DSb3h0jJ.esm.js";
45
45
  import { u as u13, a as a48, b as b23, c as c24 } from "./hooks-Cj9Yhy-E.esm.js";
46
- import { u as u14 } from "./useLangauge-DKPl4qKr.esm.js";
46
+ import { u as u14 } from "./useLangauge-BQjH-l_B.esm.js";
47
47
  import { useTranslation } from "react-i18next";
48
48
  let libraryConfig = {};
49
49
  const configureLibrary = (config) => {