@erpsquad/common 1.8.82 → 1.8.84
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/_virtual/index/index.esm2.js +4 -2
- package/dist/_virtual/index/index.esm2.js.map +1 -1
- package/dist/_virtual/index/index.esm3.js +2 -4
- package/dist/_virtual/index/index.esm3.js.map +1 -1
- package/dist/_virtual/index/index2.js +1 -1
- package/dist/_virtual/index/index3.js +1 -1
- package/dist/components/accordion/accordion.d.ts +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
- package/dist/components/action-bar/action-bar/index.js +5 -5
- package/dist/components/action-bar/action-bar/index.js.map +1 -1
- package/dist/components/action-bar/action-bar.d.ts +1 -1
- package/dist/components/checkbox/checkbox.d.ts +1 -1
- package/dist/components/date-picker/date-picker.d.ts +1 -1
- package/dist/components/filter/components/delete-group/index.esm.js +1 -0
- package/dist/components/filter/components/delete-group/index.esm.js.map +1 -1
- package/dist/components/filter/components/delete-group/index.js +1 -1
- package/dist/components/filter/components/delete-group/index.js.map +1 -1
- package/dist/components/filter/filter/index.esm.js +1 -1
- package/dist/components/filter/filter/index.esm.js.map +1 -1
- package/dist/components/filter/filter/index.js +7 -7
- package/dist/components/filter/filter/index.js.map +1 -1
- package/dist/components/footer/footer.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
- package/dist/components/form-control/form-parser/form-switcher.d.ts +1 -1
- package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/header/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/header/redux/actionCreator/index.js +1 -1
- package/dist/components/header/redux/actionCreator/index.js.map +1 -1
- package/dist/components/icons/action-arrow.d.ts +3 -3
- package/dist/components/icons/add-circle.d.ts +3 -3
- package/dist/components/icons/arrow-bidirectional.d.ts +3 -3
- package/dist/components/icons/arrow-circle-down.d.ts +3 -3
- package/dist/components/icons/arrow-down-three.d.ts +3 -3
- package/dist/components/icons/arrow-down-two.d.ts +3 -3
- package/dist/components/icons/arrow-down.d.ts +3 -3
- package/dist/components/icons/arrow-up-down.d.ts +3 -3
- package/dist/components/icons/arrow-up-two.d.ts +3 -3
- package/dist/components/icons/assignments.d.ts +3 -3
- package/dist/components/icons/blank-circle.d.ts +3 -3
- package/dist/components/icons/block-filled.d.ts +3 -3
- package/dist/components/icons/calendar-add.d.ts +3 -3
- package/dist/components/icons/calendar.d.ts +3 -3
- package/dist/components/icons/checkbox-square.d.ts +3 -3
- package/dist/components/icons/circular-arrow-setting.d.ts +3 -3
- package/dist/components/icons/clock.d.ts +3 -3
- package/dist/components/icons/close.d.ts +3 -3
- package/dist/components/icons/coin-outline.d.ts +3 -3
- package/dist/components/icons/copy.d.ts +3 -3
- package/dist/components/icons/coupon.d.ts +3 -3
- package/dist/components/icons/cross-hire.d.ts +3 -3
- package/dist/components/icons/custom-styled-icon.d.ts +3 -3
- package/dist/components/icons/dashboard.d.ts +3 -3
- package/dist/components/icons/document-download.d.ts +3 -3
- package/dist/components/icons/document.d.ts +3 -3
- package/dist/components/icons/dollar-circle-filled.d.ts +3 -3
- package/dist/components/icons/dollar-circle.d.ts +3 -3
- package/dist/components/icons/edit.d.ts +3 -3
- package/dist/components/icons/email.d.ts +3 -3
- package/dist/components/icons/export.d.ts +3 -3
- package/dist/components/icons/eye-off.d.ts +3 -3
- package/dist/components/icons/eye-plus-circle.d.ts +3 -3
- package/dist/components/icons/eye.d.ts +3 -3
- package/dist/components/icons/filled-circle.d.ts +3 -3
- package/dist/components/icons/filter-remove.d.ts +3 -3
- package/dist/components/icons/filter.d.ts +3 -3
- package/dist/components/icons/folder-save.d.ts +3 -3
- package/dist/components/icons/grid.d.ts +3 -3
- package/dist/components/icons/hashtag.d.ts +3 -3
- package/dist/components/icons/image.d.ts +3 -3
- package/dist/components/icons/import.d.ts +3 -3
- package/dist/components/icons/info-circle.d.ts +3 -3
- package/dist/components/icons/info.d.ts +3 -3
- package/dist/components/icons/link-horizontal.d.ts +3 -3
- package/dist/components/icons/link.d.ts +3 -3
- package/dist/components/icons/location.d.ts +3 -3
- package/dist/components/icons/lowest-lead-time.d.ts +3 -3
- package/dist/components/icons/lowest-min-qty.d.ts +3 -3
- package/dist/components/icons/lowest-price.d.ts +3 -3
- package/dist/components/icons/more.d.ts +3 -3
- package/dist/components/icons/notification.d.ts +3 -3
- package/dist/components/icons/paper-clip.d.ts +3 -3
- package/dist/components/icons/paragraph.d.ts +3 -3
- package/dist/components/icons/payment-request.d.ts +3 -3
- package/dist/components/icons/phone.d.ts +3 -3
- package/dist/components/icons/printer.d.ts +3 -3
- package/dist/components/icons/process-calendar.d.ts +3 -3
- package/dist/components/icons/promotion.d.ts +3 -3
- package/dist/components/icons/radio-button.d.ts +3 -3
- package/dist/components/icons/receipt-filled.d.ts +3 -3
- package/dist/components/icons/receipt-outline.d.ts +3 -3
- package/dist/components/icons/receipt.d.ts +3 -3
- package/dist/components/icons/refresh-icon.d.ts +3 -3
- package/dist/components/icons/replace.d.ts +3 -3
- package/dist/components/icons/save.d.ts +3 -3
- package/dist/components/icons/search-status.d.ts +3 -3
- package/dist/components/icons/search.d.ts +3 -3
- package/dist/components/icons/settings-fallback.d.ts +3 -3
- package/dist/components/icons/sort-arrow-icon.d.ts +3 -3
- package/dist/components/icons/stacked-layer.d.ts +3 -3
- package/dist/components/icons/start-filled.d.ts +3 -3
- package/dist/components/icons/three-dot-icon.d.ts +3 -3
- package/dist/components/icons/tick-circle-filled.d.ts +3 -3
- package/dist/components/icons/tick-circle.d.ts +3 -3
- package/dist/components/icons/tick-octagon.d.ts +3 -3
- package/dist/components/icons/tick.d.ts +3 -3
- package/dist/components/icons/toggle-switch.d.ts +3 -3
- package/dist/components/icons/trash.d.ts +3 -3
- package/dist/components/icons/wave.d.ts +3 -3
- package/dist/components/icons/with-out-tick-octagon.d.ts +3 -3
- package/dist/components/icons/work-centre.d.ts +3 -3
- package/dist/components/index.esm.js +279 -277
- package/dist/components/index.esm.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/location-select.d.ts +1 -1
- package/dist/components/material-editable-table/material-editable-table.d.ts +1 -1
- package/dist/components/material-table/material-table.d.ts +1 -1
- package/dist/components/phone-input/phone-input.d.ts +1 -1
- package/dist/components/radio/radio.d.ts +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/select/select.d.ts +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js.map +1 -1
- package/dist/components/switches/android-12-switch.d.ts +1 -3
- package/dist/components/text-field/text-field.d.ts +1 -1
- package/dist/components/time-picker/time-picker.d.ts +1 -1
- package/dist/components/uom-field-wrapper/index.d.ts +1 -0
- package/dist/components/uom-field-wrapper/uom-field-wrapper/index.esm.js +76 -0
- package/dist/components/uom-field-wrapper/uom-field-wrapper/index.esm.js.map +1 -0
- package/dist/components/uom-field-wrapper/uom-field-wrapper/index.js +3 -0
- package/dist/components/uom-field-wrapper/uom-field-wrapper/index.js.map +1 -0
- package/dist/components/uom-field-wrapper/uom-field-wrapper.d.ts +22 -0
- package/dist/components/upload/upload/index.esm.js +2 -2
- package/dist/components/upload/upload/index.esm.js.map +1 -1
- package/dist/components/upload/upload/index.js +11 -11
- package/dist/components/upload/upload/index.js.map +1 -1
- package/dist/components/upload-media/upload-media.d.ts +1 -1
- package/dist/contexts/AuthContext/index.esm.js +2 -2
- package/dist/contexts/AuthContext/index.esm.js.map +1 -1
- package/dist/contexts/AuthContext/index.js +1 -1
- package/dist/contexts/AuthContext/index.js.map +1 -1
- package/dist/contexts/languageContext/index.esm.js +1 -1
- package/dist/contexts/languageContext/index.esm.js.map +1 -1
- package/dist/contexts/languageContext/index.js +1 -1
- package/dist/contexts/languageContext/index.js.map +1 -1
- package/dist/hooks/useUomFieldUpdater/index.esm.js +24 -0
- package/dist/hooks/useUomFieldUpdater/index.esm.js.map +1 -0
- package/dist/hooks/useUomFieldUpdater/index.js +2 -0
- package/dist/hooks/useUomFieldUpdater/index.js.map +1 -0
- package/dist/hooks/useUomFieldUpdater.d.ts +8 -0
- package/dist/index.esm.js +348 -346
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.esm.js +1 -1
- package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js +1 -1
- package/dist/src/components/accordion/accordion.d.ts +1 -1
- package/dist/src/components/action-bar/action-bar.d.ts +1 -1
- package/dist/src/components/checkbox/checkbox.d.ts +1 -1
- package/dist/src/components/date-picker/date-picker.d.ts +1 -1
- package/dist/src/components/footer/footer.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
- package/dist/src/components/form-control/form-parser/form-switcher.d.ts +1 -1
- package/dist/src/components/icons/action-arrow.d.ts +3 -3
- package/dist/src/components/icons/add-circle.d.ts +3 -3
- package/dist/src/components/icons/arrow-bidirectional.d.ts +3 -3
- package/dist/src/components/icons/arrow-circle-down.d.ts +3 -3
- package/dist/src/components/icons/arrow-down-three.d.ts +3 -3
- package/dist/src/components/icons/arrow-down-two.d.ts +3 -3
- package/dist/src/components/icons/arrow-down.d.ts +3 -3
- package/dist/src/components/icons/arrow-up-down.d.ts +3 -3
- package/dist/src/components/icons/arrow-up-two.d.ts +3 -3
- package/dist/src/components/icons/assignments.d.ts +3 -3
- package/dist/src/components/icons/blank-circle.d.ts +3 -3
- package/dist/src/components/icons/block-filled.d.ts +3 -3
- package/dist/src/components/icons/calendar-add.d.ts +3 -3
- package/dist/src/components/icons/calendar.d.ts +3 -3
- package/dist/src/components/icons/checkbox-square.d.ts +3 -3
- package/dist/src/components/icons/circular-arrow-setting.d.ts +3 -3
- package/dist/src/components/icons/clock.d.ts +3 -3
- package/dist/src/components/icons/close.d.ts +3 -3
- package/dist/src/components/icons/coin-outline.d.ts +3 -3
- package/dist/src/components/icons/copy.d.ts +3 -3
- package/dist/src/components/icons/coupon.d.ts +3 -3
- package/dist/src/components/icons/cross-hire.d.ts +3 -3
- package/dist/src/components/icons/custom-styled-icon.d.ts +3 -3
- package/dist/src/components/icons/dashboard.d.ts +3 -3
- package/dist/src/components/icons/document-download.d.ts +3 -3
- package/dist/src/components/icons/document.d.ts +3 -3
- package/dist/src/components/icons/dollar-circle-filled.d.ts +3 -3
- package/dist/src/components/icons/dollar-circle.d.ts +3 -3
- package/dist/src/components/icons/edit.d.ts +3 -3
- package/dist/src/components/icons/email.d.ts +3 -3
- package/dist/src/components/icons/export.d.ts +3 -3
- package/dist/src/components/icons/eye-off.d.ts +3 -3
- package/dist/src/components/icons/eye-plus-circle.d.ts +3 -3
- package/dist/src/components/icons/eye.d.ts +3 -3
- package/dist/src/components/icons/filled-circle.d.ts +3 -3
- package/dist/src/components/icons/filter-remove.d.ts +3 -3
- package/dist/src/components/icons/filter.d.ts +3 -3
- package/dist/src/components/icons/folder-save.d.ts +3 -3
- package/dist/src/components/icons/grid.d.ts +3 -3
- package/dist/src/components/icons/hashtag.d.ts +3 -3
- package/dist/src/components/icons/image.d.ts +3 -3
- package/dist/src/components/icons/import.d.ts +3 -3
- package/dist/src/components/icons/info-circle.d.ts +3 -3
- package/dist/src/components/icons/info.d.ts +3 -3
- package/dist/src/components/icons/link-horizontal.d.ts +3 -3
- package/dist/src/components/icons/link.d.ts +3 -3
- package/dist/src/components/icons/location.d.ts +3 -3
- package/dist/src/components/icons/lowest-lead-time.d.ts +3 -3
- package/dist/src/components/icons/lowest-min-qty.d.ts +3 -3
- package/dist/src/components/icons/lowest-price.d.ts +3 -3
- package/dist/src/components/icons/more.d.ts +3 -3
- package/dist/src/components/icons/notification.d.ts +3 -3
- package/dist/src/components/icons/paper-clip.d.ts +3 -3
- package/dist/src/components/icons/paragraph.d.ts +3 -3
- package/dist/src/components/icons/payment-request.d.ts +3 -3
- package/dist/src/components/icons/phone.d.ts +3 -3
- package/dist/src/components/icons/printer.d.ts +3 -3
- package/dist/src/components/icons/process-calendar.d.ts +3 -3
- package/dist/src/components/icons/promotion.d.ts +3 -3
- package/dist/src/components/icons/radio-button.d.ts +3 -3
- package/dist/src/components/icons/receipt-filled.d.ts +3 -3
- package/dist/src/components/icons/receipt-outline.d.ts +3 -3
- package/dist/src/components/icons/receipt.d.ts +3 -3
- package/dist/src/components/icons/refresh-icon.d.ts +3 -3
- package/dist/src/components/icons/replace.d.ts +3 -3
- package/dist/src/components/icons/save.d.ts +3 -3
- package/dist/src/components/icons/search-status.d.ts +3 -3
- package/dist/src/components/icons/search.d.ts +3 -3
- package/dist/src/components/icons/settings-fallback.d.ts +3 -3
- package/dist/src/components/icons/sort-arrow-icon.d.ts +3 -3
- package/dist/src/components/icons/stacked-layer.d.ts +3 -3
- package/dist/src/components/icons/start-filled.d.ts +3 -3
- package/dist/src/components/icons/three-dot-icon.d.ts +3 -3
- package/dist/src/components/icons/tick-circle-filled.d.ts +3 -3
- package/dist/src/components/icons/tick-circle.d.ts +3 -3
- package/dist/src/components/icons/tick-octagon.d.ts +3 -3
- package/dist/src/components/icons/tick.d.ts +3 -3
- package/dist/src/components/icons/toggle-switch.d.ts +3 -3
- package/dist/src/components/icons/trash.d.ts +3 -3
- package/dist/src/components/icons/wave.d.ts +3 -3
- package/dist/src/components/icons/with-out-tick-octagon.d.ts +3 -3
- package/dist/src/components/icons/work-centre.d.ts +3 -3
- package/dist/src/components/index.d.ts +2 -0
- package/dist/src/components/location-select.d.ts +1 -1
- package/dist/src/components/material-editable-table/material-editable-table.d.ts +1 -1
- package/dist/src/components/material-table/material-table.d.ts +1 -1
- package/dist/src/components/phone-input/phone-input.d.ts +1 -1
- package/dist/src/components/radio/radio.d.ts +1 -1
- package/dist/src/components/select/select.d.ts +1 -1
- package/dist/src/components/switches/android-12-switch.d.ts +1 -3
- package/dist/src/components/text-field/text-field.d.ts +1 -1
- package/dist/src/components/time-picker/time-picker.d.ts +1 -1
- package/dist/src/components/uom-field-wrapper/index.d.ts +1 -0
- package/dist/src/components/uom-field-wrapper/uom-field-wrapper.d.ts +22 -0
- package/dist/src/components/upload-media/upload-media.d.ts +1 -1
- package/dist/src/hooks/useUomFieldUpdater.d.ts +8 -0
- package/dist/src/utils/common-utility.d.ts +1 -1
- package/dist/style.css +66 -66
- package/dist/utils/api/index.esm.js +6 -6
- package/dist/utils/api/index.esm.js.map +1 -1
- package/dist/utils/api/index.js +1 -1
- package/dist/utils/api/index.js.map +1 -1
- package/dist/utils/common/index.esm.js +6 -6
- package/dist/utils/common/index.esm.js.map +1 -1
- package/dist/utils/common/index.js +1 -1
- package/dist/utils/common/index.js.map +1 -1
- package/dist/utils/common-utility.d.ts +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.esm.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js.map +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.esm.js +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.js +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.js.map +1 -1
- package/dist/views/template-editor/templates/index.esm.js +1 -1
- package/dist/views/template-editor/templates/index.esm.js.map +1 -1
- package/dist/views/template-editor/templates/index.js +1 -1
- package/dist/views/template-editor/templates/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/upload/upload.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\n\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Typography from \"../typography/typography\";\nimport Box from \"@mui/material/Box\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport \"./upload.scss\";\nimport { useDropzone } from \"react-dropzone\";\nimport Toast from '../toast/toast';\nimport {\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n} from \"@mui/material\";\nimport RemoveIcon from \"@mui/icons-material/Remove\";\nimport { Add } from \"@mui/icons-material\";\nimport Button from \"../button/button\";\nimport Checkbox from \"../checkbox/checkbox\";\nimport Avatar from \"../avatar/avatar\";\nimport images from \"../../assets/images\";\nimport Chip from \"../chip/chip\";\nimport { auth } from \"../../constants/auth\";\nimport { KeyboardArrowDown, KeyboardArrowUp, Clear } from \"@mui/icons-material\";\nimport FileConfirmationDialog from \"./file-confirmation\"\n\n\ninterface UploadProps {\n open: boolean;\n title: string;\n multiple?: boolean;\n accept?: string;\n onClose: () => void;\n onConfirm: () => void;\n onSubmit: (files: any[]) => void;\n existingDriveData?: any;\n fileUploaded?: (value: boolean) => void | undefined;\n type: any\n\n\n}\ninterface CustomNavigator extends Navigator {\n connection?: {\n downlink?: number;\n };\n}\nconst formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\n};\n\nconst Upload = (props: UploadProps) => {\n const {\n open,\n title,\n onClose,\n onConfirm,\n accept = \"*\",\n onSubmit,\n multiple = true,\n existingDriveData,\n fileUploaded , \n type\n \n } = props;\n\n const [files, setFiles] = useState<\n {\n file: File;\n isPrivate: boolean;\n checkboxDisabled: boolean;\n status: string;\n uploadProgress: number;\n fileSize: number;\n fileName: string;\n fileType: string;\n location: string;\n message: string;\n }[]\n >([]);\n\n interface IToast {\n type: 'normal' | 'alert';\n message: string;\n }\n const [isUploading, setIsUploading] = useState(false);\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [isDialogMinimized, setIsDialogMinimized] = useState(false);\n const [isDragOver, setIsDragOver] = useState(false);\n const [abortController, setAbortController] = useState(new AbortController());\n const authToken = localStorage.getItem(auth.storageTokenKeyName);\n const [allDriveData, setAllDriveData] = useState();\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [selectedFileTitle, setSelectedFileTitle] = useState();\n const [toast, setToast] = useState<IToast | null>(null);\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDropAccepted: (newFiles) => {\n setFiles([\n ...files,\n ...newFiles.map((file) => ({\n file,\n isPrivate: false,\n checkboxDisabled: false,\n status: \"pending\",\n uploadProgress: 0,\n fileSize: file.size,\n fileName: file.name,\n fileType: file.type,\n location: \"\",\n message: \"\",\n })),\n ]);\n setIsDragOver(false);\n },\n onDragEnter: () => {\n setIsDragOver(true);\n },\n onDragLeave: () => {\n setIsDragOver(false);\n },\n noClick: true,\n noKeyboard: true,\n multiple: multiple,\n accept: accept ? convertAcceptObject(accept) : accept,\n });\n\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n const driveTitles = existingDriveData?.map(item => item['title'])\n setAllDriveData(driveTitles);\n }, [existingDriveData]);\n\n useEffect(() => {\n const handleBeforeUnload = (event: any) => {\n if (isUploading) {\n const message =\n \"Are you sure you want to leave? Your uploads are not complete.\";\n event.returnValue = message; // Standard for most browsers\n return message; // For some older browsers\n }\n };\n if (fileInputRef.current) {\n fileInputRef.current.multiple = multiple;\n }\n\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n\n return () => {\n // Clean up the event listener when the component unmounts\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n };\n }, [isUploading, multiple]);\n\n const getInternetSpeed = () => {\n const customNavigator = navigator as CustomNavigator;\n if (\"connection\" in customNavigator && customNavigator.connection) {\n return customNavigator.connection.downlink;\n } else {\n return null;\n }\n };\n\n function convertAcceptObject(types: string) {\n const accepts = types.split(\",\").map((item) => item.trim());\n const acceptObject = accepts.reduce((acc: any, type: string) => {\n acc[type] = [];\n return acc;\n }, {});\n return acceptObject;\n }\n\n const renderFileIcon = (file: any) => {\n const fileType = file?.type.split(\"/\")[0];\n switch (fileType) {\n case \"image\":\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#FFEBEB\" }}\n >\n <Avatar size={20} src={images.upload.documentPDF}></Avatar>\n </div>\n );\n case \"application\":\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#FFEBEB\" }}\n >\n <Avatar size={20} src={images.upload.documentPDF}></Avatar>\n </div>\n );\n case \"text\":\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#EBF9F2\" }}\n >\n <Avatar size={20} src={images.upload.docFile}></Avatar>\n </div>\n );\n default:\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#EBF9F2\" }}\n >\n <Avatar size={20} src={images.upload.docFile}></Avatar>\n </div>\n );\n }\n };\n\n const BASE_URL = `${import.meta.env.VITE_BACKEND_BASE_URL}/document/v1/file-upload/`;\n\n const handleConfirm = async () => {\n setIsUploading(true);\n // Create a new AbortController for each confirmation\n const controller = new AbortController();\n setAbortController(controller);\n \n const filteredFiles = files.filter((file : any) => file.status !== \"canceled\").length;\n for (let i = 0; i < files.length; i++) {\n if (files[i].uploadProgress === 100 || files[i].status !== \"pending\") {\n continue;\n }\n\n const file = files[i];\n \n const fileSize = file?.fileSize;\n try {\n if (fileSize > 10 * 1024 * 1024) {\n const uploadResponse = await handleMultipartUpload(file, i, controller);\n if (uploadResponse) {\n setTimeout(()=>{fileUploaded(true) } , 1000);\n }\n } else {\n await handleRegularUpload(file, i, controller, filteredFiles);\n }\n } catch (error: any) {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[i] = {\n ...updatedFiles[i],\n status: \"failed\",\n message: error.message || \"Internal Server Error\",\n };\n return updatedFiles;\n });\n } finally {\n setIsUploading(false);\n }\n }\n };\n\n\n \n\n let tempCount = 0;\n const handleRegularUpload = async (\n file: any,\n index: number,\n controller: any,\n fileCount : number\n ) => {\n try {\n const format = ['docx', 'doc', 'csv', 'pdf', 'xls', 'xlsx', 'vnd.ms-excel', 'excel', 'txt'];\n const mimeType = file?.mimeType || file?.fileType || '';\n\t\t\tconst isValid = format.some(f => mimeType.includes(f));\n \n if (isValid && file?.fileSize && file?.fileSize >= 5242880) {\n return setToast({\n type: 'alert',\n message: 'File size must be within 5 MB!'\n });\n }\n const preSignedUrlsResponse = await fetch(\n `${BASE_URL}?key=${file?.fileName}&partCount=1&mimeType=${file?.fileType}&is_private=${!file?.isPrivate}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n \"file-size\": file?.fileSize,\n \"x-token\": authToken,\n },\n signal: controller.signal\n },\n );\n const preSignedUrlsData = await preSignedUrlsResponse.json();\n if (preSignedUrlsData?.status_code == 400) {\n // alert(preSignedUrlsData?.message);\n setToast({\n type: 'alert',\n message: preSignedUrlsData?.message\n });\n return;\n }\n const preSignedUrl = preSignedUrlsData.data?.preSignedData?.presignedUrl;\n const location = preSignedUrlsData.data?.preSignedData?.location;\n const partParams = {\n Body: file?.file.slice(0, file?.fileSize),\n url: preSignedUrl,\n };\n const contentLength = file.fileSize;\n // const maxChunkSize = 1024 * 1024 * 1024; // 10 MB maximum chunk size\n // const chunkSize = Math.min(contentLength * 0.1, maxChunkSize);\n const chunkSize = 1024 * 1024 * 1024 * 1024 // 1MB chunk size\n let bytesUploaded = 0;\n\n while (bytesUploaded < contentLength) {\n const start = bytesUploaded;\n const end = Math.min(bytesUploaded + chunkSize, contentLength);\n\n // Send chunk of the file\n await fetch(partParams.url, {\n method: \"PUT\",\n body: file.file.slice(start, end),\n headers: {\n \"Content-Type\": \"application/octet-stream\",\n },\n });\n\n // Update progress\n bytesUploaded = end;\n const progress = Math.round((bytesUploaded / contentLength) * 100);\n\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n checkboxDisabled: true,\n status: \"uploading\",\n uploadProgress: progress,\n };\n return updatedFiles;\n });\n }\n \n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"completed\",\n location ,\n message: \"Uploaded Successfully\",\n };\n tempCount = tempCount + 1;\n \n if(fileCount == tempCount){\n onSubmit(updatedFiles);\n tempCount = 0;\n \n }\n return updatedFiles;\n });\n } catch (error: any) {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"failed\",\n message: error.message || \"Internal Server Error\",\n };\n return updatedFiles;\n });\n }\n \n };\n\n const handleMultipartUpload = async (\n file: any,\n index: number,\n controller: any,\n ) => {\n\n try {\n const partSize =\n (getInternetSpeed() || 10) * 1024 * 1024 < 5 * 1024 * 1024\n ? 5 * 1024 * 1024\n : (getInternetSpeed() || 10) * 1024 * 1024;\n const parts = Math.ceil(file?.fileSize / partSize);\n const preSignedUrlsResponse = await fetch(\n `${BASE_URL}?key=${file?.fileName}&partCount=${parts}&mimeType=${file?.fileType}&is_private=${!file?.isPrivate}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n \"file-size\": file?.fileSize,\n \"x-token\": authToken,\n },\n signal: controller.signal,\n },\n );\n const preSignedUrlsData = await preSignedUrlsResponse.json();\n\n if (preSignedUrlsData && preSignedUrlsData?.status_code && preSignedUrlsData?.status_code == 400) {\n setToast({ message: preSignedUrlsData?.message || \"Internal Server Error\", type: \"error\" });\n return null;\n }\n\n const preSignedUrls = preSignedUrlsData.data.preSignedData?.preSignedUrls;\n if (preSignedUrls.length > 0) { \n const uploadId =\n preSignedUrls[0].presignedUrl.match(/uploadId=([^&]+)/)[1];\n for (let i = 0; i < preSignedUrls.length; i++) {\n const partNum = preSignedUrls[i].partNumber;\n const preSignedUrl = preSignedUrls[i].presignedUrl;\n const start = (partNum - 1) * partSize;\n const end = Math.min(start + partSize, file?.fileSize);\n const partParams = {\n Body: file?.file?.slice(start, end),\n url: preSignedUrl,\n };\n await fetch(partParams.url, {\n method: \"PUT\",\n body: partParams.Body,\n headers: {\n \"Content-Type\": \"application/octet-stream\",\n },\n });\n const progress = Math.round(((i + 1) * 100) / parts);\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n checkboxDisabled: true,\n status: \"uploading\",\n uploadProgress: progress,\n };\n return updatedFiles;\n });\n }\n const markCompleteResponse = await fetch(`${BASE_URL}mark-complete`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-token\": authToken,\n },\n body: JSON.stringify({\n fileName: file?.fileName,\n uploadId: uploadId,\n }),\n });\n const markCompleteData = await markCompleteResponse.json();\n const location = markCompleteData?.data?.location;\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"completed\",\n location: location,\n message: \"Uploaded Successfully\",\n };\n \n onSubmit(updatedFiles);\n return updatedFiles;\n });\n } else {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"failed\",\n message: \"Did not get pre-signed URLs\",\n };\n return updatedFiles;\n });\n }\n } catch (error: any) {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"failed\",\n message: error.message || \"Internal Server Error\",\n };\n return updatedFiles;\n });\n }\n };\n\n const handleChipClick = () => {\n if (fileInputRef.current) {\n // If multiple is true, set input for multiple files\n if (props.multiple) {\n fileInputRef.current.setAttribute(\"multiple\", \"true\");\n } else {\n // If multiple is false, set input for a single file\n fileInputRef.current.removeAttribute(\"multiple\");\n }\n fileInputRef.current.click();\n }\n };\n\n //checking if the file already exists or not in the drive \n const handleFileChange = (e: any) => {\n \n const selectedFiles = e.target.files;\n \n const fileTitles = Array.from(selectedFiles).map(file => {\n const fileName = file.name;\n const nameWithoutExtension = fileName.substring(0, fileName.lastIndexOf('.')) || fileName;\n return nameWithoutExtension;\n })[0];\n\n setSelectedFileTitle(fileTitles);\n\n setIsConfirmDialogOpen(allDriveData?.includes(fileTitles));\n const newFiles = Array.from(selectedFiles).map((file: any) => ({\n file,\n isPrivate: false,\n checkboxDisabled: false,\n status: \"pending\",\n uploadProgress: 0,\n fileSize: file?.size,\n fileName: file?.name,\n fileType: file?.type,\n location: \"\",\n message: \"\",\n }));\n setFiles((prevFiles: any) => [...prevFiles, ...newFiles]);\n setIsUploading(false);\n \n\n };\n\n const removeFile = (indexToRemove: number) => {\n \n setFiles((prevFiles) =>\n prevFiles.map((file, index) =>\n index === indexToRemove ? { ...file, status: \"canceled\" } : file,\n ),\n );\n\n };\n\n\n\n const toggleIsPrivate = (index: number) => {\n setFiles((prevFiles) =>\n prevFiles.map((item, i) =>\n i === index ? { ...item, isPrivate: !item.isPrivate } : item,\n ),\n );\n };\n\n const toggleCollapse = () => {\n setIsCollapsed((prevIsCollapsed) => !prevIsCollapsed);\n };\n\n const handleMinimizeClick = () => {\n setIsDialogMinimized(!isDialogMinimized);\n isDialogMinimized ? onConfirm() : onClose();\n };\n\n const handleDialogClose = () => {\n if (files.length > 0) {\n if (\n confirm(\n \"Your uploads are not complete. Would you like to cancel all ongoing uploads?\",\n )\n ) {\n // Abort the ongoing requests when the dialog is closed\n abortController.abort();\n if (abortController?.signal?.aborted) {\n onClose();\n }\n setFiles([]);\n }\n } else {\n onClose();\n }\n };\n useEffect(() => {\n open && setFiles([]);\n }, [open]);\n\n const onCloseConfirmPopup = () => {\n setIsConfirmDialogOpen(false);\n }\n\n const onReplace = async () => {\n const baseUrl = `${import.meta.env.VITE_BACKEND_BASE_URL}`;\n const fileId = existingDriveData?.filter(file => file.title === selectedFileTitle)[0].id;\n const headers = {\n \"Content-type\": \"application/json; charset=utf-8\",\n };\n const authToken = localStorage.getItem(auth.storageTokenKeyName) || '';\n headers[\"x-token\"] = authToken;\n await fetch(`${baseUrl}/document/v1/drive/${fileId}`, {\n method: \"DELETE\",\n headers,\n });\n\n onCloseConfirmPopup();\n }\n\n const onKeepBoth = () => {\n onCloseConfirmPopup();\n }\n return (\n <>\n <Dialog open={open} onClose={onClose} className=\"upload\">\n <DialogTitle className=\"upload--head\">\n <Box className=\"upload--title\">\n <Typography\n type=\"s3\"\n ml={1}\n weight=\"medium\"\n color=\"theme.secondary.1000\"\n >\n {title}\n </Typography>\n </Box>\n <div>\n <IconButton disableRipple onClick={handleMinimizeClick}>\n <RemoveIcon />\n </IconButton>\n <IconButton disableRipple onClick={handleDialogClose}>\n <CloseIcon />\n </IconButton>\n </div>\n </DialogTitle>\n <Divider />\n <DialogContent className=\"upload--content\">\n {files.length === 0 ? (\n <div\n className={`upload--fileContent ${isDragActive ? \"drag-active\" : \"\"\n }`}\n >\n <div {...getRootProps()} className=\"drop-view\">\n {!isDragOver ? (\n <>\n <input {...getInputProps()} ref={fileInputRef} />\n <p className=\"upload--text\">\n Drag and Drop files here or upload from\n </p>\n\n <div className=\"device-wrap\">\n <div className=\"select-button\" onClick={handleChipClick}>\n <img src={images.upload.monitor} />\n <Typography type=\"s5\">My Device</Typography>\n <input\n type=\"file\"\n {...getInputProps({ multiple: true })}\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={async () => {\n // handleFileChange(e) ; \n handleConfirm();\n }}\n accept={accept}\n />\n </div>\n <div className=\"select-button\" onClick={handleChipClick}>\n <img src={images.upload.camera} />\n <Typography type=\"s5\">Camera</Typography>\n <input\n type=\"file\"\n {...getInputProps({ multiple: true })}\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={handleFileChange}\n accept={accept}\n />\n </div>\n </div>\n </>\n ) : (\n <div className=\"after-drop\">\n <img src={images.upload.documentUpload} />\n <Typography type=\"s3\">\n Drag & Drop your files here\n </Typography>\n </div>\n )}\n </div>\n </div>\n ) : (\n <div className=\"main-container\">\n <div className=\"body-section\">\n <div className=\"document-section\">\n <div className=\"document-body\">\n {files.map((file: any, index: number) => (\n <div className=\"upload-list\" key={index}>\n <div className=\"document-cover\" key={file?.file?.name}>\n <div className=\"document-name\">\n {renderFileIcon(file?.file)}\n <div className=\"document-title\">\n <div className=\"document-box\">\n <div className=\"document-desc\">\n {file?.file?.name}\n </div>\n <div className=\"document-size\">\n {formatBytes(file?.file?.size)}\n <span\n className={\n file?.status === \"completed\" &&\n file?.message.length > 0\n ? \"success-file\"\n : \"fail-file\"\n }\n >\n {file?.message}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div className=\"document-choices\">\n {file?.status !== \"canceled\" ? (\n <>\n <div className=\"checkbox\">\n <Checkbox\n checked={file?.isPrivate || type == 'public'}\n onChange={() => toggleIsPrivate(index)}\n disabled={file?.checkboxDisabled || type == 'public'}\n />\n <div className=\"checkbox-text\">Public</div>\n </div>\n <div\n className=\"delete-icon\"\n onClick={() => removeFile(index)}\n >\n <Avatar\n size={24}\n src={images.upload.trash}\n ></Avatar>\n </div>\n </>\n ) : (\n <Typography type=\"s4\" className=\"canceled-text\">\n Upload Canceled\n </Typography>\n )}\n </div>\n </div>\n <div className=\"document-progress\">\n {file?.uploadProgress > 0 && (\n <LinearProgress\n color=\"success\"\n variant=\"determinate\"\n value={file?.uploadProgress}\n />\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n {multiple && (\n <>\n <Chip\n className=\"add-file\"\n variant=\"outlined\"\n type=\"normal\"\n label={\"Add File\"}\n icon={<Add />}\n onClick={handleChipClick}\n />\n <input\n type=\"file\"\n {...getInputProps({ multiple: true })}\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={handleFileChange}\n accept={accept}\n />\n </>\n )}\n </div>\n </div>\n )}\n </DialogContent>\n <Divider />\n <DialogActions className=\"upload--actions\">\n <Button variant=\"text\" onClick={handleDialogClose}>\n Cancel\n </Button>\n <Button\n color=\"secondary\"\n onClick={handleConfirm}\n disabled={!files.length || isUploading}\n >\n Upload\n </Button>\n </DialogActions>\n </Dialog>\n {isDialogMinimized && (\n <div className=\"bottom-corner-box\">\n <div className=\"top-section\">\n <div className=\"top-text\">\n Uploading {files.length} Item{files.length !== 1 ? \"s\" : \"\"}\n </div>\n <div className=\"top-options\">\n <div className=\"btn\" onClick={handleMinimizeClick}>\n <RemoveIcon />\n </div>\n <div className=\"btn\" onClick={toggleCollapse}>\n <div className=\"arrow-btn\">\n {isCollapsed ? <KeyboardArrowUp /> : <KeyboardArrowDown />}\n </div>\n </div>\n <div className=\"btn\" onClick={handleDialogClose}>\n <Clear />\n </div>\n </div>\n </div>\n <div className=\"box-list\">\n {!isCollapsed &&\n files.map((file: any, index: number) => (\n <div className=\"bottom-section\">\n <div className=\"doc-icon\">{renderFileIcon(file?.file)}</div>\n <div className=\"file-detail\">\n <div className=\"file-name\">\n <div className=\"file-text\">\n {file?.file?.name}\n {index}\n </div>\n </div>\n <div className=\"file-status\">\n {file?.status !== \"canceled\" ? (\n <>\n {file.uploadProgress === 0 && (\n <div className=\"avatar-container\">\n <Avatar\n size={20}\n className=\"avatar\"\n src={images.upload.empty}\n ></Avatar>\n <Avatar\n size={20}\n onClick={() => removeFile(index)}\n src={images.upload.close}\n className=\"close-icon\"\n ></Avatar>\n </div>\n )}\n {file?.uploadProgress > 0 &&\n file?.uploadProgress < 100 && (\n <CircularProgress\n color=\"success\"\n variant=\"determinate\"\n value={file?.uploadProgress}\n />\n )}\n {file?.uploadProgress === 100 && (\n <div className=\"avatar-container\">\n <Avatar\n size={20}\n className=\"avatar\"\n src={images.upload.tick}\n ></Avatar>\n <Avatar\n size={20}\n src={images.upload.folder}\n className=\"close-icon\"\n ></Avatar>\n </div>\n )}\n </>\n ) : (\n <Typography type=\"s4\" className=\"canceled-text\">\n Upload Canceled\n </Typography>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n {isConfirmDialogOpen && <FileConfirmationDialog title={selectedFileTitle} open={isConfirmDialogOpen} onClose={onCloseConfirmPopup} onReplace={onReplace} onKeepBoth={onKeepBoth} isFile = {true} />}\n\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n />\n </>\n );\n};\n\nexport { Upload };\nexport default Upload;\n"],"names":["formatBytes","bytes","decimals","dm","i","Math","floor","log","parseFloat","pow","toFixed","Upload","props","open","title","onClose","onConfirm","accept","onSubmit","multiple","existingDriveData","fileUploaded","type","files","setFiles","useState","isUploading","setIsUploading","isCollapsed","setIsCollapsed","isDialogMinimized","setIsDialogMinimized","isDragOver","setIsDragOver","abortController","setAbortController","AbortController","authToken","localStorage","getItem","auth","storageTokenKeyName","allDriveData","setAllDriveData","isConfirmDialogOpen","setIsConfirmDialogOpen","selectedFileTitle","setSelectedFileTitle","toast","setToast","getRootProps","getInputProps","isDragActive","useDropzone","onDropAccepted","newFiles","map","file","isPrivate","checkboxDisabled","status","uploadProgress","fileSize","size","fileName","name","fileType","location","message","onDragEnter","onDragLeave","noClick","noKeyboard","types","split","item","trim","reduce","acc","fileInputRef","useRef","useEffect","driveTitles","handleBeforeUnload","event","returnValue","current","window","addEventListener","removeEventListener","getInternetSpeed","customNavigator","navigator","connection","downlink","renderFileIcon","jsx","className","style","backgroundColor","children","Avatar","src","images","upload","documentPDF","docFile","BASE_URL","handleConfirm","async","controller","filteredFiles","filter","length","handleMultipartUpload","setTimeout","handleRegularUpload","error","prevFiles","updatedFiles","tempCount","index","fileCount","format","mimeType","some","includes","f","preSignedUrlsResponse","fetch","headers","signal","preSignedUrlsData","json","status_code","preSignedUrl","_b","_a","data","preSignedData","presignedUrl","_d","_c","partParams","Body","slice","url","contentLength","chunkSize","bytesUploaded","start","end","min","method","body","progress","round","partSize","parts","ceil","preSignedUrls","uploadId","match","partNum","partNumber","markCompleteResponse","JSON","stringify","markCompleteData","handleChipClick","setAttribute","removeAttribute","click","handleFileChange","e","selectedFiles","target","fileTitles","Array","from","substring","lastIndexOf","removeFile","indexToRemove","handleMinimizeClick","handleDialogClose","confirm","abort","aborted","onCloseConfirmPopup","jsxs","Fragment","Dialog","DialogTitle","Box","Typography","ml","weight","color","IconButton","disableRipple","onClick","RemoveIcon","CloseIcon","Divider","DialogContent","documentUpload","ref","monitor","display","onChange","camera","Checkbox","checked","toggleIsPrivate","disabled","trash","LinearProgress","variant","value","Chip","label","icon","Add","DialogActions","Button","prevIsCollapsed","KeyboardArrowUp","KeyboardArrowDown","Clear","empty","close","CircularProgress","tick","folder","FileConfirmationDialog","onReplace","fileId","id","onKeepBoth","isFile","Toast","Boolean","handleClose","anchorOrigin","horizontal","vertical"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/upload/upload.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\n\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Typography from \"../typography/typography\";\nimport Box from \"@mui/material/Box\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport \"./upload.scss\";\nimport { useDropzone } from \"react-dropzone\";\nimport Toast from '../toast/toast';\nimport {\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n} from \"@mui/material\";\nimport RemoveIcon from \"@mui/icons-material/Remove\";\nimport { Add } from \"@mui/icons-material\";\nimport Button from \"../button/button\";\nimport Checkbox from \"../checkbox/checkbox\";\nimport Avatar from \"../avatar/avatar\";\nimport images from \"../../assets/images\";\nimport Chip from \"../chip/chip\";\nimport { auth } from \"../../constants/auth\";\nimport { KeyboardArrowDown, KeyboardArrowUp, Clear } from \"@mui/icons-material\";\nimport FileConfirmationDialog from \"./file-confirmation\"\n\n\ninterface UploadProps {\n open: boolean;\n title: string;\n multiple?: boolean;\n accept?: string;\n onClose: () => void;\n onConfirm: () => void;\n onSubmit: (files: any[]) => void;\n existingDriveData?: any;\n fileUploaded?: (value: boolean) => void | undefined;\n type: any\n\n\n}\ninterface CustomNavigator extends Navigator {\n connection?: {\n downlink?: number;\n };\n}\nconst formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\n};\n\nconst Upload = (props: UploadProps) => {\n const {\n open,\n title,\n onClose,\n onConfirm,\n accept = \"*\",\n onSubmit,\n multiple = true,\n existingDriveData,\n fileUploaded , \n type\n \n } = props;\n\n const [files, setFiles] = useState<\n {\n file: File;\n isPrivate: boolean;\n checkboxDisabled: boolean;\n status: string;\n uploadProgress: number;\n fileSize: number;\n fileName: string;\n fileType: string;\n location: string;\n message: string;\n }[]\n >([]);\n\n interface IToast {\n type: 'normal' | 'alert';\n message: string;\n }\n const [isUploading, setIsUploading] = useState(false);\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [isDialogMinimized, setIsDialogMinimized] = useState(false);\n const [isDragOver, setIsDragOver] = useState(false);\n const [abortController, setAbortController] = useState(new AbortController());\n const authToken = localStorage.getItem(auth.storageTokenKeyName);\n const [allDriveData, setAllDriveData] = useState();\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [selectedFileTitle, setSelectedFileTitle] = useState();\n const [toast, setToast] = useState<IToast | null>(null);\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDropAccepted: (newFiles) => {\n setFiles([\n ...files,\n ...newFiles.map((file) => ({\n file,\n isPrivate: false,\n checkboxDisabled: false,\n status: \"pending\",\n uploadProgress: 0,\n fileSize: file.size,\n fileName: file.name,\n fileType: file.type,\n location: \"\",\n message: \"\",\n })),\n ]);\n setIsDragOver(false);\n },\n onDragEnter: () => {\n setIsDragOver(true);\n },\n onDragLeave: () => {\n setIsDragOver(false);\n },\n noClick: true,\n noKeyboard: true,\n multiple: multiple,\n accept: accept ? convertAcceptObject(accept) : accept,\n });\n\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n const driveTitles = existingDriveData?.map(item => item['title'])\n setAllDriveData(driveTitles);\n }, [existingDriveData]);\n\n useEffect(() => {\n const handleBeforeUnload = (event: any) => {\n if (isUploading) {\n const message =\n \"Are you sure you want to leave? Your uploads are not complete.\";\n event.returnValue = message; // Standard for most browsers\n return message; // For some older browsers\n }\n };\n if (fileInputRef.current) {\n fileInputRef.current.multiple = multiple;\n }\n\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n\n return () => {\n // Clean up the event listener when the component unmounts\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n };\n }, [isUploading, multiple]);\n\n const getInternetSpeed = () => {\n const customNavigator = navigator as CustomNavigator;\n if (\"connection\" in customNavigator && customNavigator.connection) {\n return customNavigator.connection.downlink;\n } else {\n return null;\n }\n };\n\n function convertAcceptObject(types: string) {\n const accepts = types.split(\",\").map((item) => item.trim());\n const acceptObject = accepts.reduce((acc: any, type: string) => {\n acc[type] = [];\n return acc;\n }, {});\n return acceptObject;\n }\n\n const renderFileIcon = (file: any) => {\n const fileType = file?.type.split(\"/\")[0];\n switch (fileType) {\n case \"image\":\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#FFEBEB\" }}\n >\n <Avatar size={20} src={images.upload.documentPDF}></Avatar>\n </div>\n );\n case \"application\":\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#FFEBEB\" }}\n >\n <Avatar size={20} src={images.upload.documentPDF}></Avatar>\n </div>\n );\n case \"text\":\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#EBF9F2\" }}\n >\n <Avatar size={20} src={images.upload.docFile}></Avatar>\n </div>\n );\n default:\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#EBF9F2\" }}\n >\n <Avatar size={20} src={images.upload.docFile}></Avatar>\n </div>\n );\n }\n };\n\n const BASE_URL = `${import.meta.env.VITE_BACKEND_BASE_URL}/document/v1/file-upload/`;\n\n const handleConfirm = async () => {\n setIsUploading(true);\n // Create a new AbortController for each confirmation\n const controller = new AbortController();\n setAbortController(controller);\n \n const filteredFiles = files.filter((file : any) => file.status !== \"canceled\").length;\n for (let i = 0; i < files.length; i++) {\n if (files[i].uploadProgress === 100 || files[i].status !== \"pending\") {\n continue;\n }\n\n const file = files[i];\n \n const fileSize = file?.fileSize;\n try {\n if (fileSize > 10 * 1024 * 1024) {\n const uploadResponse = await handleMultipartUpload(file, i, controller);\n if (uploadResponse) {\n setTimeout(()=>{fileUploaded(true) } , 1000);\n }\n } else {\n await handleRegularUpload(file, i, controller, filteredFiles);\n }\n } catch (error: any) {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[i] = {\n ...updatedFiles[i],\n status: \"failed\",\n message: error.message || \"Internal Server Error\",\n };\n return updatedFiles;\n });\n } finally {\n setIsUploading(false);\n }\n }\n };\n\n\n \n\n let tempCount = 0;\n const handleRegularUpload = async (\n file: any,\n index: number,\n controller: any,\n fileCount : number\n ) => {\n try {\n const format = ['docx', 'doc', 'csv', 'pdf', 'xls', 'xlsx', 'vnd.ms-excel', 'excel', 'txt'];\n const mimeType = file?.mimeType || file?.fileType || '';\n\t\t\tconst isValid = format.some(f => mimeType.includes(f));\n \n if (isValid && file?.fileSize && file?.fileSize >= 5242880) {\n return setToast({\n type: 'alert',\n message: 'File size must be within 5 MB!'\n });\n }\n const preSignedUrlsResponse = await fetch(\n `${BASE_URL}?key=${file?.fileName}&partCount=1&mimeType=${file?.fileType}&is_private=${!file?.isPrivate}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n \"file-size\": file?.fileSize,\n \"x-token\": authToken,\n },\n signal: controller.signal\n },\n );\n const preSignedUrlsData = await preSignedUrlsResponse.json();\n if (preSignedUrlsData?.status_code == 400) {\n // alert(preSignedUrlsData?.message);\n setToast({\n type: 'alert',\n message: preSignedUrlsData?.message\n });\n return;\n }\n const preSignedUrl = preSignedUrlsData.data?.preSignedData?.presignedUrl;\n const location = preSignedUrlsData.data?.preSignedData?.location;\n const partParams = {\n Body: file?.file.slice(0, file?.fileSize),\n url: preSignedUrl,\n };\n const contentLength = file.fileSize;\n // const maxChunkSize = 1024 * 1024 * 1024; // 10 MB maximum chunk size\n // const chunkSize = Math.min(contentLength * 0.1, maxChunkSize);\n const chunkSize = 1024 * 1024 * 1024 * 1024 // 1MB chunk size\n let bytesUploaded = 0;\n\n while (bytesUploaded < contentLength) {\n const start = bytesUploaded;\n const end = Math.min(bytesUploaded + chunkSize, contentLength);\n\n // Send chunk of the file\n await fetch(partParams.url, {\n method: \"PUT\",\n body: file.file.slice(start, end),\n headers: {\n \"Content-Type\": \"application/octet-stream\",\n },\n });\n\n // Update progress\n bytesUploaded = end;\n const progress = Math.round((bytesUploaded / contentLength) * 100);\n\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n checkboxDisabled: true,\n status: \"uploading\",\n uploadProgress: progress,\n };\n return updatedFiles;\n });\n }\n \n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"completed\",\n location ,\n message: \"Uploaded Successfully\",\n };\n tempCount = tempCount + 1;\n \n if(fileCount == tempCount){\n onSubmit(updatedFiles);\n tempCount = 0;\n \n }\n return updatedFiles;\n });\n } catch (error: any) {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"failed\",\n message: error.message || \"Internal Server Error\",\n };\n return updatedFiles;\n });\n }\n \n };\n\n const handleMultipartUpload = async (\n file: any,\n index: number,\n controller: any,\n ) => {\n\n try {\n const partSize =\n (getInternetSpeed() || 10) * 1024 * 1024 < 5 * 1024 * 1024\n ? 5 * 1024 * 1024\n : (getInternetSpeed() || 10) * 1024 * 1024;\n const parts = Math.ceil(file?.fileSize / partSize);\n const preSignedUrlsResponse = await fetch(\n `${BASE_URL}?key=${file?.fileName}&partCount=${parts}&mimeType=${file?.fileType}&is_private=${!file?.isPrivate}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n \"file-size\": file?.fileSize,\n \"x-token\": authToken,\n },\n signal: controller.signal,\n },\n );\n const preSignedUrlsData = await preSignedUrlsResponse.json();\n\n if (preSignedUrlsData && preSignedUrlsData?.status_code && preSignedUrlsData?.status_code == 400) {\n setToast({ message: preSignedUrlsData?.message || \"Internal Server Error\", type: \"error\" });\n return null;\n }\n\n const preSignedUrls = preSignedUrlsData.data.preSignedData?.preSignedUrls;\n if (preSignedUrls.length > 0) { \n const uploadId =\n preSignedUrls[0].presignedUrl.match(/uploadId=([^&]+)/)[1];\n for (let i = 0; i < preSignedUrls.length; i++) {\n const partNum = preSignedUrls[i].partNumber;\n const preSignedUrl = preSignedUrls[i].presignedUrl;\n const start = (partNum - 1) * partSize;\n const end = Math.min(start + partSize, file?.fileSize);\n const partParams = {\n Body: file?.file?.slice(start, end),\n url: preSignedUrl,\n };\n await fetch(partParams.url, {\n method: \"PUT\",\n body: partParams.Body,\n headers: {\n \"Content-Type\": \"application/octet-stream\",\n },\n });\n const progress = Math.round(((i + 1) * 100) / parts);\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n checkboxDisabled: true,\n status: \"uploading\",\n uploadProgress: progress,\n };\n return updatedFiles;\n });\n }\n const markCompleteResponse = await fetch(`${BASE_URL}mark-complete`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-token\": authToken,\n },\n body: JSON.stringify({\n fileName: file?.fileName,\n uploadId: uploadId,\n }),\n });\n const markCompleteData = await markCompleteResponse.json();\n const location = markCompleteData?.data?.location;\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"completed\",\n location: location,\n message: \"Uploaded Successfully\",\n };\n \n onSubmit(updatedFiles);\n return updatedFiles;\n });\n } else {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"failed\",\n message: \"Did not get pre-signed URLs\",\n };\n return updatedFiles;\n });\n }\n } catch (error: any) {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"failed\",\n message: error.message || \"Internal Server Error\",\n };\n return updatedFiles;\n });\n }\n };\n\n const handleChipClick = () => {\n if (fileInputRef.current) {\n // If multiple is true, set input for multiple files\n if (props.multiple) {\n fileInputRef.current.setAttribute(\"multiple\", \"true\");\n } else {\n // If multiple is false, set input for a single file\n fileInputRef.current.removeAttribute(\"multiple\");\n }\n fileInputRef.current.click();\n }\n };\n\n //checking if the file already exists or not in the drive \n const handleFileChange = (e: any) => {\n \n const selectedFiles = e.target.files;\n \n const fileTitles = Array.from(selectedFiles).map(file => {\n const fileName = file.name;\n const nameWithoutExtension = fileName.substring(0, fileName.lastIndexOf('.')) || fileName;\n return nameWithoutExtension;\n })[0];\n\n setSelectedFileTitle(fileTitles);\n\n setIsConfirmDialogOpen(allDriveData?.includes(fileTitles));\n const newFiles = Array.from(selectedFiles).map((file: any) => ({\n file,\n isPrivate: false,\n checkboxDisabled: false,\n status: \"pending\",\n uploadProgress: 0,\n fileSize: file?.size,\n fileName: file?.name,\n fileType: file?.type,\n location: \"\",\n message: \"\",\n }));\n setFiles((prevFiles: any) => [...prevFiles, ...newFiles]);\n setIsUploading(false);\n \n\n };\n\n const removeFile = (indexToRemove: number) => {\n \n setFiles((prevFiles) =>\n prevFiles.map((file, index) =>\n index === indexToRemove ? { ...file, status: \"canceled\" } : file,\n ),\n );\n\n };\n\n\n\n const toggleIsPrivate = (index: number) => {\n setFiles((prevFiles) =>\n prevFiles.map((item, i) =>\n i === index ? { ...item, isPrivate: !item.isPrivate } : item,\n ),\n );\n };\n\n const toggleCollapse = () => {\n setIsCollapsed((prevIsCollapsed) => !prevIsCollapsed);\n };\n\n const handleMinimizeClick = () => {\n setIsDialogMinimized(!isDialogMinimized);\n isDialogMinimized ? onConfirm() : onClose();\n };\n\n const handleDialogClose = () => {\n if (files.length > 0) {\n if (\n confirm(\n \"Your uploads are not complete. Would you like to cancel all ongoing uploads?\",\n )\n ) {\n // Abort the ongoing requests when the dialog is closed\n abortController.abort();\n if (abortController?.signal?.aborted) {\n onClose();\n }\n setFiles([]);\n }\n } else {\n onClose();\n }\n };\n useEffect(() => {\n open && setFiles([]);\n }, [open]);\n\n const onCloseConfirmPopup = () => {\n setIsConfirmDialogOpen(false);\n }\n\n const onReplace = async () => {\n const baseUrl = `${import.meta.env.VITE_BACKEND_BASE_URL}`;\n const fileId = existingDriveData?.filter(file => file.title === selectedFileTitle)[0].id;\n const headers = {\n \"Content-type\": \"application/json; charset=utf-8\",\n };\n const authToken = localStorage.getItem(auth.storageTokenKeyName) || '';\n headers[\"x-token\"] = authToken;\n await fetch(`${baseUrl}/document/v1/drive/${fileId}`, {\n method: \"DELETE\",\n headers,\n });\n\n onCloseConfirmPopup();\n }\n\n const onKeepBoth = () => {\n onCloseConfirmPopup();\n }\n return (\n <>\n <Dialog open={open} onClose={onClose} className=\"upload\">\n <DialogTitle className=\"upload--head\">\n <Box className=\"upload--title\">\n <Typography\n type=\"s3\"\n ml={1}\n weight=\"medium\"\n color=\"theme.secondary.1000\"\n >\n {title}\n </Typography>\n </Box>\n <div>\n <IconButton disableRipple onClick={handleMinimizeClick}>\n <RemoveIcon />\n </IconButton>\n <IconButton disableRipple onClick={handleDialogClose}>\n <CloseIcon />\n </IconButton>\n </div>\n </DialogTitle>\n <Divider />\n <DialogContent className=\"upload--content\">\n {files.length === 0 ? (\n <div\n className={`upload--fileContent ${isDragActive ? \"drag-active\" : \"\"\n }`}\n >\n <div {...getRootProps()} className=\"drop-view\">\n {!isDragOver ? (\n <>\n <input {...getInputProps()} ref={fileInputRef} />\n <p className=\"upload--text\">\n Drag and Drop files here or upload from\n </p>\n\n <div className=\"device-wrap\">\n <div className=\"select-button\" onClick={handleChipClick}>\n <img src={images.upload.monitor} />\n <Typography type=\"s5\">My Device</Typography>\n <input\n type=\"file\"\n {...getInputProps({ multiple: true })}\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={async () => {\n // handleFileChange(e) ; \n handleConfirm();\n }}\n accept={accept}\n />\n </div>\n <div className=\"select-button\" onClick={handleChipClick}>\n <img src={images.upload.camera} />\n <Typography type=\"s5\">Camera</Typography>\n <input\n type=\"file\"\n {...getInputProps({ multiple: true })}\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={handleFileChange}\n accept={accept}\n />\n </div>\n </div>\n </>\n ) : (\n <div className=\"after-drop\">\n <img src={images.upload.documentUpload} />\n <Typography type=\"s3\">\n Drag & Drop your files here\n </Typography>\n </div>\n )}\n </div>\n </div>\n ) : (\n <div className=\"main-container\">\n <div className=\"body-section\">\n <div className=\"document-section\">\n <div className=\"document-body\">\n {files.map((file: any, index: number) => (\n <div className=\"upload-list\" key={index}>\n <div className=\"document-cover\" key={file?.file?.name}>\n <div className=\"document-name\">\n {renderFileIcon(file?.file)}\n <div className=\"document-title\">\n <div className=\"document-box\">\n <div className=\"document-desc\">\n {file?.file?.name}\n </div>\n <div className=\"document-size\">\n {formatBytes(file?.file?.size)}\n <span\n className={\n file?.status === \"completed\" &&\n file?.message.length > 0\n ? \"success-file\"\n : \"fail-file\"\n }\n >\n {file?.message}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div className=\"document-choices\">\n {file?.status !== \"canceled\" ? (\n <>\n <div className=\"checkbox\">\n <Checkbox\n checked={file?.isPrivate || type == 'public'}\n onChange={() => toggleIsPrivate(index)}\n disabled={file?.checkboxDisabled || type == 'public'}\n />\n <div className=\"checkbox-text\">Public</div>\n </div>\n <div\n className=\"delete-icon\"\n onClick={() => removeFile(index)}\n >\n <Avatar\n size={24}\n src={images.upload.trash}\n ></Avatar>\n </div>\n </>\n ) : (\n <Typography type=\"s4\" className=\"canceled-text\">\n Upload Canceled\n </Typography>\n )}\n </div>\n </div>\n <div className=\"document-progress\">\n {file?.uploadProgress > 0 && (\n <LinearProgress\n color=\"success\"\n variant=\"determinate\"\n value={file?.uploadProgress}\n />\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n {multiple && (\n <>\n <Chip\n className=\"add-file\"\n variant=\"outlined\"\n type=\"normal\"\n label={\"Add File\"}\n icon={<Add />}\n onClick={handleChipClick}\n />\n <input\n type=\"file\"\n {...getInputProps({ multiple: true })}\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={handleFileChange}\n accept={accept}\n />\n </>\n )}\n </div>\n </div>\n )}\n </DialogContent>\n <Divider />\n <DialogActions className=\"upload--actions\">\n <Button variant=\"text\" onClick={handleDialogClose}>\n Cancel\n </Button>\n <Button\n color=\"secondary\"\n onClick={handleConfirm}\n disabled={!files.length || isUploading}\n >\n Upload\n </Button>\n </DialogActions>\n </Dialog>\n {isDialogMinimized && (\n <div className=\"bottom-corner-box\">\n <div className=\"top-section\">\n <div className=\"top-text\">\n Uploading {files.length} Item{files.length !== 1 ? \"s\" : \"\"}\n </div>\n <div className=\"top-options\">\n <div className=\"btn\" onClick={handleMinimizeClick}>\n <RemoveIcon />\n </div>\n <div className=\"btn\" onClick={toggleCollapse}>\n <div className=\"arrow-btn\">\n {isCollapsed ? <KeyboardArrowUp /> : <KeyboardArrowDown />}\n </div>\n </div>\n <div className=\"btn\" onClick={handleDialogClose}>\n <Clear />\n </div>\n </div>\n </div>\n <div className=\"box-list\">\n {!isCollapsed &&\n files.map((file: any, index: number) => (\n <div className=\"bottom-section\">\n <div className=\"doc-icon\">{renderFileIcon(file?.file)}</div>\n <div className=\"file-detail\">\n <div className=\"file-name\">\n <div className=\"file-text\">\n {file?.file?.name}\n {index}\n </div>\n </div>\n <div className=\"file-status\">\n {file?.status !== \"canceled\" ? (\n <>\n {file.uploadProgress === 0 && (\n <div className=\"avatar-container\">\n <Avatar\n size={20}\n className=\"avatar\"\n src={images.upload.empty}\n ></Avatar>\n <Avatar\n size={20}\n onClick={() => removeFile(index)}\n src={images.upload.close}\n className=\"close-icon\"\n ></Avatar>\n </div>\n )}\n {file?.uploadProgress > 0 &&\n file?.uploadProgress < 100 && (\n <CircularProgress\n color=\"success\"\n variant=\"determinate\"\n value={file?.uploadProgress}\n />\n )}\n {file?.uploadProgress === 100 && (\n <div className=\"avatar-container\">\n <Avatar\n size={20}\n className=\"avatar\"\n src={images.upload.tick}\n ></Avatar>\n <Avatar\n size={20}\n src={images.upload.folder}\n className=\"close-icon\"\n ></Avatar>\n </div>\n )}\n </>\n ) : (\n <Typography type=\"s4\" className=\"canceled-text\">\n Upload Canceled\n </Typography>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n {isConfirmDialogOpen && <FileConfirmationDialog title={selectedFileTitle} open={isConfirmDialogOpen} onClose={onCloseConfirmPopup} onReplace={onReplace} onKeepBoth={onKeepBoth} isFile = {true} />}\n\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n />\n </>\n );\n};\n\nexport { Upload };\nexport default Upload;\n"],"names":["formatBytes","bytes","decimals","dm","i","Math","floor","log","parseFloat","pow","toFixed","Upload","props","open","title","onClose","onConfirm","accept","onSubmit","multiple","existingDriveData","fileUploaded","type","files","setFiles","useState","isUploading","setIsUploading","isCollapsed","setIsCollapsed","isDialogMinimized","setIsDialogMinimized","isDragOver","setIsDragOver","abortController","setAbortController","AbortController","authToken","localStorage","getItem","auth","storageTokenKeyName","allDriveData","setAllDriveData","isConfirmDialogOpen","setIsConfirmDialogOpen","selectedFileTitle","setSelectedFileTitle","toast","setToast","getRootProps","getInputProps","isDragActive","useDropzone","onDropAccepted","newFiles","map","file","isPrivate","checkboxDisabled","status","uploadProgress","fileSize","size","fileName","name","fileType","location","message","onDragEnter","onDragLeave","noClick","noKeyboard","types","split","item","trim","reduce","acc","fileInputRef","useRef","useEffect","driveTitles","handleBeforeUnload","event","returnValue","current","window","addEventListener","removeEventListener","getInternetSpeed","customNavigator","navigator","connection","downlink","renderFileIcon","jsx","className","style","backgroundColor","children","Avatar","src","images","upload","documentPDF","docFile","BASE_URL","handleConfirm","async","controller","filteredFiles","filter","length","handleMultipartUpload","setTimeout","handleRegularUpload","error","prevFiles","updatedFiles","tempCount","index","fileCount","format","mimeType","some","includes","f","preSignedUrlsResponse","fetch","headers","signal","preSignedUrlsData","json","status_code","preSignedUrl","_b","_a","data","preSignedData","presignedUrl","_d","_c","partParams","Body","slice","url","contentLength","chunkSize","bytesUploaded","start","end","min","method","body","progress","round","partSize","parts","ceil","preSignedUrls","uploadId","match","partNum","partNumber","markCompleteResponse","JSON","stringify","markCompleteData","handleChipClick","setAttribute","removeAttribute","click","handleFileChange","e","selectedFiles","target","fileTitles","Array","from","substring","lastIndexOf","removeFile","indexToRemove","handleMinimizeClick","handleDialogClose","confirm","abort","aborted","onCloseConfirmPopup","jsxs","Fragment","Dialog","DialogTitle","Box","Typography","ml","weight","color","IconButton","disableRipple","onClick","RemoveIcon","CloseIcon","Divider","DialogContent","documentUpload","ref","monitor","display","onChange","camera","Checkbox","checked","toggleIsPrivate","disabled","trash","LinearProgress","variant","value","Chip","label","icon","Add","DialogActions","Button","prevIsCollapsed","KeyboardArrowUp","KeyboardArrowDown","Clear","empty","close","CircularProgress","tick","folder","FileConfirmationDialog","onReplace","fileId","id","onKeepBoth","isFile","Toast","Boolean","handleClose","anchorOrigin","horizontal","vertical"],"mappings":"6tDAiDA,MAAMA,EAAc,CAACC,EAAeC,EAAW,KAC7C,GAAc,IAAVD,EAAa,MAAO,UACxB,MACME,EAAKD,EAAW,EAAI,EAAIA,EAExBE,EAAIC,KAAKC,MAAMD,KAAKE,IAAIN,GAASI,KAAKE,IAHlC,OAIV,OAAOC,YAAYP,EAAQI,KAAKI,IAJtB,KAI6BL,IAAIM,QAAQP,IAAO,IAF5C,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAEIC,IAGlEO,EAAUC,IACd,MAAMC,KACJA,EAAAC,MACAA,EAAAC,QACAA,EAAAC,UACAA,EAAAC,OACAA,EAAS,IAAAC,SACTA,EAAAC,SACAA,GAAW,EAAAC,kBACXA,EAAAC,aACAA,EAAAC,KACAA,GAEEV,GAEGW,EAAOC,GAAYC,EAAAA,SAaxB,KAMKC,EAAaC,GAAkBF,EAAAA,UAAS,IACxCG,EAAaC,GAAkBJ,EAAAA,UAAS,IACxCK,EAAmBC,GAAwBN,EAAAA,UAAS,IACpDO,EAAYC,GAAiBR,EAAAA,UAAS,IACtCS,EAAiBC,GAAsBV,EAAAA,SAAS,IAAIW,iBACrDC,EAAYC,aAAaC,QAAQC,EAAAA,KAAKC,sBACrCC,EAAcC,GAAmBlB,cACjCmB,GAAqBC,IAA0BpB,EAAAA,UAAS,IACxDqB,GAAmBC,IAAwBtB,cAC3CuB,GAAOC,IAAYxB,EAAAA,SAAwB,OAE5CyB,aAAEA,GAAAC,cAAcA,GAAAC,aAAeA,IAAiBC,EAAAA,YAAY,CAChEC,eAAiBC,IACf/B,EAAS,IACJD,KACAgC,EAASC,IAAKC,IAAA,CACfA,OACAC,WAAW,EACXC,kBAAkB,EAClBC,OAAQ,UACRC,eAAgB,EAChBC,SAAUL,EAAKM,KACfC,SAAUP,EAAKQ,KACfC,SAAUT,EAAKnC,KACf6C,SAAU,GACVC,QAAS,QAGbnC,GAAc,IAEhBoC,YAAa,KACXpC,GAAc,IAEhBqC,YAAa,KACXrC,GAAc,IAEhBsC,SAAS,EACTC,YAAY,EACZrD,WACAF,OAAQA,GAwCmBwD,GAxCUxD,EAyCrBwD,GAAMC,MAAM,KAAKlB,IAAKmB,GAASA,EAAKC,QACvBC,OAAO,CAACC,EAAUxD,KAC7CwD,EAAIxD,GAAQ,GACLwD,GACN,CAAA,IA7C4C7D,IAG3C8D,GAAeC,EAAAA,OAAyB,MAqC9C,IAA6BP,GAnC7BQ,EAAAA,UAAU,KACR,MAAMC,EAAc,MAAA9D,OAAA,EAAAA,EAAmBoC,IAAImB,GAAQA,EAAY,OAC/DhC,EAAgBuC,IACf,CAAC9D,IAEJ6D,EAAAA,UAAU,KACR,MAAME,EAAsBC,IAC1B,GAAI1D,EAAa,CACf,MAAM0C,EACJ,iEAEF,OADAgB,EAAMC,YAAcjB,EACbA,CACT,GAQF,OANIW,GAAaO,UACfP,GAAaO,QAAQnE,SAAWA,GAGlCoE,OAAOC,iBAAiB,eAAgBL,GAEjC,KAELI,OAAOE,oBAAoB,eAAgBN,KAE5C,CAACzD,EAAaP,IAEjB,MAAMuE,GAAmB,KACvB,MAAMC,EAAkBC,UACxB,MAAI,eAAgBD,GAAmBA,EAAgBE,WAC9CF,EAAgBE,WAAWC,SAE3B,MAaLC,GAAkBtC,IAEtB,OADiB,MAAAA,OAAA,EAAAA,EAAMnC,KAAKoD,MAAM,KAAK,IAErC,IAAK,QAWL,IAAK;AACH,OACEsB,EAAAA,IAAC,MAAA,CACCC,UACEnE,EAAoB,mBAAqB,mBAE3CoE,MAAO,CAAEC,gBAAiB,WAE1BC,8BAACC,EAAAA,OAAA,CAAOtC,KAAM,GAAIuC,IAAKC,EAAAA,OAAOC,OAAOC,gBAc3C;AACE,OACET,EAAAA,IAAC,MAAA,CACCC,UACEnE,EAAoB,mBAAqB,mBAE3CoE,MAAO,CAAEC,gBAAiB,WAE1BC,8BAACC,EAAAA,OAAA,CAAOtC,KAAM,GAAIuC,IAAKC,EAAAA,OAAOC,OAAOE,cAMzCC,GAAW,sDAEXC,GAAgBC,UACpBlF,GAAe,GAEf,MAAMmF,EAAa,IAAI1E,gBACvBD,EAAmB2E,GAEnB,MAAMC,EAAiBxF,EAAMyF,OAAQvD,GAA+B,aAAhBA,EAAKG,QAAuBqD,OAChF,IAAA,IAAS7G,EAAI,EAAGA,EAAImB,EAAM0F,OAAQ7G,IAAK,CACrC,GAAgC,MAA5BmB,EAAMnB,GAAGyD,gBAA8C,YAApBtC,EAAMnB,GAAGwD,OAC9C,SAGF,MAAMH,EAAOlC,EAAMnB,GAEb0D,EAAW,MAAAL,OAAA,EAAAA,EAAMK,SACvB,IACMA,EAAW,eACgBoD,GAAsBzD,EAAMrD,EAAG0G,IAE1DK,WAAW,KAAK9F,GAAa,IAAU,WAGnC+F,GAAoB3D,EAAMrD,EAAG0G,EAAYC,EAEnD,OAASM,GACP7F,EAAU8F,IACR,MAAMC,EAAe,IAAID,GAMzB,OALAC,EAAanH,GAAK,IACbmH,EAAanH,GAChBwD,OAAQ,SACRQ,QAASiD,EAAMjD,SAAW,yBAErBmD,GAEX,CAAA,QACE5F,GAAe,EACjB,CACF,GAMF,IAAI6F,GAAY,EAChB,MAAMJ,GAAsBP,MAC1BpD,EACAgE,EACAX,EACAY,iBAEA,IACE,MAAMC,EAAS,CAAC,OAAQ,MAAO,MAAO,MAAO,MAAO,OAAQ,eAAgB,QAAS,OAC/EC,GAAW,MAAAnE,OAAA,EAAAA,EAAMmE,YAAY,MAAAnE,OAAA,EAAAA,EAAMS,WAAY,GAGrD,GAFayD,EAAOE,QAAUD,EAASE,SAASC,MAEjC,MAAAtE,OAAA,EAAAA,EAAMK,YAAY,MAAAL,OAAA,EAAAA,EAAMK,WAAY,QACjD,OAAQb,GAAS,CACf3B,KAAM,QACN8C,QAAS,mCAGb,MAAM4D,QAA8BC,MAClC,GAAGtB,UAAgB,MAAAlD,OAAA,EAAAA,EAAMO,iCAAiC,MAAAP,OAAA,EAAAA,EAAMS,yBAAwB,MAAAT,OAAA,EAAAA,EAAMC,aAC9F,CACEwE,QAAS,CACP,eAAgB,mBAChB,YAAa,MAAAzE,OAAA,EAAAA,EAAMK,SACnB,UAAWzB,GAEb8F,OAAQrB,EAAWqB,SAGjBC,QAA0BJ,EAAsBK,OACtD,GAAsC,MAAlC,MAAAD,OAAA,EAAAA,EAAmBE,aAMrB,YAJArF,GAAS,CACP3B,KAAM,QACN8C,QAAS,MAAAgE,OAAA,EAAAA,EAAmBhE,UAIhC,MAAMmE,EAAe,OAAAC,EAAA,OAAAC,EAAAL,EAAkBM,WAAlB,EAAAD,EAAwBE,oBAAxB,EAAAH,EAAuCI,aACtDzE,EAAW,OAAA0E,EAAA,OAAAC,EAAAV,EAAkBM,WAAlB,EAAAI,EAAwBH,oBAAxB,EAAAE,EAAuC1E,SAClD4E,EAAa,CACjBC,KAAM,MAAAvF,OAAA,EAAAA,EAAMA,KAAKwF,MAAM,EAAG,MAAAxF,OAAA,EAAAA,EAAMK,UAChCoF,IAAKX,GAEDY,EAAgB1F,EAAKK,SAGrBsF,EAAY,cAClB,IAAIC,EAAgB,EAEpB,KAAOA,EAAgBF,GAAe,CACpC,MAAMG,EAAQD,EACRE,EAAMlJ,KAAKmJ,IAAIH,EAAgBD,EAAWD,SAG1ClB,MAAMc,EAAWG,IAAK,CAC1BO,OAAQ,MACRC,KAAMjG,EAAKA,KAAKwF,MAAMK,EAAOC,GAC7BrB,QAAS,CACP,eAAgB,8BAKpBmB,EAAgBE,EAChB,MAAMI,EAAWtJ,KAAKuJ,MAAOP,EAAgBF,EAAiB,KAE9D3H,EAAU8F,IACR,MAAMC,EAAe,IAAID,GAOzB,OANAC,EAAaE,GAAS,IACjBF,EAAaE,GAChB9D,kBAAkB,EAClBC,OAAQ,YACRC,eAAgB8F,GAEXpC,GAEX,CAEA/F,EAAU8F,IACR,MAAMC,EAAe,IAAID,GAczB,OAbAC,EAAaE,GAAS,IACjBF,EAAaE,GAChB7D,OAAQ,YACRO,WACAC,QAAS,yBAEXoD,IAAwB,EAErBE,GAAaF,KACdtG,EAASqG,GACTC,GAAY,GAGPD,GAEX,OAASF,GACP7F,EAAU8F,IACR,MAAMC,EAAe,IAAID,GAMzB,OALAC,EAAaE,GAAS,IACjBF,EAAaE,GAChB7D,OAAQ,SACRQ,QAASiD,EAAMjD,SAAW,yBAErBmD,GAEX,GAIIL,GAAwBL,MAC5BpD,EACAgE,EACAX,eAGA,IACE,MAAM+C,EACyB,MAA5BnE,MAAsB,IAAa,KAAO,QACvC,QAC6B,MAA5BA,MAAsB,IAAa,KACpCoE,EAAQzJ,KAAK0J,MAAK,MAAAtG,OAAA,EAAAA,EAAMK,UAAW+F,GACnC7B,QAA8BC,MAClC,GAAGtB,UAAgB,MAAAlD,OAAA,EAAAA,EAAMO,sBAAsB8F,cAAkB,MAAArG,OAAA,EAAAA,EAAMS,+BAAwBT,WAAMC,aACrG,CACEwE,QAAS,CACP,eAAgB,mBAChB,YAAa,MAAAzE,OAAA,EAAAA,EAAMK,SACnB,UAAWzB,GAEb8F,OAAQrB,EAAWqB,SAGjBC,QAA0BJ,EAAsBK,OAEtD,GAAID,IAAqB,MAAAA,OAAA,EAAAA,EAAmBE,cAAiD,MAAlC,MAAAF,OAAA,EAAAA,EAAmBE,aAE5E,OADArF,GAAS,CAAEmB,SAAS,MAAAgE,OAAA,EAAAA,EAAmBhE,UAAW,wBAAyB9C,KAAM,UAC1E,KAGT,MAAM0I,EAAgB,OAAAvB,EAAAL,EAAkBM,KAAKC,oBAAvB,EAAAF,EAAsCuB,cAC5D,GAAIA,EAAc/C,OAAS,EAAG,CAC5B,MAAMgD,EACJD,EAAc,GAAGpB,aAAasB,MAAM,oBAAoB,GAC1D,IAAA,IAAS9J,EAAI,EAAGA,EAAI4J,EAAc/C,OAAQ7G,IAAK,CAC7C,MAAM+J,EAAUH,EAAc5J,GAAGgK,WAC3B7B,EAAeyB,EAAc5J,GAAGwI,aAChCU,GAASa,EAAU,GAAKN,EACxBN,EAAMlJ,KAAKmJ,IAAIF,EAAQO,QAAUpG,WAAMK,UACvCiF,EAAa,CACjBC,KAAM,OAAAR,EAAA,MAAA/E,OAAA,EAAAA,EAAMA,WAAN,EAAA+E,EAAYS,MAAMK,EAAOC,GAC/BL,IAAKX,SAEDN,MAAMc,EAAWG,IAAK,CAC1BO,OAAQ,MACRC,KAAMX,EAAWC,KACjBd,QAAS,CACP,eAAgB,8BAGpB,MAAMyB,EAAWtJ,KAAKuJ,MAAiB,KAATxJ,EAAI,GAAY0J,GAC9CtI,EAAU8F,IACR,MAAMC,EAAe,IAAID,GAOzB,OANAC,EAAaE,GAAS,IACjBF,EAAaE,GAChB9D,kBAAkB,EAClBC,OAAQ,YACRC,eAAgB8F,GAEXpC,GAEX,CACA,MAAM8C,QAA6BpC,MAAM,GAAGtB,kBAAyB,CACnE8C,OAAQ,OACRvB,QAAS,CACP,eAAgB,mBAChB,UAAW7F,GAEbqH,KAAMY,KAAKC,UAAU,CACnBvG,SAAU,MAAAP,OAAA,EAAAA,EAAMO,SAChBiG,eAGEO,QAAyBH,EAAqBhC,OAC9ClE,EAAW,OAAA2E,EAAA,MAAA0B,OAAA,EAAAA,EAAkB9B,WAAlB,EAAAI,EAAwB3E,SACzC3C,EAAU8F,IACR,MAAMC,EAAe,IAAID,GASzB,OARAC,EAAaE,GAAS,IACjBF,EAAaE,GAChB7D,OAAQ,YACRO,WACAC,QAAS,yBAGXlD,EAASqG,GACFA,GAEX,MACE/F,EAAU8F,IACR,MAAMC,EAAe,IAAID,GAMzB,OALAC,EAAaE,GAAS,IACjBF,EAAaE,GAChB7D,OAAQ,SACRQ,QAAS,+BAEJmD,GAGb,OAASF,GACP7F,EAAU8F,IACR,MAAMC,EAAe,IAAID,GAMzB,OALAC,EAAaE,GAAS,IACjBF,EAAaE,GAChB7D,OAAQ,SACRQ,QAASiD,EAAMjD,SAAW,yBAErBmD,GAEX,GAGIkD,GAAkB,KAClB1F,GAAaO,UAEX1E,EAAMO,SACR4D,GAAaO,QAAQoF,aAAa,WAAY,QAG9C3F,GAAaO,QAAQqF,gBAAgB,YAEvC5F,GAAaO,QAAQsF,UAKnBC,GAAoBC,IAExB,MAAMC,EAAgBD,EAAEE,OAAOzJ,MAEzB0J,EAAaC,MAAMC,KAAKJ,GAAevH,IAAIC,IAC/C,MAAMO,EAAWP,EAAKQ,KAEtB,OAD6BD,EAASoH,UAAU,EAAGpH,EAASqH,YAAY,OAASrH,IAEhF,GAEHjB,GAAqBkI,GAErBpI,GAAuB,MAAAH,OAAA,EAAAA,EAAcoF,SAASmD,IAC9C,MAAM1H,EAAW2H,MAAMC,KAAKJ,GAAevH,IAAKC,IAAA,CAC9CA,OACAC,WAAW,EACXC,kBAAkB,EAClBC,OAAQ,UACRC,eAAgB,EAChBC,SAAU,MAAAL,OAAA,EAAAA,EAAMM,KAChBC,SAAU,MAAAP,OAAA,EAAAA,EAAMQ,KAChBC,SAAU,MAAAT,OAAA,EAAAA,EAAMnC,KAChB6C,SAAU,GACVC,QAAS,MAEX5C,EAAU8F,GAAmB,IAAIA,KAAc/D,IAC/C5B,GAAe,IAKX2J,GAAcC,IAElB/J,EAAU8F,GACRA,EAAU9D,IAAI,CAACC,EAAMgE,IACnBA,IAAU8D,EAAgB,IAAK9H,EAAMG,OAAQ,YAAeH,KAoB5D+H,GAAsB,KAC1BzJ,GAAsBD,GACtBA,EAAoBd,IAAcD,KAG9B0K,GAAoB,WACpBlK,EAAM0F,OAAS,EAEfyE,QACE,kFAIFxJ,EAAgByJ,SACZ,OAAAlD,EAAA,MAAAvG,OAAA,EAAAA,EAAiBiG,aAAjB,EAAAM,EAAyBmD,UAC3B7K,IAEFS,EAAS,KAGXT,KAGJkE,EAAAA,UAAU,KACRpE,GAAQW,EAAS,KAChB,CAACX,IAEJ,MAAMgL,GAAsB,KAC1BhJ,IAAuB;AAsBzB,OACEiJ,EAAAA,KAAAC,WAAA,CACE3F,SAAA;sBAAC4F,EAAAA,QAAA,CAAOnL,OAAYE,UAAkBkF,UAAU,SAC9CG,SAAA;iBAAA0F,KAACG,EAAAA,QAAA,CAAYhG,UAAU,eACrBG,SAAA;eAAAJ,EAAAA,IAACkG,EAAAA,QAAA,CAAIjG,UAAU,gBACbG,wBAAAJ,EAAAA,IAACmG,EAAAA,WAAA,CACC7K,KAAK,KACL8K,GAAI,EACJC,OAAO,SACPC,MAAM,uBAELlG,SAAAtF;sBAGJ,MAAA,CACCsF,SAAA;iBAAAJ,IAACuG,EAAAA,SAAWC,eAAa,EAACC,QAASjB,GACjCpF,0BAAAJ,IAAC0G;iBAEH1G,IAACuG,EAAAA,SAAWC,eAAa,EAACC,QAAShB,GACjCrF,0BAAAJ,IAAC2G,EAAAA;qBAINC,EAAAA,QAAA;qBACAC,EAAAA,QAAA,CAAc5G,UAAU,kBACtBG,SAAiB,IAAjB7E,EAAM0F,sBACLjB,EAAAA,IAAC,MAAA,CACCC,UAAW,wBAAuB7C,GAAe,cAAgB,IAGjEgD,wBAAAJ,EAAAA,IAAC,UAAQ9C,KAAgB+C,UAAU,YAChCG,SAACpE,iBAsCA8J,EAAAA,KAAC,MAAA,CAAI7F,UAAU,aACbG,SAAA;qBAAC,MAAA,CAAIE,IAAKC,EAAAA,OAAOC,OAAOsG;qBACvBX,EAAAA,WAAA,CAAW7K,KAAK,KAAK8E,SAAA,kDAvCxB0F,EAAAA,KAAAC,EAAAA,SAAA,CACE3F,SAAA;eAAAJ,EAAAA,IAAC,QAAA,IAAU7C,KAAiB4J,IAAKhI;qBAChC,IAAA,CAAEkB,UAAU,eAAeG,SAAA;iBAI5B0F,KAAC,MAAA,CAAI7F,UAAU,cACbG,SAAA;sBAAC,MAAA,CAAIH,UAAU,gBAAgBwG,QAAShC,GACtCrE,SAAA;qBAAC,MAAA,CAAIE,IAAKC,EAAAA,OAAOC,OAAOwG;qBACvBb,EAAAA,WAAA,CAAW7K,KAAK,KAAK8E,SAAA;eACtBJ,EAAAA,IAAC,QAAA,CACC1E,KAAK,UACD6B,GAAc,CAAEhC,UAAU,IAC9B4L,IAAKhI,GACLmB,MAAO,CAAE+G,QAAS,QAClBC,SAAUrG,UAERD,MAEF3F;sBAGH,MAAA,CAAIgF,UAAU,gBAAgBwG,QAAShC,GACtCrE,SAAA;qBAAC,MAAA,CAAIE,IAAKC,EAAAA,OAAOC,OAAO2G;qBACvBhB,EAAAA,WAAA,CAAW7K,KAAK,KAAK8E,SAAA;eACtBJ,EAAAA,IAAC,QAAA,CACC1E,KAAK,UACD6B,GAAc,CAAEhC,UAAU,IAC9B4L,IAAKhI,GACLmB,MAAO,CAAE+G,QAAS,QAClBC,SAAUrC,GACV5J,6CAgBb,MAAA,CAAIgF,UAAU,iBACbG,wBAAA0F,EAAAA,KAAC,MAAA,CAAI7F,UAAU,eACbG,SAAA;qBAAC,MAAA,CAAIH,UAAU,mBACbG,wBAAAJ,MAAC,OAAIC,UAAU,gBACZG,SAAA7E,EAAMiC,IAAI,CAACC,EAAWgE;cACpB,MAAA,CAAIxB,UAAU,cACbG,SAAA;iBAAA0F,KAAC,MAAA,CAAI7F,UAAU,iBACbG,SAAA;iBAAA0F,KAAC,MAAA,CAAI7F,UAAU,gBACZG,SAAA,CAAAL,SAAetC,WAAMA;qBACrB,MAAA,CAAIwC,UAAU,iBACbG,wBAAA0F,EAAAA,KAAC,MAAA,CAAI7F,UAAU,eACbG,SAAA;eAAAJ,MAAC,MAAA,CAAIC,UAAU,gBACZG,SAAA,OAAAqC,EAAA,MAAAhF,OAAA,EAAAA,EAAMA,WAAN,EAAAgF,EAAYxE;iBAEf6H,KAAC,MAAA,CAAI7F,UAAU,gBACZG,SAAA,CAAApG,EAAY,OAAAwI,EAAA,MAAA/E,OAAA,EAAAA,EAAMA,WAAN,EAAA+E,EAAYzE;eACzBiC,EAAAA,IAAC,OAAA,CACCC,UACmB,qBAAjBxC,WAAMG,gBACJH,WAAMW,QAAQ6C,QAAS,EACrB,eACA,YAGLb,SAAA,MAAA3C,OAAA,EAAAA,EAAMW;qBAMhB,MAAA,CAAI6B,UAAU,mBACZG,SAAiB,cAAjB,MAAA3C,OAAA,EAAAA,EAAMG,uBACLkI,EAAAA,KAAAC,EAAAA,SAAA,CACE3F,SAAA;iBAAA0F,KAAC,MAAA,CAAI7F,UAAU,WACbG,SAAA;eAAAJ,EAAAA,IAACoH,EAAAA,SAAA,CACCC,SAAS,MAAA5J,OAAA,EAAAA,EAAMC,YAAqB,UAARpC,EAC5B4L,SAAU,IAjLpB,CAACzF,IACvBjG,EAAU8F,GACRA,EAAU9D,IAAI,CAACmB,EAAMvE,IACnBA,IAAMqH,EAAQ,IAAK9C,EAAMjB,WAAYiB,EAAKjB,WAAciB,KA8KZ2I,CAAgB7F,GAChC8F,UAAU,MAAA9J,OAAA,EAAAA,EAAME,mBAA4B,UAARrC;qBAErC,MAAA,CAAI2E,UAAU,gBAAgBG,SAAA;eAEjCJ,EAAAA,IAAC,MAAA,CACCC,UAAU,cACVwG,QAAS,IAAMnB,GAAW7D,GAE1BrB,wBAAAJ,EAAAA,IAACK,EAAAA,OAAA,CACCtC,KAAM,GACNuC,IAAKC,EAAAA,OAAOC,OAAOgH,kCAKxBrB,EAAAA,WAAA,CAAW7K,KAAK,KAAK2E,UAAU,gBAAgBG,iCA9CjB,OAAA0C,EAAA,MAAArF,OAAA,EAAAA,EAAMA,eAAMQ;qBAoDhD,MAAA,CAAIgC,UAAU,oBACZG,UAAA,MAAA3C,OAAA,EAAAA,EAAMI,gBAAiB,kBACtBmC,EAAAA,IAACyH,EAAAA,QAAA,CACCnB,MAAM,UACNoB,QAAQ,cACRC,MAAO,MAAAlK,OAAA,EAAAA,EAAMI,qBA1Da4D,SAkEvCtG,kBACC2K,EAAAA,KAAAC,WAAA,CACE3F,SAAA;eAAAJ,EAAAA,IAAC4H,EAAAA,KAAA,CACC3H,UAAU,WACVyH,QAAQ,WACRpM,KAAK,SACLuM,MAAO,WACPC,0BAAOC,EAAAA,QAAA,IACPtB,QAAShC;eAEXzE,EAAAA,IAAC,QAAA,CACC1E,KAAK,UACD6B,GAAc,CAAEhC,UAAU,IAC9B4L,IAAKhI,GACLmB,MAAO,CAAE+G,QAAS,QAClBC,SAAUrC,GACV5J;qBAQb2L,EAAAA,QAAA;iBACDd,KAACkC,EAAAA,QAAA,CAAc/H,UAAU,kBACvBG,SAAA;eAAAJ,MAACiI,EAAAA,OAAA,CAAOP,QAAQ,OAAOjB,QAAShB,GAAmBrF,SAAA;eAGnDJ,EAAAA,IAACiI,EAAAA,OAAA,CACC3B,MAAM,YACNG,QAAS7F,GACT2G,UAAWhM,EAAM0F,QAAUvF,EAC5B0E,SAAA,iBAKJtE,kBACCgK,EAAAA,KAAC,MAAA,CAAI7F,UAAU,oBACbG,SAAA;iBAAA0F,KAAC,MAAA,CAAI7F,UAAU,cACbG,SAAA;iBAAA0F,KAAC,MAAA,CAAI7F,UAAU,WAAWG,SAAA,CAAA,aACb7E,EAAM0F,OAAO,QAAuB,IAAjB1F,EAAM0F,OAAe,IAAM;iBAE3D6E,KAAC,MAAA,CAAI7F,UAAU,cACbG,SAAA;iBAAAJ,IAAC,OAAIC,UAAU,MAAMwG,QAASjB,GAC5BpF,wBAAAJ,EAAAA,IAAC0G;qBAEF,MAAA,CAAIzG,UAAU,MAAMwG,QA5PV,KACrB5K,EAAgBqM,IAAqBA,IA4PzB9H,wBAAAJ,EAAAA,IAAC,MAAA,CAAIC,UAAU,YACZG,0BAAcJ,MAACmI,EAAAA,QAAA,CAAA,kBAAqBnI,EAAAA,IAACoI,UAAA,CAAA;iBAG1CpI,IAAC,OAAIC,UAAU,MAAMwG,QAAShB,GAC5BrF,wBAAAJ,EAAAA,IAACqI,EAAAA;qBAIN,MAAA,CAAIpI,UAAU,WACZG,UAACxE,GACAL,EAAMiC,IAAI,CAACC,EAAWgE;AACpBqE,OAAAA,EAAAA,KAAC,MAAA,CAAI7F,UAAU,iBACbG,SAAA;eAAAJ,MAAC,OAAIC,UAAU,WAAYG,SAAAL,GAAe,MAAAtC,OAAA,EAAAA,EAAMA;iBAChDqI,KAAC,MAAA,CAAI7F,UAAU,cACbG,SAAA;eAAAJ,EAAAA,IAAC,OAAIC,UAAU,YACbG,wBAAA0F,EAAAA,KAAC,MAAA,CAAI7F,UAAU,YACZG,SAAA,CAAA,OAAAqC,EAAA,MAAAhF,OAAA,EAAAA,EAAMA,WAAN,EAAAgF,EAAYxE,KACZwD;qBAGJ,MAAA,CAAIxB,UAAU,cACZG,SAAiB,cAAjB,MAAA3C,OAAA,EAAAA,EAAMG,uBACLkI,EAAAA,KAAAC,EAAAA,SAAA,CACG3F,SAAA,CAAwB,IAAxB3C,EAAKI,+BACJiI,EAAAA,KAAC,MAAA,CAAI7F,UAAU,mBACbG,SAAA;eAAAJ,EAAAA,IAACK,EAAAA,OAAA,CACCtC,KAAM,GACNkC,UAAU,SACVK,IAAKC,EAAAA,OAAOC,OAAO8H;eAErBtI,EAAAA,IAACK,EAAAA,OAAA,CACCtC,KAAM,GACN0I,QAAS,IAAMnB,GAAW7D,GAC1BnB,IAAKC,EAAAA,OAAOC,OAAO+H,MACnBtI,UAAU,yBAIfxC,WAAMI,gBAAiB,IACtB,MAAAJ,OAAA,EAAAA,EAAMI,gBAAiB,oBACrBmC,EAAAA,IAACwI,EAAAA,QAAA,CACClC,MAAM,UACNoB,QAAQ,cACRC,MAAO,MAAAlK,OAAA,EAAAA,EAAMI,iBAGO,OAAzB,MAAAJ,OAAA,EAAAA,EAAMI,gCACLiI,EAAAA,KAAC,MAAA,CAAI7F,UAAU,mBACbG,SAAA;eAAAJ,EAAAA,IAACK,EAAAA,OAAA,CACCtC,KAAM,GACNkC,UAAU,SACVK,IAAKC,EAAAA,OAAOC,OAAOiI;eAErBzI,EAAAA,IAACK,EAAAA,OAAA,CACCtC,KAAM,GACNuC,IAAKC,EAAAA,OAAOC,OAAOkI,OACnBzI,UAAU,0CAMjBkG,EAAAA,WAAA,CAAW7K,KAAK,KAAK2E,UAAU,gBAAgBG,4CAWjExD,mBAAuBoD,EAAAA,IAAC2I,EAAAA,QAAA,CAAuB7N,MAAOgC,GAAmBjC,KAAM+B,GAAqB7B,QAAS8K,GAAqB+C,UApSrH/H,UAChB,MACMgI,QAASzN,WAAmB4F,OAAOvD,GAAQA,EAAK3C,QAAUgC,IAAmB,GAAGgM,GAChF5G,EAAU,CACd,eAAgB,mCAEZ7F,EAAYC,aAAaC,QAAQC,EAAAA,KAAKC,sBAAwB,GACpEyF,EAAQ,WAAa7F,QACf4F,MAAM,gDAAgC4G,IAAU,CACpDpF,OAAQ,SACRvB,YAGF2D,MAuR2JkD,WApR1I,KACjBlD,MAmRoLmD,QAAU;eAE5LhJ,EAAAA,IAACiJ,EAAAA,MAAA,CACGpO,KAAMqO,QAAQlM,IACd1B,KAAM0B,MAAAA,QAAAA,EAAAA,GAAO1B,KACb8C,QAASpB,MAAAA,QAAAA,EAAAA,GAAOoB,QAChB+K,YAAa,IAAMlM,GAAS,MAC5BmM,aAAc,CAAEC,WAAY,QAASC,SAAU"}
|
|
@@ -12,6 +12,6 @@ export interface UploadImageProps {
|
|
|
12
12
|
onChange: (e: any) => any;
|
|
13
13
|
multiple: boolean;
|
|
14
14
|
}
|
|
15
|
-
declare const UploadMedia: import('react').
|
|
15
|
+
declare const UploadMedia: import('react').MemoExoticComponent<(props: UploadImageProps) => import("react/jsx-runtime").JSX.Element>;
|
|
16
16
|
export { UploadMedia };
|
|
17
17
|
export default UploadMedia;
|
|
@@ -29,7 +29,7 @@ const defaultProvider = {
|
|
|
29
29
|
changeUserPassword: () => Promise.resolve()
|
|
30
30
|
};
|
|
31
31
|
const AuthContext = createContext(defaultProvider);
|
|
32
|
-
setBaseUrl(`${"
|
|
32
|
+
setBaseUrl(`${"https://apidev.erpforce.co"}/rbac`);
|
|
33
33
|
const AuthProvider = ({ children }) => {
|
|
34
34
|
const [user, setUser] = useState(defaultProvider.user);
|
|
35
35
|
const [authToken, setAuthToken] = useState("");
|
|
@@ -105,7 +105,7 @@ const AuthProvider = ({ children }) => {
|
|
|
105
105
|
console.warn("No auth token found, not connecting to socket.");
|
|
106
106
|
return;
|
|
107
107
|
}
|
|
108
|
-
const socket = io("
|
|
108
|
+
const socket = io("http://127.0.0.1:4012", {
|
|
109
109
|
transports: ["websocket"],
|
|
110
110
|
auth: { token: authToken },
|
|
111
111
|
path: "/socket.io/"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../src/contexts/AuthContext.tsx"],"sourcesContent":["import React, { createContext, useEffect, useRef, useState } from 'react';\nimport {\n\tpostV1AuthChangePassword,\n\tpostV1AuthForgotPassword,\n\tpostV1AuthChangeUserPassword,\n\t// getV1UserId,\n\tpostV1AuthLogin,\n\tpostV1AuthResetPassword,\n\tsetBaseUrl,\n\tpostV1AuthChangeUserPasswordByAdmin\n} from '../api-client/api.rbac/api';\nimport { auth } from '../constants/auth';\nimport { /* useLocation, */ useNavigate } from 'react-router-dom';\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { enqueueSnackbar } from 'notistack';\nimport { Socket, io } from 'socket.io-client';\nimport { generateRouteWithId } from '../utils/route-utils';\nimport {\n\tPathnameAccounting,\n\tPathnameGenerator\n} from '../constants/pathnames/pathname.accounting';\n\nimport {\n\tPathnameInventory,\n\tPathnameGenerator as PathnameGeneratorInventory\n} from '../constants/pathnames/pathname.inventory';\n\nimport {\n\tPathnameManufacturing,\n\tPathnameGenerator as PathnameGeneratorManufacuring\n} from '../constants/pathnames/pathname.manufacturing';\n\nimport {\n\tPathnamePurchase,\n\tPathnameGenerator as PathnameGeneratorPurchase\n} from '../constants/pathnames/pathname.procurement';\n\nimport {\n\tPathnameCrm,\n\tPathnameGenerator as PathnameGeneratorCrm\n} from '../constants/pathnames/pathname.crm';\n\nimport {\n\tPathnameRental,\n\tPathnameGenerator as PathnameGeneratorRental\n} from '../constants/pathnames/pathname.rental';\n\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\n\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\nexport interface LoginFormValues {\n\temail: string;\n\tpassword: string;\n}\n\nexport interface resetFormValues {\n\temail: string;\n}\n\nexport interface resetPasswordValues {\n\ttoken: string;\n}\n\nexport interface changePasswordValues {\n\tpassword: string;\n}\n\nexport interface changeUserPasswordValues {\n\tpassword: string;\n}\n\ninterface ERPApiUser {\n\tid: string | number;\n\tfirst_name: string;\n\tlast_name: string;\n\tmiddle_name: string;\n\tcountry_code: string;\n\temail: string;\n\tcreated_by: any;\n\tupdated_by: any;\n\tcreated_at: string;\n\tupdated_at: string;\n\trole_id: string;\n\tdepartment_id: number;\n\tis_deleted: number;\n\tdeleted_at: string | null;\n\tdeleted_by: any;\n\ttoken: string;\n\tprofile_image: string;\n\tcurrency_data?: {\n\t\tid: number;\n\t\tsymbol: string;\n\t\tcurrency_name: string;\n\t\tnumber_format:string;\n\t\tposition: string | null;\n\t\tfraction_unit: string | null\n\t};\n\taccessCompanies?: any[]\n}\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\n\tfull_name: string;\n\tcompany_id: string;\n}\n\ninterface DefaultProviderProps {\n\tuser: ERPUser | null;\n\tloading: boolean;\n\tauthToken: string;\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\tlogin: (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tlogout: () => Promise<void>;\n\tforgotPassword: (\n\t\tparams: resetFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tresetPassword: (\n\t\tparams: resetPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangePassword: (\n\t\tparams: changePasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangeUserPassword: (\n\t\tparams: changeUserPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n}\n\nconst defaultProvider: DefaultProviderProps = {\n\tuser: null,\n\tloading: true,\n\tauthToken: '',\n\tsetUser: () => null,\n\tsetLoading: () => Boolean,\n\tlogin: () => Promise.resolve(),\n\tlogout: () => Promise.resolve(),\n\tforgotPassword: () => Promise.resolve(),\n\tresetPassword: () => Promise.resolve(),\n\tchangePassword: () => Promise.resolve(),\n\tchangeUserPassword: () => Promise.resolve()\n};\n\nconst AuthContext = createContext(defaultProvider);\n\ninterface AuthProviderProps {\n\tchildren: React.ReactNode;\n}\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {\n\t// ** States\n\tconst [user, setUser] = useState(defaultProvider.user);\n\tconst [authToken, setAuthToken] = useState<string>('');\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\n\tconst socketRef = useRef<Socket | null>(null);\n\n\t// ** Hooks\n\tconst navigate = useNavigate();\n\t// const location = useLocation();\n\tconst isJsonParse = (string?: string | null) => {\n\t\tif (!string) return false;\n\n\t\ttry {\n\t\t\treturn JSON.parse(string);\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst getNotificationUrl = (data: any) => {\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\n\t\tconst key = moduleName.toLowerCase();\n\n\t\tconst routeMap: Record<string, () => string> = {\n\t\t\t'sales invoice': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\n\n\t\t\t'asset transfers': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\n\n\t\t\t'budgets': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\n\n\t\t\t'cash expense': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\n\n\t\t\t'credit notes': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\n\n\t\t\t'debit notes': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\n\n\t\t\t'expense reimbursement': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\n\n\t\t\t'journal entries': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\n\n\t\t\t'payment entries': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\n\n\t\t\t'purchase invoice': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\n\n\t\t\t'stock transfer': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\n\n\t\t\t'bills of materials': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\n\n\t\t\t'purchase agreement': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\n\n\t\t\t'purchase orders': () =>\n\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER) , moduleId.toString()),\n\n\t\t\t'purchase request': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\n\n\t\t\t'vra': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\n\n\t\t\t'sl customer returns': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\n\n\t\t\t'sales order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\n\n\t\t\t'rental order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'replacement order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'rental agreement': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\n\n\t\t\t'cross hire order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\n\n\t\t\t'cross hire request': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\n\t\t};\n\n\t\treturn routeMap[key]?.() || '/dashboard';\n\t};\n\n\n\t// const initAuth = async () => {\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tconst storedUser: ERPUser =\n\t// \t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) || null;\n\t// \tif (storedToken && storedUser) {\n\t// \t\ttry {\n\t// \t\t\tconst userData = await getV1UserId({\n\t// \t\t\t\t'x-token': storedToken,\n\t// \t\t\t\tid: String(storedUser.id)\n\t// \t\t\t});\n\t// \t\t} catch (error) {\n\t// \t\t}\n\t// \t} else {\n\t// \t\tsetLoading(false);\n\t// \t}\n\t// \tif (storedToken && storedUser) {\n\t// \t\tsetUser(storedUser);\n\t// setLoading(false);\n\t// \t} else {\n\t// \t\thandleLogout();\n\t// setLoading(false);\n\t// \t}\n\t// };\n\n\t// useEffect(() => {\n\t// setLoading(true)\n\t// \tinitAuth();\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tif (!storedToken) {\n\t// \t\tsetUser(null);\n\t// \t} else {\n\t// \t\tsetLoading(false);\n\t// \t}\n\t// \teslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, [location.pathname]);\n\n\t// useEffect(() => {\n\t// \tsetLoading(true);\n\t// \tinitAuth();\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tif (!storedToken) {\n\t// \t\tsetLoading(false);\n\t// \t\tnavigate(Pathname.LOGIN);\n\t// \t}\n\t// \t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, []);\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\t// initAuth()\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tconst storedUser =\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\n\t\tconst publicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD];\n\t\tconst currentPath = window.location.pathname;\n\t\tif (!storedToken && !storedUser) {\n\t\t\tif (!publicRoutes.includes(currentPath)) {\n\t\t\t\tnavigate(Pathname.LOGIN);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\tsetUser(storedUser);\n\t\t\tsetAuthToken(storedToken || '');\n\t\t\tsetLoading(false);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!authToken) {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current?.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst socket = io(import.meta.env.VITE_SOCKET_BASE_URL, {\n\t\t\ttransports: [\"websocket\"],\n\t\t\tauth: { token: authToken },\n\t\t\tpath: \"/socket.io/\",\n\t\t\t\n\t\t});\n\t\tsocketRef.current = socket;\n\n\t\tsocket.on(\"connect\", () => {\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\n\t\t\tsocket.onAny((event, ...args) => {\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\n\t\t\t});\n\t\t});\n\t\t\n\t\t// socket event handler\n\t\tsocket.on('notification', (data) => {\n\t\tconst { message, notificationData } = data || {};\n\t\tlet notificationContent: React.ReactNode = message;\n\t\tconst url = getNotificationUrl(data);\n\n\t\tif (notificationData) {\n\t\t\tconst { notification_type } = notificationData;\n\n\t\t\tswitch (notification_type) {\n\t\t\t\tcase 'addApprovers': {\n\t\t\t\t\t\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'change_approval_status': {\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tenqueueSnackbar(String(message), {\n\t\t\tvariant: 'default',\n\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\n\t\t\tautoHideDuration: 5000,\n\t\t\tcontent: (key) => (\n\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url}/>\n\t\t\t),\n\t\t});\n\t\t});\n\n\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\n\t\t});\n\n\t\tsocket.on(\"error\", (errMsg) => {\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\n\t\t\tconsole.error(\"Socket error:\", errMsg);\n\t\t});\n\n\t\t// Clean up on unmount\n\t\treturn () => {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t};\n\t}, [authToken]);\n\n\tconst handleLogin = async (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => {\n\t\tsetLoading(true);\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tif (storedToken && user) {\n\t\t\treturn navigate(Pathname.DASHBOARD);\n\t\t}\n\n\t\ttry {\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\n\t\t\tif (loginUser.success) {\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\n\t\t\t\tif (data) {\n\t\t\t\t\twindow.localStorage.setItem(auth.storageTokenKeyName, data.token);\n\t\t\t\t\tconst userData: ERPUser = {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\n\t\t\t\t\t};\n\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\tauth.storageUserKeyName,\n\t\t\t\t\t\tJSON.stringify(userData)\n\t\t\t\t\t);\n\t\t\t\t\tsetUser(userData);\n\t\t\t\t\tsetAuthToken(data.token);\n\t\t\t\t\tnavigate(Pathname.DASHBOARD);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t\tdelete data.token;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(message);\n\t\t}\n\t};\n\n\tconst handleLogout = async () => {\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\n\t\twindow.localStorage.removeItem(auth.storageAccessKeyName);\n\t\tsetUser(null);\n\t\tsetAuthToken('');\n\t\tnavigate(Pathname.LOGIN);\n\t};\n\n\tconst handleForgotPassword = async (params: resetFormValues,\n\t\tcallback: (type: boolean, err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\n\t\t\tcallback(true, \"Reset Link sent to your email\");\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(false, message);\n\t\t}\n\t};\n\n\tconst handleResetPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\n\t\t\tcallback(response);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangePassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\n\t\t\tcallback(null);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t\tcallback(\"reset\");\n\t}\n\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tconst values = {\n\t\tuser,\n\t\tauthToken,\n\t\tloading,\n\t\tsetUser,\n\t\tsetLoading,\n\t\tlogin: handleLogin,\n\t\tlogout: handleLogout,\n\t\tforgotPassword: handleForgotPassword,\n\t\tresetPassword: handleResetPassword,\n\t\tchangePassword: handleChangePassword,\n\t\tchangeUserPassword: handleChangeUserPassword,\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\n\t};\n\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\n};\n\nexport { AuthContext, AuthProvider };\n"],"names":["PathnameGenerator","PathnameGeneratorInventory","PathnameGeneratorManufacuring","PathnameGeneratorPurchase","_a","RENTALROUTES","PathnameGeneratorCrm","PathnameGeneratorRental"],"mappings":";;;;;;;;;;;;;;;;;AAsIA,MAAM,kBAAwC;AAAA,EAC7C,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS,MAAM;AAAA,EACf,YAAY,MAAM;AAAA,EAClB,OAAO,MAAM,QAAQ,QAAA;AAAA,EACrB,QAAQ,MAAM,QAAQ,QAAA;AAAA,EACtB,gBAAgB,MAAM,QAAQ,QAAA;AAAA,EAC9B,eAAe,MAAM,QAAQ,QAAA;AAAA,EAC7B,gBAAgB,MAAM,QAAQ,QAAA;AAAA,EAC9B,oBAAoB,MAAM,QAAQ,QAAA;AACnC;AAEA,MAAM,cAAc,cAAc,eAAe;AAMjD,WAAW,GAAG,uBAAqC,OAAO;AAE1D,MAAM,eAA4C,CAAC,EAAE,eAAe;AAEnE,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,gBAAgB,IAAI;AACrD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAiB,EAAE;AACrD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,gBAAgB,OAAO;AAC9D,QAAM,YAAY,OAAsB,IAAI;AAG5C,QAAM,WAAW,YAAA;AAEjB,QAAM,cAAc,CAAC,WAA2B;AAC/C,QAAI,CAAC,OAAQ,QAAO;AAEpB,QAAI;AACH,aAAO,KAAK,MAAM,MAAM;AAAA,IACzB,SAAS,OAAO;AACf,aAAO;AAAA,IACR;AAAA,EACD;AAEA,QAAM,qBAAqB,CAAC,SAAc;;AACzC,UAAM,EAAE,aAAa,IAAI,WAAW,IAAI,mBAAmB,CAAA,MAAO;AAClE,UAAM,MAAM,WAAW,YAAA;AAEvB,UAAM,WAAyC;AAAA,MAC9C,iBAAiB,MACjB,oBAAoBA,oBAAkB,mBAAmB,mBAAmB,GAAG,SAAS,UAAU;AAAA,MAElG,mBAAmB,MACnB,oBAAoBA,oBAAkB,mBAAmB,mBAAmB,GAAG,SAAS,UAAU;AAAA,MAElG,WAAW,MACX,oBAAoBA,oBAAkB,mBAAmB,WAAW,GAAG,SAAS,UAAU;AAAA,MAE1F,gBAAgB,MAChB,oBAAoBA,oBAAkB,mBAAmB,iBAAiB,GAAG,SAAS,UAAU;AAAA,MAEhG,gBAAgB,MAChB,oBAAoBA,oBAAkB,mBAAmB,gBAAgB,GAAG,SAAS,UAAU;AAAA,MAE/F,eAAe,MACf,oBAAoBA,oBAAkB,mBAAmB,eAAe,GAAG,SAAS,UAAU;AAAA,MAE9F,yBAAyB,MACzB,oBAAoBA,oBAAkB,mBAAmB,0BAA0B,GAAG,SAAS,UAAU;AAAA,MAEzG,mBAAmB,MACnB,oBAAoBA,oBAAkB,mBAAmB,kBAAkB,GAAG,SAAS,UAAU;AAAA,MAEjG,mBAAmB,MACnB,oBAAoBA,oBAAkB,mBAAmB,kBAAkB,GAAG,SAAS,UAAU;AAAA,MAEjG,oBAAoB,MACpB,oBAAoBA,oBAAkB,mBAAmB,qBAAqB,GAAG,SAAS,UAAU;AAAA,MAEpG,kBAAkB,MAClB,oBAAoBC,oBAA2B,kBAAkB,mBAAmB,GAAG,SAAS,UAAU;AAAA,MAE1G,sBAAsB,MACtB,oBAAoBC,oBAA8B,sBAAsB,qBAAqB,GAAG,SAAS,UAAU;AAAA,MAEnH,sBAAsB,MACtB,oBAAoBC,oBAA0B,iBAAiB,uBAAuB,GAAG,SAAS,UAAU;AAAA,MAE5G,mBAAmB,MAAA;;AACnB,qCAAoBC,MAAA,qDAAkB,SAAlB,gBAAAA,IAAwB,cAAa,IAAIC,OAAa,OAAOF,oBAA0B,iBAAiB,mBAAmB,GAAI,SAAS,UAAU;AAAA;AAAA,MAEtK,oBAAoB,MACpB,oBAAoBA,oBAA0B,iBAAiB,mBAAmB,GAAG,SAAS,UAAU;AAAA,MAExG,OAAO,MACP,oBAAoBA,oBAA0B,iBAAiB,mBAAmB,GAAG,SAAS,UAAU;AAAA,MAExG,uBAAuB,MACvB,oBAAoBG,oBAAqB,YAAY,qBAAqB,GAAG,SAAS,UAAU;AAAA,MAEhG,eAAe,MACf,oBAAoBA,oBAAqB,YAAY,gBAAgB,GAAG,SAAS,UAAU;AAAA,MAE3F,gBAAgB,MAChB,oBAAoBC,kBAAwB,eAAe,iBAAiB,GAAG,SAAS,UAAU;AAAA,MAElG,qBAAqB,MACrB,oBAAoBA,kBAAwB,eAAe,iBAAiB,GAAG,SAAS,UAAU;AAAA,MAElG,oBAAoB,MACpB,oBAAoBA,kBAAwB,eAAe,cAAc,GAAG,SAAS,UAAU;AAAA,MAE/F,oBAAoB,MACpB,oBAAoBA,kBAAwB,eAAe,qBAAqB,GAAG,SAAS,UAAU;AAAA,MAEtG,sBAAsB,MACtB,oBAAoBA,kBAAwB,eAAe,uBAAuB,GAAG,SAAS,SAAA,CAAU;AAAA,IAAA;AAGzG,aAAO,cAAS,SAAT,sCAAqB;AAAA,EAC7B;AAkDA,YAAU,MAAM;AACf,eAAW,IAAI;AAEf,UAAM,cAAc,OAAO,aAAa,QAAQ,KAAK,mBAAmB;AACxE,UAAM,aACL,YAAY,OAAO,aAAa,QAAQ,KAAK,kBAAkB,CAAC,KAAK;AACtE,UAAM,eAAe,CAAC,SAAS,OAAO,SAAS,iBAAiB,SAAS,gBAAgB,SAAS,eAAe;AACjH,UAAM,cAAc,OAAO,SAAS;AACpC,QAAI,CAAC,eAAe,CAAC,YAAY;AAChC,UAAI,CAAC,aAAa,SAAS,WAAW,GAAG;AACxC,iBAAS,SAAS,KAAK;AAAA,MACxB;AACA,iBAAW,KAAK;AAAA,IACjB,OAAO;AACN,cAAQ,UAAU;AAClB,mBAAa,eAAe,EAAE;AAC9B,iBAAW,KAAK;AAAA,IACjB;AAAA,EAED,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;;AACf,QAAI,CAAC,WAAW;AACf,UAAI,UAAU,SAAS;AACtB,wBAAU,YAAV,mBAAmB;AACnB,kBAAU,UAAU;AAAA,MACrB;AACA,cAAQ,KAAK,gDAAgD;AAC7D;AAAA,IACD;AAEA,UAAM,SAAS,GAAG,8BAAsC;AAAA,MACvD,YAAY,CAAC,WAAW;AAAA,MACxB,MAAM,EAAE,OAAO,UAAA;AAAA,MACf,MAAM;AAAA,IAAA,CAEN;AACD,cAAU,UAAU;AAEpB,WAAO,GAAG,WAAW,MAAM;AAC1B,cAAQ,IAAI,qBAAqB,OAAO,EAAE;AAC1C,aAAO,MAAM,CAAC,UAAU,SAAS;AAChC,gBAAQ,IAAI,mBAAmB,KAAK,IAAI,IAAI;AAAA,MAC7C,CAAC;AAAA,IACF,CAAC;AAGD,WAAO,GAAG,gBAAgB,CAAC,SAAS;AACpC,YAAM,EAAE,SAAS,iBAAA,IAAqB,QAAQ,CAAA;AAC9C,UAAI,sBAAuC;AAC3C,YAAM,MAAM,mBAAmB,IAAI;AAEnC,UAAI,kBAAkB;AACrB,cAAM,EAAE,sBAAsB;AAE9B,gBAAQ,mBAAA;AAAA,UACP,KAAK,gBAAgB;AAEpB,kCAAsB;AACtB;AAAA,UACD;AAAA,UAEA,KAAK,0BAA0B;AAC9B,kCAAsB;AACtB;AAAA,UACD;AAAA,UAEA,SAAS;AACR,kCAAsB;AACtB;AAAA,UACD;AAAA,QAAA;AAAA,MAEF;AAEA,sBAAgB,OAAO,OAAO,GAAG;AAAA,QAChC,SAAS;AAAA,QACT,cAAc,EAAE,UAAU,OAAO,YAAY,SAAA;AAAA,QAC7C,kBAAkB;AAAA,QAClB,SAAS,CAAC,QACV,oBAAC,kBAAe,aAAa,KAAK,SAAS,qBAAqB,MAAM,kBAAkB,SAAQ,WAAW,SAAS,KAAI;AAAA,MAAA,CAExH;AAAA,IACD,CAAC;AAGD,WAAO,GAAG,wBAAwB,CAAC,SAAS;AAC3C,cAAQ,IAAI,mBAAmB,KAAK,WAAW,YAAY,KAAK,MAAM;AAAA,IACvE,CAAC;AAED,WAAO,GAAG,SAAS,CAAC,WAAW;AAC9B,sBAAgB,iBAAiB,MAAM,IAAI,EAAE,SAAS,SAAS;AAC/D,cAAQ,MAAM,iBAAiB,MAAM;AAAA,IACtC,CAAC;AAGD,WAAO,MAAM;AACZ,UAAI,UAAU,SAAS;AACtB,kBAAU,QAAQ,WAAA;AAClB,kBAAU,UAAU;AAAA,MACrB;AAAA,IACD;AAAA,EACD,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,cAAc,OACnB,QACA,aACI;;AACJ,eAAW,IAAI;AACf,UAAM,cAAc,OAAO,aAAa,QAAQ,KAAK,mBAAmB;AACxE,QAAI,eAAe,MAAM;AACxB,aAAO,SAAS,SAAS,SAAS;AAAA,IACnC;AAEA,QAAI;AACH,YAAM,YAAY,MAAM,gBAAgB,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AACpE,UAAI,UAAU,SAAS;AACtB,cAAM,SAA0B,4CAAW,SAAX,mBAAiB,UAAS;AAC1D,YAAI,MAAM;AACT,iBAAO,aAAa,QAAQ,KAAK,qBAAqB,KAAK,KAAK;AAChE,gBAAM,WAAoB;AAAA,YACzB,GAAG;AAAA,YACH,WAAW,GAAG,KAAK,UAAU,IAAI,KAAK,SAAS;AAAA,UAAA;AAEhD,iBAAO,aAAa;AAAA,YACnB,KAAK;AAAA,YACL,KAAK,UAAU,QAAQ;AAAA,UAAA;AAExB,kBAAQ,QAAQ;AAChB,uBAAa,KAAK,KAAK;AACvB,mBAAS,SAAS,SAAS;AAC3B,qBAAW,KAAK;AAChB,iBAAO,KAAK;AAAA,QACb;AAAA,MACD;AAAA,IACD,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AAAA,MACvD;AAEA,eAAS,OAAO;AAAA,IACjB;AAAA,EACD;AAEA,QAAM,eAAe,YAAY;AAChC,WAAO,aAAa,WAAW,KAAK,mBAAmB;AACvD,WAAO,aAAa,WAAW,KAAK,kBAAkB;AACtD,WAAO,aAAa,WAAW,KAAK,oBAAoB;AACxD,YAAQ,IAAI;AACZ,iBAAa,EAAE;AACf,aAAS,SAAS,KAAK;AAAA,EACxB;AAEA,QAAM,uBAAuB,OAAO,QACnC,aAAmD;AACnD,QAAI;AACH,YAAM,yBAAyB,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AAC3D,eAAS,MAAM,+BAA+B;AAAA,IAC/C,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AAAA,MACvD;AAEA,eAAS,OAAO,OAAO;AAAA,IACxB;AAAA,EACD;AAEA,QAAM,sBAAsB,OAAO,QAClC,aAAoC;AACpC,QAAI;AACH,YAAM,WAAW,MAAM,wBAAwB,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AAC3E,eAAS,QAAQ;AAAA,IAClB,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,cAAQ,IAAI,UAAU,KAAK;AAC3B,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AACtD,iBAAS,OAAO;AAAA,MACjB;AAAA,IACD;AAAA,EACD;AAEA,QAAM,uBAAuB,OAAO,QACnC,aAAoC;AACpC,QAAI;AACH,YAAM,yBAAyB,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AAC3D,eAAS,IAAI;AAAA,IACd,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,cAAQ,IAAI,UAAU,KAAK;AAC3B,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AACtD,iBAAS,OAAO;AAAA,MACjB;AAAA,IACD;AACA,aAAS,OAAO;AAAA,EACjB;AAEA,QAAM,2BAA2B,OAAO,QACvC,aAAsD;AACtD,QAAI;AACH,YAAM,6BAA6B,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AAC/D,eAAS,iCAAiC,IAAI;AAAA,IAC/C,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AACtD,iBAAS,SAAS,KAAK;AAAA,MACxB;AAAA,IACD;AAAA,EACD;AAEA,QAAM,kCAAkC,OAAO,QAC9C,aAAsD;AACtD,QAAI;AACH,YAAM,oCAAoC,EAAE,GAAG,QAAQ,GAAG,SAAA,GAAY;AACtE,eAAS,iCAAiC,IAAI;AAAA,IAC/C,SAAS,OAAO;AACf,UAAI,UAAkB;AACtB,UAAI,iBAAiB,OAAO;AAC3B,kBAAU,YAAY,MAAM,OAAO,EAAE,WAAW,MAAM;AACtD,iBAAS,SAAS,KAAK;AAAA,MACxB;AAAA,IACD;AAAA,EACD;AAGA,QAAM,SAAS;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,IACpB,2BAA2B;AAAA,EAAA;AAG5B,6BAAQ,YAAY,UAAZ,EAAqB,OAAO,QAAS,UAAS;AACvD;"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../src/contexts/AuthContext.tsx"],"sourcesContent":["import React, { createContext, useEffect, useRef, useState } from 'react';\nimport {\n\tpostV1AuthChangePassword,\n\tpostV1AuthForgotPassword,\n\tpostV1AuthChangeUserPassword,\n\t// getV1UserId,\n\tpostV1AuthLogin,\n\tpostV1AuthResetPassword,\n\tsetBaseUrl,\n\tpostV1AuthChangeUserPasswordByAdmin\n} from '../api-client/api.rbac/api';\nimport { auth } from '../constants/auth';\nimport { /* useLocation, */ useNavigate } from 'react-router-dom';\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { enqueueSnackbar } from 'notistack';\nimport { Socket, io } from 'socket.io-client';\nimport { generateRouteWithId } from '../utils/route-utils';\nimport {\n\tPathnameAccounting,\n\tPathnameGenerator\n} from '../constants/pathnames/pathname.accounting';\n\nimport {\n\tPathnameInventory,\n\tPathnameGenerator as PathnameGeneratorInventory\n} from '../constants/pathnames/pathname.inventory';\n\nimport {\n\tPathnameManufacturing,\n\tPathnameGenerator as PathnameGeneratorManufacuring\n} from '../constants/pathnames/pathname.manufacturing';\n\nimport {\n\tPathnamePurchase,\n\tPathnameGenerator as PathnameGeneratorPurchase\n} from '../constants/pathnames/pathname.procurement';\n\nimport {\n\tPathnameCrm,\n\tPathnameGenerator as PathnameGeneratorCrm\n} from '../constants/pathnames/pathname.crm';\n\nimport {\n\tPathnameRental,\n\tPathnameGenerator as PathnameGeneratorRental\n} from '../constants/pathnames/pathname.rental';\n\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\n\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\nexport interface LoginFormValues {\n\temail: string;\n\tpassword: string;\n}\n\nexport interface resetFormValues {\n\temail: string;\n}\n\nexport interface resetPasswordValues {\n\ttoken: string;\n}\n\nexport interface changePasswordValues {\n\tpassword: string;\n}\n\nexport interface changeUserPasswordValues {\n\tpassword: string;\n}\n\ninterface ERPApiUser {\n\tid: string | number;\n\tfirst_name: string;\n\tlast_name: string;\n\tmiddle_name: string;\n\tcountry_code: string;\n\temail: string;\n\tcreated_by: any;\n\tupdated_by: any;\n\tcreated_at: string;\n\tupdated_at: string;\n\trole_id: string;\n\tdepartment_id: number;\n\tis_deleted: number;\n\tdeleted_at: string | null;\n\tdeleted_by: any;\n\ttoken: string;\n\tprofile_image: string;\n\tcurrency_data?: {\n\t\tid: number;\n\t\tsymbol: string;\n\t\tcurrency_name: string;\n\t\tnumber_format:string;\n\t\tposition: string | null;\n\t\tfraction_unit: string | null\n\t};\n\taccessCompanies?: any[]\n}\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\n\tfull_name: string;\n\tcompany_id: string;\n}\n\ninterface DefaultProviderProps {\n\tuser: ERPUser | null;\n\tloading: boolean;\n\tauthToken: string;\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\tlogin: (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tlogout: () => Promise<void>;\n\tforgotPassword: (\n\t\tparams: resetFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tresetPassword: (\n\t\tparams: resetPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangePassword: (\n\t\tparams: changePasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangeUserPassword: (\n\t\tparams: changeUserPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n}\n\nconst defaultProvider: DefaultProviderProps = {\n\tuser: null,\n\tloading: true,\n\tauthToken: '',\n\tsetUser: () => null,\n\tsetLoading: () => Boolean,\n\tlogin: () => Promise.resolve(),\n\tlogout: () => Promise.resolve(),\n\tforgotPassword: () => Promise.resolve(),\n\tresetPassword: () => Promise.resolve(),\n\tchangePassword: () => Promise.resolve(),\n\tchangeUserPassword: () => Promise.resolve()\n};\n\nconst AuthContext = createContext(defaultProvider);\n\ninterface AuthProviderProps {\n\tchildren: React.ReactNode;\n}\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {\n\t// ** States\n\tconst [user, setUser] = useState(defaultProvider.user);\n\tconst [authToken, setAuthToken] = useState<string>('');\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\n\tconst socketRef = useRef<Socket | null>(null);\n\n\t// ** Hooks\n\tconst navigate = useNavigate();\n\t// const location = useLocation();\n\tconst isJsonParse = (string?: string | null) => {\n\t\tif (!string) return false;\n\n\t\ttry {\n\t\t\treturn JSON.parse(string);\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst getNotificationUrl = (data: any) => {\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\n\t\tconst key = moduleName.toLowerCase();\n\n\t\tconst routeMap: Record<string, () => string> = {\n\t\t\t'sales invoice': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\n\n\t\t\t'asset transfers': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\n\n\t\t\t'budgets': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\n\n\t\t\t'cash expense': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\n\n\t\t\t'credit notes': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\n\n\t\t\t'debit notes': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\n\n\t\t\t'expense reimbursement': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\n\n\t\t\t'journal entries': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\n\n\t\t\t'payment entries': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\n\n\t\t\t'purchase invoice': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\n\n\t\t\t'stock transfer': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\n\n\t\t\t'bills of materials': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\n\n\t\t\t'purchase agreement': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\n\n\t\t\t'purchase orders': () =>\n\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER) , moduleId.toString()),\n\n\t\t\t'purchase request': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\n\n\t\t\t'vra': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\n\n\t\t\t'sl customer returns': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\n\n\t\t\t'sales order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\n\n\t\t\t'rental order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'replacement order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'rental agreement': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\n\n\t\t\t'cross hire order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\n\n\t\t\t'cross hire request': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\n\t\t};\n\n\t\treturn routeMap[key]?.() || '/dashboard';\n\t};\n\n\n\t// const initAuth = async () => {\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tconst storedUser: ERPUser =\n\t// \t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) || null;\n\t// \tif (storedToken && storedUser) {\n\t// \t\ttry {\n\t// \t\t\tconst userData = await getV1UserId({\n\t// \t\t\t\t'x-token': storedToken,\n\t// \t\t\t\tid: String(storedUser.id)\n\t// \t\t\t});\n\t// \t\t} catch (error) {\n\t// \t\t}\n\t// \t} else {\n\t// \t\tsetLoading(false);\n\t// \t}\n\t// \tif (storedToken && storedUser) {\n\t// \t\tsetUser(storedUser);\n\t// setLoading(false);\n\t// \t} else {\n\t// \t\thandleLogout();\n\t// setLoading(false);\n\t// \t}\n\t// };\n\n\t// useEffect(() => {\n\t// setLoading(true)\n\t// \tinitAuth();\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tif (!storedToken) {\n\t// \t\tsetUser(null);\n\t// \t} else {\n\t// \t\tsetLoading(false);\n\t// \t}\n\t// \teslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, [location.pathname]);\n\n\t// useEffect(() => {\n\t// \tsetLoading(true);\n\t// \tinitAuth();\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tif (!storedToken) {\n\t// \t\tsetLoading(false);\n\t// \t\tnavigate(Pathname.LOGIN);\n\t// \t}\n\t// \t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, []);\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\t// initAuth()\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tconst storedUser =\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\n\t\tconst publicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD];\n\t\tconst currentPath = window.location.pathname;\n\t\tif (!storedToken && !storedUser) {\n\t\t\tif (!publicRoutes.includes(currentPath)) {\n\t\t\t\tnavigate(Pathname.LOGIN);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\tsetUser(storedUser);\n\t\t\tsetAuthToken(storedToken || '');\n\t\t\tsetLoading(false);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!authToken) {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current?.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst socket = io(import.meta.env.VITE_SOCKET_BASE_URL, {\n\t\t\ttransports: [\"websocket\"],\n\t\t\tauth: { token: authToken },\n\t\t\tpath: \"/socket.io/\",\n\t\t\t\n\t\t});\n\t\tsocketRef.current = socket;\n\n\t\tsocket.on(\"connect\", () => {\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\n\t\t\tsocket.onAny((event, ...args) => {\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\n\t\t\t});\n\t\t});\n\t\t\n\t\t// socket event handler\n\t\tsocket.on('notification', (data) => {\n\t\tconst { message, notificationData } = data || {};\n\t\tlet notificationContent: React.ReactNode = message;\n\t\tconst url = getNotificationUrl(data);\n\n\t\tif (notificationData) {\n\t\t\tconst { notification_type } = notificationData;\n\n\t\t\tswitch (notification_type) {\n\t\t\t\tcase 'addApprovers': {\n\t\t\t\t\t\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'change_approval_status': {\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tenqueueSnackbar(String(message), {\n\t\t\tvariant: 'default',\n\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\n\t\t\tautoHideDuration: 5000,\n\t\t\tcontent: (key) => (\n\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url}/>\n\t\t\t),\n\t\t});\n\t\t});\n\n\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\n\t\t});\n\n\t\tsocket.on(\"error\", (errMsg) => {\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\n\t\t\tconsole.error(\"Socket error:\", errMsg);\n\t\t});\n\n\t\t// Clean up on unmount\n\t\treturn () => {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t};\n\t}, [authToken]);\n\n\tconst handleLogin = async (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => {\n\t\tsetLoading(true);\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tif (storedToken && user) {\n\t\t\treturn navigate(Pathname.DASHBOARD);\n\t\t}\n\n\t\ttry {\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\n\t\t\tif (loginUser.success) {\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\n\t\t\t\tif (data) {\n\t\t\t\t\twindow.localStorage.setItem(auth.storageTokenKeyName, data.token);\n\t\t\t\t\tconst userData: ERPUser = {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\n\t\t\t\t\t};\n\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\tauth.storageUserKeyName,\n\t\t\t\t\t\tJSON.stringify(userData)\n\t\t\t\t\t);\n\t\t\t\t\tsetUser(userData);\n\t\t\t\t\tsetAuthToken(data.token);\n\t\t\t\t\tnavigate(Pathname.DASHBOARD);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t\tdelete data.token;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(message);\n\t\t}\n\t};\n\n\tconst handleLogout = async () => {\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\n\t\twindow.localStorage.removeItem(auth.storageAccessKeyName);\n\t\tsetUser(null);\n\t\tsetAuthToken('');\n\t\tnavigate(Pathname.LOGIN);\n\t};\n\n\tconst handleForgotPassword = async (params: resetFormValues,\n\t\tcallback: (type: boolean, err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\n\t\t\tcallback(true, \"Reset Link sent to your email\");\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(false, message);\n\t\t}\n\t};\n\n\tconst handleResetPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\n\t\t\tcallback(response);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangePassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\n\t\t\tcallback(null);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t\tcallback(\"reset\");\n\t}\n\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tconst values = {\n\t\tuser,\n\t\tauthToken,\n\t\tloading,\n\t\tsetUser,\n\t\tsetLoading,\n\t\tlogin: handleLogin,\n\t\tlogout: handleLogout,\n\t\tforgotPassword: handleForgotPassword,\n\t\tresetPassword: handleResetPassword,\n\t\tchangePassword: handleChangePassword,\n\t\tchangeUserPassword: handleChangeUserPassword,\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\n\t};\n\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\n};\n\nexport { AuthContext, AuthProvider };\n"],"names":["PathnameGenerator","PathnameGeneratorInventory","PathnameGeneratorManufacuring","PathnameGeneratorPurchase","_a","RENTALROUTES","PathnameGeneratorCrm","PathnameGeneratorRental"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),a=require("../../api-client/api.rbac/api/index.js"),n=require("../../constants/auth/index.js"),r=require("react-router-dom"),o=require("../../constants/pathnames/pathname/index.js"),s=require("../../utils/common/index.js"),i=require("../../node_modules/notistack/notistack.esm/index.js"),c=require("socket.io-client"),u=require("../../utils/route-utils/index.js"),h=require("../../constants/pathnames/pathname.accounting/index.js"),m=require("../../constants/pathnames/pathname.inventory/index.js"),g=require("../../constants/pathnames/pathname.manufacturing/index.js"),l=require("../../constants/pathnames/pathname.procurement/index.js"),d=require("../../constants/pathnames/pathname.crm/index.js"),P=require("../../constants/pathnames/pathname.rental/index.js"),E=require("../../components/custom-snackbar/custom-snackbar/index.js");const S={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()},R=t.createContext(S);a.setBaseUrl("
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),a=require("../../api-client/api.rbac/api/index.js"),n=require("../../constants/auth/index.js"),r=require("react-router-dom"),o=require("../../constants/pathnames/pathname/index.js"),s=require("../../utils/common/index.js"),i=require("../../node_modules/notistack/notistack.esm/index.js"),c=require("socket.io-client"),u=require("../../utils/route-utils/index.js"),h=require("../../constants/pathnames/pathname.accounting/index.js"),m=require("../../constants/pathnames/pathname.inventory/index.js"),g=require("../../constants/pathnames/pathname.manufacturing/index.js"),l=require("../../constants/pathnames/pathname.procurement/index.js"),d=require("../../constants/pathnames/pathname.crm/index.js"),P=require("../../constants/pathnames/pathname.rental/index.js"),E=require("../../components/custom-snackbar/custom-snackbar/index.js");const S={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()},R=t.createContext(S);a.setBaseUrl("https://apidev.erpforce.co/rbac"),exports.AuthContext=R,exports.AuthProvider=({children:I})=>{const[_,w]=t.useState(S.user),[W,A]=t.useState(""),[p,f]=t.useState(S.loading),v=t.useRef(null),T=r.useNavigate(),N=e=>{if(!e)return!1;try{return JSON.parse(e)}catch(t){return!1}};t.useEffect(()=>{f(!0);const e=window.localStorage.getItem(n.auth.storageTokenKeyName),t=N(window.localStorage.getItem(n.auth.storageUserKeyName))??null,a=[o.Pathname.LOGIN,o.Pathname.FORGOT_PASSWORD,o.Pathname.RESET_PASSWORD,o.Pathname.CHANGE_PASSWORD],r=window.location.pathname;e||t?(w(t),A(e||""),f(!1)):(a.includes(r)||T(o.Pathname.LOGIN),f(!1))},[]),t.useEffect(()=>{var t;if(!W)return void(v.current&&(null==(t=v.current)||t.disconnect(),v.current=null));const a=c.io("http://127.0.0.1:4012",{transports:["websocket"],auth:{token:W},path:"/socket.io/"});return v.current=a,a.on("connect",()=>{a.onAny((e,...t)=>{})}),a.on("notification",t=>{const{message:a,notificationData:n}=t||{};let r=a;const o=(e=>{var t;const{moduleName:a="",moduleId:n="",notificationData:r={}}=e,o={"sales invoice":()=>u.generateRouteWithId(h.PathnameGenerator(h.PathnameAccounting.VIEW_SALES_INVOICES),n.toString()),"asset transfers":()=>u.generateRouteWithId(h.PathnameGenerator(h.PathnameAccounting.VIEW_ASSET_TRANSFER),n.toString()),budgets:()=>u.generateRouteWithId(h.PathnameGenerator(h.PathnameAccounting.VIEW_BUDGET),n.toString()),"cash expense":()=>u.generateRouteWithId(h.PathnameGenerator(h.PathnameAccounting.VIEW_CASH_EXPENSE),n.toString()),"credit notes":()=>u.generateRouteWithId(h.PathnameGenerator(h.PathnameAccounting.VIEW_CREDIT_NOTE),n.toString()),"debit notes":()=>u.generateRouteWithId(h.PathnameGenerator(h.PathnameAccounting.VIEW_DEBIT_NOTE),n.toString()),"expense reimbursement":()=>u.generateRouteWithId(h.PathnameGenerator(h.PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT),n.toString()),"journal entries":()=>u.generateRouteWithId(h.PathnameGenerator(h.PathnameAccounting.VIEW_JOURNAL_ENTRY),n.toString()),"payment entries":()=>u.generateRouteWithId(h.PathnameGenerator(h.PathnameAccounting.VIEW_PAYMENT_ENTRY),n.toString()),"purchase invoice":()=>u.generateRouteWithId(h.PathnameGenerator(h.PathnameAccounting.VIEW_PURCHASE_INVOICE),n.toString()),"stock transfer":()=>u.generateRouteWithId(m.PathnameGenerator(m.PathnameInventory.VIEW_STOCK_TRANSFER),n.toString()),"bills of materials":()=>u.generateRouteWithId(g.PathnameGenerator(g.PathnameManufacturing.VIEW_BILL_OF_MATERIAL),n.toString()),"purchase agreement":()=>u.generateRouteWithId(l.PathnameGenerator(l.PathnamePurchase.VIEW_PURCHASE_AGREEMENT),n.toString()),"purchase orders":()=>{var e;return u.generateRouteWithId(1==(null==(e=null==r?void 0:r.data)?void 0:e.is_rental)?P.ROUTES.VIEW:l.PathnameGenerator(l.PathnamePurchase.VIEW_PURCHASE_ORDER),n.toString())},"purchase request":()=>u.generateRouteWithId(l.PathnameGenerator(l.PathnamePurchase.VIEW_PURCHASE_ORDER),n.toString()),vra:()=>u.generateRouteWithId(l.PathnameGenerator(l.PathnamePurchase.VIEW_VENDOR_RETURNS),n.toString()),"sl customer returns":()=>u.generateRouteWithId(d.PathnameGenerator(d.PathnameCrm.VIEW_CUSTOMER_RETURNS),n.toString()),"sales order":()=>u.generateRouteWithId(d.PathnameGenerator(d.PathnameCrm.VIEW_SALES_ORDER),n.toString()),"rental order":()=>u.generateRouteWithId(P.PathnameGenerator(P.PathnameRental.VIEW_RENTAL_ORDER),n.toString()),"replacement order":()=>u.generateRouteWithId(P.PathnameGenerator(P.PathnameRental.VIEW_RENTAL_ORDER),n.toString()),"rental agreement":()=>u.generateRouteWithId(P.PathnameGenerator(P.PathnameRental.VIEW_AGREEMENT),n.toString()),"cross hire order":()=>u.generateRouteWithId(P.PathnameGenerator(P.PathnameRental.VIEW_CROSS_HIRE_ORDER),n.toString()),"cross hire request":()=>u.generateRouteWithId(P.PathnameGenerator(P.PathnameRental.VIEW_CROSS_HIRE_REQUEST),n.toString())};return(null==(t=o[a.toLowerCase()])?void 0:t.call(o))||"/dashboard"})(t);if(n){const{notification_type:e}=n;r=a}i.enqueueSnackbar(String(a),{variant:"default",anchorOrigin:{vertical:"top",horizontal:"center"},autoHideDuration:5e3,content:t=>/* @__PURE__ */e.jsx(E.CustomSnackbar,{snackbarKey:t,message:r,data:n,variant:"default",linkUrl:o})})}),a.on("sales_invoice_viewed",e=>{}),a.on("error",e=>{i.enqueueSnackbar(`Socket error: ${e}`,{variant:"error"})}),()=>{v.current&&(v.current.disconnect(),v.current=null)}},[W]);const y={user:_,authToken:W,loading:p,setUser:w,setLoading:f,login:async(e,t)=>{var r;if(f(!0),window.localStorage.getItem(n.auth.storageTokenKeyName)&&_)return T(o.Pathname.DASHBOARD);try{const t=await a.postV1AuthLogin({...e,...s.getToken()});if(t.success){const e=(null==(r=null==t?void 0:t.data)?void 0:r.login)||null;if(e){window.localStorage.setItem(n.auth.storageTokenKeyName,e.token);const t={...e,full_name:`${e.first_name} ${e.last_name}`};window.localStorage.setItem(n.auth.storageUserKeyName,JSON.stringify(t)),w(t),A(e.token),T(o.Pathname.DASHBOARD),f(!1),delete e.token}}}catch(i){let e="Something went wrong";i instanceof Error&&(e=N(i.message).message||i.message),t(e)}},logout:async()=>{window.localStorage.removeItem(n.auth.storageTokenKeyName),window.localStorage.removeItem(n.auth.storageUserKeyName),window.localStorage.removeItem(n.auth.storageAccessKeyName),w(null),A(""),T(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(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(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(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(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(n.message).message||n.message,t(e,!1))}}};/* @__PURE__ */
|
|
2
2
|
return e.jsx(R.Provider,{value:y,children:I})};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/contexts/AuthContext.tsx"],"sourcesContent":["import React, { createContext, useEffect, useRef, useState } from 'react';\nimport {\n\tpostV1AuthChangePassword,\n\tpostV1AuthForgotPassword,\n\tpostV1AuthChangeUserPassword,\n\t// getV1UserId,\n\tpostV1AuthLogin,\n\tpostV1AuthResetPassword,\n\tsetBaseUrl,\n\tpostV1AuthChangeUserPasswordByAdmin\n} from '../api-client/api.rbac/api';\nimport { auth } from '../constants/auth';\nimport { /* useLocation, */ useNavigate } from 'react-router-dom';\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { enqueueSnackbar } from 'notistack';\nimport { Socket, io } from 'socket.io-client';\nimport { generateRouteWithId } from '../utils/route-utils';\nimport {\n\tPathnameAccounting,\n\tPathnameGenerator\n} from '../constants/pathnames/pathname.accounting';\n\nimport {\n\tPathnameInventory,\n\tPathnameGenerator as PathnameGeneratorInventory\n} from '../constants/pathnames/pathname.inventory';\n\nimport {\n\tPathnameManufacturing,\n\tPathnameGenerator as PathnameGeneratorManufacuring\n} from '../constants/pathnames/pathname.manufacturing';\n\nimport {\n\tPathnamePurchase,\n\tPathnameGenerator as PathnameGeneratorPurchase\n} from '../constants/pathnames/pathname.procurement';\n\nimport {\n\tPathnameCrm,\n\tPathnameGenerator as PathnameGeneratorCrm\n} from '../constants/pathnames/pathname.crm';\n\nimport {\n\tPathnameRental,\n\tPathnameGenerator as PathnameGeneratorRental\n} from '../constants/pathnames/pathname.rental';\n\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\n\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\nexport interface LoginFormValues {\n\temail: string;\n\tpassword: string;\n}\n\nexport interface resetFormValues {\n\temail: string;\n}\n\nexport interface resetPasswordValues {\n\ttoken: string;\n}\n\nexport interface changePasswordValues {\n\tpassword: string;\n}\n\nexport interface changeUserPasswordValues {\n\tpassword: string;\n}\n\ninterface ERPApiUser {\n\tid: string | number;\n\tfirst_name: string;\n\tlast_name: string;\n\tmiddle_name: string;\n\tcountry_code: string;\n\temail: string;\n\tcreated_by: any;\n\tupdated_by: any;\n\tcreated_at: string;\n\tupdated_at: string;\n\trole_id: string;\n\tdepartment_id: number;\n\tis_deleted: number;\n\tdeleted_at: string | null;\n\tdeleted_by: any;\n\ttoken: string;\n\tprofile_image: string;\n\tcurrency_data?: {\n\t\tid: number;\n\t\tsymbol: string;\n\t\tcurrency_name: string;\n\t\tnumber_format:string;\n\t\tposition: string | null;\n\t\tfraction_unit: string | null\n\t};\n\taccessCompanies?: any[]\n}\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\n\tfull_name: string;\n\tcompany_id: string;\n}\n\ninterface DefaultProviderProps {\n\tuser: ERPUser | null;\n\tloading: boolean;\n\tauthToken: string;\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\tlogin: (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tlogout: () => Promise<void>;\n\tforgotPassword: (\n\t\tparams: resetFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tresetPassword: (\n\t\tparams: resetPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangePassword: (\n\t\tparams: changePasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangeUserPassword: (\n\t\tparams: changeUserPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n}\n\nconst defaultProvider: DefaultProviderProps = {\n\tuser: null,\n\tloading: true,\n\tauthToken: '',\n\tsetUser: () => null,\n\tsetLoading: () => Boolean,\n\tlogin: () => Promise.resolve(),\n\tlogout: () => Promise.resolve(),\n\tforgotPassword: () => Promise.resolve(),\n\tresetPassword: () => Promise.resolve(),\n\tchangePassword: () => Promise.resolve(),\n\tchangeUserPassword: () => Promise.resolve()\n};\n\nconst AuthContext = createContext(defaultProvider);\n\ninterface AuthProviderProps {\n\tchildren: React.ReactNode;\n}\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {\n\t// ** States\n\tconst [user, setUser] = useState(defaultProvider.user);\n\tconst [authToken, setAuthToken] = useState<string>('');\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\n\tconst socketRef = useRef<Socket | null>(null);\n\n\t// ** Hooks\n\tconst navigate = useNavigate();\n\t// const location = useLocation();\n\tconst isJsonParse = (string?: string | null) => {\n\t\tif (!string) return false;\n\n\t\ttry {\n\t\t\treturn JSON.parse(string);\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst getNotificationUrl = (data: any) => {\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\n\t\tconst key = moduleName.toLowerCase();\n\n\t\tconst routeMap: Record<string, () => string> = {\n\t\t\t'sales invoice': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\n\n\t\t\t'asset transfers': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\n\n\t\t\t'budgets': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\n\n\t\t\t'cash expense': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\n\n\t\t\t'credit notes': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\n\n\t\t\t'debit notes': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\n\n\t\t\t'expense reimbursement': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\n\n\t\t\t'journal entries': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\n\n\t\t\t'payment entries': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\n\n\t\t\t'purchase invoice': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\n\n\t\t\t'stock transfer': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\n\n\t\t\t'bills of materials': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\n\n\t\t\t'purchase agreement': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\n\n\t\t\t'purchase orders': () =>\n\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER) , moduleId.toString()),\n\n\t\t\t'purchase request': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\n\n\t\t\t'vra': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\n\n\t\t\t'sl customer returns': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\n\n\t\t\t'sales order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\n\n\t\t\t'rental order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'replacement order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'rental agreement': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\n\n\t\t\t'cross hire order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\n\n\t\t\t'cross hire request': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\n\t\t};\n\n\t\treturn routeMap[key]?.() || '/dashboard';\n\t};\n\n\n\t// const initAuth = async () => {\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tconst storedUser: ERPUser =\n\t// \t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) || null;\n\t// \tif (storedToken && storedUser) {\n\t// \t\ttry {\n\t// \t\t\tconst userData = await getV1UserId({\n\t// \t\t\t\t'x-token': storedToken,\n\t// \t\t\t\tid: String(storedUser.id)\n\t// \t\t\t});\n\t// \t\t} catch (error) {\n\t// \t\t}\n\t// \t} else {\n\t// \t\tsetLoading(false);\n\t// \t}\n\t// \tif (storedToken && storedUser) {\n\t// \t\tsetUser(storedUser);\n\t// setLoading(false);\n\t// \t} else {\n\t// \t\thandleLogout();\n\t// setLoading(false);\n\t// \t}\n\t// };\n\n\t// useEffect(() => {\n\t// setLoading(true)\n\t// \tinitAuth();\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tif (!storedToken) {\n\t// \t\tsetUser(null);\n\t// \t} else {\n\t// \t\tsetLoading(false);\n\t// \t}\n\t// \teslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, [location.pathname]);\n\n\t// useEffect(() => {\n\t// \tsetLoading(true);\n\t// \tinitAuth();\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tif (!storedToken) {\n\t// \t\tsetLoading(false);\n\t// \t\tnavigate(Pathname.LOGIN);\n\t// \t}\n\t// \t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, []);\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\t// initAuth()\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tconst storedUser =\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\n\t\tconst publicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD];\n\t\tconst currentPath = window.location.pathname;\n\t\tif (!storedToken && !storedUser) {\n\t\t\tif (!publicRoutes.includes(currentPath)) {\n\t\t\t\tnavigate(Pathname.LOGIN);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\tsetUser(storedUser);\n\t\t\tsetAuthToken(storedToken || '');\n\t\t\tsetLoading(false);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!authToken) {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current?.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst socket = io(import.meta.env.VITE_SOCKET_BASE_URL, {\n\t\t\ttransports: [\"websocket\"],\n\t\t\tauth: { token: authToken },\n\t\t\tpath: \"/socket.io/\",\n\t\t\t\n\t\t});\n\t\tsocketRef.current = socket;\n\n\t\tsocket.on(\"connect\", () => {\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\n\t\t\tsocket.onAny((event, ...args) => {\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\n\t\t\t});\n\t\t});\n\t\t\n\t\t// socket event handler\n\t\tsocket.on('notification', (data) => {\n\t\tconst { message, notificationData } = data || {};\n\t\tlet notificationContent: React.ReactNode = message;\n\t\tconst url = getNotificationUrl(data);\n\n\t\tif (notificationData) {\n\t\t\tconst { notification_type } = notificationData;\n\n\t\t\tswitch (notification_type) {\n\t\t\t\tcase 'addApprovers': {\n\t\t\t\t\t\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'change_approval_status': {\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tenqueueSnackbar(String(message), {\n\t\t\tvariant: 'default',\n\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\n\t\t\tautoHideDuration: 5000,\n\t\t\tcontent: (key) => (\n\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url}/>\n\t\t\t),\n\t\t});\n\t\t});\n\n\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\n\t\t});\n\n\t\tsocket.on(\"error\", (errMsg) => {\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\n\t\t\tconsole.error(\"Socket error:\", errMsg);\n\t\t});\n\n\t\t// Clean up on unmount\n\t\treturn () => {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t};\n\t}, [authToken]);\n\n\tconst handleLogin = async (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => {\n\t\tsetLoading(true);\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tif (storedToken && user) {\n\t\t\treturn navigate(Pathname.DASHBOARD);\n\t\t}\n\n\t\ttry {\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\n\t\t\tif (loginUser.success) {\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\n\t\t\t\tif (data) {\n\t\t\t\t\twindow.localStorage.setItem(auth.storageTokenKeyName, data.token);\n\t\t\t\t\tconst userData: ERPUser = {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\n\t\t\t\t\t};\n\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\tauth.storageUserKeyName,\n\t\t\t\t\t\tJSON.stringify(userData)\n\t\t\t\t\t);\n\t\t\t\t\tsetUser(userData);\n\t\t\t\t\tsetAuthToken(data.token);\n\t\t\t\t\tnavigate(Pathname.DASHBOARD);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t\tdelete data.token;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(message);\n\t\t}\n\t};\n\n\tconst handleLogout = async () => {\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\n\t\twindow.localStorage.removeItem(auth.storageAccessKeyName);\n\t\tsetUser(null);\n\t\tsetAuthToken('');\n\t\tnavigate(Pathname.LOGIN);\n\t};\n\n\tconst handleForgotPassword = async (params: resetFormValues,\n\t\tcallback: (type: boolean, err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\n\t\t\tcallback(true, \"Reset Link sent to your email\");\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(false, message);\n\t\t}\n\t};\n\n\tconst handleResetPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\n\t\t\tcallback(response);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangePassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\n\t\t\tcallback(null);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t\tcallback(\"reset\");\n\t}\n\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tconst values = {\n\t\tuser,\n\t\tauthToken,\n\t\tloading,\n\t\tsetUser,\n\t\tsetLoading,\n\t\tlogin: handleLogin,\n\t\tlogout: handleLogout,\n\t\tforgotPassword: handleForgotPassword,\n\t\tresetPassword: handleResetPassword,\n\t\tchangePassword: handleChangePassword,\n\t\tchangeUserPassword: handleChangeUserPassword,\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\n\t};\n\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\n};\n\nexport { AuthContext, AuthProvider };\n"],"names":["defaultProvider","user","loading","authToken","setUser","setLoading","Boolean","login","Promise","resolve","logout","forgotPassword","resetPassword","changePassword","changeUserPassword","AuthContext","createContext","setBaseUrl","children","useState","setAuthToken","socketRef","useRef","navigate","useNavigate","isJsonParse","string","JSON","parse","error","useEffect","storedToken","window","localStorage","getItem","auth","storageTokenKeyName","storedUser","storageUserKeyName","publicRoutes","Pathname","LOGIN","FORGOT_PASSWORD","RESET_PASSWORD","CHANGE_PASSWORD","currentPath","location","pathname","includes","current","_a","disconnect","socket","io","transports","token","path","on","onAny","event","args","data","message","notificationData","notificationContent","url","moduleName","moduleId","routeMap","generateRouteWithId","PathnameGenerator","PathnameAccounting","VIEW_SALES_INVOICES","toString","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","variant","anchorOrigin","vertical","horizontal","autoHideDuration","content","key","jsx","CustomSnackbar","snackbarKey","linkUrl","errMsg","values","async","params","callback","DASHBOARD","loginUser","postV1AuthLogin","getToken","success","setItem","userData","full_name","first_name","last_name","stringify","Error","removeItem","storageAccessKeyName","postV1AuthForgotPassword","postV1AuthResetPassword","postV1AuthChangePassword","postV1AuthChangeUserPassword","changeUserPasswordByAdmin","postV1AuthChangeUserPasswordByAdmin","Provider","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/contexts/AuthContext.tsx"],"sourcesContent":["import React, { createContext, useEffect, useRef, useState } from 'react';\nimport {\n\tpostV1AuthChangePassword,\n\tpostV1AuthForgotPassword,\n\tpostV1AuthChangeUserPassword,\n\t// getV1UserId,\n\tpostV1AuthLogin,\n\tpostV1AuthResetPassword,\n\tsetBaseUrl,\n\tpostV1AuthChangeUserPasswordByAdmin\n} from '../api-client/api.rbac/api';\nimport { auth } from '../constants/auth';\nimport { /* useLocation, */ useNavigate } from 'react-router-dom';\nimport { Pathname } from '../constants/pathnames/pathname'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { enqueueSnackbar } from 'notistack';\nimport { Socket, io } from 'socket.io-client';\nimport { generateRouteWithId } from '../utils/route-utils';\nimport {\n\tPathnameAccounting,\n\tPathnameGenerator\n} from '../constants/pathnames/pathname.accounting';\n\nimport {\n\tPathnameInventory,\n\tPathnameGenerator as PathnameGeneratorInventory\n} from '../constants/pathnames/pathname.inventory';\n\nimport {\n\tPathnameManufacturing,\n\tPathnameGenerator as PathnameGeneratorManufacuring\n} from '../constants/pathnames/pathname.manufacturing';\n\nimport {\n\tPathnamePurchase,\n\tPathnameGenerator as PathnameGeneratorPurchase\n} from '../constants/pathnames/pathname.procurement';\n\nimport {\n\tPathnameCrm,\n\tPathnameGenerator as PathnameGeneratorCrm\n} from '../constants/pathnames/pathname.crm';\n\nimport {\n\tPathnameRental,\n\tPathnameGenerator as PathnameGeneratorRental\n} from '../constants/pathnames/pathname.rental';\n\nimport { ROUTES as RENTALROUTES } from '../constants/pathnames/pathname.rental';\n\nimport CustomSnackbar from '../components/custom-snackbar/custom-snackbar.tsx';\nexport interface LoginFormValues {\n\temail: string;\n\tpassword: string;\n}\n\nexport interface resetFormValues {\n\temail: string;\n}\n\nexport interface resetPasswordValues {\n\ttoken: string;\n}\n\nexport interface changePasswordValues {\n\tpassword: string;\n}\n\nexport interface changeUserPasswordValues {\n\tpassword: string;\n}\n\ninterface ERPApiUser {\n\tid: string | number;\n\tfirst_name: string;\n\tlast_name: string;\n\tmiddle_name: string;\n\tcountry_code: string;\n\temail: string;\n\tcreated_by: any;\n\tupdated_by: any;\n\tcreated_at: string;\n\tupdated_at: string;\n\trole_id: string;\n\tdepartment_id: number;\n\tis_deleted: number;\n\tdeleted_at: string | null;\n\tdeleted_by: any;\n\ttoken: string;\n\tprofile_image: string;\n\tcurrency_data?: {\n\t\tid: number;\n\t\tsymbol: string;\n\t\tcurrency_name: string;\n\t\tnumber_format:string;\n\t\tposition: string | null;\n\t\tfraction_unit: string | null\n\t};\n\taccessCompanies?: any[]\n}\ninterface ERPUser extends Omit<ERPApiUser, 'token'> {\n\tfull_name: string;\n\tcompany_id: string;\n}\n\ninterface DefaultProviderProps {\n\tuser: ERPUser | null;\n\tloading: boolean;\n\tauthToken: string;\n\tsetUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;\n\tsetLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\tlogin: (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tlogout: () => Promise<void>;\n\tforgotPassword: (\n\t\tparams: resetFormValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tresetPassword: (\n\t\tparams: resetPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangePassword: (\n\t\tparams: changePasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n\tchangeUserPassword: (\n\t\tparams: changeUserPasswordValues,\n\t\tcallback: (err: string) => void\n\t) => Promise<void>;\n}\n\nconst defaultProvider: DefaultProviderProps = {\n\tuser: null,\n\tloading: true,\n\tauthToken: '',\n\tsetUser: () => null,\n\tsetLoading: () => Boolean,\n\tlogin: () => Promise.resolve(),\n\tlogout: () => Promise.resolve(),\n\tforgotPassword: () => Promise.resolve(),\n\tresetPassword: () => Promise.resolve(),\n\tchangePassword: () => Promise.resolve(),\n\tchangeUserPassword: () => Promise.resolve()\n};\n\nconst AuthContext = createContext(defaultProvider);\n\ninterface AuthProviderProps {\n\tchildren: React.ReactNode;\n}\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n\nconst AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {\n\t// ** States\n\tconst [user, setUser] = useState(defaultProvider.user);\n\tconst [authToken, setAuthToken] = useState<string>('');\n\tconst [loading, setLoading] = useState(defaultProvider.loading);\n\tconst socketRef = useRef<Socket | null>(null);\n\n\t// ** Hooks\n\tconst navigate = useNavigate();\n\t// const location = useLocation();\n\tconst isJsonParse = (string?: string | null) => {\n\t\tif (!string) return false;\n\n\t\ttry {\n\t\t\treturn JSON.parse(string);\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst getNotificationUrl = (data: any) => {\n\t\tconst { moduleName = '', moduleId = '', notificationData = {} } = data;\n\t\tconst key = moduleName.toLowerCase();\n\n\t\tconst routeMap: Record<string, () => string> = {\n\t\t\t'sales invoice': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_SALES_INVOICES), moduleId.toString()),\n\n\t\t\t'asset transfers': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_ASSET_TRANSFER), moduleId.toString()),\n\n\t\t\t'budgets': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_BUDGET), moduleId.toString()),\n\n\t\t\t'cash expense': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CASH_EXPENSE), moduleId.toString()),\n\n\t\t\t'credit notes': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_CREDIT_NOTE), moduleId.toString()),\n\n\t\t\t'debit notes': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_DEBIT_NOTE), moduleId.toString()),\n\n\t\t\t'expense reimbursement': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_EXPENSE_REIMBURSEMENT), moduleId.toString()),\n\n\t\t\t'journal entries': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_JOURNAL_ENTRY), moduleId.toString()),\n\n\t\t\t'payment entries': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PAYMENT_ENTRY), moduleId.toString()),\n\n\t\t\t'purchase invoice': () =>\n\t\t\tgenerateRouteWithId(PathnameGenerator(PathnameAccounting.VIEW_PURCHASE_INVOICE), moduleId.toString()),\n\n\t\t\t'stock transfer': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorInventory(PathnameInventory.VIEW_STOCK_TRANSFER), moduleId.toString()),\n\n\t\t\t'bills of materials': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorManufacuring(PathnameManufacturing.VIEW_BILL_OF_MATERIAL), moduleId.toString()),\n\n\t\t\t'purchase agreement': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_AGREEMENT), moduleId.toString()),\n\n\t\t\t'purchase orders': () =>\n\t\t\tgenerateRouteWithId(notificationData?.data?.is_rental == 1 ? RENTALROUTES.VIEW : PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER) , moduleId.toString()),\n\n\t\t\t'purchase request': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_PURCHASE_ORDER), moduleId.toString()),\n\n\t\t\t'vra': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorPurchase(PathnamePurchase.VIEW_VENDOR_RETURNS), moduleId.toString()),\n\n\t\t\t'sl customer returns': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_CUSTOMER_RETURNS), moduleId.toString()),\n\n\t\t\t'sales order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorCrm(PathnameCrm.VIEW_SALES_ORDER), moduleId.toString()),\n\n\t\t\t'rental order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'replacement order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_RENTAL_ORDER), moduleId.toString()),\n\n\t\t\t'rental agreement': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_AGREEMENT), moduleId.toString()),\n\n\t\t\t'cross hire order': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_ORDER), moduleId.toString()),\n\n\t\t\t'cross hire request': () =>\n\t\t\tgenerateRouteWithId(PathnameGeneratorRental(PathnameRental.VIEW_CROSS_HIRE_REQUEST), moduleId.toString()),\n\t\t};\n\n\t\treturn routeMap[key]?.() || '/dashboard';\n\t};\n\n\n\t// const initAuth = async () => {\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tconst storedUser: ERPUser =\n\t// \t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) || null;\n\t// \tif (storedToken && storedUser) {\n\t// \t\ttry {\n\t// \t\t\tconst userData = await getV1UserId({\n\t// \t\t\t\t'x-token': storedToken,\n\t// \t\t\t\tid: String(storedUser.id)\n\t// \t\t\t});\n\t// \t\t} catch (error) {\n\t// \t\t}\n\t// \t} else {\n\t// \t\tsetLoading(false);\n\t// \t}\n\t// \tif (storedToken && storedUser) {\n\t// \t\tsetUser(storedUser);\n\t// setLoading(false);\n\t// \t} else {\n\t// \t\thandleLogout();\n\t// setLoading(false);\n\t// \t}\n\t// };\n\n\t// useEffect(() => {\n\t// setLoading(true)\n\t// \tinitAuth();\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tif (!storedToken) {\n\t// \t\tsetUser(null);\n\t// \t} else {\n\t// \t\tsetLoading(false);\n\t// \t}\n\t// \teslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, [location.pathname]);\n\n\t// useEffect(() => {\n\t// \tsetLoading(true);\n\t// \tinitAuth();\n\t// \tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t// \tif (!storedToken) {\n\t// \t\tsetLoading(false);\n\t// \t\tnavigate(Pathname.LOGIN);\n\t// \t}\n\t// \t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t// }, []);\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\t// initAuth()\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tconst storedUser =\n\t\t\tisJsonParse(window.localStorage.getItem(auth.storageUserKeyName)) ?? null;\n\t\tconst publicRoutes = [Pathname.LOGIN, Pathname.FORGOT_PASSWORD, Pathname.RESET_PASSWORD, Pathname.CHANGE_PASSWORD];\n\t\tconst currentPath = window.location.pathname;\n\t\tif (!storedToken && !storedUser) {\n\t\t\tif (!publicRoutes.includes(currentPath)) {\n\t\t\t\tnavigate(Pathname.LOGIN);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\tsetUser(storedUser);\n\t\t\tsetAuthToken(storedToken || '');\n\t\t\tsetLoading(false);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!authToken) {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current?.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t\tconsole.warn(\"No auth token found, not connecting to socket.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst socket = io(import.meta.env.VITE_SOCKET_BASE_URL, {\n\t\t\ttransports: [\"websocket\"],\n\t\t\tauth: { token: authToken },\n\t\t\tpath: \"/socket.io/\",\n\t\t\t\n\t\t});\n\t\tsocketRef.current = socket;\n\n\t\tsocket.on(\"connect\", () => {\n\t\t\tconsole.log(\"Socket connected:\", socket.id);\n\t\t\tsocket.onAny((event, ...args) => {\n\t\t\t\tconsole.log(`Received event: ${event}`, args);\n\t\t\t});\n\t\t});\n\t\t\n\t\t// socket event handler\n\t\tsocket.on('notification', (data) => {\n\t\tconst { message, notificationData } = data || {};\n\t\tlet notificationContent: React.ReactNode = message;\n\t\tconst url = getNotificationUrl(data);\n\n\t\tif (notificationData) {\n\t\t\tconst { notification_type } = notificationData;\n\n\t\t\tswitch (notification_type) {\n\t\t\t\tcase 'addApprovers': {\n\t\t\t\t\t\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'change_approval_status': {\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tnotificationContent = message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tenqueueSnackbar(String(message), {\n\t\t\tvariant: 'default',\n\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'center' },\n\t\t\tautoHideDuration: 5000,\n\t\t\tcontent: (key) => (\n\t\t\t<CustomSnackbar snackbarKey={key} message={notificationContent} data={notificationData} variant=\"default\" linkUrl={url}/>\n\t\t\t),\n\t\t});\n\t\t});\n\n\n\t\tsocket.on(\"sales_invoice_viewed\", (data) => {\n\t\t\tconsole.log(\"Invoice viewed:\", data.invoiceId, \"by user:\", data.userId);\n\t\t});\n\n\t\tsocket.on(\"error\", (errMsg) => {\n\t\t\tenqueueSnackbar(`Socket error: ${errMsg}`, { variant: \"error\" });\n\t\t\tconsole.error(\"Socket error:\", errMsg);\n\t\t});\n\n\t\t// Clean up on unmount\n\t\treturn () => {\n\t\t\tif (socketRef.current) {\n\t\t\t\tsocketRef.current.disconnect();\n\t\t\t\tsocketRef.current = null\n\t\t\t}\n\t\t};\n\t}, [authToken]);\n\n\tconst handleLogin = async (\n\t\tparams: LoginFormValues,\n\t\tcallback: (err: string) => void\n\t) => {\n\t\tsetLoading(true);\n\t\tconst storedToken = window.localStorage.getItem(auth.storageTokenKeyName);\n\t\tif (storedToken && user) {\n\t\t\treturn navigate(Pathname.DASHBOARD);\n\t\t}\n\n\t\ttry {\n\t\t\tconst loginUser = await postV1AuthLogin({ ...params, ...getToken() });\n\t\t\tif (loginUser.success) {\n\t\t\t\tconst data: ERPApiUser | null = loginUser?.data?.login || null;\n\t\t\t\tif (data) {\n\t\t\t\t\twindow.localStorage.setItem(auth.storageTokenKeyName, data.token);\n\t\t\t\t\tconst userData: ERPUser = {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\tfull_name: `${data.first_name} ${data.last_name}`\n\t\t\t\t\t};\n\t\t\t\t\twindow.localStorage.setItem(\n\t\t\t\t\t\tauth.storageUserKeyName,\n\t\t\t\t\t\tJSON.stringify(userData)\n\t\t\t\t\t);\n\t\t\t\t\tsetUser(userData);\n\t\t\t\t\tsetAuthToken(data.token);\n\t\t\t\t\tnavigate(Pathname.DASHBOARD);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t\tdelete data.token;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(message);\n\t\t}\n\t};\n\n\tconst handleLogout = async () => {\n\t\twindow.localStorage.removeItem(auth.storageTokenKeyName);\n\t\twindow.localStorage.removeItem(auth.storageUserKeyName);\n\t\twindow.localStorage.removeItem(auth.storageAccessKeyName);\n\t\tsetUser(null);\n\t\tsetAuthToken('');\n\t\tnavigate(Pathname.LOGIN);\n\t};\n\n\tconst handleForgotPassword = async (params: resetFormValues,\n\t\tcallback: (type: boolean, err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthForgotPassword({ ...params, ...getToken() });\n\t\t\tcallback(true, \"Reset Link sent to your email\");\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t}\n\n\t\t\tcallback(false, message);\n\t\t}\n\t};\n\n\tconst handleResetPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tconst response = await postV1AuthResetPassword({ ...params, ...getToken() });\n\t\t\tcallback(response);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangePassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangePassword({ ...params, ...getToken() });\n\t\t\tcallback(null);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tconsole.log(\"Error \", error)\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message);\n\t\t\t}\n\t\t}\n\t\tcallback(\"reset\");\n\t}\n\n\tconst handleChangeUserPassword = async (params: resetPasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPassword({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleChangeUserPasswordByAdmin = async (params: changePasswordValues,\n\t\tcallback: (err: string, resType: boolean) => void) => {\n\t\ttry {\n\t\t\tawait postV1AuthChangeUserPasswordByAdmin({ ...params, ...getToken() });\n\t\t\tcallback('Password Changed Successfully', true);\n\t\t} catch (error) {\n\t\t\tlet message: string = 'Something went wrong';\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessage = isJsonParse(error.message).message || error.message;\n\t\t\t\tcallback(message, false);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tconst values = {\n\t\tuser,\n\t\tauthToken,\n\t\tloading,\n\t\tsetUser,\n\t\tsetLoading,\n\t\tlogin: handleLogin,\n\t\tlogout: handleLogout,\n\t\tforgotPassword: handleForgotPassword,\n\t\tresetPassword: handleResetPassword,\n\t\tchangePassword: handleChangePassword,\n\t\tchangeUserPassword: handleChangeUserPassword,\n\t\tchangeUserPasswordByAdmin: handleChangeUserPasswordByAdmin\n\t};\n\n\treturn <AuthContext.Provider value={values}>{children}</AuthContext.Provider>;\n};\n\nexport { AuthContext, AuthProvider };\n"],"names":["defaultProvider","user","loading","authToken","setUser","setLoading","Boolean","login","Promise","resolve","logout","forgotPassword","resetPassword","changePassword","changeUserPassword","AuthContext","createContext","setBaseUrl","children","useState","setAuthToken","socketRef","useRef","navigate","useNavigate","isJsonParse","string","JSON","parse","error","useEffect","storedToken","window","localStorage","getItem","auth","storageTokenKeyName","storedUser","storageUserKeyName","publicRoutes","Pathname","LOGIN","FORGOT_PASSWORD","RESET_PASSWORD","CHANGE_PASSWORD","currentPath","location","pathname","includes","current","_a","disconnect","socket","io","transports","token","path","on","onAny","event","args","data","message","notificationData","notificationContent","url","moduleName","moduleId","routeMap","generateRouteWithId","PathnameGenerator","PathnameAccounting","VIEW_SALES_INVOICES","toString","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","variant","anchorOrigin","vertical","horizontal","autoHideDuration","content","key","jsx","CustomSnackbar","snackbarKey","linkUrl","errMsg","values","async","params","callback","DASHBOARD","loginUser","postV1AuthLogin","getToken","success","setItem","userData","full_name","first_name","last_name","stringify","Error","removeItem","storageAccessKeyName","postV1AuthForgotPassword","postV1AuthResetPassword","postV1AuthChangePassword","postV1AuthChangeUserPassword","changeUserPasswordByAdmin","postV1AuthChangeUserPasswordByAdmin","Provider","value"],"mappings":"67BAsIA,MAAMA,EAAwC,CAC7CC,KAAM,KACNC,SAAS,EACTC,UAAW,GACXC,QAAS,IAAM,KACfC,WAAY,IAAMC,QAClBC,MAAO,IAAMC,QAAQC,UACrBC,OAAQ,IAAMF,QAAQC,UACtBE,eAAgB,IAAMH,QAAQC,UAC9BG,cAAe,IAAMJ,QAAQC,UAC7BI,eAAgB,IAAML,QAAQC,UAC9BK,mBAAoB,IAAMN,QAAQC,WAG7BM,EAAcC,EAAAA,cAAchB,GAMlCiB,EAAAA,WAAW,8EAEuC,EAAGC,eAEpD,MAAOjB,EAAMG,GAAWe,EAAAA,SAASnB,EAAgBC,OAC1CE,EAAWiB,GAAgBD,EAAAA,SAAiB,KAC5CjB,EAASG,GAAcc,EAAAA,SAASnB,EAAgBE,SACjDmB,EAAYC,EAAAA,OAAsB,MAGlCC,EAAWC,EAAAA,cAEXC,EAAeC,IACpB,IAAKA,EAAQ,OAAO,EAEpB,IACC,OAAOC,KAAKC,MAAMF,EACnB,OAASG,GACR,OAAO,CACR,GAiIDC,EAAAA,UAAU,KACTzB,GAAW,GAEX,MAAM0B,EAAcC,OAAOC,aAAaC,QAAQC,EAAAA,KAAKC,qBAC/CC,EACLZ,EAAYO,OAAOC,aAAaC,QAAQC,EAAAA,KAAKG,sBAAwB,KAChEC,EAAe,CAACC,EAAAA,SAASC,MAAOD,EAAAA,SAASE,gBAAiBF,WAASG,eAAgBH,EAAAA,SAASI,iBAC5FC,EAAcb,OAAOc,SAASC,SAC/BhB,GAAgBM,GAMpBjC,EAAQiC,GACRjB,EAAaW,GAAe,IAC5B1B,GAAW,KAPNkC,EAAaS,SAASH,IAC1BtB,EAASiB,EAAAA,SAASC,OAEnBpC,GAAW,KAOV,IAEHyB,EAAAA,UAAU,WACT,IAAK3B,EAMJ,YALIkB,EAAU4B,UACb,OAAAC,EAAA7B,EAAU4B,UAAVC,EAAmBC,aACnB9B,EAAU4B,QAAU,OAMtB,MAAMG,EAASC,EAAAA,GAAG,wBAAsC,CACvDC,WAAY,CAAC,aACbnB,KAAM,CAAEoB,MAAOpD,GACfqD,KAAM,gBA6DP,OA1DAnC,EAAU4B,QAAUG,EAEpBA,EAAOK,GAAG,UAAW,KAEpBL,EAAOM,MAAM,CAACC,KAAUC,UAMzBR,EAAOK,GAAG,eAAiBI,IAC3B,MAAMC,QAAEA,EAAAC,iBAASA,GAAqBF,GAAQ,CAAA,EAC9C,IAAIG,EAAuCF,EAC3C,MAAMG,EAhLoB,CAACJ,UAC3B,MAAMK,WAAEA,EAAa,GAAAC,SAAIA,EAAW,oBAAIJ,EAAmB,CAAA,GAAOF,EAG5DO,EAAyC,CAC9C,gBAAiB,IACjBC,EAAAA,oBAAoBC,oBAAkBC,EAAAA,mBAAmBC,qBAAsBL,EAASM,YAExF,kBAAmB,IACnBJ,EAAAA,oBAAoBC,oBAAkBC,EAAAA,mBAAmBG,qBAAsBP,EAASM,YAExFE,QAAW,IACXN,EAAAA,oBAAoBC,oBAAkBC,EAAAA,mBAAmBK,aAAcT,EAASM,YAEhF,eAAgB,IAChBJ,EAAAA,oBAAoBC,oBAAkBC,EAAAA,mBAAmBM,mBAAoBV,EAASM,YAEtF,eAAgB,IAChBJ,EAAAA,oBAAoBC,oBAAkBC,EAAAA,mBAAmBO,kBAAmBX,EAASM,YAErF,cAAe,IACfJ,EAAAA,oBAAoBC,oBAAkBC,EAAAA,mBAAmBQ,iBAAkBZ,EAASM,YAEpF,wBAAyB,IACzBJ,EAAAA,oBAAoBC,oBAAkBC,EAAAA,mBAAmBS,4BAA6Bb,EAASM,YAE/F,kBAAmB,IACnBJ,EAAAA,oBAAoBC,oBAAkBC,EAAAA,mBAAmBU,oBAAqBd,EAASM,YAEvF,kBAAmB,IACnBJ,EAAAA,oBAAoBC,oBAAkBC,EAAAA,mBAAmBW,oBAAqBf,EAASM,YAEvF,mBAAoB,IACpBJ,EAAAA,oBAAoBC,oBAAkBC,EAAAA,mBAAmBY,uBAAwBhB,EAASM,YAE1F,iBAAkB,IAClBJ,EAAAA,oBAAoBe,oBAA2BC,EAAAA,kBAAkBC,qBAAsBnB,EAASM,YAEhG,qBAAsB,IACtBJ,EAAAA,oBAAoBkB,oBAA8BC,EAAAA,sBAAsBC,uBAAwBtB,EAASM,YAEzG,qBAAsB,IACtBJ,EAAAA,oBAAoBqB,oBAA0BC,EAAAA,iBAAiBC,yBAA0BzB,EAASM,YAElG,kBAAmB,WACnBJ,OAAAA,EAAAA,oBAAyD,IAArC,OAAAnB,EAAA,MAAAa,OAAA,EAAAA,EAAkBF,WAAlB,EAAAX,EAAwB2C,WAAiBC,EAAAA,OAAaC,KAAOL,EAAAA,kBAA0BC,EAAAA,iBAAiBK,qBAAuB7B,EAASM,aAE5J,mBAAoB,IACpBJ,EAAAA,oBAAoBqB,oBAA0BC,EAAAA,iBAAiBK,qBAAsB7B,EAASM,YAE9FwB,IAAO,IACP5B,EAAAA,oBAAoBqB,oBAA0BC,EAAAA,iBAAiBO,qBAAsB/B,EAASM,YAE9F,sBAAuB,IACvBJ,EAAAA,oBAAoB8B,oBAAqBC,EAAAA,YAAYC,uBAAwBlC,EAASM,YAEtF,cAAe,IACfJ,EAAAA,oBAAoB8B,oBAAqBC,EAAAA,YAAYE,kBAAmBnC,EAASM,YAEjF,eAAgB,IAChBJ,EAAAA,oBAAoBkC,oBAAwBC,EAAAA,eAAeC,mBAAoBtC,EAASM,YAExF,oBAAqB,IACrBJ,EAAAA,oBAAoBkC,oBAAwBC,EAAAA,eAAeC,mBAAoBtC,EAASM,YAExF,mBAAoB,IACpBJ,EAAAA,oBAAoBkC,oBAAwBC,EAAAA,eAAeE,gBAAiBvC,EAASM,YAErF,mBAAoB,IACpBJ,EAAAA,oBAAoBkC,oBAAwBC,EAAAA,eAAeG,uBAAwBxC,EAASM,YAE5F,qBAAsB,IACtBJ,EAAAA,oBAAoBkC,EAAAA,kBAAwBC,EAAAA,eAAeI,yBAA0BzC,EAASM,aAG/F,OAAO,OAAAvB,EAAAkB,EAzEKF,EAAW2C,qBAyEhB,EAAA3D,EAAA4D,KAAA1C,KAAqB,cAqGhB2C,CAAmBlD,GAE/B,GAAIE,EAAkB,CACrB,MAAMiD,kBAAEA,GAAsBjD,EAe5BC,EAAsBF,CAIzB,CAEAmD,kBAAgBC,OAAOpD,GAAU,CAChCqD,QAAS,UACTC,aAAc,CAAEC,SAAU,MAAOC,WAAY,UAC7CC,iBAAkB,IAClBC,QAAUC,oBACVC,IAACC,EAAAA,gBAAeC,YAAaH,EAAK3D,QAASE,EAAqBH,KAAME,EAAkBoD,QAAQ,UAAWU,QAAS5D,QAMrHb,EAAOK,GAAG,uBAAyBI,OAInCT,EAAOK,GAAG,QAAUqE,IACnBb,EAAAA,gBAAgB,iBAAiBa,IAAU,CAAEX,QAAS,YAKhD,KACF9F,EAAU4B,UACb5B,EAAU4B,QAAQE,aAClB9B,EAAU4B,QAAU,QAGpB,CAAC9C,IAEJ,MA6HM4H,EAAS,CACd9H,OACAE,YACAD,UACAE,UACAC,aACAE,MAnImByH,MACnBC,EACAC,WAIA,GAFA7H,GAAW,GACS2B,OAAOC,aAAaC,QAAQC,EAAAA,KAAKC,sBAClCnC,EAClB,OAAOsB,EAASiB,EAAAA,SAAS2F,WAG1B,IACC,MAAMC,QAAkBC,kBAAgB,IAAKJ,KAAWK,EAAAA,aACxD,GAAIF,EAAUG,QAAS,CACtB,MAAM1E,GAA0B,OAAAX,EAAA,MAAAkF,OAAA,EAAAA,EAAWvE,WAAX,EAAAX,EAAiB3C,QAAS,KAC1D,GAAIsD,EAAM,CACT7B,OAAOC,aAAauG,QAAQrG,EAAAA,KAAKC,oBAAqByB,EAAKN,OAC3D,MAAMkF,EAAoB,IACtB5E,EACH6E,UAAW,GAAG7E,EAAK8E,cAAc9E,EAAK+E,aAEvC5G,OAAOC,aAAauG,QACnBrG,EAAAA,KAAKG,mBACLX,KAAKkH,UAAUJ,IAEhBrI,EAAQqI,GACRrH,EAAayC,EAAKN,OAClBhC,EAASiB,EAAAA,SAAS2F,WAClB9H,GAAW,UACJwD,EAAKN,KACb,CACD,CACD,OAAS1B,GACR,IAAIiC,EAAkB,uBAClBjC,aAAiBiH,QACpBhF,EAAUrC,EAAYI,EAAMiC,SAASA,SAAWjC,EAAMiC,SAGvDoE,EAASpE,EACV,GA8FApD,OA3FoBsH,UACpBhG,OAAOC,aAAa8G,WAAW5G,EAAAA,KAAKC,qBACpCJ,OAAOC,aAAa8G,WAAW5G,EAAAA,KAAKG,oBACpCN,OAAOC,aAAa8G,WAAW5G,EAAAA,KAAK6G,sBACpC5I,EAAQ,MACRgB,EAAa,IACbG,EAASiB,EAAAA,SAASC,QAsFlB9B,eAnF4BqH,MAAOC,EACnCC,KACA,UACOe,EAAAA,yBAAyB,IAAKhB,KAAWK,EAAAA,aAC/CJ,GAAS,EAAM,gCAChB,OAASrG,GACR,IAAIiC,EAAkB,uBAClBjC,aAAiBiH,QACpBhF,EAAUrC,EAAYI,EAAMiC,SAASA,SAAWjC,EAAMiC,SAGvDoE,GAAS,EAAOpE,EACjB,GAwEAlD,cArE2BoH,MAAOC,EAClCC,KACA,IAECA,QADuBgB,0BAAwB,IAAKjB,KAAWK,EAAAA,aAEhE,OAASzG,GACR,IAAIiC,EAAkB,uBAElBjC,aAAiBiH,QACpBhF,EAAUrC,EAAYI,EAAMiC,SAASA,SAAWjC,EAAMiC,QACtDoE,EAASpE,GAEX,GA0DAjD,eAvD4BmH,MAAOC,EACnCC,KACA,UACOiB,EAAAA,yBAAyB,IAAKlB,KAAWK,EAAAA,aAC/CJ,EAAS,KACV,OAASrG,GACR,IAAIiC,EAAkB,uBAElBjC,aAAiBiH,QACpBhF,EAAUrC,EAAYI,EAAMiC,SAASA,SAAWjC,EAAMiC,QACtDoE,EAASpE,GAEX,CACAoE,EAAS,UA2CTpH,mBAxCgCkH,MAAOC,EACvCC,KACA,UACOkB,EAAAA,6BAA6B,IAAKnB,KAAWK,EAAAA,aACnDJ,EAAS,iCAAiC,EAC3C,OAASrG,GACR,IAAIiC,EAAkB,uBAClBjC,aAAiBiH,QACpBhF,EAAUrC,EAAYI,EAAMiC,SAASA,SAAWjC,EAAMiC,QACtDoE,EAASpE,GAAS,GAEpB,GA8BAuF,0BA3BuCrB,MAAOC,EAC9CC,KACA,UACOoB,EAAAA,oCAAoC,IAAKrB,KAAWK,EAAAA,aAC1DJ,EAAS,iCAAiC,EAC3C,OAASrG,GACR,IAAIiC,EAAkB,uBAClBjC,aAAiBiH,QACpBhF,EAAUrC,EAAYI,EAAMiC,SAASA,SAAWjC,EAAMiC,QACtDoE,EAASpE,GAAS,GAEpB;AAmBD,aAAQ/C,EAAYwI,SAAZ,CAAqBC,MAAOzB,EAAS7G"}
|