@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.
- package/dist/{Tooltip-0Msd6gJs.js → Tooltip-BWIywPIG.js} +2 -2
- package/dist/{Tooltip-0Msd6gJs.js.map → Tooltip-BWIywPIG.js.map} +1 -1
- package/dist/{Tooltip-DBg9E0nY.esm.js → Tooltip-BuKMQR27.esm.js} +5 -5
- package/dist/{Tooltip-DBg9E0nY.esm.js.map → Tooltip-BuKMQR27.esm.js.map} +1 -1
- package/dist/{android-12-switch-C2yR_ny0.js → android-12-switch-Cwoy0lqC.js} +2 -2
- package/dist/{android-12-switch-C2yR_ny0.js.map → android-12-switch-Cwoy0lqC.js.map} +1 -1
- package/dist/{android-12-switch-CFHHRoXl.esm.js → android-12-switch-DIRd6Hz1.esm.js} +10 -10
- package/dist/{android-12-switch-CFHHRoXl.esm.js.map → android-12-switch-DIRd6Hz1.esm.js.map} +1 -1
- package/dist/{apiHelper-C7xLzw2l.esm.js → apiHelper-BLkPhudw.esm.js} +5 -5
- package/dist/{apiHelper-C7xLzw2l.esm.js.map → apiHelper-BLkPhudw.esm.js.map} +1 -1
- package/dist/{apiHelper-uNnzNGPt.js → apiHelper-DurABKEn.js} +2 -2
- package/dist/{apiHelper-uNnzNGPt.js.map → apiHelper-DurABKEn.js.map} +1 -1
- package/dist/{arrow-up-RDVMEaNg.esm.js → arrow-up-BYufujcs.esm.js} +47 -48
- package/dist/arrow-up-BYufujcs.esm.js.map +1 -0
- package/dist/{arrow-up-CZCTjL2a.js → arrow-up-u2i6ArLB.js} +47 -47
- package/dist/arrow-up-u2i6ArLB.js.map +1 -0
- package/dist/components/icons/create-custom-icon.d.ts +16 -0
- package/dist/components/index.esm.js +14 -14
- package/dist/components/index.js +1 -1
- package/dist/contexts/index.esm.js +3 -3
- package/dist/contexts/index.js +1 -1
- package/dist/{dashboard-BU3Ivh-m.esm.js → dashboard-BHs900IA.esm.js} +3 -3
- package/dist/dashboard-BHs900IA.esm.js.map +1 -0
- package/dist/{dashboard-DC1wsH2n.js → dashboard-ecHBMV8C.js} +3 -3
- package/dist/dashboard-ecHBMV8C.js.map +1 -0
- package/dist/{default-data-DMRyIpbS.js → default-data-kq9UR-LT.js} +2 -2
- package/dist/{default-data-DMRyIpbS.js.map → default-data-kq9UR-LT.js.map} +1 -1
- package/dist/{default-data-DZ7_2K9V.esm.js → default-data-rqQOC7ed.esm.js} +10 -10
- package/dist/{default-data-DZ7_2K9V.esm.js.map → default-data-rqQOC7ed.esm.js.map} +1 -1
- package/dist/{document-MTw-RQlt.js → document-Dat2mYKY.js} +7 -7
- package/dist/document-Dat2mYKY.js.map +1 -0
- package/dist/{document-jQDTo49w.esm.js → document-Dc0e4Wgt.esm.js} +3 -4
- package/dist/document-Dc0e4Wgt.esm.js.map +1 -0
- package/dist/{form-builder-deconversion-DUwJpbWi.js → form-builder-deconversion-Bt6_FHty.js} +2 -2
- package/dist/{form-builder-deconversion-DUwJpbWi.js.map → form-builder-deconversion-Bt6_FHty.js.map} +1 -1
- package/dist/{form-builder-deconversion-BmnMG6UA.esm.js → form-builder-deconversion-CjCls618.esm.js} +3 -3
- package/dist/{form-builder-deconversion-BmnMG6UA.esm.js.map → form-builder-deconversion-CjCls618.esm.js.map} +1 -1
- package/dist/{fullScreen-bLbPf_Sx.esm.js → fullScreen-B7NBNLnc.esm.js} +2 -2
- package/dist/{fullScreen-bLbPf_Sx.esm.js.map → fullScreen-B7NBNLnc.esm.js.map} +1 -1
- package/dist/{fullScreen-z8Ci7IBM.js → fullScreen-Bk29OQHQ.js} +2 -2
- package/dist/{fullScreen-z8Ci7IBM.js.map → fullScreen-Bk29OQHQ.js.map} +1 -1
- package/dist/hooks/index.esm.js +5 -5
- package/dist/hooks/index.js +1 -1
- package/dist/icons/index.esm.js +7 -7
- package/dist/icons/index.js +1 -1
- package/dist/{index-abVANnYO.esm.js → index-CasNCevI.esm.js} +3 -3
- package/dist/{index-abVANnYO.esm.js.map → index-CasNCevI.esm.js.map} +1 -1
- package/dist/{index-C2m4EKMw.js → index-D6O6Gc88.js} +2 -2
- package/dist/{index-C2m4EKMw.js.map → index-D6O6Gc88.js.map} +1 -1
- package/dist/index.esm.js +19 -19
- package/dist/index.js +1 -1
- package/dist/{languageContext-z0EIAM7m.esm.js → languageContext-BqGnL8Sv.esm.js} +2 -2
- package/dist/{languageContext-z0EIAM7m.esm.js.map → languageContext-BqGnL8Sv.esm.js.map} +1 -1
- package/dist/{languageContext-7DprjT6b.js → languageContext-hAPMY56Y.js} +2 -2
- package/dist/{languageContext-7DprjT6b.js.map → languageContext-hAPMY56Y.js.map} +1 -1
- package/dist/layout/index.esm.js +4 -4
- package/dist/layout/index.js +1 -1
- package/dist/{migration-utils-DRGPH-n4.js → migration-utils-Bh98qTkC.js} +2 -2
- package/dist/{migration-utils-DRGPH-n4.js.map → migration-utils-Bh98qTkC.js.map} +1 -1
- package/dist/{migration-utils-BzRKOUW0.esm.js → migration-utils-byCdwgkF.esm.js} +2 -2
- package/dist/{migration-utils-BzRKOUW0.esm.js.map → migration-utils-byCdwgkF.esm.js.map} +1 -1
- package/dist/notification-BsWK2s3n.js +7 -0
- package/dist/notification-BsWK2s3n.js.map +1 -0
- package/dist/{notification-BNeR5Dyl.esm.js → notification-Dbo3l5Vw.esm.js} +27 -5
- package/dist/notification-Dbo3l5Vw.esm.js.map +1 -0
- package/dist/{sidebar-C6-wzTTF.esm.js → sidebar-DTv1DxTn.esm.js} +5 -5
- package/dist/{sidebar-C6-wzTTF.esm.js.map → sidebar-DTv1DxTn.esm.js.map} +1 -1
- package/dist/{sidebar-BT_zTOCc.js → sidebar-U2vsFarM.js} +2 -2
- package/dist/{sidebar-BT_zTOCc.js.map → sidebar-U2vsFarM.js.map} +1 -1
- package/dist/src/components/icons/create-custom-icon.d.ts +16 -0
- package/dist/{tick-CcyPwRXL.esm.js → tick-Cogsd5aG.esm.js} +8 -9
- package/dist/tick-Cogsd5aG.esm.js.map +1 -0
- package/dist/{tick-Ct-Ir-1S.js → tick-XKXM5oTD.js} +22 -22
- package/dist/tick-XKXM5oTD.js.map +1 -0
- package/dist/{toggle-switch-FMTO6609.esm.js → toggle-switch-Day9cZg5.esm.js} +3 -4
- package/dist/toggle-switch-Day9cZg5.esm.js.map +1 -0
- package/dist/{toggle-switch-BghzgMG8.js → toggle-switch-P3dX3iMp.js} +5 -5
- package/dist/toggle-switch-P3dX3iMp.js.map +1 -0
- package/dist/{trash-BTwzTBYO.esm.js → trash-cWyby5W5.esm.js} +36 -37
- package/dist/trash-cWyby5W5.esm.js.map +1 -0
- package/dist/{trash-5CZCQE4a.js → trash-iM5WzuPQ.js} +124 -124
- package/dist/trash-iM5WzuPQ.js.map +1 -0
- package/dist/{uom-field-wrapper-6F9MCc0-.js → uom-field-wrapper-D4vafbb3.js} +2 -2
- package/dist/{uom-field-wrapper-6F9MCc0-.js.map → uom-field-wrapper-D4vafbb3.js.map} +1 -1
- package/dist/{uom-field-wrapper-3usHZZm1.esm.js → uom-field-wrapper-DHzy94__.esm.js} +12 -12
- package/dist/{uom-field-wrapper-3usHZZm1.esm.js.map → uom-field-wrapper-DHzy94__.esm.js.map} +1 -1
- package/dist/{useAccountSetting-ChWt7JwC.js → useAccountSetting-CNoWakIN.js} +2 -2
- package/dist/{useAccountSetting-ChWt7JwC.js.map → useAccountSetting-CNoWakIN.js.map} +1 -1
- package/dist/{useAccountSetting-BEKGFdbo.esm.js → useAccountSetting-D2gUGGca.esm.js} +2 -2
- package/dist/{useAccountSetting-BEKGFdbo.esm.js.map → useAccountSetting-D2gUGGca.esm.js.map} +1 -1
- package/dist/{useAuth-C18aZa1n.esm.js → useAuth-Bvid1bpz.esm.js} +2 -2
- package/dist/{useAuth-C18aZa1n.esm.js.map → useAuth-Bvid1bpz.esm.js.map} +1 -1
- package/dist/{useAuth-Dpe5kDa6.js → useAuth-CVokk6Ra.js} +2 -2
- package/dist/{useAuth-Dpe5kDa6.js.map → useAuth-CVokk6Ra.js.map} +1 -1
- package/dist/{useLangauge-DKPl4qKr.esm.js → useLangauge-BQjH-l_B.esm.js} +2 -2
- package/dist/{useLangauge-DKPl4qKr.esm.js.map → useLangauge-BQjH-l_B.esm.js.map} +1 -1
- package/dist/{useLangauge-DaCaybJt.js → useLangauge-ySJIB0GV.js} +2 -2
- package/dist/{useLangauge-DaCaybJt.js.map → useLangauge-ySJIB0GV.js.map} +1 -1
- package/dist/utils/index.esm.js +3 -3
- package/dist/utils/index.js +1 -1
- package/dist/views/index.esm.js +5 -5
- package/dist/views/index.js +1 -1
- package/package.json +1 -1
- package/dist/arrow-up-CZCTjL2a.js.map +0 -1
- package/dist/arrow-up-RDVMEaNg.esm.js.map +0 -1
- package/dist/dashboard-BU3Ivh-m.esm.js.map +0 -1
- package/dist/dashboard-DC1wsH2n.js.map +0 -1
- package/dist/document-MTw-RQlt.js.map +0 -1
- package/dist/document-jQDTo49w.esm.js.map +0 -1
- package/dist/notification-BNeR5Dyl.esm.js.map +0 -1
- package/dist/notification-BmKHaKZF.js +0 -6
- package/dist/notification-BmKHaKZF.js.map +0 -1
- package/dist/tick-CcyPwRXL.esm.js.map +0 -1
- package/dist/tick-Ct-Ir-1S.js.map +0 -1
- package/dist/toggle-switch-BghzgMG8.js.map +0 -1
- package/dist/toggle-switch-FMTO6609.esm.js.map +0 -1
- package/dist/trash-5CZCQE4a.js.map +0 -1
- package/dist/trash-BTwzTBYO.esm.js.map +0 -1
|
@@ -11,7 +11,7 @@ import { styled, Typography as Typography$1, Box, Avatar, IconButton } from "@mu
|
|
|
11
11
|
import Close from "@mui/icons-material/Close";
|
|
12
12
|
import { i as images } from "./images-ChUMOM-_.esm.js";
|
|
13
13
|
/* empty css */
|
|
14
|
-
import { N as Notification } from "./notification-
|
|
14
|
+
import { N as Notification } from "./notification-Dbo3l5Vw.esm.js";
|
|
15
15
|
const StyledTypography = styled(Typography$1)(
|
|
16
16
|
({ theme: { palette }, color }) => {
|
|
17
17
|
var _a;
|
|
@@ -448,4 +448,4 @@ export {
|
|
|
448
448
|
navigateToRouteWithId as n,
|
|
449
449
|
updatePathnameWithIdParams as u
|
|
450
450
|
};
|
|
451
|
-
//# sourceMappingURL=useAuth-
|
|
451
|
+
//# sourceMappingURL=useAuth-Bvid1bpz.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth-C18aZa1n.esm.js","sources":["../src/components/typography/typography.tsx","../src/utils/route-utils.ts","../src/components/custom-snackbar/custom-snackbar.tsx","../src/contexts/AuthContext.tsx","../src/hooks/useAuth.ts"],"sourcesContent":["import {\r\n Typography as MUITypography,\r\n TypographyProps,\r\n styled,\r\n} from \"@mui/material\";\r\n\r\nexport interface ITypography extends TypographyProps {\r\n type?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"s1\" | \"s2\" | \"s3\" | \"s4\" | \"s5\";\r\n weight?: \"normal\" | \"medium\" | \"bold\";\r\n}\r\n\r\nconst StyledTypography = styled(MUITypography)<ITypography>(\r\n ({ theme: { palette }, color }) => ({\r\n color: color || palette.theme?.primary[800],\r\n }),\r\n);\r\n\r\nexport function Typography(props: ITypography) {\r\n const {\r\n children,\r\n type = \"h5\",\r\n weight = \"normal\",\r\n className,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n <StyledTypography className={`${type} ${weight} ${className}`} {...rest}>\r\n {children}\r\n </StyledTypography>\r\n );\r\n}\r\n\r\nexport default Typography;\r\n","\nexport const convertRoutesToUseIdParams = (routes: Record<string, string>): Record<string, string> => {\n const updatedRoutes: Record<string, string> = { ...routes };\n \n // Identify patterns for view/edit/detail routes\n Object.keys(updatedRoutes).forEach(key => {\n // Common patterns for detail views\n if (\n key.startsWith('VIEW_') || \n key.startsWith('EDIT_') || \n key.startsWith('DETAIL_') ||\n key.includes('_VIEW_') || \n key.includes('_EDIT_') || \n key.includes('_DETAIL_')\n ) {\n if (!updatedRoutes[key].includes(':')) {\n updatedRoutes[key] = `${updatedRoutes[key]}/:id`;\n }\n }\n });\n \n return updatedRoutes;\n};\n\n\nexport const generateRouteWithId = (basePath: string, id: string | number | Record<string, any>): string => {\n if(id && typeof id === 'object') {\n Object.entries(id).map(([key, value]) => {\n basePath = basePath.replace(`:${key}`, value?.toString());\n })\n } else if (basePath.includes(':id')) {\n return basePath.replace(':id', id?.toString());\n }\n \n // If the path doesn't have an :id parameter, append it\n return `${basePath}`;\n};\n\n\nexport const updatePathnameWithIdParams = <T extends Record<string, string>>(pathnameObject: T): T => {\n return convertRoutesToUseIdParams(pathnameObject) as T;\n}; \n\n// Added utility for navigating to views with id parameter\nexport const navigateToRouteWithId = (\n navigate: any,\n route: string, \n id: string | number,\n state?: any\n) => {\n const path = generateRouteWithId(route, id);\n navigate(path, { state });\n}; ","import React from 'react';\r\nimport { SnackbarContent, useSnackbar } from 'notistack';\r\nimport { Avatar, Box, IconButton } from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Notification } from '../icons';\r\nimport Typography from '../typography/typography';\r\nimport images from '../../assets/images';\r\nimport \"./custom-snackbar.scss\"\r\n\r\ninterface CustomSnackbarProps {\r\n message: string;\r\n variant?: 'default' | 'error' | 'success' | 'warning' | 'info';\r\n linkUrl?: string;\r\n snackbarKey: string | number;\r\n}\r\n\r\nconst mainModuleIcons = {\r\n rbac: images.user,\r\n document: images.document,\r\n 'accounts-and-finance': images.accounting,\r\n inventory: images.inventory,\r\n manufacturing: images.manufacturing,\r\n sales: images.crm,\r\n rental: images.rental,\r\n user: images.user,\r\n purchase: images.procurement,\r\n hrms: images.hrms\r\n}\r\nconst mainModuleBgColors = {\r\n rbac: '#F3E5F5',\r\n document: '#FFF8E1',\r\n 'accounts-and-finance': '#E8F5E8',\r\n inventory: '#E3F2FD',\r\n manufacturing: '#FFF3E0',\r\n sales: '#F3E5F5',\r\n rental: '#E8F5E8',\r\n user: '#F3E5F5',\r\n purchase: '#FCE4EC',\r\n hrms: '#fcfcfc'\r\n}\r\n\r\nconst CustomSnackbar = React.forwardRef<HTMLDivElement, CustomSnackbarProps>(\r\n ({ message, variant = 'default', linkUrl, snackbarKey, data }, ref) => {\r\n const { closeSnackbar } = useSnackbar();\r\n const navigate = useNavigate();\r\n\r\n const backgroundColorMap: Record<string, string> = {\r\n success: '#f0fdf4',\r\n error: '#fef2f2',\r\n warning: '#fff7ed',\r\n info: '#eff6ff',\r\n default: '#fff',\r\n };\r\n\r\n const textColorMap: Record<string, string> = {\r\n success: '#166534',\r\n error: '#991b1b',\r\n warning: '#92400e',\r\n info: '#1e40af',\r\n default: '#27272a',\r\n };\r\n\r\n const handleClick = () => {\r\n if (linkUrl) navigate(linkUrl);\r\n closeSnackbar(snackbarKey);\r\n };\r\n\r\n const handleCloseClick = (e: React.MouseEvent) => {\r\n e.stopPropagation(); // Prevent triggering link\r\n closeSnackbar(snackbarKey);\r\n };\r\n\r\n return (\r\n <SnackbarContent\r\n ref={ref}\r\n style={{\r\n backgroundColor: backgroundColorMap[variant],\r\n color: textColorMap[variant],\r\n }}\r\n className='SnackBar'\r\n onClick={handleClick}\r\n >\r\n <Box display=\"flex\" alignItems=\"center\" p={2} position=\"relative\" gap={2} width='100%'>\r\n {mainModuleIcons?.[data.module] ?\r\n <Avatar sx={{ \r\n width: 45, \r\n height: 45, \r\n fontSize: '0.875rem',\r\n bgcolor: mainModuleBgColors[data.module] || 'primary.main',\r\n color: 'white',\r\n borderRadius: '8px',\r\n '& img': { \r\n width: '35px', \r\n height: '35px', \r\n objectFit: 'contain'\r\n }\r\n }} src={mainModuleIcons?.[data.module]} /> :\r\n <Notification\r\n style={{\r\n color: textColorMap[variant],\r\n marginTop: 2,\r\n }}\r\n />\r\n }\r\n <Box display=\"flex\" alignItems=\"center\" width='100%'>\r\n <Box flex=\"1\">\r\n <Typography type='h5' color={'inherit'} weight='bold'>\r\n New Notification\r\n </Typography>\r\n <Typography type='s3' mt={0.5} color={'inherit'}>\r\n {message}\r\n </Typography>\r\n </Box>\r\n\r\n <IconButton\r\n size=\"small\"\r\n onClick={handleCloseClick}\r\n // style={{\r\n // position: 'absolute',\r\n // top: 4,\r\n // right: 4,\r\n // color: textColorMap[variant],\r\n // }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n </Box>\r\n </SnackbarContent>\r\n );\r\n }\r\n);\r\n\r\nexport { CustomSnackbar };\r\nexport default CustomSnackbar;\r\n","import React, { createContext, useEffect, useRef, useState } from 'react';\r\nimport {\r\n\tpostV1AuthChangePassword,\r\n\tpostV1AuthForgotPassword,\r\n\tpostV1AuthChangeUserPassword,\r\n\t// getV1UserId,\r\n\tpostV1AuthLogin,\r\n\tpostV1AuthResetPassword,\r\n\tsetBaseUrl,\r\n\tpostV1AuthChangeUserPasswordByAdmin\r\n} from '../api-client/api.rbac/api';\r\nimport { auth } from '../constants/auth';\r\nimport { useLocation, matchRoutes, useNavigate } from 'react-router-dom';\r\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { Socket, io } from 'socket.io-client';\r\nimport { generateRouteWithId } from '../utils/route-utils';\r\nimport { getApiConfig } from '../utils/api-config';\r\nimport {\r\n\tPathnameAccounting,\r\n\tPathnameGenerator\r\n} from '../constants/pathnames/pathname.accounting';\r\n\r\nimport {\r\n\tPathnameInventory,\r\n\tPathnameGenerator as PathnameGeneratorInventory\r\n} from '../constants/pathnames/pathname.inventory';\r\n\r\nimport {\r\n\tPathnameManufacturing,\r\n\tPathnameGenerator as PathnameGeneratorManufacuring\r\n} from '../constants/pathnames/pathname.manufacturing';\r\n\r\nimport {\r\n\tPathnamePurchase,\r\n\tPathnameGenerator as PathnameGeneratorPurchase\r\n} from '../constants/pathnames/pathname.procurement';\r\n\r\nimport {\r\n\tPathnameCrm,\r\n\tPathnameGenerator as PathnameGeneratorCrm\r\n} from '../constants/pathnames/pathname.crm';\r\n\r\nimport {\r\n\tPathnameRental,\r\n\tPathnameGenerator as PathnameGeneratorRental\r\n} from '../constants/pathnames/pathname.rental';\r\n\r\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\r\n\r\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\r\nimport { RbacApi } from '@/api-client/index.ts';\r\nexport interface LoginFormValues {\r\n\temail: string;\r\n\tpassword: string;\r\n}\r\n\r\nexport interface resetFormValues {\r\n\temail: string;\r\n}\r\n\r\nexport interface resetPasswordValues {\r\n\ttoken: string;\r\n}\r\n\r\nexport interface changePasswordValues {\r\n\tpassword: string;\r\n}\r\n\r\nexport interface changeUserPasswordValues {\r\n\tpassword: string;\r\n}\r\n\r\ninterface ERPApiUser {\r\n\tid: string | number;\r\n\tfirst_name: string;\r\n\tlast_name: string;\r\n\tmiddle_name: string;\r\n\tcountry_code: string;\r\n\temail: string;\r\n\tcreated_by: any;\r\n\tupdated_by: any;\r\n\tcreated_at: string;\r\n\tupdated_at: string;\r\n\trole_id: string;\r\n\tdepartment_id: number;\r\n\tis_deleted: number;\r\n\tdeleted_at: string | null;\r\n\tdeleted_by: any;\r\n\ttoken: string;\r\n\tprofile_image: string;\r\n\tcompany_id: number | string;\r\n\tcurrency_data?: {\r\n\t\tid: number;\r\n\t\tsymbol: string;\r\n\t\tcurrency_name: string;\r\n\t\tnumber_format: string;\r\n\t\tposition: string | null;\r\n\t\tfraction_unit: string | null\r\n\t};\r\n\taccessCompanies?: any[]\r\n}\r\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\r\n\tfull_name: string;\r\n}\r\n\r\nexport interface DefaultProviderProps {\r\n\tuser: ERPUser | null;\r\n\tloading: boolean;\r\n\tauthToken: string;\r\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\r\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n\tlogin: (\r\n\t\tparams: LoginFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tlogout: () => Promise<void>;\r\n\tforgotPassword: (\r\n\t\tparams: resetFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tresetPassword: (\r\n\t\tparams: resetPasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tchangePassword: (\r\n\t\tparams: changePasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tchangeUserPassword: (\r\n\t\tparams: changeUserPasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n}\r\n\r\nconst defaultProvider: DefaultProviderProps = {\r\n\tuser: null,\r\n\tloading: true,\r\n\tauthToken: '',\r\n\tsetUser: () => null,\r\n\tsetLoading: () => Boolean,\r\n\tlogin: () => Promise.resolve(),\r\n\tlogout: () => Promise.resolve(),\r\n\tforgotPassword: () => Promise.resolve(),\r\n\tresetPassword: () => Promise.resolve(),\r\n\tchangePassword: () => Promise.resolve(),\r\n\tchangeUserPassword: () => Promise.resolve()\r\n};\r\n\r\nconst AuthContext = createContext<DefaultProviderProps>(defaultProvider);\r\n\r\ninterface AuthProviderProps {\r\n\tchildren: React.ReactNode;\r\n\tpublicRoutes?: string[]; // Optional prop to allow customization of public routes\r\n}\r\n\r\n// Base URL will be set at runtime via ERPUIProvider\r\n\r\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children, publicRoutes = [] }) => {\r\n\t// ** States\r\n\tconst [user, setUser] = useState(defaultProvider.user);\r\n\tconst [authToken, setAuthToken] = useState<string>('');\r\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\r\n\tconst socketRef = useRef<Socket | null>(null);\r\n\r\n\t// ** Hooks\r\n\tconst navigate = useNavigate();\r\n\tconst location = useLocation();\r\n\tconst isJsonParse = (string?: string | null) => {\r\n\t\tif (!string) return false;\r\n\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(string);\r\n\t\t} catch (error) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getNotificationUrl = (data: any) => {\r\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\r\n\t\tconst key = moduleName.toLowerCase();\r\n\r\n\t\tconst routeMap: Record<string, () => string> = {\r\n\t\t\t'sales invoice': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\r\n\r\n\t\t\t'asset transfers': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\r\n\r\n\t\t\t'budgets': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\r\n\r\n\t\t\t'cash expense': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\r\n\r\n\t\t\t'credit notes': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\r\n\r\n\t\t\t'debit notes': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\r\n\r\n\t\t\t'expense reimbursement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\r\n\r\n\t\t\t'journal entries': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\r\n\r\n\t\t\t'payment entries': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\r\n\r\n\t\t\t'purchase invoice': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\r\n\r\n\t\t\t'stock transfer': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\r\n\r\n\t\t\t'bills of materials': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\r\n\r\n\t\t\t'purchase agreement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\r\n\r\n\t\t\t'purchase orders': () =>\r\n\t\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'purchase request': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'vra': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\r\n\r\n\t\t\t'sl customer returns': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\r\n\r\n\t\t\t'sales order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'rental order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'replacement order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'rental agreement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\r\n\r\n\t\t\t'cross hire order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'cross hire request': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\r\n\t\t};\r\n\r\n\t\treturn routeMap[key]?.() || '/dashboard';\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tsetLoading(true);\r\n\t\t// initAuth()\r\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t\tconst storedUser =\r\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\r\n\t\tconst allPublicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD, ...publicRoutes];\r\n\t\tconst currentPath = window.location.pathname;\r\n\t\tif (!storedToken && !storedUser) {\r\n\t\t\tconsole.log('allPublicRoutes..', allPublicRoutes, 'currentPath..', currentPath)\r\n\t\t\t// if (!allPublicRoutes.includes(currentPath)) {\r\n\t\t\tif (Boolean(!matchRoutes(allPublicRoutes.map((route) => ({ path: route })), location))) {\r\n\t\t\t\tnavigate(Pathname.LOGIN);\r\n\t\t\t}\r\n\t\t\tsetLoading(false);\r\n\t\t} else {\r\n\t\t\tsetUser(storedUser);\r\n\t\t\tsetAuthToken(storedToken || '');\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!authToken) {\r\n\t\t\tif (socketRef.current) {\r\n\t\t\t\tsocketRef.current?.disconnect();\r\n\t\t\t\tsocketRef.current = null\r\n\t\t\t}\r\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst config = getApiConfig();\r\n\t\tconst socket = io(config.socketBaseUrl, {\r\n\t\t\ttransports: [\"websocket\"],\r\n\t\t\tauth: { token: authToken },\r\n\t\t\tpath: \"/socket.io/\",\r\n\r\n\t\t});\r\n\t\tsocketRef.current = socket;\r\n\r\n\t\tsocket.on(\"connect\", () => {\r\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\r\n\t\t\tsocket.onAny((event, ...args) => {\r\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// socket event handler\r\n\t\tsocket.on('notification', (data) => {\r\n\t\t\tconst { message, notificationData } = data || {};\r\n\t\t\tlet notificationContent: React.ReactNode = message;\r\n\t\t\tconst url = getNotificationUrl(data);\r\n\r\n\t\t\tif (notificationData) {\r\n\t\t\t\tconst { notification_type } = notificationData;\r\n\r\n\t\t\t\tswitch (notification_type) {\r\n\t\t\t\t\tcase 'addApprovers': {\r\n\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcase 'change_approval_status': {\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tenqueueSnackbar(String(message), {\r\n\t\t\t\tvariant: 'default',\r\n\t\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\r\n\t\t\t\tautoHideDuration: 5000,\r\n\t\t\t\tcontent: (key) => (\r\n\t\t\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url} />\r\n\t\t\t\t),\r\n\t\t\t});\r\n\t\t});\r\n\r\n\r\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\r\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\r\n\t\t});\r\n\r\n\t\tsocket.on(\"error\", (errMsg) => {\r\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\r\n\t\t\tconsole.error(\"Socket error:\", errMsg);\r\n\t\t});\r\n\r\n\t\t// Clean up on unmount\r\n\t\treturn () => {\r\n\t\t\tif (socketRef.current) {\r\n\t\t\t\tsocketRef.current.disconnect();\r\n\t\t\t\tsocketRef.current = null\r\n\t\t\t}\r\n\t\t};\r\n\t}, [authToken]);\r\n\r\n\tconst fetchRolesByUserId = async (userId: number | string, token: string) => {\r\n\t\tconst response = await RbacApi.getV1RoleUserId({ id: userId, ...getToken(token) } as any);\r\n\t\tconst perm = response?.data?.role || [];\r\n\t\treturn JSON.stringify(perm);\r\n\t}\r\n\r\n\tconst handleLogin = async (\r\n\t\tparams: LoginFormValues,\r\n\t\tcallback: (err: string) => void,\r\n\t\tshoudRedirect: boolean = true,\r\n\t\tredirectPath: string = Pathname.DASHBOARD\r\n\t) => {\r\n\t\tsetLoading(true);\r\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t\tif (storedToken && user) {\r\n\t\t\treturn navigate(Pathname.DASHBOARD);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\r\n\t\t\tif (loginUser.success) {\r\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tconst userData: ERPUser = {\r\n\t\t\t\t\t\t...data,\r\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\r\n\t\t\t\t\t};\r\n\t\t\t\t\tconst rolePermission = await fetchRolesByUserId(userData.id, data.token);\r\n\t\t\t\t\t\r\n\t\t\t\t\tglobalThis.localStorage.setItem(auth.storageTokenKeyName, data.token);\r\n\t\t\t\t\twindow.localStorage.setItem(auth.storageUserKeyName, JSON.stringify(userData));\r\n\t\t\t\t\twindow.localStorage.setItem(auth.storageRolePermissionKeyName, rolePermission);\r\n\r\n\t\t\t\t\tsetUser(userData);\r\n\t\t\t\t\tsetAuthToken(data.token);\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tshoudRedirect && navigate(redirectPath);\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t\tdelete data.token;\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t}\r\n\t\t\tsetLoading(false);\r\n\t\t\tcallback(message);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleLogout = async () => {\r\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\r\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\r\n\t\twindow.localStorage.removeItem(auth.storageRolePermissionKeyName);\r\n\t\tsetUser(null);\r\n\t\tsetAuthToken('');\r\n\t\tnavigate(Pathname.LOGIN);\r\n\t};\r\n\r\n\tconst handleForgotPassword = async (params: resetFormValues,\r\n\t\tcallback: (type: boolean, err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\r\n\t\t\tcallback(true, \"Reset Link sent to your email\");\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t}\r\n\r\n\t\t\tcallback(false, message);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleResetPassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\r\n\t\t\tcallback(response);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tconsole.log(\"Error \", error)\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleChangePassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\r\n\t\t\tcallback(null);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tconsole.log(\"Error \", error)\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcallback(\"reset\");\r\n\t}\r\n\r\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string, resType: boolean) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\r\n\t\t\tcallback('Password Changed Successfully', true);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\r\n\t\tcallback: (err: string, resType: boolean) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\r\n\t\t\tcallback('Password Changed Successfully', true);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tconst values = {\r\n\t\tuser,\r\n\t\tauthToken,\r\n\t\tloading,\r\n\t\tsetUser,\r\n\t\tsetLoading,\r\n\t\tlogin: handleLogin,\r\n\t\tlogout: handleLogout,\r\n\t\tforgotPassword: handleForgotPassword,\r\n\t\tresetPassword: handleResetPassword,\r\n\t\tchangePassword: handleChangePassword,\r\n\t\tchangeUserPassword: handleChangeUserPassword,\r\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\r\n\t};\r\n\r\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\r\n};\r\n\r\nexport { AuthContext, AuthProvider };\r\n","import { useContext } from \"react\";\nimport { AuthContext, DefaultProviderProps } from \"../contexts/AuthContext\";\n\nexport const useAuth = (): DefaultProviderProps => useContext(AuthContext);\n"],"names":["MUITypography","React","CloseIcon","PathnameGenerator","PathnameGeneratorInventory","PathnameGeneratorManufacuring","PathnameGeneratorPurchase","_a","RENTALROUTES","PathnameGeneratorCrm","PathnameGeneratorRental","RbacApi.getV1RoleUserId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAuth-Bvid1bpz.esm.js","sources":["../src/components/typography/typography.tsx","../src/utils/route-utils.ts","../src/components/custom-snackbar/custom-snackbar.tsx","../src/contexts/AuthContext.tsx","../src/hooks/useAuth.ts"],"sourcesContent":["import {\r\n Typography as MUITypography,\r\n TypographyProps,\r\n styled,\r\n} from \"@mui/material\";\r\n\r\nexport interface ITypography extends TypographyProps {\r\n type?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"s1\" | \"s2\" | \"s3\" | \"s4\" | \"s5\";\r\n weight?: \"normal\" | \"medium\" | \"bold\";\r\n}\r\n\r\nconst StyledTypography = styled(MUITypography)<ITypography>(\r\n ({ theme: { palette }, color }) => ({\r\n color: color || palette.theme?.primary[800],\r\n }),\r\n);\r\n\r\nexport function Typography(props: ITypography) {\r\n const {\r\n children,\r\n type = \"h5\",\r\n weight = \"normal\",\r\n className,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n <StyledTypography className={`${type} ${weight} ${className}`} {...rest}>\r\n {children}\r\n </StyledTypography>\r\n );\r\n}\r\n\r\nexport default Typography;\r\n","\nexport const convertRoutesToUseIdParams = (routes: Record<string, string>): Record<string, string> => {\n const updatedRoutes: Record<string, string> = { ...routes };\n \n // Identify patterns for view/edit/detail routes\n Object.keys(updatedRoutes).forEach(key => {\n // Common patterns for detail views\n if (\n key.startsWith('VIEW_') || \n key.startsWith('EDIT_') || \n key.startsWith('DETAIL_') ||\n key.includes('_VIEW_') || \n key.includes('_EDIT_') || \n key.includes('_DETAIL_')\n ) {\n if (!updatedRoutes[key].includes(':')) {\n updatedRoutes[key] = `${updatedRoutes[key]}/:id`;\n }\n }\n });\n \n return updatedRoutes;\n};\n\n\nexport const generateRouteWithId = (basePath: string, id: string | number | Record<string, any>): string => {\n if(id && typeof id === 'object') {\n Object.entries(id).map(([key, value]) => {\n basePath = basePath.replace(`:${key}`, value?.toString());\n })\n } else if (basePath.includes(':id')) {\n return basePath.replace(':id', id?.toString());\n }\n \n // If the path doesn't have an :id parameter, append it\n return `${basePath}`;\n};\n\n\nexport const updatePathnameWithIdParams = <T extends Record<string, string>>(pathnameObject: T): T => {\n return convertRoutesToUseIdParams(pathnameObject) as T;\n}; \n\n// Added utility for navigating to views with id parameter\nexport const navigateToRouteWithId = (\n navigate: any,\n route: string, \n id: string | number,\n state?: any\n) => {\n const path = generateRouteWithId(route, id);\n navigate(path, { state });\n}; ","import React from 'react';\r\nimport { SnackbarContent, useSnackbar } from 'notistack';\r\nimport { Avatar, Box, IconButton } from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Notification } from '../icons';\r\nimport Typography from '../typography/typography';\r\nimport images from '../../assets/images';\r\nimport \"./custom-snackbar.scss\"\r\n\r\ninterface CustomSnackbarProps {\r\n message: string;\r\n variant?: 'default' | 'error' | 'success' | 'warning' | 'info';\r\n linkUrl?: string;\r\n snackbarKey: string | number;\r\n}\r\n\r\nconst mainModuleIcons = {\r\n rbac: images.user,\r\n document: images.document,\r\n 'accounts-and-finance': images.accounting,\r\n inventory: images.inventory,\r\n manufacturing: images.manufacturing,\r\n sales: images.crm,\r\n rental: images.rental,\r\n user: images.user,\r\n purchase: images.procurement,\r\n hrms: images.hrms\r\n}\r\nconst mainModuleBgColors = {\r\n rbac: '#F3E5F5',\r\n document: '#FFF8E1',\r\n 'accounts-and-finance': '#E8F5E8',\r\n inventory: '#E3F2FD',\r\n manufacturing: '#FFF3E0',\r\n sales: '#F3E5F5',\r\n rental: '#E8F5E8',\r\n user: '#F3E5F5',\r\n purchase: '#FCE4EC',\r\n hrms: '#fcfcfc'\r\n}\r\n\r\nconst CustomSnackbar = React.forwardRef<HTMLDivElement, CustomSnackbarProps>(\r\n ({ message, variant = 'default', linkUrl, snackbarKey, data }, ref) => {\r\n const { closeSnackbar } = useSnackbar();\r\n const navigate = useNavigate();\r\n\r\n const backgroundColorMap: Record<string, string> = {\r\n success: '#f0fdf4',\r\n error: '#fef2f2',\r\n warning: '#fff7ed',\r\n info: '#eff6ff',\r\n default: '#fff',\r\n };\r\n\r\n const textColorMap: Record<string, string> = {\r\n success: '#166534',\r\n error: '#991b1b',\r\n warning: '#92400e',\r\n info: '#1e40af',\r\n default: '#27272a',\r\n };\r\n\r\n const handleClick = () => {\r\n if (linkUrl) navigate(linkUrl);\r\n closeSnackbar(snackbarKey);\r\n };\r\n\r\n const handleCloseClick = (e: React.MouseEvent) => {\r\n e.stopPropagation(); // Prevent triggering link\r\n closeSnackbar(snackbarKey);\r\n };\r\n\r\n return (\r\n <SnackbarContent\r\n ref={ref}\r\n style={{\r\n backgroundColor: backgroundColorMap[variant],\r\n color: textColorMap[variant],\r\n }}\r\n className='SnackBar'\r\n onClick={handleClick}\r\n >\r\n <Box display=\"flex\" alignItems=\"center\" p={2} position=\"relative\" gap={2} width='100%'>\r\n {mainModuleIcons?.[data.module] ?\r\n <Avatar sx={{ \r\n width: 45, \r\n height: 45, \r\n fontSize: '0.875rem',\r\n bgcolor: mainModuleBgColors[data.module] || 'primary.main',\r\n color: 'white',\r\n borderRadius: '8px',\r\n '& img': { \r\n width: '35px', \r\n height: '35px', \r\n objectFit: 'contain'\r\n }\r\n }} src={mainModuleIcons?.[data.module]} /> :\r\n <Notification\r\n style={{\r\n color: textColorMap[variant],\r\n marginTop: 2,\r\n }}\r\n />\r\n }\r\n <Box display=\"flex\" alignItems=\"center\" width='100%'>\r\n <Box flex=\"1\">\r\n <Typography type='h5' color={'inherit'} weight='bold'>\r\n New Notification\r\n </Typography>\r\n <Typography type='s3' mt={0.5} color={'inherit'}>\r\n {message}\r\n </Typography>\r\n </Box>\r\n\r\n <IconButton\r\n size=\"small\"\r\n onClick={handleCloseClick}\r\n // style={{\r\n // position: 'absolute',\r\n // top: 4,\r\n // right: 4,\r\n // color: textColorMap[variant],\r\n // }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n </Box>\r\n </SnackbarContent>\r\n );\r\n }\r\n);\r\n\r\nexport { CustomSnackbar };\r\nexport default CustomSnackbar;\r\n","import React, { createContext, useEffect, useRef, useState } from 'react';\r\nimport {\r\n\tpostV1AuthChangePassword,\r\n\tpostV1AuthForgotPassword,\r\n\tpostV1AuthChangeUserPassword,\r\n\t// getV1UserId,\r\n\tpostV1AuthLogin,\r\n\tpostV1AuthResetPassword,\r\n\tsetBaseUrl,\r\n\tpostV1AuthChangeUserPasswordByAdmin\r\n} from '../api-client/api.rbac/api';\r\nimport { auth } from '../constants/auth';\r\nimport { useLocation, matchRoutes, useNavigate } from 'react-router-dom';\r\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { Socket, io } from 'socket.io-client';\r\nimport { generateRouteWithId } from '../utils/route-utils';\r\nimport { getApiConfig } from '../utils/api-config';\r\nimport {\r\n\tPathnameAccounting,\r\n\tPathnameGenerator\r\n} from '../constants/pathnames/pathname.accounting';\r\n\r\nimport {\r\n\tPathnameInventory,\r\n\tPathnameGenerator as PathnameGeneratorInventory\r\n} from '../constants/pathnames/pathname.inventory';\r\n\r\nimport {\r\n\tPathnameManufacturing,\r\n\tPathnameGenerator as PathnameGeneratorManufacuring\r\n} from '../constants/pathnames/pathname.manufacturing';\r\n\r\nimport {\r\n\tPathnamePurchase,\r\n\tPathnameGenerator as PathnameGeneratorPurchase\r\n} from '../constants/pathnames/pathname.procurement';\r\n\r\nimport {\r\n\tPathnameCrm,\r\n\tPathnameGenerator as PathnameGeneratorCrm\r\n} from '../constants/pathnames/pathname.crm';\r\n\r\nimport {\r\n\tPathnameRental,\r\n\tPathnameGenerator as PathnameGeneratorRental\r\n} from '../constants/pathnames/pathname.rental';\r\n\r\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\r\n\r\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\r\nimport { RbacApi } from '@/api-client/index.ts';\r\nexport interface LoginFormValues {\r\n\temail: string;\r\n\tpassword: string;\r\n}\r\n\r\nexport interface resetFormValues {\r\n\temail: string;\r\n}\r\n\r\nexport interface resetPasswordValues {\r\n\ttoken: string;\r\n}\r\n\r\nexport interface changePasswordValues {\r\n\tpassword: string;\r\n}\r\n\r\nexport interface changeUserPasswordValues {\r\n\tpassword: string;\r\n}\r\n\r\ninterface ERPApiUser {\r\n\tid: string | number;\r\n\tfirst_name: string;\r\n\tlast_name: string;\r\n\tmiddle_name: string;\r\n\tcountry_code: string;\r\n\temail: string;\r\n\tcreated_by: any;\r\n\tupdated_by: any;\r\n\tcreated_at: string;\r\n\tupdated_at: string;\r\n\trole_id: string;\r\n\tdepartment_id: number;\r\n\tis_deleted: number;\r\n\tdeleted_at: string | null;\r\n\tdeleted_by: any;\r\n\ttoken: string;\r\n\tprofile_image: string;\r\n\tcompany_id: number | string;\r\n\tcurrency_data?: {\r\n\t\tid: number;\r\n\t\tsymbol: string;\r\n\t\tcurrency_name: string;\r\n\t\tnumber_format: string;\r\n\t\tposition: string | null;\r\n\t\tfraction_unit: string | null\r\n\t};\r\n\taccessCompanies?: any[]\r\n}\r\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\r\n\tfull_name: string;\r\n}\r\n\r\nexport interface DefaultProviderProps {\r\n\tuser: ERPUser | null;\r\n\tloading: boolean;\r\n\tauthToken: string;\r\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\r\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n\tlogin: (\r\n\t\tparams: LoginFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tlogout: () => Promise<void>;\r\n\tforgotPassword: (\r\n\t\tparams: resetFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tresetPassword: (\r\n\t\tparams: resetPasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tchangePassword: (\r\n\t\tparams: changePasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tchangeUserPassword: (\r\n\t\tparams: changeUserPasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n}\r\n\r\nconst defaultProvider: DefaultProviderProps = {\r\n\tuser: null,\r\n\tloading: true,\r\n\tauthToken: '',\r\n\tsetUser: () => null,\r\n\tsetLoading: () => Boolean,\r\n\tlogin: () => Promise.resolve(),\r\n\tlogout: () => Promise.resolve(),\r\n\tforgotPassword: () => Promise.resolve(),\r\n\tresetPassword: () => Promise.resolve(),\r\n\tchangePassword: () => Promise.resolve(),\r\n\tchangeUserPassword: () => Promise.resolve()\r\n};\r\n\r\nconst AuthContext = createContext<DefaultProviderProps>(defaultProvider);\r\n\r\ninterface AuthProviderProps {\r\n\tchildren: React.ReactNode;\r\n\tpublicRoutes?: string[]; // Optional prop to allow customization of public routes\r\n}\r\n\r\n// Base URL will be set at runtime via ERPUIProvider\r\n\r\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children, publicRoutes = [] }) => {\r\n\t// ** States\r\n\tconst [user, setUser] = useState(defaultProvider.user);\r\n\tconst [authToken, setAuthToken] = useState<string>('');\r\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\r\n\tconst socketRef = useRef<Socket | null>(null);\r\n\r\n\t// ** Hooks\r\n\tconst navigate = useNavigate();\r\n\tconst location = useLocation();\r\n\tconst isJsonParse = (string?: string | null) => {\r\n\t\tif (!string) return false;\r\n\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(string);\r\n\t\t} catch (error) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getNotificationUrl = (data: any) => {\r\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\r\n\t\tconst key = moduleName.toLowerCase();\r\n\r\n\t\tconst routeMap: Record<string, () => string> = {\r\n\t\t\t'sales invoice': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\r\n\r\n\t\t\t'asset transfers': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\r\n\r\n\t\t\t'budgets': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\r\n\r\n\t\t\t'cash expense': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\r\n\r\n\t\t\t'credit notes': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\r\n\r\n\t\t\t'debit notes': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\r\n\r\n\t\t\t'expense reimbursement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\r\n\r\n\t\t\t'journal entries': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\r\n\r\n\t\t\t'payment entries': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\r\n\r\n\t\t\t'purchase invoice': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\r\n\r\n\t\t\t'stock transfer': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\r\n\r\n\t\t\t'bills of materials': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\r\n\r\n\t\t\t'purchase agreement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\r\n\r\n\t\t\t'purchase orders': () =>\r\n\t\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'purchase request': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'vra': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\r\n\r\n\t\t\t'sl customer returns': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\r\n\r\n\t\t\t'sales order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'rental order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'replacement order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'rental agreement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\r\n\r\n\t\t\t'cross hire order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'cross hire request': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\r\n\t\t};\r\n\r\n\t\treturn routeMap[key]?.() || '/dashboard';\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tsetLoading(true);\r\n\t\t// initAuth()\r\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t\tconst storedUser =\r\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\r\n\t\tconst allPublicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD, ...publicRoutes];\r\n\t\tconst currentPath = window.location.pathname;\r\n\t\tif (!storedToken && !storedUser) {\r\n\t\t\tconsole.log('allPublicRoutes..', allPublicRoutes, 'currentPath..', currentPath)\r\n\t\t\t// if (!allPublicRoutes.includes(currentPath)) {\r\n\t\t\tif (Boolean(!matchRoutes(allPublicRoutes.map((route) => ({ path: route })), location))) {\r\n\t\t\t\tnavigate(Pathname.LOGIN);\r\n\t\t\t}\r\n\t\t\tsetLoading(false);\r\n\t\t} else {\r\n\t\t\tsetUser(storedUser);\r\n\t\t\tsetAuthToken(storedToken || '');\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!authToken) {\r\n\t\t\tif (socketRef.current) {\r\n\t\t\t\tsocketRef.current?.disconnect();\r\n\t\t\t\tsocketRef.current = null\r\n\t\t\t}\r\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst config = getApiConfig();\r\n\t\tconst socket = io(config.socketBaseUrl, {\r\n\t\t\ttransports: [\"websocket\"],\r\n\t\t\tauth: { token: authToken },\r\n\t\t\tpath: \"/socket.io/\",\r\n\r\n\t\t});\r\n\t\tsocketRef.current = socket;\r\n\r\n\t\tsocket.on(\"connect\", () => {\r\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\r\n\t\t\tsocket.onAny((event, ...args) => {\r\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// socket event handler\r\n\t\tsocket.on('notification', (data) => {\r\n\t\t\tconst { message, notificationData } = data || {};\r\n\t\t\tlet notificationContent: React.ReactNode = message;\r\n\t\t\tconst url = getNotificationUrl(data);\r\n\r\n\t\t\tif (notificationData) {\r\n\t\t\t\tconst { notification_type } = notificationData;\r\n\r\n\t\t\t\tswitch (notification_type) {\r\n\t\t\t\t\tcase 'addApprovers': {\r\n\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcase 'change_approval_status': {\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tenqueueSnackbar(String(message), {\r\n\t\t\t\tvariant: 'default',\r\n\t\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\r\n\t\t\t\tautoHideDuration: 5000,\r\n\t\t\t\tcontent: (key) => (\r\n\t\t\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url} />\r\n\t\t\t\t),\r\n\t\t\t});\r\n\t\t});\r\n\r\n\r\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\r\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\r\n\t\t});\r\n\r\n\t\tsocket.on(\"error\", (errMsg) => {\r\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\r\n\t\t\tconsole.error(\"Socket error:\", errMsg);\r\n\t\t});\r\n\r\n\t\t// Clean up on unmount\r\n\t\treturn () => {\r\n\t\t\tif (socketRef.current) {\r\n\t\t\t\tsocketRef.current.disconnect();\r\n\t\t\t\tsocketRef.current = null\r\n\t\t\t}\r\n\t\t};\r\n\t}, [authToken]);\r\n\r\n\tconst fetchRolesByUserId = async (userId: number | string, token: string) => {\r\n\t\tconst response = await RbacApi.getV1RoleUserId({ id: userId, ...getToken(token) } as any);\r\n\t\tconst perm = response?.data?.role || [];\r\n\t\treturn JSON.stringify(perm);\r\n\t}\r\n\r\n\tconst handleLogin = async (\r\n\t\tparams: LoginFormValues,\r\n\t\tcallback: (err: string) => void,\r\n\t\tshoudRedirect: boolean = true,\r\n\t\tredirectPath: string = Pathname.DASHBOARD\r\n\t) => {\r\n\t\tsetLoading(true);\r\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t\tif (storedToken && user) {\r\n\t\t\treturn navigate(Pathname.DASHBOARD);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\r\n\t\t\tif (loginUser.success) {\r\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tconst userData: ERPUser = {\r\n\t\t\t\t\t\t...data,\r\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\r\n\t\t\t\t\t};\r\n\t\t\t\t\tconst rolePermission = await fetchRolesByUserId(userData.id, data.token);\r\n\t\t\t\t\t\r\n\t\t\t\t\tglobalThis.localStorage.setItem(auth.storageTokenKeyName, data.token);\r\n\t\t\t\t\twindow.localStorage.setItem(auth.storageUserKeyName, JSON.stringify(userData));\r\n\t\t\t\t\twindow.localStorage.setItem(auth.storageRolePermissionKeyName, rolePermission);\r\n\r\n\t\t\t\t\tsetUser(userData);\r\n\t\t\t\t\tsetAuthToken(data.token);\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tshoudRedirect && navigate(redirectPath);\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t\tdelete data.token;\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t}\r\n\t\t\tsetLoading(false);\r\n\t\t\tcallback(message);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleLogout = async () => {\r\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\r\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\r\n\t\twindow.localStorage.removeItem(auth.storageRolePermissionKeyName);\r\n\t\tsetUser(null);\r\n\t\tsetAuthToken('');\r\n\t\tnavigate(Pathname.LOGIN);\r\n\t};\r\n\r\n\tconst handleForgotPassword = async (params: resetFormValues,\r\n\t\tcallback: (type: boolean, err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\r\n\t\t\tcallback(true, \"Reset Link sent to your email\");\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t}\r\n\r\n\t\t\tcallback(false, message);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleResetPassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\r\n\t\t\tcallback(response);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tconsole.log(\"Error \", error)\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleChangePassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\r\n\t\t\tcallback(null);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tconsole.log(\"Error \", error)\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcallback(\"reset\");\r\n\t}\r\n\r\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string, resType: boolean) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\r\n\t\t\tcallback('Password Changed Successfully', true);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\r\n\t\tcallback: (err: string, resType: boolean) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\r\n\t\t\tcallback('Password Changed Successfully', true);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tconst values = {\r\n\t\tuser,\r\n\t\tauthToken,\r\n\t\tloading,\r\n\t\tsetUser,\r\n\t\tsetLoading,\r\n\t\tlogin: handleLogin,\r\n\t\tlogout: handleLogout,\r\n\t\tforgotPassword: handleForgotPassword,\r\n\t\tresetPassword: handleResetPassword,\r\n\t\tchangePassword: handleChangePassword,\r\n\t\tchangeUserPassword: handleChangeUserPassword,\r\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\r\n\t};\r\n\r\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\r\n};\r\n\r\nexport { AuthContext, AuthProvider };\r\n","import { useContext } from \"react\";\nimport { AuthContext, DefaultProviderProps } from \"../contexts/AuthContext\";\n\nexport const useAuth = (): DefaultProviderProps => useContext(AuthContext);\n"],"names":["MUITypography","React","CloseIcon","PathnameGenerator","PathnameGeneratorInventory","PathnameGeneratorManufacuring","PathnameGeneratorPurchase","_a","RENTALROUTES","PathnameGeneratorCrm","PathnameGeneratorRental","RbacApi.getV1RoleUserId"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const e=require("react"),t=require("react/jsx-runtime"),a=require("./api-By0ZkuF-.js"),n=require("./api-config-C9BF5LFu.js"),r=require("react-router-dom"),o=require("./pathname.rental-hhA3jITb.js"),s=require("./common-8gzbBoY1.js"),i=require("notistack"),c=require("socket.io-client"),l=require("@mui/material"),u=require("@mui/icons-material/Close"),m=require("./images-E5-7PC4V.js");;/* empty css */const g=require("./notification-
|
|
1
|
+
"use strict";const e=require("react"),t=require("react/jsx-runtime"),a=require("./api-By0ZkuF-.js"),n=require("./api-config-C9BF5LFu.js"),r=require("react-router-dom"),o=require("./pathname.rental-hhA3jITb.js"),s=require("./common-8gzbBoY1.js"),i=require("notistack"),c=require("socket.io-client"),l=require("@mui/material"),u=require("@mui/icons-material/Close"),m=require("./images-E5-7PC4V.js");;/* empty css */const g=require("./notification-BsWK2s3n.js");function h(e){return e&&e.__esModule?e.default:e}const d=/* @__PURE__ */h(e),E=/* @__PURE__ */h(u),P=l.styled(l.Typography)(({theme:{palette:e},color:t})=>{var a;return{color:t||(null==(a=e.theme)?void 0:a.primary[800])}});function S(e){const{children:a,type:n="h5",weight:r="normal",className:o,...s}=e;/* @__PURE__ */
|
|
2
2
|
return t.jsx(P,{className:`${n} ${r} ${o}`,...s,children:a})}const f=e=>{const t={...e};return Object.keys(t).forEach(e=>{(e.startsWith("VIEW_")||e.startsWith("EDIT_")||e.startsWith("DETAIL_")||e.includes("_VIEW_")||e.includes("_EDIT_")||e.includes("_DETAIL_"))&&(t[e].includes(":")||(t[e]=`${t[e]}/:id`))}),t},w=(e,t)=>{if(t&&"object"==typeof t)Object.entries(t).map(([t,a])=>{e=e.replace(`:${t}`,null==a?void 0:a.toString())});else if(e.includes(":id"))return e.replace(":id",null==t?void 0:t.toString());return`${e}`},R={rbac:m.images.user,document:m.images.document,"accounts-and-finance":m.images.accounting,inventory:m.images.inventory,manufacturing:m.images.manufacturing,sales:m.images.crm,rental:m.images.rental,user:m.images.user,purchase:m.images.procurement,hrms:m.images.hrms},_={rbac:"#F3E5F5",document:"#FFF8E1","accounts-and-finance":"#E8F5E8",inventory:"#E3F2FD",manufacturing:"#FFF3E0",sales:"#F3E5F5",rental:"#E8F5E8",user:"#F3E5F5",purchase:"#FCE4EC",hrms:"#fcfcfc"},p=d.forwardRef(({message:e,variant:a="default",linkUrl:n,snackbarKey:o,data:s},c)=>{const{closeSnackbar:u}=i.useSnackbar(),m=r.useNavigate(),h={success:"#166534",error:"#991b1b",warning:"#92400e",info:"#1e40af",default:"#27272a"};/* @__PURE__ */
|
|
3
3
|
return t.jsx(i.SnackbarContent,{ref:c,style:{backgroundColor:{success:"#f0fdf4",error:"#fef2f2",warning:"#fff7ed",info:"#eff6ff",default:"#fff"}[a],color:h[a]},className:"SnackBar",onClick:()=>{n&&m(n),u(o)},children:/* @__PURE__ */t.jsxs(l.Box,{display:"flex",alignItems:"center",p:2,position:"relative",gap:2,width:"100%",children:[(null==R?void 0:R[s.module])?/* @__PURE__ */t.jsx(l.Avatar,{sx:{width:45,height:45,fontSize:"0.875rem",bgcolor:_[s.module]||"primary.main",color:"white",borderRadius:"8px","& img":{width:"35px",height:"35px",objectFit:"contain"}},src:null==R?void 0:R[s.module]}):/* @__PURE__ */t.jsx(g.Notification,{style:{color:h[a],marginTop:2}}),
|
|
4
4
|
/* @__PURE__ */t.jsxs(l.Box,{display:"flex",alignItems:"center",width:"100%",children:[
|
|
@@ -7,4 +7,4 @@ return t.jsx(i.SnackbarContent,{ref:c,style:{backgroundColor:{success:"#f0fdf4",
|
|
|
7
7
|
/* @__PURE__ */t.jsx(S,{type:"s3",mt:.5,color:"inherit",children:e})]}),
|
|
8
8
|
/* @__PURE__ */t.jsx(l.IconButton,{size:"small",onClick:e=>{e.stopPropagation(),u(o)},children:/* @__PURE__ */t.jsx(E,{fontSize:"small"})})]})]})})}),I={user:null,loading:!0,authToken:"",setUser:()=>null,setLoading:()=>Boolean,login:()=>Promise.resolve(),logout:()=>Promise.resolve(),forgotPassword:()=>Promise.resolve(),resetPassword:()=>Promise.resolve(),changePassword:()=>Promise.resolve(),changeUserPassword:()=>Promise.resolve()},y=e.createContext(I);exports.AuthContext=y,exports.AuthProvider=({children:l,publicRoutes:u=[]})=>{const[m,g]=e.useState(I.user),[h,d]=e.useState(""),[E,P]=e.useState(I.loading),S=e.useRef(null),f=r.useNavigate(),R=r.useLocation(),_=e=>{if(!e)return!1;try{return JSON.parse(e)}catch(t){return!1}};e.useEffect(()=>{P(!0);const e=window.localStorage.getItem(n.auth.storageTokenKeyName),t=_(window.localStorage.getItem(n.auth.storageUserKeyName))??null,a=[o.Pathname.LOGIN,o.Pathname.FORGOT_PASSWORD,o.Pathname.RESET_PASSWORD,o.Pathname.CHANGE_PASSWORD,...u];window.location.pathname;e||t?(g(t),d(e||""),P(!1)):(Boolean(!r.matchRoutes(a.map(e=>({path:e})),R))&&f(o.Pathname.LOGIN),P(!1))},[]),e.useEffect(()=>{var e;if(!h)return void(S.current&&(null==(e=S.current)||e.disconnect(),S.current=null));const a=n.getApiConfig(),r=c.io(a.socketBaseUrl,{transports:["websocket"],auth:{token:h},path:"/socket.io/"});return S.current=r,r.on("connect",()=>{r.onAny((e,...t)=>{})}),r.on("notification",e=>{const{message:a,notificationData:n}=e||{};let r=a;const s=(e=>{var t;const{moduleName:a="",moduleId:n="",notificationData:r={}}=e,s={"sales invoice":()=>w(o.PathnameGenerator$5(o.PathnameAccounting.VIEW_SALES_INVOICES),n.toString()),"asset transfers":()=>w(o.PathnameGenerator$5(o.PathnameAccounting.VIEW_ASSET_TRANSFER),n.toString()),budgets:()=>w(o.PathnameGenerator$5(o.PathnameAccounting.VIEW_BUDGET),n.toString()),"cash expense":()=>w(o.PathnameGenerator$5(o.PathnameAccounting.VIEW_CASH_EXPENSE),n.toString()),"credit notes":()=>w(o.PathnameGenerator$5(o.PathnameAccounting.VIEW_CREDIT_NOTE),n.toString()),"debit notes":()=>w(o.PathnameGenerator$5(o.PathnameAccounting.VIEW_DEBIT_NOTE),n.toString()),"expense reimbursement":()=>w(o.PathnameGenerator$5(o.PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT),n.toString()),"journal entries":()=>w(o.PathnameGenerator$5(o.PathnameAccounting.VIEW_JOURNAL_ENTRY),n.toString()),"payment entries":()=>w(o.PathnameGenerator$5(o.PathnameAccounting.VIEW_PAYMENT_ENTRY),n.toString()),"purchase invoice":()=>w(o.PathnameGenerator$5(o.PathnameAccounting.VIEW_PURCHASE_INVOICE),n.toString()),"stock transfer":()=>w(o.PathnameGenerator$4(o.PathnameInventory.VIEW_STOCK_TRANSFER),n.toString()),"bills of materials":()=>w(o.PathnameGenerator$3(o.PathnameManufacturing.VIEW_BILL_OF_MATERIAL),n.toString()),"purchase agreement":()=>w(o.PathnameGenerator$1(o.PathnamePurchase.VIEW_PURCHASE_AGREEMENT),n.toString()),"purchase orders":()=>{var e;return w(1==(null==(e=null==r?void 0:r.data)?void 0:e.is_rental)?o.ROUTES.VIEW:o.PathnameGenerator$1(o.PathnamePurchase.VIEW_PURCHASE_ORDER),n.toString())},"purchase request":()=>w(o.PathnameGenerator$1(o.PathnamePurchase.VIEW_PURCHASE_ORDER),n.toString()),vra:()=>w(o.PathnameGenerator$1(o.PathnamePurchase.VIEW_VENDOR_RETURNS),n.toString()),"sl customer returns":()=>w(o.PathnameGenerator$2(o.PathnameCrm.VIEW_CUSTOMER_RETURNS),n.toString()),"sales order":()=>w(o.PathnameGenerator$2(o.PathnameCrm.VIEW_SALES_ORDER),n.toString()),"rental order":()=>w(o.PathnameGenerator(o.PathnameRental.VIEW_RENTAL_ORDER),n.toString()),"replacement order":()=>w(o.PathnameGenerator(o.PathnameRental.VIEW_RENTAL_ORDER),n.toString()),"rental agreement":()=>w(o.PathnameGenerator(o.PathnameRental.VIEW_AGREEMENT),n.toString()),"cross hire order":()=>w(o.PathnameGenerator(o.PathnameRental.VIEW_CROSS_HIRE_ORDER),n.toString()),"cross hire request":()=>w(o.PathnameGenerator(o.PathnameRental.VIEW_CROSS_HIRE_REQUEST),n.toString())};return(null==(t=s[a.toLowerCase()])?void 0:t.call(s))||"/dashboard"})(e);if(n){const{notification_type:e}=n;r=a}i.enqueueSnackbar(String(a),{variant:"default",anchorOrigin:{vertical:"top",horizontal:"center"},autoHideDuration:5e3,content:e=>/* @__PURE__ */t.jsx(p,{snackbarKey:e,message:r,data:n,variant:"default",linkUrl:s})})}),r.on("sales_invoice_viewed",e=>{}),r.on("error",e=>{i.enqueueSnackbar(`Socket error: ${e}`,{variant:"error"})}),()=>{S.current&&(S.current.disconnect(),S.current=null)}},[h]);const v={user:m,authToken:h,loading:E,setUser:g,setLoading:P,login:async(e,t,r=!0,i=o.Pathname.DASHBOARD)=>{var c;P(!0);if(window.localStorage.getItem(n.auth.storageTokenKeyName)&&m)return f(o.Pathname.DASHBOARD);try{const t=await a.postV1AuthLogin({...e,...s.getToken()});if(t.success){const e=(null==(c=null==t?void 0:t.data)?void 0:c.login)||null;if(e){const t={...e,full_name:`${e.first_name} ${e.last_name}`},o=await(async(e,t)=>{var n;const r=await a.getV1RoleUserId({id:e,...s.getToken(t)}),o=(null==(n=null==r?void 0:r.data)?void 0:n.role)||[];return JSON.stringify(o)})(t.id,e.token);globalThis.localStorage.setItem(n.auth.storageTokenKeyName,e.token),window.localStorage.setItem(n.auth.storageUserKeyName,JSON.stringify(t)),window.localStorage.setItem(n.auth.storageRolePermissionKeyName,o),g(t),d(e.token),setTimeout(()=>{r&&f(i),P(!1),delete e.token},1e3)}}}catch(l){let e="Something went wrong";l instanceof Error&&(e=_(l.message).message||l.message),P(!1),t(e)}},logout:async()=>{window.localStorage.removeItem(n.auth.storageTokenKeyName),window.localStorage.removeItem(n.auth.storageUserKeyName),window.localStorage.removeItem(n.auth.storageRolePermissionKeyName),g(null),d(""),f(o.Pathname.LOGIN)},forgotPassword:async(e,t)=>{try{await a.postV1AuthForgotPassword({...e,...s.getToken()}),t(!0,"Reset Link sent to your email")}catch(n){let e="Something went wrong";n instanceof Error&&(e=_(n.message).message||n.message),t(!1,e)}},resetPassword:async(e,t)=>{try{t(await a.postV1AuthResetPassword({...e,...s.getToken()}))}catch(n){let e="Something went wrong";n instanceof Error&&(e=_(n.message).message||n.message,t(e))}},changePassword:async(e,t)=>{try{await a.postV1AuthChangePassword({...e,...s.getToken()}),t(null)}catch(n){let e="Something went wrong";n instanceof Error&&(e=_(n.message).message||n.message,t(e))}t("reset")},changeUserPassword:async(e,t)=>{try{await a.postV1AuthChangeUserPassword({...e,...s.getToken()}),t("Password Changed Successfully",!0)}catch(n){let e="Something went wrong";n instanceof Error&&(e=_(n.message).message||n.message,t(e,!1))}},changeUserPasswordByAdmin:async(e,t)=>{try{await a.postV1AuthChangeUserPasswordByAdmin({...e,...s.getToken()}),t("Password Changed Successfully",!0)}catch(n){let e="Something went wrong";n instanceof Error&&(e=_(n.message).message||n.message,t(e,!1))}}};/* @__PURE__ */
|
|
9
9
|
return t.jsx(y.Provider,{value:v,children:l})},exports.CustomSnackbar=p,exports.Typography=S,exports.convertRoutesToUseIdParams=f,exports.generateRouteWithId=w,exports.navigateToRouteWithId=(e,t,a,n)=>{e(w(t,a),{state:n})},exports.updatePathnameWithIdParams=e=>f(e),exports.useAuth=()=>e.useContext(y);
|
|
10
|
-
//# sourceMappingURL=useAuth-
|
|
10
|
+
//# sourceMappingURL=useAuth-CVokk6Ra.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth-Dpe5kDa6.js","sources":["../src/components/typography/typography.tsx","../src/utils/route-utils.ts","../src/components/custom-snackbar/custom-snackbar.tsx","../src/contexts/AuthContext.tsx","../src/hooks/useAuth.ts"],"sourcesContent":["import {\r\n Typography as MUITypography,\r\n TypographyProps,\r\n styled,\r\n} from \"@mui/material\";\r\n\r\nexport interface ITypography extends TypographyProps {\r\n type?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"s1\" | \"s2\" | \"s3\" | \"s4\" | \"s5\";\r\n weight?: \"normal\" | \"medium\" | \"bold\";\r\n}\r\n\r\nconst StyledTypography = styled(MUITypography)<ITypography>(\r\n ({ theme: { palette }, color }) => ({\r\n color: color || palette.theme?.primary[800],\r\n }),\r\n);\r\n\r\nexport function Typography(props: ITypography) {\r\n const {\r\n children,\r\n type = \"h5\",\r\n weight = \"normal\",\r\n className,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n <StyledTypography className={`${type} ${weight} ${className}`} {...rest}>\r\n {children}\r\n </StyledTypography>\r\n );\r\n}\r\n\r\nexport default Typography;\r\n","\nexport const convertRoutesToUseIdParams = (routes: Record<string, string>): Record<string, string> => {\n const updatedRoutes: Record<string, string> = { ...routes };\n \n // Identify patterns for view/edit/detail routes\n Object.keys(updatedRoutes).forEach(key => {\n // Common patterns for detail views\n if (\n key.startsWith('VIEW_') || \n key.startsWith('EDIT_') || \n key.startsWith('DETAIL_') ||\n key.includes('_VIEW_') || \n key.includes('_EDIT_') || \n key.includes('_DETAIL_')\n ) {\n if (!updatedRoutes[key].includes(':')) {\n updatedRoutes[key] = `${updatedRoutes[key]}/:id`;\n }\n }\n });\n \n return updatedRoutes;\n};\n\n\nexport const generateRouteWithId = (basePath: string, id: string | number | Record<string, any>): string => {\n if(id && typeof id === 'object') {\n Object.entries(id).map(([key, value]) => {\n basePath = basePath.replace(`:${key}`, value?.toString());\n })\n } else if (basePath.includes(':id')) {\n return basePath.replace(':id', id?.toString());\n }\n \n // If the path doesn't have an :id parameter, append it\n return `${basePath}`;\n};\n\n\nexport const updatePathnameWithIdParams = <T extends Record<string, string>>(pathnameObject: T): T => {\n return convertRoutesToUseIdParams(pathnameObject) as T;\n}; \n\n// Added utility for navigating to views with id parameter\nexport const navigateToRouteWithId = (\n navigate: any,\n route: string, \n id: string | number,\n state?: any\n) => {\n const path = generateRouteWithId(route, id);\n navigate(path, { state });\n}; ","import React from 'react';\r\nimport { SnackbarContent, useSnackbar } from 'notistack';\r\nimport { Avatar, Box, IconButton } from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Notification } from '../icons';\r\nimport Typography from '../typography/typography';\r\nimport images from '../../assets/images';\r\nimport \"./custom-snackbar.scss\"\r\n\r\ninterface CustomSnackbarProps {\r\n message: string;\r\n variant?: 'default' | 'error' | 'success' | 'warning' | 'info';\r\n linkUrl?: string;\r\n snackbarKey: string | number;\r\n}\r\n\r\nconst mainModuleIcons = {\r\n rbac: images.user,\r\n document: images.document,\r\n 'accounts-and-finance': images.accounting,\r\n inventory: images.inventory,\r\n manufacturing: images.manufacturing,\r\n sales: images.crm,\r\n rental: images.rental,\r\n user: images.user,\r\n purchase: images.procurement,\r\n hrms: images.hrms\r\n}\r\nconst mainModuleBgColors = {\r\n rbac: '#F3E5F5',\r\n document: '#FFF8E1',\r\n 'accounts-and-finance': '#E8F5E8',\r\n inventory: '#E3F2FD',\r\n manufacturing: '#FFF3E0',\r\n sales: '#F3E5F5',\r\n rental: '#E8F5E8',\r\n user: '#F3E5F5',\r\n purchase: '#FCE4EC',\r\n hrms: '#fcfcfc'\r\n}\r\n\r\nconst CustomSnackbar = React.forwardRef<HTMLDivElement, CustomSnackbarProps>(\r\n ({ message, variant = 'default', linkUrl, snackbarKey, data }, ref) => {\r\n const { closeSnackbar } = useSnackbar();\r\n const navigate = useNavigate();\r\n\r\n const backgroundColorMap: Record<string, string> = {\r\n success: '#f0fdf4',\r\n error: '#fef2f2',\r\n warning: '#fff7ed',\r\n info: '#eff6ff',\r\n default: '#fff',\r\n };\r\n\r\n const textColorMap: Record<string, string> = {\r\n success: '#166534',\r\n error: '#991b1b',\r\n warning: '#92400e',\r\n info: '#1e40af',\r\n default: '#27272a',\r\n };\r\n\r\n const handleClick = () => {\r\n if (linkUrl) navigate(linkUrl);\r\n closeSnackbar(snackbarKey);\r\n };\r\n\r\n const handleCloseClick = (e: React.MouseEvent) => {\r\n e.stopPropagation(); // Prevent triggering link\r\n closeSnackbar(snackbarKey);\r\n };\r\n\r\n return (\r\n <SnackbarContent\r\n ref={ref}\r\n style={{\r\n backgroundColor: backgroundColorMap[variant],\r\n color: textColorMap[variant],\r\n }}\r\n className='SnackBar'\r\n onClick={handleClick}\r\n >\r\n <Box display=\"flex\" alignItems=\"center\" p={2} position=\"relative\" gap={2} width='100%'>\r\n {mainModuleIcons?.[data.module] ?\r\n <Avatar sx={{ \r\n width: 45, \r\n height: 45, \r\n fontSize: '0.875rem',\r\n bgcolor: mainModuleBgColors[data.module] || 'primary.main',\r\n color: 'white',\r\n borderRadius: '8px',\r\n '& img': { \r\n width: '35px', \r\n height: '35px', \r\n objectFit: 'contain'\r\n }\r\n }} src={mainModuleIcons?.[data.module]} /> :\r\n <Notification\r\n style={{\r\n color: textColorMap[variant],\r\n marginTop: 2,\r\n }}\r\n />\r\n }\r\n <Box display=\"flex\" alignItems=\"center\" width='100%'>\r\n <Box flex=\"1\">\r\n <Typography type='h5' color={'inherit'} weight='bold'>\r\n New Notification\r\n </Typography>\r\n <Typography type='s3' mt={0.5} color={'inherit'}>\r\n {message}\r\n </Typography>\r\n </Box>\r\n\r\n <IconButton\r\n size=\"small\"\r\n onClick={handleCloseClick}\r\n // style={{\r\n // position: 'absolute',\r\n // top: 4,\r\n // right: 4,\r\n // color: textColorMap[variant],\r\n // }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n </Box>\r\n </SnackbarContent>\r\n );\r\n }\r\n);\r\n\r\nexport { CustomSnackbar };\r\nexport default CustomSnackbar;\r\n","import React, { createContext, useEffect, useRef, useState } from 'react';\r\nimport {\r\n\tpostV1AuthChangePassword,\r\n\tpostV1AuthForgotPassword,\r\n\tpostV1AuthChangeUserPassword,\r\n\t// getV1UserId,\r\n\tpostV1AuthLogin,\r\n\tpostV1AuthResetPassword,\r\n\tsetBaseUrl,\r\n\tpostV1AuthChangeUserPasswordByAdmin\r\n} from '../api-client/api.rbac/api';\r\nimport { auth } from '../constants/auth';\r\nimport { useLocation, matchRoutes, useNavigate } from 'react-router-dom';\r\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { Socket, io } from 'socket.io-client';\r\nimport { generateRouteWithId } from '../utils/route-utils';\r\nimport { getApiConfig } from '../utils/api-config';\r\nimport {\r\n\tPathnameAccounting,\r\n\tPathnameGenerator\r\n} from '../constants/pathnames/pathname.accounting';\r\n\r\nimport {\r\n\tPathnameInventory,\r\n\tPathnameGenerator as PathnameGeneratorInventory\r\n} from '../constants/pathnames/pathname.inventory';\r\n\r\nimport {\r\n\tPathnameManufacturing,\r\n\tPathnameGenerator as PathnameGeneratorManufacuring\r\n} from '../constants/pathnames/pathname.manufacturing';\r\n\r\nimport {\r\n\tPathnamePurchase,\r\n\tPathnameGenerator as PathnameGeneratorPurchase\r\n} from '../constants/pathnames/pathname.procurement';\r\n\r\nimport {\r\n\tPathnameCrm,\r\n\tPathnameGenerator as PathnameGeneratorCrm\r\n} from '../constants/pathnames/pathname.crm';\r\n\r\nimport {\r\n\tPathnameRental,\r\n\tPathnameGenerator as PathnameGeneratorRental\r\n} from '../constants/pathnames/pathname.rental';\r\n\r\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\r\n\r\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\r\nimport { RbacApi } from '@/api-client/index.ts';\r\nexport interface LoginFormValues {\r\n\temail: string;\r\n\tpassword: string;\r\n}\r\n\r\nexport interface resetFormValues {\r\n\temail: string;\r\n}\r\n\r\nexport interface resetPasswordValues {\r\n\ttoken: string;\r\n}\r\n\r\nexport interface changePasswordValues {\r\n\tpassword: string;\r\n}\r\n\r\nexport interface changeUserPasswordValues {\r\n\tpassword: string;\r\n}\r\n\r\ninterface ERPApiUser {\r\n\tid: string | number;\r\n\tfirst_name: string;\r\n\tlast_name: string;\r\n\tmiddle_name: string;\r\n\tcountry_code: string;\r\n\temail: string;\r\n\tcreated_by: any;\r\n\tupdated_by: any;\r\n\tcreated_at: string;\r\n\tupdated_at: string;\r\n\trole_id: string;\r\n\tdepartment_id: number;\r\n\tis_deleted: number;\r\n\tdeleted_at: string | null;\r\n\tdeleted_by: any;\r\n\ttoken: string;\r\n\tprofile_image: string;\r\n\tcompany_id: number | string;\r\n\tcurrency_data?: {\r\n\t\tid: number;\r\n\t\tsymbol: string;\r\n\t\tcurrency_name: string;\r\n\t\tnumber_format: string;\r\n\t\tposition: string | null;\r\n\t\tfraction_unit: string | null\r\n\t};\r\n\taccessCompanies?: any[]\r\n}\r\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\r\n\tfull_name: string;\r\n}\r\n\r\nexport interface DefaultProviderProps {\r\n\tuser: ERPUser | null;\r\n\tloading: boolean;\r\n\tauthToken: string;\r\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\r\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n\tlogin: (\r\n\t\tparams: LoginFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tlogout: () => Promise<void>;\r\n\tforgotPassword: (\r\n\t\tparams: resetFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tresetPassword: (\r\n\t\tparams: resetPasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tchangePassword: (\r\n\t\tparams: changePasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tchangeUserPassword: (\r\n\t\tparams: changeUserPasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n}\r\n\r\nconst defaultProvider: DefaultProviderProps = {\r\n\tuser: null,\r\n\tloading: true,\r\n\tauthToken: '',\r\n\tsetUser: () => null,\r\n\tsetLoading: () => Boolean,\r\n\tlogin: () => Promise.resolve(),\r\n\tlogout: () => Promise.resolve(),\r\n\tforgotPassword: () => Promise.resolve(),\r\n\tresetPassword: () => Promise.resolve(),\r\n\tchangePassword: () => Promise.resolve(),\r\n\tchangeUserPassword: () => Promise.resolve()\r\n};\r\n\r\nconst AuthContext = createContext<DefaultProviderProps>(defaultProvider);\r\n\r\ninterface AuthProviderProps {\r\n\tchildren: React.ReactNode;\r\n\tpublicRoutes?: string[]; // Optional prop to allow customization of public routes\r\n}\r\n\r\n// Base URL will be set at runtime via ERPUIProvider\r\n\r\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children, publicRoutes = [] }) => {\r\n\t// ** States\r\n\tconst [user, setUser] = useState(defaultProvider.user);\r\n\tconst [authToken, setAuthToken] = useState<string>('');\r\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\r\n\tconst socketRef = useRef<Socket | null>(null);\r\n\r\n\t// ** Hooks\r\n\tconst navigate = useNavigate();\r\n\tconst location = useLocation();\r\n\tconst isJsonParse = (string?: string | null) => {\r\n\t\tif (!string) return false;\r\n\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(string);\r\n\t\t} catch (error) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getNotificationUrl = (data: any) => {\r\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\r\n\t\tconst key = moduleName.toLowerCase();\r\n\r\n\t\tconst routeMap: Record<string, () => string> = {\r\n\t\t\t'sales invoice': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\r\n\r\n\t\t\t'asset transfers': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\r\n\r\n\t\t\t'budgets': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\r\n\r\n\t\t\t'cash expense': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\r\n\r\n\t\t\t'credit notes': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\r\n\r\n\t\t\t'debit notes': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\r\n\r\n\t\t\t'expense reimbursement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\r\n\r\n\t\t\t'journal entries': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\r\n\r\n\t\t\t'payment entries': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\r\n\r\n\t\t\t'purchase invoice': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\r\n\r\n\t\t\t'stock transfer': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\r\n\r\n\t\t\t'bills of materials': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\r\n\r\n\t\t\t'purchase agreement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\r\n\r\n\t\t\t'purchase orders': () =>\r\n\t\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'purchase request': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'vra': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\r\n\r\n\t\t\t'sl customer returns': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\r\n\r\n\t\t\t'sales order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'rental order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'replacement order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'rental agreement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\r\n\r\n\t\t\t'cross hire order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'cross hire request': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\r\n\t\t};\r\n\r\n\t\treturn routeMap[key]?.() || '/dashboard';\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tsetLoading(true);\r\n\t\t// initAuth()\r\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t\tconst storedUser =\r\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\r\n\t\tconst allPublicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD, ...publicRoutes];\r\n\t\tconst currentPath = window.location.pathname;\r\n\t\tif (!storedToken && !storedUser) {\r\n\t\t\tconsole.log('allPublicRoutes..', allPublicRoutes, 'currentPath..', currentPath)\r\n\t\t\t// if (!allPublicRoutes.includes(currentPath)) {\r\n\t\t\tif (Boolean(!matchRoutes(allPublicRoutes.map((route) => ({ path: route })), location))) {\r\n\t\t\t\tnavigate(Pathname.LOGIN);\r\n\t\t\t}\r\n\t\t\tsetLoading(false);\r\n\t\t} else {\r\n\t\t\tsetUser(storedUser);\r\n\t\t\tsetAuthToken(storedToken || '');\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!authToken) {\r\n\t\t\tif (socketRef.current) {\r\n\t\t\t\tsocketRef.current?.disconnect();\r\n\t\t\t\tsocketRef.current = null\r\n\t\t\t}\r\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst config = getApiConfig();\r\n\t\tconst socket = io(config.socketBaseUrl, {\r\n\t\t\ttransports: [\"websocket\"],\r\n\t\t\tauth: { token: authToken },\r\n\t\t\tpath: \"/socket.io/\",\r\n\r\n\t\t});\r\n\t\tsocketRef.current = socket;\r\n\r\n\t\tsocket.on(\"connect\", () => {\r\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\r\n\t\t\tsocket.onAny((event, ...args) => {\r\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// socket event handler\r\n\t\tsocket.on('notification', (data) => {\r\n\t\t\tconst { message, notificationData } = data || {};\r\n\t\t\tlet notificationContent: React.ReactNode = message;\r\n\t\t\tconst url = getNotificationUrl(data);\r\n\r\n\t\t\tif (notificationData) {\r\n\t\t\t\tconst { notification_type } = notificationData;\r\n\r\n\t\t\t\tswitch (notification_type) {\r\n\t\t\t\t\tcase 'addApprovers': {\r\n\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcase 'change_approval_status': {\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tenqueueSnackbar(String(message), {\r\n\t\t\t\tvariant: 'default',\r\n\t\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\r\n\t\t\t\tautoHideDuration: 5000,\r\n\t\t\t\tcontent: (key) => (\r\n\t\t\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url} />\r\n\t\t\t\t),\r\n\t\t\t});\r\n\t\t});\r\n\r\n\r\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\r\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\r\n\t\t});\r\n\r\n\t\tsocket.on(\"error\", (errMsg) => {\r\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\r\n\t\t\tconsole.error(\"Socket error:\", errMsg);\r\n\t\t});\r\n\r\n\t\t// Clean up on unmount\r\n\t\treturn () => {\r\n\t\t\tif (socketRef.current) {\r\n\t\t\t\tsocketRef.current.disconnect();\r\n\t\t\t\tsocketRef.current = null\r\n\t\t\t}\r\n\t\t};\r\n\t}, [authToken]);\r\n\r\n\tconst fetchRolesByUserId = async (userId: number | string, token: string) => {\r\n\t\tconst response = await RbacApi.getV1RoleUserId({ id: userId, ...getToken(token) } as any);\r\n\t\tconst perm = response?.data?.role || [];\r\n\t\treturn JSON.stringify(perm);\r\n\t}\r\n\r\n\tconst handleLogin = async (\r\n\t\tparams: LoginFormValues,\r\n\t\tcallback: (err: string) => void,\r\n\t\tshoudRedirect: boolean = true,\r\n\t\tredirectPath: string = Pathname.DASHBOARD\r\n\t) => {\r\n\t\tsetLoading(true);\r\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t\tif (storedToken && user) {\r\n\t\t\treturn navigate(Pathname.DASHBOARD);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\r\n\t\t\tif (loginUser.success) {\r\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tconst userData: ERPUser = {\r\n\t\t\t\t\t\t...data,\r\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\r\n\t\t\t\t\t};\r\n\t\t\t\t\tconst rolePermission = await fetchRolesByUserId(userData.id, data.token);\r\n\t\t\t\t\t\r\n\t\t\t\t\tglobalThis.localStorage.setItem(auth.storageTokenKeyName, data.token);\r\n\t\t\t\t\twindow.localStorage.setItem(auth.storageUserKeyName, JSON.stringify(userData));\r\n\t\t\t\t\twindow.localStorage.setItem(auth.storageRolePermissionKeyName, rolePermission);\r\n\r\n\t\t\t\t\tsetUser(userData);\r\n\t\t\t\t\tsetAuthToken(data.token);\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tshoudRedirect && navigate(redirectPath);\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t\tdelete data.token;\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t}\r\n\t\t\tsetLoading(false);\r\n\t\t\tcallback(message);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleLogout = async () => {\r\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\r\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\r\n\t\twindow.localStorage.removeItem(auth.storageRolePermissionKeyName);\r\n\t\tsetUser(null);\r\n\t\tsetAuthToken('');\r\n\t\tnavigate(Pathname.LOGIN);\r\n\t};\r\n\r\n\tconst handleForgotPassword = async (params: resetFormValues,\r\n\t\tcallback: (type: boolean, err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\r\n\t\t\tcallback(true, \"Reset Link sent to your email\");\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t}\r\n\r\n\t\t\tcallback(false, message);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleResetPassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\r\n\t\t\tcallback(response);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tconsole.log(\"Error \", error)\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleChangePassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\r\n\t\t\tcallback(null);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tconsole.log(\"Error \", error)\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcallback(\"reset\");\r\n\t}\r\n\r\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string, resType: boolean) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\r\n\t\t\tcallback('Password Changed Successfully', true);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\r\n\t\tcallback: (err: string, resType: boolean) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\r\n\t\t\tcallback('Password Changed Successfully', true);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tconst values = {\r\n\t\tuser,\r\n\t\tauthToken,\r\n\t\tloading,\r\n\t\tsetUser,\r\n\t\tsetLoading,\r\n\t\tlogin: handleLogin,\r\n\t\tlogout: handleLogout,\r\n\t\tforgotPassword: handleForgotPassword,\r\n\t\tresetPassword: handleResetPassword,\r\n\t\tchangePassword: handleChangePassword,\r\n\t\tchangeUserPassword: handleChangeUserPassword,\r\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\r\n\t};\r\n\r\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\r\n};\r\n\r\nexport { AuthContext, AuthProvider };\r\n","import { useContext } from \"react\";\nimport { AuthContext, DefaultProviderProps } from \"../contexts/AuthContext\";\n\nexport const useAuth = (): DefaultProviderProps => useContext(AuthContext);\n"],"names":["StyledTypography","styled","MUITypography","theme","palette","color","_a","primary","Typography","props","children","type","weight","className","rest","jsx","convertRoutesToUseIdParams","routes","updatedRoutes","Object","keys","forEach","key","startsWith","includes","generateRouteWithId","basePath","id","entries","map","value","replace","toString","mainModuleIcons","rbac","images","user","document","accounting","inventory","manufacturing","sales","crm","rental","purchase","procurement","hrms","mainModuleBgColors","CustomSnackbar","React","forwardRef","message","variant","linkUrl","snackbarKey","data","ref","closeSnackbar","useSnackbar","navigate","useNavigate","textColorMap","success","error","warning","info","default","SnackbarContent","style","backgroundColor","onClick","jsxs","Box","display","alignItems","p","position","gap","width","module","Avatar","sx","height","fontSize","bgcolor","borderRadius","objectFit","src","Notification","marginTop","flex","mt","IconButton","size","e","stopPropagation","CloseIcon","defaultProvider","loading","authToken","setUser","setLoading","Boolean","login","Promise","resolve","logout","forgotPassword","resetPassword","changePassword","changeUserPassword","AuthContext","createContext","publicRoutes","useState","setAuthToken","socketRef","useRef","location","useLocation","isJsonParse","string","JSON","parse","useEffect","storedToken","window","localStorage","getItem","auth","storageTokenKeyName","storedUser","storageUserKeyName","allPublicRoutes","Pathname","LOGIN","FORGOT_PASSWORD","RESET_PASSWORD","CHANGE_PASSWORD","pathname","matchRoutes","route","path","current","disconnect","config","getApiConfig","socket","io","socketBaseUrl","transports","token","on","onAny","event","args","notificationData","notificationContent","url","moduleName","moduleId","routeMap","PathnameGenerator","PathnameAccounting","VIEW_SALES_INVOICES","VIEW_ASSET_TRANSFER","budgets","VIEW_BUDGET","VIEW_CASH_EXPENSE","VIEW_CREDIT_NOTE","VIEW_DEBIT_NOTE","VIEW_EXPENSE_REIMBURSEMENT","VIEW_JOURNAL_ENTRY","VIEW_PAYMENT_ENTRY","VIEW_PURCHASE_INVOICE","PathnameGeneratorInventory","PathnameInventory","VIEW_STOCK_TRANSFER","PathnameGeneratorManufacuring","PathnameManufacturing","VIEW_BILL_OF_MATERIAL","PathnameGeneratorPurchase","PathnamePurchase","VIEW_PURCHASE_AGREEMENT","is_rental","RENTALROUTES","VIEW","VIEW_PURCHASE_ORDER","vra","VIEW_VENDOR_RETURNS","PathnameGeneratorCrm","PathnameCrm","VIEW_CUSTOMER_RETURNS","VIEW_SALES_ORDER","PathnameGeneratorRental","PathnameRental","VIEW_RENTAL_ORDER","VIEW_AGREEMENT","VIEW_CROSS_HIRE_ORDER","VIEW_CROSS_HIRE_REQUEST","toLowerCase","call","getNotificationUrl","notification_type","enqueueSnackbar","String","anchorOrigin","vertical","horizontal","autoHideDuration","content","errMsg","values","async","params","callback","shoudRedirect","redirectPath","DASHBOARD","loginUser","postV1AuthLogin","getToken","userData","full_name","first_name","last_name","rolePermission","userId","response","RbacApi.getV1RoleUserId","perm","role","stringify","fetchRolesByUserId","globalThis","setItem","storageRolePermissionKeyName","setTimeout","Error","removeItem","postV1AuthForgotPassword","postV1AuthResetPassword","postV1AuthChangePassword","postV1AuthChangeUserPassword","changeUserPasswordByAdmin","postV1AuthChangeUserPasswordByAdmin","Provider","state","pathnameObject","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAuth-CVokk6Ra.js","sources":["../src/components/typography/typography.tsx","../src/utils/route-utils.ts","../src/components/custom-snackbar/custom-snackbar.tsx","../src/contexts/AuthContext.tsx","../src/hooks/useAuth.ts"],"sourcesContent":["import {\r\n Typography as MUITypography,\r\n TypographyProps,\r\n styled,\r\n} from \"@mui/material\";\r\n\r\nexport interface ITypography extends TypographyProps {\r\n type?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"s1\" | \"s2\" | \"s3\" | \"s4\" | \"s5\";\r\n weight?: \"normal\" | \"medium\" | \"bold\";\r\n}\r\n\r\nconst StyledTypography = styled(MUITypography)<ITypography>(\r\n ({ theme: { palette }, color }) => ({\r\n color: color || palette.theme?.primary[800],\r\n }),\r\n);\r\n\r\nexport function Typography(props: ITypography) {\r\n const {\r\n children,\r\n type = \"h5\",\r\n weight = \"normal\",\r\n className,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n <StyledTypography className={`${type} ${weight} ${className}`} {...rest}>\r\n {children}\r\n </StyledTypography>\r\n );\r\n}\r\n\r\nexport default Typography;\r\n","\nexport const convertRoutesToUseIdParams = (routes: Record<string, string>): Record<string, string> => {\n const updatedRoutes: Record<string, string> = { ...routes };\n \n // Identify patterns for view/edit/detail routes\n Object.keys(updatedRoutes).forEach(key => {\n // Common patterns for detail views\n if (\n key.startsWith('VIEW_') || \n key.startsWith('EDIT_') || \n key.startsWith('DETAIL_') ||\n key.includes('_VIEW_') || \n key.includes('_EDIT_') || \n key.includes('_DETAIL_')\n ) {\n if (!updatedRoutes[key].includes(':')) {\n updatedRoutes[key] = `${updatedRoutes[key]}/:id`;\n }\n }\n });\n \n return updatedRoutes;\n};\n\n\nexport const generateRouteWithId = (basePath: string, id: string | number | Record<string, any>): string => {\n if(id && typeof id === 'object') {\n Object.entries(id).map(([key, value]) => {\n basePath = basePath.replace(`:${key}`, value?.toString());\n })\n } else if (basePath.includes(':id')) {\n return basePath.replace(':id', id?.toString());\n }\n \n // If the path doesn't have an :id parameter, append it\n return `${basePath}`;\n};\n\n\nexport const updatePathnameWithIdParams = <T extends Record<string, string>>(pathnameObject: T): T => {\n return convertRoutesToUseIdParams(pathnameObject) as T;\n}; \n\n// Added utility for navigating to views with id parameter\nexport const navigateToRouteWithId = (\n navigate: any,\n route: string, \n id: string | number,\n state?: any\n) => {\n const path = generateRouteWithId(route, id);\n navigate(path, { state });\n}; ","import React from 'react';\r\nimport { SnackbarContent, useSnackbar } from 'notistack';\r\nimport { Avatar, Box, IconButton } from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Notification } from '../icons';\r\nimport Typography from '../typography/typography';\r\nimport images from '../../assets/images';\r\nimport \"./custom-snackbar.scss\"\r\n\r\ninterface CustomSnackbarProps {\r\n message: string;\r\n variant?: 'default' | 'error' | 'success' | 'warning' | 'info';\r\n linkUrl?: string;\r\n snackbarKey: string | number;\r\n}\r\n\r\nconst mainModuleIcons = {\r\n rbac: images.user,\r\n document: images.document,\r\n 'accounts-and-finance': images.accounting,\r\n inventory: images.inventory,\r\n manufacturing: images.manufacturing,\r\n sales: images.crm,\r\n rental: images.rental,\r\n user: images.user,\r\n purchase: images.procurement,\r\n hrms: images.hrms\r\n}\r\nconst mainModuleBgColors = {\r\n rbac: '#F3E5F5',\r\n document: '#FFF8E1',\r\n 'accounts-and-finance': '#E8F5E8',\r\n inventory: '#E3F2FD',\r\n manufacturing: '#FFF3E0',\r\n sales: '#F3E5F5',\r\n rental: '#E8F5E8',\r\n user: '#F3E5F5',\r\n purchase: '#FCE4EC',\r\n hrms: '#fcfcfc'\r\n}\r\n\r\nconst CustomSnackbar = React.forwardRef<HTMLDivElement, CustomSnackbarProps>(\r\n ({ message, variant = 'default', linkUrl, snackbarKey, data }, ref) => {\r\n const { closeSnackbar } = useSnackbar();\r\n const navigate = useNavigate();\r\n\r\n const backgroundColorMap: Record<string, string> = {\r\n success: '#f0fdf4',\r\n error: '#fef2f2',\r\n warning: '#fff7ed',\r\n info: '#eff6ff',\r\n default: '#fff',\r\n };\r\n\r\n const textColorMap: Record<string, string> = {\r\n success: '#166534',\r\n error: '#991b1b',\r\n warning: '#92400e',\r\n info: '#1e40af',\r\n default: '#27272a',\r\n };\r\n\r\n const handleClick = () => {\r\n if (linkUrl) navigate(linkUrl);\r\n closeSnackbar(snackbarKey);\r\n };\r\n\r\n const handleCloseClick = (e: React.MouseEvent) => {\r\n e.stopPropagation(); // Prevent triggering link\r\n closeSnackbar(snackbarKey);\r\n };\r\n\r\n return (\r\n <SnackbarContent\r\n ref={ref}\r\n style={{\r\n backgroundColor: backgroundColorMap[variant],\r\n color: textColorMap[variant],\r\n }}\r\n className='SnackBar'\r\n onClick={handleClick}\r\n >\r\n <Box display=\"flex\" alignItems=\"center\" p={2} position=\"relative\" gap={2} width='100%'>\r\n {mainModuleIcons?.[data.module] ?\r\n <Avatar sx={{ \r\n width: 45, \r\n height: 45, \r\n fontSize: '0.875rem',\r\n bgcolor: mainModuleBgColors[data.module] || 'primary.main',\r\n color: 'white',\r\n borderRadius: '8px',\r\n '& img': { \r\n width: '35px', \r\n height: '35px', \r\n objectFit: 'contain'\r\n }\r\n }} src={mainModuleIcons?.[data.module]} /> :\r\n <Notification\r\n style={{\r\n color: textColorMap[variant],\r\n marginTop: 2,\r\n }}\r\n />\r\n }\r\n <Box display=\"flex\" alignItems=\"center\" width='100%'>\r\n <Box flex=\"1\">\r\n <Typography type='h5' color={'inherit'} weight='bold'>\r\n New Notification\r\n </Typography>\r\n <Typography type='s3' mt={0.5} color={'inherit'}>\r\n {message}\r\n </Typography>\r\n </Box>\r\n\r\n <IconButton\r\n size=\"small\"\r\n onClick={handleCloseClick}\r\n // style={{\r\n // position: 'absolute',\r\n // top: 4,\r\n // right: 4,\r\n // color: textColorMap[variant],\r\n // }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n </Box>\r\n </SnackbarContent>\r\n );\r\n }\r\n);\r\n\r\nexport { CustomSnackbar };\r\nexport default CustomSnackbar;\r\n","import React, { createContext, useEffect, useRef, useState } from 'react';\r\nimport {\r\n\tpostV1AuthChangePassword,\r\n\tpostV1AuthForgotPassword,\r\n\tpostV1AuthChangeUserPassword,\r\n\t// getV1UserId,\r\n\tpostV1AuthLogin,\r\n\tpostV1AuthResetPassword,\r\n\tsetBaseUrl,\r\n\tpostV1AuthChangeUserPasswordByAdmin\r\n} from '../api-client/api.rbac/api';\r\nimport { auth } from '../constants/auth';\r\nimport { useLocation, matchRoutes, useNavigate } from 'react-router-dom';\r\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\r\nimport { getToken } from '../utils/common';\r\nimport { enqueueSnackbar } from 'notistack';\r\nimport { Socket, io } from 'socket.io-client';\r\nimport { generateRouteWithId } from '../utils/route-utils';\r\nimport { getApiConfig } from '../utils/api-config';\r\nimport {\r\n\tPathnameAccounting,\r\n\tPathnameGenerator\r\n} from '../constants/pathnames/pathname.accounting';\r\n\r\nimport {\r\n\tPathnameInventory,\r\n\tPathnameGenerator as PathnameGeneratorInventory\r\n} from '../constants/pathnames/pathname.inventory';\r\n\r\nimport {\r\n\tPathnameManufacturing,\r\n\tPathnameGenerator as PathnameGeneratorManufacuring\r\n} from '../constants/pathnames/pathname.manufacturing';\r\n\r\nimport {\r\n\tPathnamePurchase,\r\n\tPathnameGenerator as PathnameGeneratorPurchase\r\n} from '../constants/pathnames/pathname.procurement';\r\n\r\nimport {\r\n\tPathnameCrm,\r\n\tPathnameGenerator as PathnameGeneratorCrm\r\n} from '../constants/pathnames/pathname.crm';\r\n\r\nimport {\r\n\tPathnameRental,\r\n\tPathnameGenerator as PathnameGeneratorRental\r\n} from '../constants/pathnames/pathname.rental';\r\n\r\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\r\n\r\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\r\nimport { RbacApi } from '@/api-client/index.ts';\r\nexport interface LoginFormValues {\r\n\temail: string;\r\n\tpassword: string;\r\n}\r\n\r\nexport interface resetFormValues {\r\n\temail: string;\r\n}\r\n\r\nexport interface resetPasswordValues {\r\n\ttoken: string;\r\n}\r\n\r\nexport interface changePasswordValues {\r\n\tpassword: string;\r\n}\r\n\r\nexport interface changeUserPasswordValues {\r\n\tpassword: string;\r\n}\r\n\r\ninterface ERPApiUser {\r\n\tid: string | number;\r\n\tfirst_name: string;\r\n\tlast_name: string;\r\n\tmiddle_name: string;\r\n\tcountry_code: string;\r\n\temail: string;\r\n\tcreated_by: any;\r\n\tupdated_by: any;\r\n\tcreated_at: string;\r\n\tupdated_at: string;\r\n\trole_id: string;\r\n\tdepartment_id: number;\r\n\tis_deleted: number;\r\n\tdeleted_at: string | null;\r\n\tdeleted_by: any;\r\n\ttoken: string;\r\n\tprofile_image: string;\r\n\tcompany_id: number | string;\r\n\tcurrency_data?: {\r\n\t\tid: number;\r\n\t\tsymbol: string;\r\n\t\tcurrency_name: string;\r\n\t\tnumber_format: string;\r\n\t\tposition: string | null;\r\n\t\tfraction_unit: string | null\r\n\t};\r\n\taccessCompanies?: any[]\r\n}\r\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\r\n\tfull_name: string;\r\n}\r\n\r\nexport interface DefaultProviderProps {\r\n\tuser: ERPUser | null;\r\n\tloading: boolean;\r\n\tauthToken: string;\r\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\r\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n\tlogin: (\r\n\t\tparams: LoginFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tlogout: () => Promise<void>;\r\n\tforgotPassword: (\r\n\t\tparams: resetFormValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tresetPassword: (\r\n\t\tparams: resetPasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tchangePassword: (\r\n\t\tparams: changePasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n\tchangeUserPassword: (\r\n\t\tparams: changeUserPasswordValues,\r\n\t\tcallback: (err: string) => void\r\n\t) => Promise<void>;\r\n}\r\n\r\nconst defaultProvider: DefaultProviderProps = {\r\n\tuser: null,\r\n\tloading: true,\r\n\tauthToken: '',\r\n\tsetUser: () => null,\r\n\tsetLoading: () => Boolean,\r\n\tlogin: () => Promise.resolve(),\r\n\tlogout: () => Promise.resolve(),\r\n\tforgotPassword: () => Promise.resolve(),\r\n\tresetPassword: () => Promise.resolve(),\r\n\tchangePassword: () => Promise.resolve(),\r\n\tchangeUserPassword: () => Promise.resolve()\r\n};\r\n\r\nconst AuthContext = createContext<DefaultProviderProps>(defaultProvider);\r\n\r\ninterface AuthProviderProps {\r\n\tchildren: React.ReactNode;\r\n\tpublicRoutes?: string[]; // Optional prop to allow customization of public routes\r\n}\r\n\r\n// Base URL will be set at runtime via ERPUIProvider\r\n\r\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children, publicRoutes = [] }) => {\r\n\t// ** States\r\n\tconst [user, setUser] = useState(defaultProvider.user);\r\n\tconst [authToken, setAuthToken] = useState<string>('');\r\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\r\n\tconst socketRef = useRef<Socket | null>(null);\r\n\r\n\t// ** Hooks\r\n\tconst navigate = useNavigate();\r\n\tconst location = useLocation();\r\n\tconst isJsonParse = (string?: string | null) => {\r\n\t\tif (!string) return false;\r\n\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(string);\r\n\t\t} catch (error) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tconst getNotificationUrl = (data: any) => {\r\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\r\n\t\tconst key = moduleName.toLowerCase();\r\n\r\n\t\tconst routeMap: Record<string, () => string> = {\r\n\t\t\t'sales invoice': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\r\n\r\n\t\t\t'asset transfers': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\r\n\r\n\t\t\t'budgets': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\r\n\r\n\t\t\t'cash expense': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\r\n\r\n\t\t\t'credit notes': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\r\n\r\n\t\t\t'debit notes': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\r\n\r\n\t\t\t'expense reimbursement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\r\n\r\n\t\t\t'journal entries': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\r\n\r\n\t\t\t'payment entries': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\r\n\r\n\t\t\t'purchase invoice': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\r\n\r\n\t\t\t'stock transfer': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\r\n\r\n\t\t\t'bills of materials': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\r\n\r\n\t\t\t'purchase agreement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\r\n\r\n\t\t\t'purchase orders': () =>\r\n\t\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'purchase request': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'vra': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\r\n\r\n\t\t\t'sl customer returns': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\r\n\r\n\t\t\t'sales order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'rental order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'replacement order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'rental agreement': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\r\n\r\n\t\t\t'cross hire order': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\r\n\r\n\t\t\t'cross hire request': () =>\r\n\t\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\r\n\t\t};\r\n\r\n\t\treturn routeMap[key]?.() || '/dashboard';\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tsetLoading(true);\r\n\t\t// initAuth()\r\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t\tconst storedUser =\r\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\r\n\t\tconst allPublicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD, ...publicRoutes];\r\n\t\tconst currentPath = window.location.pathname;\r\n\t\tif (!storedToken && !storedUser) {\r\n\t\t\tconsole.log('allPublicRoutes..', allPublicRoutes, 'currentPath..', currentPath)\r\n\t\t\t// if (!allPublicRoutes.includes(currentPath)) {\r\n\t\t\tif (Boolean(!matchRoutes(allPublicRoutes.map((route) => ({ path: route })), location))) {\r\n\t\t\t\tnavigate(Pathname.LOGIN);\r\n\t\t\t}\r\n\t\t\tsetLoading(false);\r\n\t\t} else {\r\n\t\t\tsetUser(storedUser);\r\n\t\t\tsetAuthToken(storedToken || '');\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!authToken) {\r\n\t\t\tif (socketRef.current) {\r\n\t\t\t\tsocketRef.current?.disconnect();\r\n\t\t\t\tsocketRef.current = null\r\n\t\t\t}\r\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst config = getApiConfig();\r\n\t\tconst socket = io(config.socketBaseUrl, {\r\n\t\t\ttransports: [\"websocket\"],\r\n\t\t\tauth: { token: authToken },\r\n\t\t\tpath: \"/socket.io/\",\r\n\r\n\t\t});\r\n\t\tsocketRef.current = socket;\r\n\r\n\t\tsocket.on(\"connect\", () => {\r\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\r\n\t\t\tsocket.onAny((event, ...args) => {\r\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// socket event handler\r\n\t\tsocket.on('notification', (data) => {\r\n\t\t\tconst { message, notificationData } = data || {};\r\n\t\t\tlet notificationContent: React.ReactNode = message;\r\n\t\t\tconst url = getNotificationUrl(data);\r\n\r\n\t\t\tif (notificationData) {\r\n\t\t\t\tconst { notification_type } = notificationData;\r\n\r\n\t\t\t\tswitch (notification_type) {\r\n\t\t\t\t\tcase 'addApprovers': {\r\n\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcase 'change_approval_status': {\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\tnotificationContent = message;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tenqueueSnackbar(String(message), {\r\n\t\t\t\tvariant: 'default',\r\n\t\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\r\n\t\t\t\tautoHideDuration: 5000,\r\n\t\t\t\tcontent: (key) => (\r\n\t\t\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url} />\r\n\t\t\t\t),\r\n\t\t\t});\r\n\t\t});\r\n\r\n\r\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\r\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\r\n\t\t});\r\n\r\n\t\tsocket.on(\"error\", (errMsg) => {\r\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\r\n\t\t\tconsole.error(\"Socket error:\", errMsg);\r\n\t\t});\r\n\r\n\t\t// Clean up on unmount\r\n\t\treturn () => {\r\n\t\t\tif (socketRef.current) {\r\n\t\t\t\tsocketRef.current.disconnect();\r\n\t\t\t\tsocketRef.current = null\r\n\t\t\t}\r\n\t\t};\r\n\t}, [authToken]);\r\n\r\n\tconst fetchRolesByUserId = async (userId: number | string, token: string) => {\r\n\t\tconst response = await RbacApi.getV1RoleUserId({ id: userId, ...getToken(token) } as any);\r\n\t\tconst perm = response?.data?.role || [];\r\n\t\treturn JSON.stringify(perm);\r\n\t}\r\n\r\n\tconst handleLogin = async (\r\n\t\tparams: LoginFormValues,\r\n\t\tcallback: (err: string) => void,\r\n\t\tshoudRedirect: boolean = true,\r\n\t\tredirectPath: string = Pathname.DASHBOARD\r\n\t) => {\r\n\t\tsetLoading(true);\r\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\r\n\t\tif (storedToken && user) {\r\n\t\t\treturn navigate(Pathname.DASHBOARD);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\r\n\t\t\tif (loginUser.success) {\r\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tconst userData: ERPUser = {\r\n\t\t\t\t\t\t...data,\r\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\r\n\t\t\t\t\t};\r\n\t\t\t\t\tconst rolePermission = await fetchRolesByUserId(userData.id, data.token);\r\n\t\t\t\t\t\r\n\t\t\t\t\tglobalThis.localStorage.setItem(auth.storageTokenKeyName, data.token);\r\n\t\t\t\t\twindow.localStorage.setItem(auth.storageUserKeyName, JSON.stringify(userData));\r\n\t\t\t\t\twindow.localStorage.setItem(auth.storageRolePermissionKeyName, rolePermission);\r\n\r\n\t\t\t\t\tsetUser(userData);\r\n\t\t\t\t\tsetAuthToken(data.token);\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tshoudRedirect && navigate(redirectPath);\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t\tdelete data.token;\r\n\t\t\t\t\t}, 1000);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t}\r\n\t\t\tsetLoading(false);\r\n\t\t\tcallback(message);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleLogout = async () => {\r\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\r\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\r\n\t\twindow.localStorage.removeItem(auth.storageRolePermissionKeyName);\r\n\t\tsetUser(null);\r\n\t\tsetAuthToken('');\r\n\t\tnavigate(Pathname.LOGIN);\r\n\t};\r\n\r\n\tconst handleForgotPassword = async (params: resetFormValues,\r\n\t\tcallback: (type: boolean, err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\r\n\t\t\tcallback(true, \"Reset Link sent to your email\");\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t}\r\n\r\n\t\t\tcallback(false, message);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleResetPassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\r\n\t\t\tcallback(response);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tconsole.log(\"Error \", error)\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleChangePassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\r\n\t\t\tcallback(null);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tconsole.log(\"Error \", error)\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcallback(\"reset\");\r\n\t}\r\n\r\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\r\n\t\tcallback: (err: string, resType: boolean) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\r\n\t\t\tcallback('Password Changed Successfully', true);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\r\n\t\tcallback: (err: string, resType: boolean) => void) => {\r\n\t\ttry {\r\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\r\n\t\t\tcallback('Password Changed Successfully', true);\r\n\t\t} catch (error) {\r\n\t\t\tlet message: string = 'Something went wrong';\r\n\t\t\tif (error instanceof Error) {\r\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\r\n\t\t\t\tcallback(message, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tconst values = {\r\n\t\tuser,\r\n\t\tauthToken,\r\n\t\tloading,\r\n\t\tsetUser,\r\n\t\tsetLoading,\r\n\t\tlogin: handleLogin,\r\n\t\tlogout: handleLogout,\r\n\t\tforgotPassword: handleForgotPassword,\r\n\t\tresetPassword: handleResetPassword,\r\n\t\tchangePassword: handleChangePassword,\r\n\t\tchangeUserPassword: handleChangeUserPassword,\r\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\r\n\t};\r\n\r\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\r\n};\r\n\r\nexport { AuthContext, AuthProvider };\r\n","import { useContext } from \"react\";\nimport { AuthContext, DefaultProviderProps } from \"../contexts/AuthContext\";\n\nexport const useAuth = (): DefaultProviderProps => useContext(AuthContext);\n"],"names":["StyledTypography","styled","MUITypography","theme","palette","color","_a","primary","Typography","props","children","type","weight","className","rest","jsx","convertRoutesToUseIdParams","routes","updatedRoutes","Object","keys","forEach","key","startsWith","includes","generateRouteWithId","basePath","id","entries","map","value","replace","toString","mainModuleIcons","rbac","images","user","document","accounting","inventory","manufacturing","sales","crm","rental","purchase","procurement","hrms","mainModuleBgColors","CustomSnackbar","React","forwardRef","message","variant","linkUrl","snackbarKey","data","ref","closeSnackbar","useSnackbar","navigate","useNavigate","textColorMap","success","error","warning","info","default","SnackbarContent","style","backgroundColor","onClick","jsxs","Box","display","alignItems","p","position","gap","width","module","Avatar","sx","height","fontSize","bgcolor","borderRadius","objectFit","src","Notification","marginTop","flex","mt","IconButton","size","e","stopPropagation","CloseIcon","defaultProvider","loading","authToken","setUser","setLoading","Boolean","login","Promise","resolve","logout","forgotPassword","resetPassword","changePassword","changeUserPassword","AuthContext","createContext","publicRoutes","useState","setAuthToken","socketRef","useRef","location","useLocation","isJsonParse","string","JSON","parse","useEffect","storedToken","window","localStorage","getItem","auth","storageTokenKeyName","storedUser","storageUserKeyName","allPublicRoutes","Pathname","LOGIN","FORGOT_PASSWORD","RESET_PASSWORD","CHANGE_PASSWORD","pathname","matchRoutes","route","path","current","disconnect","config","getApiConfig","socket","io","socketBaseUrl","transports","token","on","onAny","event","args","notificationData","notificationContent","url","moduleName","moduleId","routeMap","PathnameGenerator","PathnameAccounting","VIEW_SALES_INVOICES","VIEW_ASSET_TRANSFER","budgets","VIEW_BUDGET","VIEW_CASH_EXPENSE","VIEW_CREDIT_NOTE","VIEW_DEBIT_NOTE","VIEW_EXPENSE_REIMBURSEMENT","VIEW_JOURNAL_ENTRY","VIEW_PAYMENT_ENTRY","VIEW_PURCHASE_INVOICE","PathnameGeneratorInventory","PathnameInventory","VIEW_STOCK_TRANSFER","PathnameGeneratorManufacuring","PathnameManufacturing","VIEW_BILL_OF_MATERIAL","PathnameGeneratorPurchase","PathnamePurchase","VIEW_PURCHASE_AGREEMENT","is_rental","RENTALROUTES","VIEW","VIEW_PURCHASE_ORDER","vra","VIEW_VENDOR_RETURNS","PathnameGeneratorCrm","PathnameCrm","VIEW_CUSTOMER_RETURNS","VIEW_SALES_ORDER","PathnameGeneratorRental","PathnameRental","VIEW_RENTAL_ORDER","VIEW_AGREEMENT","VIEW_CROSS_HIRE_ORDER","VIEW_CROSS_HIRE_REQUEST","toLowerCase","call","getNotificationUrl","notification_type","enqueueSnackbar","String","anchorOrigin","vertical","horizontal","autoHideDuration","content","errMsg","values","async","params","callback","shoudRedirect","redirectPath","DASHBOARD","loginUser","postV1AuthLogin","getToken","userData","full_name","first_name","last_name","rolePermission","userId","response","RbacApi.getV1RoleUserId","perm","role","stringify","fetchRolesByUserId","globalThis","setItem","storageRolePermissionKeyName","setTimeout","Error","removeItem","postV1AuthForgotPassword","postV1AuthResetPassword","postV1AuthChangePassword","postV1AuthChangeUserPassword","changeUserPasswordByAdmin","postV1AuthChangeUserPasswordByAdmin","Provider","state","pathnameObject","useContext"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useContext, useMemo } from "react";
|
|
2
|
-
import { L as LanguageContext } from "./languageContext-
|
|
2
|
+
import { L as LanguageContext } from "./languageContext-BqGnL8Sv.esm.js";
|
|
3
3
|
const createFallbackLanguage = () => ({
|
|
4
4
|
code: "en",
|
|
5
5
|
label: "English",
|
|
@@ -46,4 +46,4 @@ const useLanguage = () => {
|
|
|
46
46
|
export {
|
|
47
47
|
useLanguage as u
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=useLangauge-
|
|
49
|
+
//# sourceMappingURL=useLangauge-BQjH-l_B.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLangauge-
|
|
1
|
+
{"version":3,"file":"useLangauge-BQjH-l_B.esm.js","sources":["../src/hooks/useLangauge.ts"],"sourcesContent":["// hooks/useLanguage.ts\nimport { useContext, useMemo } from \"react\";\nimport LanguageContext, { LanguageContextType } from \"../contexts/languageContext\";\n\n// Fallback language object\nconst createFallbackLanguage = () => ({\n code: 'en',\n label: 'English',\n direction: 'ltr' as const,\n});\n\n// Fallback context value when provider is not available\nconst fallbackContextValue = {\n languages: [createFallbackLanguage()],\n currentLanguage: createFallbackLanguage(),\n isLoading: false,\n error: null,\n isFallbackActive: true,\n changeLanguage: (langCode: string) => {\n console.warn(`useLanguage: changeLanguage called but LanguageProvider is not available. Language code: ${langCode}`);\n },\n fetchLanguages: async () => {\n console.warn('useLanguage: fetchLanguages called but LanguageProvider is not available.');\n },\n direction: 'ltr' as const,\n isRtl: false,\n isLtr: true,\n};\n\nexport const useLanguage = (): LanguageContextType => {\n const context = useContext(LanguageContext);\n \n // If context is undefined, provider is not available - use fallback\n if (context === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useLanguage: LanguageProvider is not available. Using fallback values. ' +\n 'To enable full language functionality, wrap your app with <ERPUIProvider> or <LanguageProvider>.'\n );\n }\n \n return fallbackContextValue;\n }\n \n const computedValues = useMemo(() => {\n const direction = context.currentLanguage?.direction || 'ltr';\n const isRtl = direction === 'rtl';\n const isLtr = direction === 'ltr';\n \n return { direction, isRtl, isLtr };\n }, [context.currentLanguage]);\n \n return {\n ...context,\n ...computedValues,\n };\n};\n// const withLanguage = <P extends object>(\n// Component: React.ComponentType<P>\n// ) => {\n// return (props: P) => {\n// const languageContext = useLanguage();\n// return <Component {...props} languageContext={languageContext} />;\n// };\n// };\n\n"],"names":[],"mappings":";;AAKA,MAAM,yBAAyB,OAAO;AAAA,EACpC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb;AAGA,MAAM,uBAAuB;AAAA,EAC3B,WAAW,CAAC,wBAAwB;AAAA,EACpC,iBAAiB,uBAAA;AAAA,EACjB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,gBAAgB,CAAC,aAAqB;AACpC,YAAQ,KAAK,4FAA4F,QAAQ,EAAE;AAAA,EACrH;AAAA,EACA,gBAAgB,YAAY;AAC1B,YAAQ,KAAK,2EAA2E;AAAA,EAC1F;AAAA,EACA,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AACT;AAEO,MAAM,cAAc,MAA2B;AACpD,QAAM,UAAU,WAAW,eAAe;AAG1C,MAAI,YAAY,QAAW;AACzB,QAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,cAAQ;AAAA,QACN;AAAA,MAAA;AAAA,IAGJ;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,QAAQ,MAAM;;AACnC,UAAM,cAAY,aAAQ,oBAAR,mBAAyB,cAAa;AACxD,UAAM,QAAQ,cAAc;AAC5B,UAAM,QAAQ,cAAc;AAE5B,WAAO,EAAE,WAAW,OAAO,MAAA;AAAA,EAC7B,GAAG,CAAC,QAAQ,eAAe,CAAC;AAE5B,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAEP;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("react"),n=require("./languageContext-
|
|
2
|
-
//# sourceMappingURL=useLangauge-
|
|
1
|
+
"use strict";const e=require("react"),n=require("./languageContext-hAPMY56Y.js"),r={languages:[{code:"en",label:"English",direction:"ltr"}],currentLanguage:{code:"en",label:"English",direction:"ltr"},isLoading:!1,error:null,isFallbackActive:!0,changeLanguage:e=>{},fetchLanguages:async()=>{},direction:"ltr",isRtl:!1,isLtr:!0};exports.useLanguage=()=>{const t=e.useContext(n.LanguageContext);if(void 0===t)return process.env.NODE_ENV,r;const a=e.useMemo(()=>{var e;const n=(null==(e=t.currentLanguage)?void 0:e.direction)||"ltr";return{direction:n,isRtl:"rtl"===n,isLtr:"ltr"===n}},[t.currentLanguage]);return{...t,...a}};
|
|
2
|
+
//# sourceMappingURL=useLangauge-ySJIB0GV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLangauge-
|
|
1
|
+
{"version":3,"file":"useLangauge-ySJIB0GV.js","sources":["../src/hooks/useLangauge.ts"],"sourcesContent":["// hooks/useLanguage.ts\nimport { useContext, useMemo } from \"react\";\nimport LanguageContext, { LanguageContextType } from \"../contexts/languageContext\";\n\n// Fallback language object\nconst createFallbackLanguage = () => ({\n code: 'en',\n label: 'English',\n direction: 'ltr' as const,\n});\n\n// Fallback context value when provider is not available\nconst fallbackContextValue = {\n languages: [createFallbackLanguage()],\n currentLanguage: createFallbackLanguage(),\n isLoading: false,\n error: null,\n isFallbackActive: true,\n changeLanguage: (langCode: string) => {\n console.warn(`useLanguage: changeLanguage called but LanguageProvider is not available. Language code: ${langCode}`);\n },\n fetchLanguages: async () => {\n console.warn('useLanguage: fetchLanguages called but LanguageProvider is not available.');\n },\n direction: 'ltr' as const,\n isRtl: false,\n isLtr: true,\n};\n\nexport const useLanguage = (): LanguageContextType => {\n const context = useContext(LanguageContext);\n \n // If context is undefined, provider is not available - use fallback\n if (context === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useLanguage: LanguageProvider is not available. Using fallback values. ' +\n 'To enable full language functionality, wrap your app with <ERPUIProvider> or <LanguageProvider>.'\n );\n }\n \n return fallbackContextValue;\n }\n \n const computedValues = useMemo(() => {\n const direction = context.currentLanguage?.direction || 'ltr';\n const isRtl = direction === 'rtl';\n const isLtr = direction === 'ltr';\n \n return { direction, isRtl, isLtr };\n }, [context.currentLanguage]);\n \n return {\n ...context,\n ...computedValues,\n };\n};\n// const withLanguage = <P extends object>(\n// Component: React.ComponentType<P>\n// ) => {\n// return (props: P) => {\n// const languageContext = useLanguage();\n// return <Component {...props} languageContext={languageContext} />;\n// };\n// };\n\n"],"names":["fallbackContextValue","languages","code","label","direction","currentLanguage","isLoading","error","isFallbackActive","changeLanguage","langCode","fetchLanguages","async","isRtl","isLtr","context","useContext","LanguageContext","process","env","NODE_ENV","computedValues","useMemo","_a"],"mappings":"iFAYMA,EAAuB,CAC3BC,UAAW,CARkB,CAC7BC,KAAM,KACNC,MAAO,UACPC,UAAW,QAMXC,gBAT6B,CAC7BH,KAAM,KACNC,MAAO,UACPC,UAAW,OAOXE,WAAW,EACXC,MAAO,KACPC,kBAAkB,EAClBC,eAAiBC,MAGjBC,eAAgBC,YAGhBR,UAAW,MACXS,OAAO,EACPC,OAAO,uBAGkB,KACzB,MAAMC,EAAUC,EAAAA,WAAWC,mBAG3B,QAAgB,IAAZF,EAQF,OAPIG,QAAQC,IAAIC,SAOTpB,EAGT,MAAMqB,EAAiBC,EAAAA,QAAQ,WAC7B,MAAMlB,GAAY,OAAAmB,EAAAR,EAAQV,sBAAR,EAAAkB,EAAyBnB,YAAa,MAIxD,MAAO,CAAEA,YAAWS,MAHQ,QAAdT,EAGaU,MAFC,QAAdV,IAGb,CAACW,EAAQV,kBAEZ,MAAO,IACFU,KACAM"}
|
package/dist/utils/index.esm.js
CHANGED
|
@@ -2,12 +2,12 @@ import { ar as getToken } from "../common-AMgckjX0.esm.js";
|
|
|
2
2
|
import { I, a, b, c, d, e, f, g, S, U, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, aT, G, H, J, K, L, M, N, O, P, Q, R, T, V, W, X, Y, Z, aU, _, $, a0, a1, a2, a3, a4, a5, aV, a6, a7, a8, a9, aa, ab, ac, aW, ad, ae, af, ag, ah, ai, aX, aj, ak, al, am, an, ao, ap, aq, as, at, aY, au, av, aw, ax, ay, az, aA, aB, aC, aD, aE, aF, aG, aH, aI, aJ, aK, aL, aM, aN, aO, aP, aQ, aR, aS } from "../common-AMgckjX0.esm.js";
|
|
3
3
|
import { g as g2, b as b2, i as i2, c as c2, o as o2, r as r2 } from "../api-config-GOys-syK.esm.js";
|
|
4
4
|
import { R as R2, c as c3, g as g3, h as h2, a as a10, n as n2 } from "../navigation-utils-DvSBvB6q.esm.js";
|
|
5
|
-
import { c as c4, a as a11, f as f2, b as b3, g as g4, d as d2, r as r3, e as e2, t as t2 } from "../form-builder-deconversion-
|
|
6
|
-
import { C as C2, M as M2, a as a12, b as b4, c as c5, S as S2, d as d3, e as e3, f as f3, g as g5, h as h3, i as i3, j as j2, k as k2, l as l2, m as m2, n as n3, o as o3, p as p2, q as q2, r as r4, u as u2 } from "../migration-utils-
|
|
5
|
+
import { c as c4, a as a11, f as f2, b as b3, g as g4, d as d2, r as r3, e as e2, t as t2 } from "../form-builder-deconversion-CjCls618.esm.js";
|
|
6
|
+
import { C as C2, M as M2, a as a12, b as b4, c as c5, S as S2, d as d3, e as e3, f as f3, g as g5, h as h3, i as i3, j as j2, k as k2, l as l2, m as m2, n as n3, o as o3, p as p2, q as q2, r as r4, u as u2 } from "../migration-utils-byCdwgkF.esm.js";
|
|
7
7
|
import { d as d4, f as f4 } from "../form-builder-conversion-KJf0Sbu2.esm.js";
|
|
8
8
|
import { q as getV1Languages } from "../api-D1r3CHCo.esm.js";
|
|
9
9
|
import { s as s2, j as j3, k as k3 } from "../api-D1r3CHCo.esm.js";
|
|
10
|
-
import { c as c6, g as g6, n as n4, u as u3 } from "../useAuth-
|
|
10
|
+
import { c as c6, g as g6, n as n4, u as u3 } from "../useAuth-Bvid1bpz.esm.js";
|
|
11
11
|
import { l as l3 } from "../translations-CfmEuVuv.esm.js";
|
|
12
12
|
import { default as default2 } from "i18next";
|
|
13
13
|
const primaryGreen = {
|
package/dist/utils/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("../common-8gzbBoY1.js"),t=require("../api-config-C9BF5LFu.js"),o=require("../navigation-utils-IZ3aXrx9.js"),a=require("../form-builder-deconversion-DUwJpbWi.js"),r=require("../migration-utils-DRGPH-n4.js"),s=require("../form-builder-conversion-GiAp7b_U.js"),i=require("../api-By0ZkuF-.js"),n=require("../useAuth-Dpe5kDa6.js"),p=require("../translations-DDuRH3yy.js");function l(e){return e&&e.__esModule?e.default:e}const d=/* @__PURE__ */l(require("i18next"));exports.INVENTORY_ADD_MODE_DISABLED_FIELDS=e.INVENTORY_ADD_MODE_DISABLED_FIELDS,exports.INVENTORY_ALWAYS_DISABLED_FIELDS=e.INVENTORY_ALWAYS_DISABLED_FIELDS,exports.INVENTORY_EDIT_MODE_DISABLED_FIELDS=e.INVENTORY_EDIT_MODE_DISABLED_FIELDS,exports.INVENTORY_FIELDS_TO_BE_DISABLED=e.INVENTORY_FIELDS_TO_BE_DISABLED,exports.INVENTORY_MATERIAL_COSTING_TYPE_ARR=e.INVENTORY_MATERIAL_COSTING_TYPE_ARR,exports.INVENTORY_MATERIAL_COSTING_TYPE_OPTIONS=e.INVENTORY_MATERIAL_COSTING_TYPE_OPTIONS,exports.INVENTORY_VARIANT_DISABLED_FIELDS=e.INVENTORY_VARIANT_DISABLED_FIELDS,exports.InvoiceStatus=e.InvoiceStatus,exports.SECTION_TYPES=e.SECTION_TYPES,exports.UTCDateFormat=e.UTCDateFormat,exports.addOrEditArray=e.addOrEditArray,exports.apiConfigurations=e.apiConfigurations,exports.appendConditionSafely=e.appendConditionSafely,exports.calculateAmountData=e.calculateAmountData,exports.calculatePeriods=e.calculatePeriods,exports.checkDuplicateTracking=e.checkDuplicateTracking,exports.checkForDuplicate=e.checkForDuplicate,exports.checkSkuAndItemName=e.checkSkuAndItemName,exports.checkUniqueFields=e.checkUniqueFields,exports.convertToUnderscore=e.convertToUnderscore,exports.createdOnAndBy=e.createdOnAndBy,exports.dateFormat=e.dateFormat,exports.defaultCompany=e.defaultCompany,exports.defaultCurrencyFormat=e.defaultCurrencyFormat,exports.defaultCurrencySymbol=e.defaultCurrencySymbol,exports.displayPhone=e.displayPhone,exports.downloadDoc=e.downloadDoc,exports.downloadFile=e.downloadFile,exports.extendApiConfigurations=e.extendApiConfigurations,exports.fetchApi=e.fetchApi,exports.fetchAssemblyItemData=e.fetchAssemblyItemData,exports.fetchCompanyLocations=e.fetchCompanyLocations,exports.fetchDataLocally=e.fetchDataLocally,exports.fetchExchageRate=e.fetchExchageRate,exports.fetchItems=e.fetchItems,exports.fetchOptions=e.fetchOptions,exports.fetchRentalResponseItems=e.fetchRentalResponseItems,exports.fetchRfqItemsByIdForResponse=e.fetchRfqItemsByIdForResponse,exports.filterAccessibleModules=e.filterAccessibleModules,exports.filterCoaByCompanyIdOrNull=e.filterCoaByCompanyIdOrNull,exports.findById=e.findById,exports.formatAmount=e.formatAmount,exports.formatAmountWithCurrency=e.formatAmountWithCurrency,exports.formatAmountWithCurrencyData=e.formatAmountWithCurrencyData,exports.formatDataTime=e.formatDataTime,exports.formatDate=e.formatDate,exports.formatDateForPayload=e.formatDateForPayload,exports.formatDateTimeForPayload=e.formatDateTimeForPayload,exports.formatEmptyDataToNull=e.formatEmptyDataToNull,exports.formatLabel=e.formatLabel,exports.formatOnlyTime=e.formatOnlyTime,exports.formatResponseDatesToDayJS=e.formatResponseDatesToDayJS,exports.formatResponseOnlyDatesToDayJS=e.formatResponseOnlyDatesToDayJS,exports.formatText=e.formatText,exports.formatTimeForPayload=e.formatTimeForPayload,exports.formatUtcDate=e.formatUtcDate,exports.generateAndFormatStringFromObj=e.generateAndFormatStringFromObj,exports.generateFields=e.generateFields,exports.generateQueryString=e.generateQueryString,exports.generateRandomId=e.generateRandomId,exports.getAccessibleModules=e.getAccessibleModules,exports.getCountryIdByName=e.getCountryIdByName,exports.getCurrency=e.getCurrency,exports.getCurrencyFormat=e.getCurrencyFormat,exports.getCurrencySymbol=e.getCurrencySymbol,exports.getErrorMessage=e.getErrorMessage,exports.getExcelExportTemplate=e.getExcelExportTemplate,exports.getExcelTemplateGenerateTemplate=e.getExcelTemplateGenerateTemplate,exports.getFieldFilters=e.getFieldFilters,exports.getFileName=e.getFileName,exports.getItems=e.getItems,exports.getLabelValuePairs=e.getLabelValuePairs,exports.getMinutesFromTime=e.getMinutesFromTime,exports.getName=e.getName,exports.getNestedValue=e.getNestedValue,exports.getNextScheduleDate=e.getNextScheduleDate,exports.getOperatorLabel=e.getOperatorLabel,exports.getOptions=e.getOptions,exports.getOptionsData=e.getOptionsData,exports.getPartyDependentData=e.getPartyDependentData,exports.getPartyName=e.getPartyName,exports.getPdfExportTemplate=e.getPdfExportTemplate,exports.getSlicedValue=e.getSlicedValue,exports.getTaxAmountDataFromMultipleTaxCodes=e.getTaxAmountDataFromMultipleTaxCodes,exports.getTaxAmountFromMultipleTaxCodes=e.getTaxAmountFromMultipleTaxCodes,exports.getTimeFromMinutes=e.getTimeFromMinutes,exports.getToken=e.getToken,exports.handleRegularUpload=e.handleRegularUpload,exports.hasValue=e.hasValue,exports.initializeApiBaseUrls=e.initializeApiBaseUrls,exports.isBetweenTheDates=e.isBetweenTheDates,exports.isJSONString=e.isJSONString,exports.isJsonParse=e.isJsonParse,exports.manageItems=e.manageItems,exports.mapApiPayload=e.mapApiPayload,exports.mapAsyncApiPayload=e.mapAsyncApiPayload,exports.matchedMaterialCostingTypeLabel=e.matchedMaterialCostingTypeLabel,exports.omitDataKeys=e.omitDataKeys,exports.partyDuplicateCheck=e.partyDuplicateCheck,exports.partyEmailIds=e.partyEmailIds,exports.postImportSheet=e.postImportSheet,exports.remainingMaterialCostingTypes=e.remainingMaterialCostingTypes,exports.removeIdFromObject=e.removeIdFromObject,exports.removeIdStaticIdsFromMongoObject=e.removeIdStaticIdsFromMongoObject,exports.responseItemDetailsColumns=e.responseItemDetailsColumns,exports.setRateBasedOnPriceRules=e.setRateBasedOnPriceRules,exports.showSnackBar=e.showSnackBar,exports.skuGenerator=e.skuGenerator,exports.specificFilters=e.specificFilters,exports.subModuleMappings=e.subModuleMappings,exports.toFixedWithNumbers=e.toFixedWithNumbers,exports.updateFieldsDisabledState=e.updateFieldsDisabledState,exports.uploadAttachments=e.uploadAttachments,exports.uploadFiles=e.uploadFiles,exports.validateDiscountValidity=e.validateDiscountValidity,exports.getApiConfig=t.getApiConfig,exports.getApiConfigSafe=t.getApiConfigSafe,exports.initializeApiConfig=t.initializeApiConfig,exports.isApiConfigInitialized=t.isApiConfigInitialized,exports.onApiConfigReady=t.onApiConfigReady,exports.resetApiConfig=t.resetApiConfig,exports.RANGE=o.RANGE,exports.calculateEntries=o.calculateEntries,exports.getEntityId=o.getEntityId,exports.handleCompareDateRange=o.handleCompareDateRange,exports.handleCompareDateRangeSync=o.handleCompareDateRangeSync,exports.navigateWithId=o.navigateWithId,exports.configMapper=a.configMapper,exports.convertTableColumns=a.convertTableColumns,exports.formBuilderDeConversion=a.formBuilderDeConversion,exports.formateValueByType=a.formateValueByType,exports.getFileNamesFromUrls=a.getFileNamesFromUrls,exports.getFileNamesFromUrlsAsLink=a.getFileNamesFromUrlsAsLink,exports.renderEmptyRowsFallback=a.renderEmptyRowsFallback,exports.renderValueField=a.renderValueField,exports.transformTableColumns=a.transformTableColumns,exports.COMMON_DATE_VALIDATIONS=r.COMMON_DATE_VALIDATIONS,exports.MenuFilter=r.MenuFilter,exports.MenuFilterService=r.MenuFilterService,exports.MetaComponent=r.MetaComponent,exports.ModuleAccessService=r.ModuleAccessService,exports.StorageUtils=r.StorageUtils,exports.anyDateValidation=r.anyDateValidation,exports.businessDateValidation=r.businessDateValidation,exports.conditionalDateValidation=r.conditionalDateValidation,exports.createCustomMessages=r.createCustomMessages,exports.createDateValidation=r.createDateValidation,exports.createParameterizedNavigationHandler=r.createParameterizedNavigationHandler,exports.dateRangeValidation=r.dateRangeValidation,exports.dateTimeValidation=r.dateTimeValidation,exports.dateValidation=r.dateValidation,exports.fileSize=r.fileSize,exports.futureDateValidation=r.futureDateValidation,exports.getCountry=r.getCountry,exports.migrateRoutesToUseParams=r.migrateRoutesToUseParams,exports.migrateToPathWithId=r.migrateToPathWithId,exports.pastDateValidation=r.pastDateValidation,exports.updateTableConfigForParameterizedNavigation=r.updateTableConfigForParameterizedNavigation,exports.deFormatText=s.deFormatText,exports.formBuilderConversion=s.formBuilderConversion,exports.setDriveURL=i.setBaseUrl,exports.setRoleURL=i.setBaseUrl$1,exports.setSystemFeatureURL=i.setBaseUrl$2,exports.convertRoutesToUseIdParams=n.convertRoutesToUseIdParams,exports.generateRouteWithId=n.generateRouteWithId,exports.navigateToRouteWithId=n.navigateToRouteWithId,exports.updatePathnameWithIdParams=n.updatePathnameWithIdParams,exports.loadModuleTranslations=p.loadModuleTranslations,exports.i18n=d,exports.blue={100:"#DAF4FC",200:"#CDEBF4",300:"#C0E1EB",400:"#B3D8E2",500:"#A6CED9",600:"#72A7B6",700:"#5894A5",800:"#3E8193",900:"#246E82",1e3:"#0A5A70"},exports.error={100:"#FEDFDF",200:"#FCBFBF",300:"#FBA0A0",400:"#F98080",500:"#F86060",600:"#C64D4D",700:"#953A3A",800:"#632626",900:"#321313",1e3:"#250E0E"},exports.fetchLanguages=async function(){var t,o;const a=await i.getV1Languages({order:"id:1",...e.getToken()}),r=(null==(t=null==a?void 0:a.data)?void 0:t.languages)||[];return null==(o=null==r?void 0:r.filter(e=>null==e?void 0:e.is_active))?void 0:o.map(e=>({label:null==e?void 0:e.name,code:null==e?void 0:e.code,direction:null==e?void 0:e.direction}))},exports.green={100:"#DDF9E4",200:"#D0F0DA",300:"#C3E6CF",400:"#B6DCC5",500:"#A8D2BA",600:"#72AA8F",700:"#58967A",800:"#3D8264",900:"#226E4F",1e3:"#075A39"},exports.lightGreen={100:"#F4FBCB",200:"#EAF2BF",300:"#E0E8B3",400:"#D6DEA7",500:"#CBD49A",600:"#A2AD69",700:"#98A45D",800:"#8E9A51",900:"#798638",1e3:"#505F07"},exports.magenta={100:"#FEECF1",200:"#F6DEE8",300:"#EDD0DF",400:"#E4C2D6",500:"#DBB3CC",600:"#B779A7",700:"#AE6B9E",800:"#A55D95",900:"#934082",1e3:"#6F065D"},exports.neutral={100:"#FBFBFB",200:"#EEEFF1",300:"#D3D3D4",400:"#BDBEBF",500:"#A7A8A9",600:"#919294",700:"#7B7C7F",800:"#656669",900:"#232529",1e3:"#1F2125"},exports.olive={100:"#FFF3CC",200:"#F7EAC0",300:"#EEE0B3",400:"#E5D6A6",500:"#DCCC99",600:"#B8A466",700:"#A6914D",800:"#947D33",900:"#82691A",1e3:"#705500"},exports.primaryGreen={100:"#EBF9F2",200:"#D6F3E5",300:"#ADE7CB",400:"#84DAB1",500:"#5BCE97",600:"#32C27D",700:"#289B64",800:"#1E744B",900:"#144E32",1e3:"#0A2719"},exports.red={100:"#FFEBEB",200:"#EED2D2",300:"#DDB9B9",400:"#D5ADAD",500:"#CCA0A0",600:"#BB8787",700:"#AA6E6E",800:"#995555",900:"#883C3C",1e3:"#772322"};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("../common-8gzbBoY1.js"),t=require("../api-config-C9BF5LFu.js"),o=require("../navigation-utils-IZ3aXrx9.js"),a=require("../form-builder-deconversion-Bt6_FHty.js"),r=require("../migration-utils-Bh98qTkC.js"),s=require("../form-builder-conversion-GiAp7b_U.js"),i=require("../api-By0ZkuF-.js"),n=require("../useAuth-CVokk6Ra.js"),p=require("../translations-DDuRH3yy.js");function l(e){return e&&e.__esModule?e.default:e}const d=/* @__PURE__ */l(require("i18next"));exports.INVENTORY_ADD_MODE_DISABLED_FIELDS=e.INVENTORY_ADD_MODE_DISABLED_FIELDS,exports.INVENTORY_ALWAYS_DISABLED_FIELDS=e.INVENTORY_ALWAYS_DISABLED_FIELDS,exports.INVENTORY_EDIT_MODE_DISABLED_FIELDS=e.INVENTORY_EDIT_MODE_DISABLED_FIELDS,exports.INVENTORY_FIELDS_TO_BE_DISABLED=e.INVENTORY_FIELDS_TO_BE_DISABLED,exports.INVENTORY_MATERIAL_COSTING_TYPE_ARR=e.INVENTORY_MATERIAL_COSTING_TYPE_ARR,exports.INVENTORY_MATERIAL_COSTING_TYPE_OPTIONS=e.INVENTORY_MATERIAL_COSTING_TYPE_OPTIONS,exports.INVENTORY_VARIANT_DISABLED_FIELDS=e.INVENTORY_VARIANT_DISABLED_FIELDS,exports.InvoiceStatus=e.InvoiceStatus,exports.SECTION_TYPES=e.SECTION_TYPES,exports.UTCDateFormat=e.UTCDateFormat,exports.addOrEditArray=e.addOrEditArray,exports.apiConfigurations=e.apiConfigurations,exports.appendConditionSafely=e.appendConditionSafely,exports.calculateAmountData=e.calculateAmountData,exports.calculatePeriods=e.calculatePeriods,exports.checkDuplicateTracking=e.checkDuplicateTracking,exports.checkForDuplicate=e.checkForDuplicate,exports.checkSkuAndItemName=e.checkSkuAndItemName,exports.checkUniqueFields=e.checkUniqueFields,exports.convertToUnderscore=e.convertToUnderscore,exports.createdOnAndBy=e.createdOnAndBy,exports.dateFormat=e.dateFormat,exports.defaultCompany=e.defaultCompany,exports.defaultCurrencyFormat=e.defaultCurrencyFormat,exports.defaultCurrencySymbol=e.defaultCurrencySymbol,exports.displayPhone=e.displayPhone,exports.downloadDoc=e.downloadDoc,exports.downloadFile=e.downloadFile,exports.extendApiConfigurations=e.extendApiConfigurations,exports.fetchApi=e.fetchApi,exports.fetchAssemblyItemData=e.fetchAssemblyItemData,exports.fetchCompanyLocations=e.fetchCompanyLocations,exports.fetchDataLocally=e.fetchDataLocally,exports.fetchExchageRate=e.fetchExchageRate,exports.fetchItems=e.fetchItems,exports.fetchOptions=e.fetchOptions,exports.fetchRentalResponseItems=e.fetchRentalResponseItems,exports.fetchRfqItemsByIdForResponse=e.fetchRfqItemsByIdForResponse,exports.filterAccessibleModules=e.filterAccessibleModules,exports.filterCoaByCompanyIdOrNull=e.filterCoaByCompanyIdOrNull,exports.findById=e.findById,exports.formatAmount=e.formatAmount,exports.formatAmountWithCurrency=e.formatAmountWithCurrency,exports.formatAmountWithCurrencyData=e.formatAmountWithCurrencyData,exports.formatDataTime=e.formatDataTime,exports.formatDate=e.formatDate,exports.formatDateForPayload=e.formatDateForPayload,exports.formatDateTimeForPayload=e.formatDateTimeForPayload,exports.formatEmptyDataToNull=e.formatEmptyDataToNull,exports.formatLabel=e.formatLabel,exports.formatOnlyTime=e.formatOnlyTime,exports.formatResponseDatesToDayJS=e.formatResponseDatesToDayJS,exports.formatResponseOnlyDatesToDayJS=e.formatResponseOnlyDatesToDayJS,exports.formatText=e.formatText,exports.formatTimeForPayload=e.formatTimeForPayload,exports.formatUtcDate=e.formatUtcDate,exports.generateAndFormatStringFromObj=e.generateAndFormatStringFromObj,exports.generateFields=e.generateFields,exports.generateQueryString=e.generateQueryString,exports.generateRandomId=e.generateRandomId,exports.getAccessibleModules=e.getAccessibleModules,exports.getCountryIdByName=e.getCountryIdByName,exports.getCurrency=e.getCurrency,exports.getCurrencyFormat=e.getCurrencyFormat,exports.getCurrencySymbol=e.getCurrencySymbol,exports.getErrorMessage=e.getErrorMessage,exports.getExcelExportTemplate=e.getExcelExportTemplate,exports.getExcelTemplateGenerateTemplate=e.getExcelTemplateGenerateTemplate,exports.getFieldFilters=e.getFieldFilters,exports.getFileName=e.getFileName,exports.getItems=e.getItems,exports.getLabelValuePairs=e.getLabelValuePairs,exports.getMinutesFromTime=e.getMinutesFromTime,exports.getName=e.getName,exports.getNestedValue=e.getNestedValue,exports.getNextScheduleDate=e.getNextScheduleDate,exports.getOperatorLabel=e.getOperatorLabel,exports.getOptions=e.getOptions,exports.getOptionsData=e.getOptionsData,exports.getPartyDependentData=e.getPartyDependentData,exports.getPartyName=e.getPartyName,exports.getPdfExportTemplate=e.getPdfExportTemplate,exports.getSlicedValue=e.getSlicedValue,exports.getTaxAmountDataFromMultipleTaxCodes=e.getTaxAmountDataFromMultipleTaxCodes,exports.getTaxAmountFromMultipleTaxCodes=e.getTaxAmountFromMultipleTaxCodes,exports.getTimeFromMinutes=e.getTimeFromMinutes,exports.getToken=e.getToken,exports.handleRegularUpload=e.handleRegularUpload,exports.hasValue=e.hasValue,exports.initializeApiBaseUrls=e.initializeApiBaseUrls,exports.isBetweenTheDates=e.isBetweenTheDates,exports.isJSONString=e.isJSONString,exports.isJsonParse=e.isJsonParse,exports.manageItems=e.manageItems,exports.mapApiPayload=e.mapApiPayload,exports.mapAsyncApiPayload=e.mapAsyncApiPayload,exports.matchedMaterialCostingTypeLabel=e.matchedMaterialCostingTypeLabel,exports.omitDataKeys=e.omitDataKeys,exports.partyDuplicateCheck=e.partyDuplicateCheck,exports.partyEmailIds=e.partyEmailIds,exports.postImportSheet=e.postImportSheet,exports.remainingMaterialCostingTypes=e.remainingMaterialCostingTypes,exports.removeIdFromObject=e.removeIdFromObject,exports.removeIdStaticIdsFromMongoObject=e.removeIdStaticIdsFromMongoObject,exports.responseItemDetailsColumns=e.responseItemDetailsColumns,exports.setRateBasedOnPriceRules=e.setRateBasedOnPriceRules,exports.showSnackBar=e.showSnackBar,exports.skuGenerator=e.skuGenerator,exports.specificFilters=e.specificFilters,exports.subModuleMappings=e.subModuleMappings,exports.toFixedWithNumbers=e.toFixedWithNumbers,exports.updateFieldsDisabledState=e.updateFieldsDisabledState,exports.uploadAttachments=e.uploadAttachments,exports.uploadFiles=e.uploadFiles,exports.validateDiscountValidity=e.validateDiscountValidity,exports.getApiConfig=t.getApiConfig,exports.getApiConfigSafe=t.getApiConfigSafe,exports.initializeApiConfig=t.initializeApiConfig,exports.isApiConfigInitialized=t.isApiConfigInitialized,exports.onApiConfigReady=t.onApiConfigReady,exports.resetApiConfig=t.resetApiConfig,exports.RANGE=o.RANGE,exports.calculateEntries=o.calculateEntries,exports.getEntityId=o.getEntityId,exports.handleCompareDateRange=o.handleCompareDateRange,exports.handleCompareDateRangeSync=o.handleCompareDateRangeSync,exports.navigateWithId=o.navigateWithId,exports.configMapper=a.configMapper,exports.convertTableColumns=a.convertTableColumns,exports.formBuilderDeConversion=a.formBuilderDeConversion,exports.formateValueByType=a.formateValueByType,exports.getFileNamesFromUrls=a.getFileNamesFromUrls,exports.getFileNamesFromUrlsAsLink=a.getFileNamesFromUrlsAsLink,exports.renderEmptyRowsFallback=a.renderEmptyRowsFallback,exports.renderValueField=a.renderValueField,exports.transformTableColumns=a.transformTableColumns,exports.COMMON_DATE_VALIDATIONS=r.COMMON_DATE_VALIDATIONS,exports.MenuFilter=r.MenuFilter,exports.MenuFilterService=r.MenuFilterService,exports.MetaComponent=r.MetaComponent,exports.ModuleAccessService=r.ModuleAccessService,exports.StorageUtils=r.StorageUtils,exports.anyDateValidation=r.anyDateValidation,exports.businessDateValidation=r.businessDateValidation,exports.conditionalDateValidation=r.conditionalDateValidation,exports.createCustomMessages=r.createCustomMessages,exports.createDateValidation=r.createDateValidation,exports.createParameterizedNavigationHandler=r.createParameterizedNavigationHandler,exports.dateRangeValidation=r.dateRangeValidation,exports.dateTimeValidation=r.dateTimeValidation,exports.dateValidation=r.dateValidation,exports.fileSize=r.fileSize,exports.futureDateValidation=r.futureDateValidation,exports.getCountry=r.getCountry,exports.migrateRoutesToUseParams=r.migrateRoutesToUseParams,exports.migrateToPathWithId=r.migrateToPathWithId,exports.pastDateValidation=r.pastDateValidation,exports.updateTableConfigForParameterizedNavigation=r.updateTableConfigForParameterizedNavigation,exports.deFormatText=s.deFormatText,exports.formBuilderConversion=s.formBuilderConversion,exports.setDriveURL=i.setBaseUrl,exports.setRoleURL=i.setBaseUrl$1,exports.setSystemFeatureURL=i.setBaseUrl$2,exports.convertRoutesToUseIdParams=n.convertRoutesToUseIdParams,exports.generateRouteWithId=n.generateRouteWithId,exports.navigateToRouteWithId=n.navigateToRouteWithId,exports.updatePathnameWithIdParams=n.updatePathnameWithIdParams,exports.loadModuleTranslations=p.loadModuleTranslations,exports.i18n=d,exports.blue={100:"#DAF4FC",200:"#CDEBF4",300:"#C0E1EB",400:"#B3D8E2",500:"#A6CED9",600:"#72A7B6",700:"#5894A5",800:"#3E8193",900:"#246E82",1e3:"#0A5A70"},exports.error={100:"#FEDFDF",200:"#FCBFBF",300:"#FBA0A0",400:"#F98080",500:"#F86060",600:"#C64D4D",700:"#953A3A",800:"#632626",900:"#321313",1e3:"#250E0E"},exports.fetchLanguages=async function(){var t,o;const a=await i.getV1Languages({order:"id:1",...e.getToken()}),r=(null==(t=null==a?void 0:a.data)?void 0:t.languages)||[];return null==(o=null==r?void 0:r.filter(e=>null==e?void 0:e.is_active))?void 0:o.map(e=>({label:null==e?void 0:e.name,code:null==e?void 0:e.code,direction:null==e?void 0:e.direction}))},exports.green={100:"#DDF9E4",200:"#D0F0DA",300:"#C3E6CF",400:"#B6DCC5",500:"#A8D2BA",600:"#72AA8F",700:"#58967A",800:"#3D8264",900:"#226E4F",1e3:"#075A39"},exports.lightGreen={100:"#F4FBCB",200:"#EAF2BF",300:"#E0E8B3",400:"#D6DEA7",500:"#CBD49A",600:"#A2AD69",700:"#98A45D",800:"#8E9A51",900:"#798638",1e3:"#505F07"},exports.magenta={100:"#FEECF1",200:"#F6DEE8",300:"#EDD0DF",400:"#E4C2D6",500:"#DBB3CC",600:"#B779A7",700:"#AE6B9E",800:"#A55D95",900:"#934082",1e3:"#6F065D"},exports.neutral={100:"#FBFBFB",200:"#EEEFF1",300:"#D3D3D4",400:"#BDBEBF",500:"#A7A8A9",600:"#919294",700:"#7B7C7F",800:"#656669",900:"#232529",1e3:"#1F2125"},exports.olive={100:"#FFF3CC",200:"#F7EAC0",300:"#EEE0B3",400:"#E5D6A6",500:"#DCCC99",600:"#B8A466",700:"#A6914D",800:"#947D33",900:"#82691A",1e3:"#705500"},exports.primaryGreen={100:"#EBF9F2",200:"#D6F3E5",300:"#ADE7CB",400:"#84DAB1",500:"#5BCE97",600:"#32C27D",700:"#289B64",800:"#1E744B",900:"#144E32",1e3:"#0A2719"},exports.red={100:"#FFEBEB",200:"#EED2D2",300:"#DDB9B9",400:"#D5ADAD",500:"#CCA0A0",600:"#BB8787",700:"#AA6E6E",800:"#995555",900:"#883C3C",1e3:"#772322"};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|