{"version":3,"sources":["components/@material-extend/MHidden.js","components/MenuPopover.js","_mocks_/account.js","layouts/dashboard/AccountPopover.js","layouts/dashboard/DashboardNavbar.js","components/Scrollbar.js","components/NavSection.js","layouts/dashboard/SidebarConfig.js","layouts/dashboard/DashboardSidebar.js","layouts/dashboard/index.js","components/Logo.js","layouts/LogoOnlyLayout.js","components/Page.js","components/StyledSnackbar.js","utils/headers.js","AxiosInstance.js","components/ForgotPasswordEmailModal.js","components/authentication/login/LoginForm.js","pages/Login.js","layouts/AuthLayout.js","components/authentication/register/RegisterForm.js","pages/Register.js","components/_dashboard/products/ProductCartWidget.js","components/Label.js","components/_dashboard/products/ProductCard.js","components/_dashboard/products/ProductList.js","services/products.services.js","pages/Products.js","components/_dashboard/user/UserListToolbarWithoutDebounce.js","components/SearchNotFound.js","components/_dashboard/user/UserListHead.js","components/_dashboard/user/UserListToolbar.js","components/_dashboard/user/OrderListToolbar.js","components/EditPatient.js","components/_dashboard/user/UserMoreMenu.js","services/patients.services.js","pages/User.js","components/animate/variants/Wrap.js","components/animate/variants/bounce/BounceIn.js","components/animate/variants/bounce/BounceOut.js","components/animate/MotionContainer.js","pages/Page404.js","components/ThreeDModal.js","components/ClearAlignersModal.js","utils/abbreviator.js","services/profile.services.js","services/orders.services.js","utils/UrlValidator.js","pages/OrderNow.js","components/_dashboard/app/PendingOrders.js","utils/formatNumber.js","components/_dashboard/app/AppItemOrders.js","components/_dashboard/app/AppNewUsers.js","components/_dashboard/app/AppWeeklySales.js","services/dashboard.services.js","pages/ClientsDashboard.js","constants/OrdersStatus.js","pages/OrderHistory.js","components/TrackingDetails.js","components/Stepper.js","components/CancelledOrder.js","pages/OrderDetails.js","components/pdflogoBase64.js","components/UploadLoader.js","components/EditAddressModal.js","pages/AddPatient.js","components/AddressMoreMenu.js","components/AddAddressModal.js","pages/EditPatient.js","pages/MyProfile.js","components/authentication/login/ForgotPasswordForm.js","pages/ForgotPassword.js","routes.js","theme/shape.js","theme/palette.js","theme/typography.js","theme/overrides/index.js","theme/overrides/Card.js","theme/overrides/Lists.js","theme/overrides/Paper.js","theme/overrides/Input.js","theme/overrides/Button.js","theme/overrides/Tooltip.js","theme/overrides/Backdrop.js","theme/overrides/Typography.js","theme/overrides/IconButton.js","theme/overrides/Autocomplete.js","theme/shadows.js","theme/index.js","theme/globalStyles.js","components/ScrollToTop.js","components/charts/BaseOptionChart.js","App.js","serviceWorker.js","reportWebVitals.js","index.js"],"names":["MHidden","width","children","breakpoint","substring","hiddenUp","useMediaQuery","theme","breakpoints","up","hiddenDown","down","includes","propTypes","PropTypes","node","oneOf","isRequired","ArrowStyle","styled","top","zIndex","right","height","content","position","borderRadius","transform","background","palette","paper","borderRight","alpha","grey","borderBottom","MenuPopover","sx","other","Popover","anchorOrigin","vertical","horizontal","transformOrigin","PaperProps","mt","ml","overflow","boxShadow","customShadows","z20","border","className","account","displayName","email","photoURL","MENU_OPTIONS","label","icon","personFill","linkTo","AccountPopover","userData","JSON","parse","window","localStorage","getItem","anchorRef","useRef","useState","open","setOpen","navigate","useNavigate","handleClose","logoutHandler","a","removeItem","replace","Button","ref","onClick","Avatar","src","alt","style","color","onClose","anchorEl","current","Box","my","px","Typography","variant","noWrap","name","Divider","map","option","MenuItem","to","component","RouterLink","typography","py","Icon","mr","p","pt","fullWidth","RootStyle","AppBar","backdropFilter","WebkitBackdropFilter","backgroundColor","default","DRAWER_WIDTH","ToolbarStyle","Toolbar","minHeight","padding","spacing","DashboardNavbar","onOpenSidebar","IconButton","menu2Fill","flexGrow","Stack","direction","alignItems","xs","sm","SimpleBarStyle","SimpleBarReact","maxHeight","opacity","Scrollbar","test","navigator","userAgent","overflowX","timeout","clickOnTrack","ListItemStyle","props","ListItemButton","disableGutters","body2","textTransform","paddingLeft","paddingRight","text","secondary","bottom","display","borderTopLeftRadius","borderBottomLeftRadius","primary","main","ListItemIconStyle","ListItemIcon","justifyContent","NavItem","item","active","useTheme","isActiveRoot","path","title","info","activeRootStyle","fontWeight","bgcolor","action","selectedOpacity","activeSubStyle","prev","ListItemText","disableTypography","arrowIosDownwardFill","arrowIosForwardFill","Collapse","in","unmountOnExit","List","disablePadding","isActiveSub","transition","transitions","create","NavSection","navConfig","pathname","useLocation","match","matchPath","end","getIcon","sidebarConfig","pieChart2Fill","peopleFill","shoppingBagFill","fileTextFill","flexShrink","AccountStyle","shape","borderRadiusSm","DashboardSidebar","isOpenSidebar","onCloseSidebar","useEffect","renderContent","flexDirection","mb","mx","marginTop","Link","underline","role","Drawer","MainStyle","paddingTop","APP_BAR_MOBILE","paddingBottom","APP_BAR_DESKTOP","DashboardLayout","Logo","HeaderStyle","left","lineHeight","LogoOnlyLayout","Page","forwardRef","string","StyledSnackbar","xPos","yPos","status","Snackbar","autoHideDuration","Alert","severity","headers","Authorization","instance","axios","interceptors","request","use","config","token","error","Promise","reject","response","swal","data","message","process","method","stringify","password","AES","decrypt","toString","enc","Utf8","setItem","userDetails","meta","id","location","reload","clear","ForgotPasswordEmailModal","values","setValues","spinner","setSpinner","errors","setErrors","errorsMsg","setErrorsMsg","emailRegex","submitHandler","IsOpen","maxWidth","TextField","type","value","onChange","event","target","length","autoComplete","helperText","CircularProgress","LoginForm","showPassword","setShowPassword","LoginSchema","Yup","required","openSnack","setOpenSnack","handleClick","formik","useFormik","initialValues","remember","validationSchema","onSubmit","trim","envrypted","encrypt","setSnackBarData","snackbarData","touched","isSubmitting","handleSubmit","getFieldProps","Modal","aria-labelledby","aria-describedby","noValidate","Boolean","InputProps","endAdornment","InputAdornment","show","edge","eyeFill","eyeOffFill","FormControlLabel","control","Checkbox","checked","LoadingButton","size","loading","href","rel","reason","SectionStyle","Card","margin","ContentStyle","Login","Container","gutterBottom","AuthLayout","md","RegisterForm","RegisterSchema","firstName","min","max","lastName","Register","align","textAlign","cursor","borderRadiusMd","ownerState","minWidth","whiteSpace","fontSize","pxToRem","fontFamily","fontWeightBold","contrastText","styleFilled","styleOutlined","dark","styleGhost","Label","ProductImgStyle","objectFit","ProductImgStyleDisabled","filter","ShopProductCard","product","urldata","ProductList","products","modalIsOpen","setModalIsOpen","subProducts","setSubProducts","fetchSubProducts","productID","Grid","container","disable","index","find","url","outline","alignContent","TableContainer","Paper","Table","aria-label","TableBody","subProduct","TableRow","TableCell","scope","getBrandsServices","getUserWiseBrandsServices","getUserWiseModelsServices","getTrimsServices","getModelsServices","getShippingTax","getModalTaxServices","getBrandsTaxServices","getAddonsTaxServices","getProductsServices","EcommerceShop","productNames","setproductNames","productNamesData","fetchProduct","SearchStyle","OutlinedInput","easing","easeInOut","duration","shorter","z8","borderWidth","borderColor","UserListToolbarWithoutDebounce","numSelected","onFilterName","placeholder","startAdornment","searchFill","SearchNotFound","UserListHead","order","orderBy","headLabel","onRequestSort","TableHead","headCell","alignRight","sortDirection","TableSortLabel","hideSortIcon","property","visuallyHidden","UserListToolbar","OrderListToolbar","filterName","defaultValue","EditPatient","address1","address","address_line_1","address2","address_line_2","landmark","mobile","state","pincode","pincodeId","city","pincodes","setPincodes","fetch","responseForPincode","json","fetcher","isOpen2","setIsOpen2","street","addPatientHandler","body","pincode_id","Number","addAddressResp","handleChange","prop","v","fetchPincodes","e","resp","forEach","currentArray","onInput","slice","phone","flexWrap","disabled","Autocomplete","noOptionsText","onKeyPress","onKeyDown","options","renderInput","params","UserMoreMenu","openEdit","setOpenEdit","isOpen","setIsOpen","moreVerticalFill","Menu","editFill","primaryTypographyProps","getPincodesDetailsServices","uploadPatientsFileServices","folderName","file_name","uploadPatientsFileByIdServices","patient_uuid","patientUuid","getPatientsAttachmentByIdServices","getPatientsDetailsByIdServices","getPatientsAddressByIdServices","addPatientsServices","editPatientsServices","getAllPincodesServices","getAllPatientsListsServices","rowsPerPage","page","searchByName","TABLE_HEAD","User","setPage","pageCount","setPageCount","setOrder","selected","setSelected","setOrderBy","setFilterName","setRowsPerPage","patients","setPatients","addressDetails","split","toLowerCase","search","handleChangePage","newPage","changeHandler","debouncedChangeHandler","useMemo","debounce","filteredUsers","isUserNotFound","startIcon","plusFill","rowCount","onSelectAllClick","newSelecteds","n","row","isItemSelected","indexOf","hover","tabIndex","aria-checked","colSpan","searchQuery","TablePagination","rowsPerPageOptions","count","onPageChange","onRowsPerPageChange","parseInt","labelRowsPerPage","varWrapEnter","animate","staggerChildren","TRANSITION_ENTER","ease","TRANSITION_EXIT","varBounceIn","scale","exit","y","scaleY","x","scaleX","MotionContainer","motion","div","initial","variants","Page404","paragraph","ThreeDModal","React","inCartItems","rerenderedCart","setRerenderedCart","thickness","aligner","foil","commonData","setCommonData","prefix","minRange","maxRange","upperData","setUpperData","lowerData","setLowerData","upperMax","upperMin","lowerMax","lowerMin","errorCommon","setErrorCommon","cartData","setCartData","handleChangeUpper","resetUpper","resetLower","resetCommon","handleChangeLower","handlerSave","correctInput","isCorrectCounter","setInCartItems","handleEditInCart","FormControl","model","getOptionLabel","newValue","FormHelperText","cart","labelId","mode","ClearAlignersModal","upperDataTemplate","setUpperDataTemplate","lowerDataTemplate","setLowerDataTemplate","upperDataAligner","setUpperDataAligner","lowerDataAligner","setLowerDataAligner","upperDataRetainer","setUpperDataRetainer","lowerDataRetainer","setLowerDataRetainer","errorsTemplate","setErrorsTemplate","errorsAligner","setErrorsAligner","errorsRetainer","setErrorsRetainer","resetAll","brand","bran","abbreviate","s","changePasswordServices","old_password","cPassword","new_password","newPassword","new_password_confirmation","getDoctorAddressById","getDoctorDetailsServices","getOrderDetailsById","getPatientsListServices","term","updateOrderAddressByOrderIdServices","addid","address_type","shipToClinicServices","addressDr","downloadOrderInvoiceByIdServices","getAddonsServices","getOrdersListServices","rowsPerPageParam","pageParam","orderStatusParam","getPatientsOrdersListServices","patientId","razorPayOnlinePaymentServices","createOrderServices","uploadOrderAttachment","fileName","fileType","isUrl","descendingComparator","b","loadScript","resolve","script","document","createElement","onload","onerror","appendChild","OrderNow","formdata","FormData","userId","inCart","setInCart","setAddress","brands","setBrands","shippingCost","setShippingCost","trims","setTrims","ship2Clinic","setShip2Clinic","slug","aligners","models","setModels","addons","setAddons","patientsOrders","setPatientsOrders","productsListing","setProductsListing","spinnerHistory","setSpinnerHistory","attachmentFile","setAttachmentFile","attachmentFileType","setAttachmentFileType","addressId","productId","files","instructions","attachmentId","driveLink","orderDetails","setOrderDetails","orderErrors","setOrderErrors","addressList","setAddressList","addressAbbreviation","setAddressAbbreviation","addressWithoutAbbreviation","addPatientAddress","addressData","getPatientAddress","priceAndTax","price","tax","TotalPrice","addon","addonTax","TotalTax","addOnsCart","setAddOnsCart","priceOfCart","setPriceOfCart","getAddress","code","getBrands","setBrandsUserWise","getBrandsUserWise","setModelsUserWise","getModelsUserWise","getTrims","prodArr","obj","getProducts","getModels","getShip","setModelTax","getModelTax","setBrandTax","getBrandTax","setAddonTax","getAddOnsTax","getAddOns","fetchPatiensArray","fetchPatients","brandsUserWise","modelsUserWise","modelTax","brandTax","setTax","attachmentsList","setAttachmentsList","getAttachments","modalStyle","overflowY","handleOpen","sum","i","j","productable_id","personName","setPersonName","addonsPrice","setAddOnsPrice","add","patient","is_clinic_address","placeOrderHandler","preventDefault","orderArray","push","brand_id","aligner_type_id","model_type_id","checkPaymentMethod","paymentMethod","payment_method","is_blocked","alert","product_id","quantity","amount","shipping_cost","total_amount","order_details","key","currency","order_id","description","handler","razorpay_payment_id","filePath","res","resdata","uploadURL","append","put","customer_id","address_id","patient_id","drive_link","stl_attachment","file_attachment","razorpay_order_id","add_ons","ship_to_clinic","trim_id","then","setTimeout","prefill","notes","eventName","Razorpay","emptyRows","Math","array","comparator","query","stabilizedThis","el","sort","_user","applySortFilter","getComparator","setFileName","encType","autoHighlight","handleChangeId","renderOption","inputProps","InputLabel","Select","MenuProps","attach","attachment_url","multiline","addres","multiple","input","renderValue","gap","toLocaleString","maxLength","accept","getElementById","click","marginBottom","ListItem","origin","moment","ordered_on","format","delivered_on","PendingOrders","fShortenNumber","number","numeral","darker","lighter","IconWrapperStyle","backgroundImage","AppItemOrders","pending","AppNewUsers","success","AppWeeklySales","orders","getPendingOrdersServices","getTotalOrdersServices","getTotalPatientsCountServices","DashboardApp","setOrders","setPending","total_pending","fetchPendingOrders","total_orders","fetchOrders","fetchPatient","total_patient","pb","ORDER_STATUS_ARR","getCorrectColor","OrderHistory","searchByNameParam","orderStatusId","setOrderStatusId","filterParam","filterValue","fetchordersByStatus","downloadCSV","anchor","Headers","blob","blobby","objectUrl","URL","createObjectURL","download","revokeObjectURL","marginLeft","sentenceCase","TrackingDetails","trackingDetails","setTrackingDetails","justifyItems","htmlFor","clipboard","writeText","HorizontalLinearStepper","Stepper","activeStep","orientation","Step","fill","StepLabel","cancelled","Factory","LocalShipping","EmojiEmotions","ReasonForCancellation","OrderDetails","useParams","saveSpinner","setSaveSpinner","edit","setEdit","setError","address_history","fetchOrderById","updateOrderAddress","setAddressDr","fetchUserAddress","undefined","fetchUserAddressDr","addressID","setAddressID","printDocument","admin","adminPhone","adminEmail","adminWebsite","orderData","details","model_type","alignment","aligner_type","addonslist","order_add_ons","add_on","documentDefinition","columns","image","table","invoice","payment_mode","layout","widths","headerRows","user","addons_total","heights","bold","styles","header","tableHeader","logo","nameTable","tableBillTo","addonsTable","instructionsTable","totalTable","footer","pdfMake","vfs","pdfFonts","createPdf","addressChangeHandler","invoice_url","lg","orders_histories","od","wordBreak","tracking_info","UploadLoader","round","EditAddressModal","getAddressForced","AddPatient","zip","JSZip","errorMsg","setErrorMsg","setFiles","file","setFile","idx","setIdx","progressUpload","setProgressUpload","progressUploadShow","setProgressUploadShow","setObj","volume","stlWidth","innerWidth","setSrc","heroFiles","setHeroFiles","indexOfAddress","setFolderName","filesError","setFilesError","progressElements","querySelector","generateAsync","compression","currentFile","percent","innerHTML","toFixed","responseURL","fileURL","onUploadProgress","progressEvent","percentCompleted","loaded","total","awsResponse","console","log","attachment","catch","err","showIndicators","showStatus","texPath","orbitControls","shadows","Tooltip","directory","webkitdirectory","webkitRelativePath","stlfileHandler","fontStyle","LinearProgress","marginRight","AddressMoreMenu","deleteHandler","customClass","buttons","dangerMode","willDelete","addressable_type","delete","trash2Outline","editHandler","AddAddressModal","addressable_id","pid","openAddAddressModal","setAddAddressModal","spinnerLoading","setSpinnerLoading","addPatient","getPatient","addAddressHandler","setIndexOfAddress","setId","fetchEditPatient","getAddressForPatients","wordWrap","Date","createdAt","toLocaleTimeString","timeZone","hour12","hour","minute","MyProfile","setUserdata","handleMouseDownPassword","forPasswordVerification","forPasswordUpdate","setLoading","confirmPassword","showPassword1","showPassword2","showPassword3","handleChangePass","cPwdWrg","setCPwdWrg","spinner3","getInfo","getUserInfo","additional_emails","additional_contacts","onMouseDown","Visibility","VisibilityOff","ForgotPasswordForm","tok","unescape","encodeURIComponent","password_confirmation","ForgotPassword","Router","useRoutes","element","createGradient","color1","color2","GREY","0","100","200","300","400","500","600","700","800","900","PRIMARY","light","INFO","SUCCESS","WARNING","ERROR","GRADIENTS","warning","common","black","white","gradients","chart","violet","blue","green","yellow","red","divider","neutral","disabledBackground","focus","hoverOpacity","disabledOpacity","responsiveFontSizes","fontWeightRegular","fontWeightMedium","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","caption","overline","letterSpacing","button","ComponentsOverrides","merge","MuiCard","styleOverrides","root","z16","MuiCardHeader","defaultProps","titleTypographyProps","subheaderTypographyProps","MuiCardContent","MuiListItemIcon","MuiListItemAvatar","MuiListItemText","Lists","MuiPaper","elevation","MuiInputBase","MuiInput","borderBottomColor","MuiFilledInput","MuiOutlinedInput","Input","MuiButton","sizeLarge","containedInherit","containedPrimary","containedSecondary","outlinedInherit","textInherit","MuiTooltip","tooltip","arrow","varLow","varHigh","MuiBackdrop","Backdrop","MuiTypography","MuiIconButton","MuiAutocomplete","LIGHT_MODE","transparent","z1","z12","z24","createCustomShadow","transparent1","transparent2","transparent3","createShadow","ThemeConfig","themeOptions","createTheme","components","componentsOverride","StyledEngineProvider","injectFirst","ThemeProvider","CssBaseline","GlobalStyles","boxSizing","html","WebkitOverflowScrolling","MozAppearance","WebkitAppearance","textarea","img","WebkitFilter","ScrollToTop","scrollTo","BaseOptionChartStyle","App","hostname","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.2adfbac9.chunk.js","sourcesContent":["import PropTypes from 'prop-types';\n// material\nimport { useMediaQuery } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nMHidden.propTypes = {\n children: PropTypes.node,\n width: PropTypes.oneOf([\n 'xsDown',\n 'smDown',\n 'mdDown',\n 'lgDown',\n 'xlDown',\n 'xsUp',\n 'smUp',\n 'mdUp',\n 'lgUp',\n 'xlUp'\n ]).isRequired\n};\n\nexport default function MHidden({ width, children }) {\n const breakpoint = width.substring(0, 2);\n\n const hiddenUp = useMediaQuery((theme) => theme.breakpoints.up(breakpoint));\n const hiddenDown = useMediaQuery((theme) => theme.breakpoints.down(breakpoint));\n\n if (width.includes('Down')) {\n return hiddenDown ? null : children;\n }\n\n if (width.includes('Up')) {\n return hiddenUp ? null : children;\n }\n\n return null;\n}\n","import PropTypes from 'prop-types';\n// material\nimport Popover from '@mui/material/Popover';\nimport { alpha, styled } from '@mui/material/styles';\n\n// ----------------------------------------------------------------------\n\nconst ArrowStyle = styled('span')(({ theme }) => ({\n [theme.breakpoints.up('sm')]: {\n top: -7,\n zIndex: 1,\n width: 12,\n right: 20,\n height: 12,\n content: \"''\",\n position: 'absolute',\n borderRadius: '0 0 4px 0',\n transform: 'rotate(-135deg)',\n background: theme.palette.background.paper,\n borderRight: `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`,\n borderBottom: `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`\n }\n}));\n\n// ----------------------------------------------------------------------\n\nMenuPopover.propTypes = {\n children: PropTypes.node.isRequired,\n sx: PropTypes.object\n};\n\nexport default function MenuPopover({ children, sx, ...other }) {\n return (\n <Popover\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n PaperProps={{\n sx: {\n mt: 1.5,\n ml: 0.5,\n overflow: 'inherit',\n boxShadow: (theme) => theme.customShadows.z20,\n border: (theme) => `solid 1px ${theme.palette.grey[500_8]}`,\n width: 200,\n ...sx\n }\n }}\n {...other}\n >\n <ArrowStyle className=\"arrow\" />\n\n {children}\n </Popover>\n );\n}\n","// ----------------------------------------------------------------------\n\nconst account = {\n displayName: 'Jaydon Frankie',\n email: 'demo@minimals.cc',\n photoURL: '/static/mock-images/avatars/avatar_default.jpg'\n};\n\nexport default account;\n","import { Icon } from '@iconify/react';\nimport { useRef, useState } from 'react';\nimport personFill from '@iconify/icons-eva/person-fill';\n// import settings2Fill from '@iconify/icons-eva/settings-2-fill';\n// import { Link as RouterLink } from 'react-router-dom';\nimport { Link as RouterLink, useNavigate } from 'react-router-dom';\n\n// material\nimport Button from '@mui/material/Button';\nimport Box from '@mui/material/Box';\n\nimport Divider from '@mui/material/Divider';\n\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport Avatar from '@mui/material/Avatar';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\n\n// components\nimport MenuPopover from '../../components/MenuPopover';\n//\nimport account from '../../_mocks_/account';\n// ----------------------------------------------------------------------\n\nconst MENU_OPTIONS = [\n {\n label: 'Profile',\n icon: personFill,\n linkTo: '/dashboard/profile'\n }\n // {\n // label: 'Manage Address',\n // icon: settings2Fill,\n // linkTo: '/dashboard/address'\n // }\n];\n\n// ----------------------------------------------------------------------\n\nexport default function AccountPopover() {\n const userData = JSON.parse(window.localStorage.getItem('userData'));\n const anchorRef = useRef(null);\n const [open, setOpen] = useState(false);\n const navigate = useNavigate();\n const handleOpen = () => {\n setOpen(true);\n };\n const handleClose = () => {\n setOpen(false);\n };\n const logoutHandler = async () => {\n window.localStorage.removeItem('token');\n window.localStorage.removeItem('userData');\n navigate('/login', { replace: true });\n };\n\n return (\n <>\n <Button\n ref={anchorRef}\n onClick={handleOpen}\n sx={{\n width: 44,\n height: 44,\n ...(open && {\n '&:before': {\n zIndex: 1,\n content: \"''\",\n width: '150%',\n height: '100%',\n borderRadius: '13px',\n position: 'absolute'\n // bgcolor: (theme) => alpha(theme.palette.grey[900], 0.72)\n }\n })\n }}\n >\n <>\n <Avatar src={account.photoURL} alt=\"photoURL\" />\n <ArrowDropDownIcon style={{ color: '#000' }} />\n </>\n </Button>\n\n <MenuPopover\n open={open}\n onClose={handleClose}\n anchorEl={anchorRef.current}\n sx={{ width: 220 }}\n >\n <Box sx={{ my: 1.5, px: 2.5 }}>\n <Typography variant=\"subtitle1\" noWrap>\n {userData?.name}\n </Typography>\n <Typography variant=\"body2\" sx={{ color: 'text.secondary' }} noWrap>\n {userData?.email}\n </Typography>\n </Box>\n\n <Divider sx={{ my: 1 }} />\n\n {MENU_OPTIONS.map((option) => (\n <MenuItem\n key={option.label}\n to={option.linkTo}\n component={RouterLink}\n onClick={handleClose}\n sx={{ typography: 'body2', py: 1, px: 2.5 }}\n >\n <Box\n component={Icon}\n icon={option.icon}\n sx={{\n mr: 2,\n width: 24,\n height: 24\n }}\n />\n\n {option.label}\n </MenuItem>\n ))}\n\n <Box sx={{ p: 2, pt: 1.5 }}>\n <Button fullWidth color=\"inherit\" onClick={logoutHandler} variant=\"outlined\">\n Logout\n </Button>\n </Box>\n </MenuPopover>\n </>\n );\n}\n","import PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\nimport menu2Fill from '@iconify/icons-eva/menu-2-fill';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport AppBar from '@mui/material/AppBar';\nimport Toolbar from '@mui/material/Toolbar';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\n// components\nimport { MHidden } from '../../components/@material-extend';\n//\n\nimport AccountPopover from './AccountPopover';\n\n// ----------------------------------------------------------------------\n\nconst DRAWER_WIDTH = 280;\nconst APPBAR_MOBILE = 64;\nconst APPBAR_DESKTOP = 92;\n\nconst RootStyle = styled(AppBar)(({ theme }) => ({\n boxShadow: 'none',\n backdropFilter: 'blur(6px)',\n WebkitBackdropFilter: 'blur(6px)', // Fix on Mobile\n backgroundColor: alpha(theme.palette.background.default, 0.72),\n [theme.breakpoints.up('lg')]: {\n width: `calc(100% - ${DRAWER_WIDTH + 1}px)`\n }\n}));\n\nconst ToolbarStyle = styled(Toolbar)(({ theme }) => ({\n minHeight: APPBAR_MOBILE,\n [theme.breakpoints.up('lg')]: {\n minHeight: APPBAR_DESKTOP,\n padding: theme.spacing(0, 5)\n }\n}));\n\n// ----------------------------------------------------------------------\n\nDashboardNavbar.propTypes = {\n onOpenSidebar: PropTypes.func\n};\n\nexport default function DashboardNavbar({ onOpenSidebar }) {\n return (\n <RootStyle>\n <ToolbarStyle>\n <MHidden width=\"lgUp\">\n <IconButton onClick={onOpenSidebar} sx={{ mr: 1, color: 'text.primary' }}>\n <Icon icon={menu2Fill} />\n </IconButton>\n </MHidden>\n {/* <Searchbar /> */}\n <Box sx={{ flexGrow: 1 }} />\n\n <Stack direction=\"row\" alignItems=\"center\" spacing={{ xs: 0.5, sm: 1.5 }}>\n <AccountPopover />\n </Stack>\n </ToolbarStyle>\n </RootStyle>\n );\n}\n","import PropTypes from 'prop-types';\nimport SimpleBarReact from 'simplebar-react';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled('div')({\n flexGrow: 1,\n height: '100%',\n overflow: 'hidden'\n});\n\nconst SimpleBarStyle = styled(SimpleBarReact)(({ theme }) => ({\n maxHeight: '100%',\n '& .simplebar-scrollbar': {\n '&:before': {\n backgroundColor: alpha(theme.palette.grey[600], 0.48)\n },\n '&.simplebar-visible:before': {\n opacity: 1\n }\n },\n '& .simplebar-track.simplebar-vertical': {\n width: 10\n },\n '& .simplebar-track.simplebar-horizontal .simplebar-scrollbar': {\n height: 6\n },\n '& .simplebar-mask': {\n zIndex: 'inherit'\n }\n}));\n\n// ----------------------------------------------------------------------\n\nScrollbar.propTypes = {\n children: PropTypes.node.isRequired,\n sx: PropTypes.object\n};\n\nexport default function Scrollbar({ children, sx, ...other }) {\n const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n\n if (isMobile) {\n return (\n <Box sx={{ overflowX: 'auto', ...sx }} {...other}>\n {children}\n </Box>\n );\n }\n\n return (\n <RootStyle>\n <SimpleBarStyle timeout={500} clickOnTrack={false} sx={sx} {...other}>\n {children}\n </SimpleBarStyle>\n </RootStyle>\n );\n}\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\nimport { NavLink as RouterLink, matchPath, useLocation } from 'react-router-dom';\nimport arrowIosForwardFill from '@iconify/icons-eva/arrow-ios-forward-fill';\nimport arrowIosDownwardFill from '@iconify/icons-eva/arrow-ios-downward-fill';\n// material\nimport { alpha, useTheme, styled } from '@mui/material/styles';\n\nimport Box from '@mui/material/Box';\nimport List from '@mui/material/List';\nimport ListItemText from '@mui/material/ListItemText';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport Collapse from '@mui/material/Collapse';\n\n// ----------------------------------------------------------------------\n\nconst ListItemStyle = styled((props) => <ListItemButton disableGutters {...props} />)(\n ({ theme }) => ({\n ...theme.typography.body2,\n height: 48,\n position: 'relative',\n textTransform: 'capitalize',\n paddingLeft: theme.spacing(5),\n paddingRight: theme.spacing(2.5),\n color: theme.palette.text.secondary,\n '&:before': {\n top: 0,\n right: 0,\n width: 3,\n bottom: 0,\n content: \"''\",\n display: 'none',\n position: 'absolute',\n borderTopLeftRadius: 4,\n borderBottomLeftRadius: 4,\n backgroundColor: theme.palette.primary.main\n }\n })\n);\n\nconst ListItemIconStyle = styled(ListItemIcon)({\n width: 22,\n height: 22,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n});\n\n// ----------------------------------------------------------------------\n\nNavItem.propTypes = {\n item: PropTypes.object,\n active: PropTypes.func\n};\n\nfunction NavItem({ item, active }) {\n const theme = useTheme();\n const isActiveRoot = active(item.path);\n const { title, path, icon, info, children } = item;\n const [open, setOpen] = useState(isActiveRoot);\n\n const handleOpen = () => {\n setOpen((prev) => !prev);\n };\n\n const activeRootStyle = {\n color: 'primary.main',\n fontWeight: 'fontWeightMedium',\n bgcolor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n '&:before': { display: 'block' }\n };\n\n const activeSubStyle = {\n color: 'text.primary',\n fontWeight: 'fontWeightMedium'\n };\n\n if (children) {\n return (\n <>\n <ListItemStyle\n onClick={handleOpen}\n sx={{\n ...(isActiveRoot && activeRootStyle)\n }}\n >\n <ListItemIconStyle>{icon && icon}</ListItemIconStyle>\n <ListItemText disableTypography primary={title} />\n {info && info}\n <Box\n component={Icon}\n icon={open ? arrowIosDownwardFill : arrowIosForwardFill}\n sx={{ width: 16, height: 16, ml: 1 }}\n />\n </ListItemStyle>\n\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n <List component=\"div\" disablePadding>\n {children.map((item) => {\n const { title, path } = item;\n const isActiveSub = active(path);\n\n return (\n <ListItemStyle\n key={title}\n component={RouterLink}\n to={path}\n sx={{\n ...(isActiveSub && activeSubStyle)\n }}\n >\n <ListItemIconStyle>\n <Box\n component=\"span\"\n sx={{\n width: 4,\n height: 4,\n display: 'flex',\n borderRadius: '50%',\n alignItems: 'center',\n justifyContent: 'center',\n bgcolor: 'text.disabled',\n transition: (theme) => theme.transitions.create('transform'),\n ...(isActiveSub && {\n transform: 'scale(2)',\n bgcolor: 'primary.main'\n })\n }}\n />\n </ListItemIconStyle>\n <ListItemText disableTypography primary={title} />\n </ListItemStyle>\n );\n })}\n </List>\n </Collapse>\n </>\n );\n }\n\n return (\n <ListItemStyle\n component={RouterLink}\n to={path}\n sx={{\n ...(isActiveRoot && activeRootStyle)\n }}\n >\n <ListItemIconStyle>{icon && icon}</ListItemIconStyle>\n <ListItemText disableTypography primary={title} />\n {info && info}\n </ListItemStyle>\n );\n}\n\nNavSection.propTypes = {\n navConfig: PropTypes.array\n};\n\nexport default function NavSection({ navConfig, ...other }) {\n const { pathname } = useLocation();\n const match = (path) => (path ? !!matchPath({ path, end: false }, pathname) : false);\n\n return (\n <Box {...other}>\n <List disablePadding>\n {navConfig.map((item) => (\n <NavItem key={item.title} item={item} active={match} />\n ))}\n </List>\n </Box>\n );\n}\n","import { Icon } from '@iconify/react';\nimport pieChart2Fill from '@iconify/icons-eva/pie-chart-2-fill';\nimport peopleFill from '@iconify/icons-eva/people-fill';\nimport shoppingBagFill from '@iconify/icons-eva/shopping-bag-fill';\nimport fileTextFill from '@iconify/icons-eva/file-text-fill';\n\n// ----------------------------------------------------------------------\n\nconst getIcon = (name) => <Icon icon={name} width={22} height={22} />;\n\nconst sidebarConfig = [\n {\n title: 'dashboard',\n path: '/dashboard/app',\n icon: getIcon(pieChart2Fill)\n },\n {\n title: 'Patients',\n path: '/dashboard/patients',\n icon: getIcon(peopleFill)\n },\n {\n title: 'Products',\n path: '/dashboard/products',\n icon: getIcon(shoppingBagFill)\n },\n {\n title: 'Order Now',\n path: '/dashboard/order',\n icon: getIcon(fileTextFill)\n },\n {\n title: 'Order History',\n path: '/dashboard/history',\n icon: getIcon('icon-park-outline:ad-product')\n }\n];\n\nexport default sidebarConfig;\n","import PropTypes from 'prop-types';\nimport { useEffect } from 'react';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport Avatar from '@mui/material/Avatar';\nimport Box from '@mui/material/Box';\nimport Drawer from '@mui/material/Drawer';\n// components\nimport Scrollbar from '../../components/Scrollbar';\nimport NavSection from '../../components/NavSection';\nimport { MHidden } from '../../components/@material-extend';\n//\nimport sidebarConfig from './SidebarConfig';\nimport account from '../../_mocks_/account';\n\n// ----------------------------------------------------------------------\n\nconst DRAWER_WIDTH = 280;\n\nconst RootStyle = styled('div')(({ theme }) => ({\n [theme.breakpoints.up('lg')]: {\n flexShrink: 0,\n width: DRAWER_WIDTH\n }\n}));\n\nconst AccountStyle = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2, 2.5),\n borderRadius: theme.shape.borderRadiusSm,\n backgroundColor: theme.palette.grey[200]\n}));\n\n// ----------------------------------------------------------------------\n\nDashboardSidebar.propTypes = {\n isOpenSidebar: PropTypes.bool,\n onCloseSidebar: PropTypes.func\n};\n\nexport default function DashboardSidebar({ isOpenSidebar, onCloseSidebar }) {\n const { pathname } = useLocation();\n const userData = JSON.parse(window.localStorage.getItem('userData'));\n useEffect(() => {\n if (isOpenSidebar) {\n onCloseSidebar();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pathname]);\n\n const renderContent = (\n <Scrollbar\n sx={{\n height: '100%',\n '& .simplebar-content': { height: '100%', display: 'flex', flexDirection: 'column' }\n }}\n >\n <Box sx={{ mb: 5, mx: 2.5 }} style={{ marginTop: '10%' }}>\n <Link underline=\"none\" component={RouterLink} to=\"/dashboard/profile\">\n <AccountStyle>\n <Avatar src={account.photoURL} alt=\"photoURL\" />\n <Box sx={{ ml: 2 }}>\n <Typography variant=\"subtitle2\" sx={{ color: 'text.primary' }}>\n {userData?.name}\n </Typography>\n <Typography variant=\"body2\" sx={{ color: 'text.secondary' }}>\n {account.role}\n </Typography>\n </Box>\n </AccountStyle>\n </Link>\n </Box>\n\n <NavSection navConfig={sidebarConfig} />\n\n <Box sx={{ flexGrow: 1 }} />\n {/* <p style={{ fontSize: '10px', textAlign: 'center', paddingBottom: '15px' }}>\n Developed by{' '}\n <a\n href=\"https://www.atliq.com\"\n style={{ color: '#7b6f00', fontWeight: 'bold', textDecoration: 'none' }}\n >\n Atliq Technologies\n </a>\n </p> */}\n </Scrollbar>\n );\n\n return (\n <RootStyle>\n <MHidden width=\"lgUp\">\n <Drawer\n open={isOpenSidebar}\n onClose={onCloseSidebar}\n PaperProps={{\n sx: { width: DRAWER_WIDTH }\n }}\n >\n {renderContent}\n </Drawer>\n </MHidden>\n\n <MHidden width=\"lgDown\">\n <Drawer\n open\n variant=\"persistent\"\n PaperProps={{\n sx: {\n width: DRAWER_WIDTH,\n bgcolor: 'background.default'\n }\n }}\n >\n {renderContent}\n </Drawer>\n </MHidden>\n </RootStyle>\n );\n}\n","import { useState } from 'react';\nimport { Outlet } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\n//\nimport DashboardNavbar from './DashboardNavbar';\nimport DashboardSidebar from './DashboardSidebar';\n\n// ----------------------------------------------------------------------\n\nconst APP_BAR_MOBILE = 64;\nconst APP_BAR_DESKTOP = 92;\n\nconst RootStyle = styled('div')({\n display: 'flex',\n minHeight: '100%',\n overflow: 'hidden'\n});\n\nconst MainStyle = styled('div')(({ theme }) => ({\n flexGrow: 1,\n overflow: 'auto',\n minHeight: '100%',\n paddingTop: APP_BAR_MOBILE + 24,\n paddingBottom: theme.spacing(10),\n [theme.breakpoints.up('lg')]: {\n paddingTop: APP_BAR_DESKTOP + 24,\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2)\n }\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function DashboardLayout() {\n const [open, setOpen] = useState(false);\n\n return (\n <RootStyle>\n <DashboardNavbar onOpenSidebar={() => setOpen(true)} />\n <DashboardSidebar isOpenSidebar={open} onCloseSidebar={() => setOpen(false)} />\n <MainStyle>\n <Outlet />\n </MainStyle>\n </RootStyle>\n );\n}\n","import PropTypes from 'prop-types';\n// material\nimport Box from '@mui/material/Box';\n\n// ----------------------------------------------------------------------\n\nLogo.propTypes = {\n sx: PropTypes.object\n};\n\nexport default function Logo({ sx }) {\n return <Box component=\"img\" src=\"/static/Thirdinrev.png\" sx={{ width: 90, height: 55, ...sx }} />;\n}\n","import { Link as RouterLink, Outlet } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\n// components\nimport Logo from '../components/Logo';\n\n// ----------------------------------------------------------------------\n\nconst HeaderStyle = styled('header')(({ theme }) => ({\n top: 0,\n left: 0,\n lineHeight: 0,\n width: '100%',\n position: 'absolute',\n padding: theme.spacing(3, 3, 0),\n [theme.breakpoints.up('sm')]: {\n padding: theme.spacing(5, 5, 0)\n }\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function LogoOnlyLayout() {\n return (\n <>\n <HeaderStyle>\n <RouterLink to=\"/\">\n <Logo />\n </RouterLink>\n </HeaderStyle>\n <Outlet />\n </>\n );\n}\n","import PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet-async';\nimport { forwardRef } from 'react';\n// material\nimport { Box } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst Page = forwardRef(({ children, title = 'Dashboard | Quiteclear', ...other }, ref) => (\n <Box ref={ref} {...other}>\n <Helmet>\n <title>{title}</title>\n </Helmet>\n {children}\n </Box>\n));\n\nPage.propTypes = {\n children: PropTypes.node.isRequired,\n title: PropTypes.string\n};\n\nexport default Page;\n","import * as React from 'react';\nimport Alert from '@mui/material/Alert';\nimport Snackbar from '@mui/material/Snackbar';\n\nexport default function StyledSnackbar({ xPos, yPos, status, title, onClose, open }) {\n return (\n <Snackbar\n open={open}\n autoHideDuration={2000}\n anchorOrigin={{ vertical: yPos, horizontal: xPos }}\n onClose={onClose}\n >\n <Alert onClose={onClose} severity={status} color={status} sx={{ width: '100%' }}>\n {title}\n </Alert>\n </Snackbar>\n );\n}\n","export const headers = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${window.localStorage.getItem('token')}`\n};\n","import axios from 'axios';\nimport { AES, enc } from 'crypto-js';\nimport swal from 'sweetalert';\nimport { headers } from './utils/headers';\n// Axios Instance\nconst instance = axios.create({\n headers: {}\n});\n\n// Request interceptor\ninstance.interceptors.request.use(\n (config) => {\n const token = localStorage.getItem('token');\n if (token != null) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n\n return config;\n },\n (error) => Promise.reject(error)\n);\n\n// Response interceptor\ninstance.interceptors.response.use(\n (response) => response,\n async (error) => {\n swal('Error', error.response.data.message, 'error');\n if (error?.response?.status === 401 && window.localStorage.getItem('email')) {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/login`, {\n method: 'POST',\n headers,\n data: JSON.stringify({\n email: window.localStorage.getItem('email'),\n password: AES.decrypt(\n window.localStorage.getItem('password'),\n process.env.REACT_APP_SECRET\n ).toString(enc.Utf8)\n })\n });\n const data = await response?.data;\n if (response?.status === 200) {\n window.localStorage.setItem('userData', JSON.stringify(data.data.userDetails));\n window.localStorage.setItem('token', data.meta.token);\n window.localStorage.setItem('userId', data.data.userDetails.id);\n window.location.reload();\n } else if (response?.status === 400) {\n window.localStorage.clear();\n window.location.reload();\n }\n } else if (error?.response?.status === 401 && !window.localStorage.getItem('email')) {\n window.localStorage.clear();\n window.location.reload();\n }\n return error.response;\n }\n);\n\nexport default instance;\n","import { useState } from 'react';\nimport swal from 'sweetalert';\n// material\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nimport instance from '../AxiosInstance';\nimport { headers } from '../utils/headers';\n\nexport const ForgotPasswordEmailModal = (props) => {\n const [values, setValues] = useState({\n email: ''\n });\n const [spinner, setSpinner] = useState(false);\n\n const [errors, setErrors] = useState({\n email: false\n });\n const [errorsMsg, setErrorsMsg] = useState({\n email: 'Email is required.'\n });\n const emailRegex =\n /^(([^<>()\\]\\\\.,;:\\s@']+(\\.[^<>()\\]\\\\.,;:\\s@']+)*)|('.+'))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n const handleChange = (event) => {\n setValues({ ...values, email: event.target.value });\n setErrors({ email: !emailRegex.test(event.target.value) });\n if (event.target.value.length > 0)\n setErrorsMsg({\n email: !emailRegex.test(event.target.value) ? 'Invalid Email.' : 'Email is required.'\n });\n };\n\n const submitHandler = async () => {\n setSpinner(true);\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/forgot-password`, {\n method: 'POST',\n headers,\n data: JSON.stringify({\n email: values.email\n })\n });\n setSpinner(false);\n const data = await response.data;\n if (response.status === 200) {\n swal('Success', 'Email sent successfully.', 'success');\n props.IsOpen();\n } else if (response.status === 400) {\n setErrorsMsg({\n email: data.message\n });\n setErrors({\n email: true\n });\n } else {\n swal('Error', response?.data, 'error');\n }\n };\n\n const style = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '100%',\n maxWidth: 350,\n bgcolor: 'background.paper',\n borderRadius: 3,\n boxShadow: 10,\n p: 4\n };\n\n return (\n <Box sx={style}>\n <Typography id=\"modal-modal-title\" variant=\"h6\" component=\"h2\">\n Recover your account\n </Typography>\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.email}\n onChange={handleChange}\n label=\"Email\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.email}\n helperText={errors.email ? errorsMsg.email : null}\n />\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n {spinner ? (\n <CircularProgress style={{ marginTop: '15px' }} />\n ) : (\n <Button variant=\"contained\" style={{ marginTop: '15px' }} onClick={submitHandler}>\n Send\n </Button>\n )}\n </div>\n </Box>\n );\n};\n","import * as Yup from 'yup';\nimport { useEffect, useState } from 'react';\nimport { Link as RouterLink, useNavigate } from 'react-router-dom';\nimport { useFormik, Form, FormikProvider } from 'formik';\nimport { Icon } from '@iconify/react';\nimport { AES, enc } from 'crypto-js';\nimport eyeFill from '@iconify/icons-eva/eye-fill';\nimport eyeOffFill from '@iconify/icons-eva/eye-off-fill';\n// material\nimport Stack from '@mui/material/Stack';\nimport Checkbox from '@mui/material/Checkbox';\nimport TextField from '@mui/material/TextField';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Link from '@mui/material/Link';\nimport Modal from '@mui/material/Modal';\nimport { LoadingButton } from '@mui/lab';\nimport StyledSnackbar from '../../StyledSnackbar';\nimport { ForgotPasswordEmailModal } from '../../ForgotPasswordEmailModal';\nimport instance from '../../../AxiosInstance';\nimport { headers } from '../../../utils/headers';\nimport '../../../styles/pages/LoginPage.css';\n\n// ----------------------------------------------------------------------\n\nexport default function LoginForm() {\n const navigate = useNavigate();\n const [showPassword, setShowPassword] = useState(false);\n\n const LoginSchema = Yup.object().shape({\n email: Yup.string().email('Email must be a valid email address').required('Email is required'),\n password: Yup.string().required('Password is required')\n });\n const [openSnack, setOpenSnack] = useState(false);\n const handleClick = () => {\n setOpenSnack(true);\n };\n\n const handleCloseSnack = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n\n setOpenSnack(false);\n };\n\n const formik = useFormik({\n initialValues: {\n email: window.localStorage.getItem('email') ? window.localStorage.getItem('email') : '',\n password: window.localStorage.getItem('password')\n ? AES.decrypt(\n window.localStorage.getItem('password'),\n process.env.REACT_APP_SECRET\n ).toString(enc.Utf8)\n : '',\n remember:\n window.localStorage.getItem('remember') === 'true'\n ? window.localStorage.getItem('remember')\n : false\n },\n validationSchema: LoginSchema,\n onSubmit: async () => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/login`, {\n method: 'POST',\n headers,\n data: JSON.stringify({\n email: formik.values.email?.trim(),\n password: formik.values.password?.trim()\n })\n });\n const data = await response.data;\n if (response.status === 200) {\n if (formik.values.remember) {\n window.localStorage.setItem('remember', formik.values.remember);\n window.localStorage.setItem('email', formik.values.email);\n const envrypted = AES.encrypt(\n formik.values.password,\n process.env.REACT_APP_SECRET\n ).toString();\n window.localStorage.setItem('password', envrypted);\n } else {\n window.localStorage.setItem('remember', formik.values.remember);\n window.localStorage.removeItem('email');\n window.localStorage.removeItem('password');\n }\n window.localStorage.setItem('userData', JSON.stringify(data.data.userDetails));\n window.localStorage.setItem('token', data.meta.token);\n window.localStorage.setItem('userId', data.data.userDetails.id);\n navigate('/dashboard/app', { replace: true });\n setSnackBarData({\n xPos: 'center',\n yPos: 'bottom',\n title: 'Login Successful',\n status: 'success'\n });\n handleClick();\n } else {\n setSnackBarData({\n xPos: 'center',\n yPos: 'bottom',\n title: 'Invalid credentials !',\n status: 'error'\n });\n handleClick();\n }\n }\n });\n\n const [snackbarData, setSnackBarData] = useState({\n xPos: 'center',\n yPos: 'bottom',\n title: '',\n status: 'success'\n });\n\n const { errors, touched, values, isSubmitting, handleSubmit, getFieldProps } = formik;\n\n const handleShowPassword = () => {\n setShowPassword((show) => !show);\n };\n\n const [open, setOpen] = useState(false);\n const handleClose = () => setOpen(false);\n useEffect(() => {}, [open]);\n\n return (\n <>\n <Modal\n open={open}\n onClose={handleClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n <ForgotPasswordEmailModal IsOpen={handleClose} />\n </Modal>\n <FormikProvider value={formik}>\n <Form autoComplete=\"off\" noValidate onSubmit={handleSubmit}>\n <Stack spacing={3}>\n <TextField\n fullWidth\n autoComplete=\"username\"\n type=\"email\"\n label=\"Email address\"\n {...getFieldProps('email')}\n error={Boolean(touched.email && errors.email)}\n helperText={touched.email && errors.email}\n />\n\n <TextField\n fullWidth\n autoComplete=\"current-password\"\n type={showPassword ? 'text' : 'password'}\n label=\"Password\"\n {...getFieldProps('password')}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton onClick={handleShowPassword} edge=\"end\">\n <Icon icon={showPassword ? eyeFill : eyeOffFill} />\n </IconButton>\n </InputAdornment>\n )\n }}\n error={Boolean(touched.password && errors.password)}\n helperText={touched.password && errors.password}\n />\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" sx={{ my: 2 }}>\n <FormControlLabel\n control={<Checkbox {...getFieldProps('remember')} checked={values.remember} />}\n label=\"Remember me\"\n />\n\n <Link component={RouterLink} variant=\"subtitle2\" to=\"#\" onClick={() => setOpen(true)}>\n Forgot password?\n </Link>\n </Stack>\n <LoadingButton\n fullWidth\n size=\"large\"\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n loading={isSubmitting}\n >\n Login\n </LoadingButton>\n </Form>\n </FormikProvider>\n <div className=\"about_us_href_div\">\n <a\n href=\"https://quiteclear.io/contact/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"about_us_href_p\"\n >\n Sign up today and take control\n </a>\n </div>\n <StyledSnackbar\n xPos={snackbarData.xPos}\n yPos={snackbarData.yPos}\n title={snackbarData.title}\n status={snackbarData.status}\n open={openSnack}\n onClose={handleCloseSnack}\n />\n </>\n );\n}\n","import { Link as RouterLink } from 'react-router-dom';\nimport { styled } from '@mui/material/styles';\nimport Card from '@mui/material/Card';\nimport Stack from '@mui/material/Stack';\nimport Link from '@mui/material/Link';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport Page from '../components/Page';\nimport { MHidden } from '../components/@material-extend';\nimport { LoginForm } from '../components/authentication/login';\n\nconst RootStyle = styled(Page)(({ theme }) => ({\n [theme.breakpoints.up('md')]: {\n display: 'flex'\n }\n}));\n\nconst SectionStyle = styled(Card)(({ theme }) => ({\n width: '100%',\n maxWidth: 464,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n margin: theme.spacing(2, 0, 2, 2)\n}));\n\nconst ContentStyle = styled('div')(({ theme }) => ({\n maxWidth: 480,\n margin: 'auto',\n display: 'flex',\n minHeight: '100vh',\n flexDirection: 'column',\n justifyContent: 'center',\n padding: theme.spacing(12, 0)\n}));\n\nexport default function Login() {\n return (\n <RootStyle title=\"Login | Quiteclear\">\n <MHidden width=\"mdDown\">\n <SectionStyle>\n <Typography variant=\"h3\" sx={{ px: 5, mt: 10, mb: 5 }}>\n Hi, Welcome Back\n </Typography>\n <Link underline=\"none\" variant=\"subtitle2\" component={RouterLink} to=\"/\">\n <img src=\"/static/illustrations/illustration_login.png\" alt=\"login\" />\n </Link>\n </SectionStyle>\n </MHidden>\n\n <Container maxWidth=\"sm\">\n <ContentStyle>\n <Stack sx={{ mb: 5 }}>\n <Typography variant=\"h4\" gutterBottom>\n Sign in to Quiteclear\n </Typography>\n <Typography sx={{ color: 'text.secondary' }}>Enter your details below.</Typography>\n </Stack>\n <LoginForm />\n </ContentStyle>\n </Container>\n </RootStyle>\n );\n}\n","import PropTypes from 'prop-types';\nimport { Link as RouterLink } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n// components\nimport Logo from '../components/Logo';\n//\nimport { MHidden } from '../components/@material-extend';\n\n// ----------------------------------------------------------------------\n\nconst HeaderStyle = styled('header')(({ theme }) => ({\n top: 0,\n zIndex: 9,\n lineHeight: 0,\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n position: 'absolute',\n padding: theme.spacing(3),\n justifyContent: 'space-between',\n [theme.breakpoints.up('md')]: {\n alignItems: 'flex-start',\n padding: theme.spacing(7, 5, 0, 7)\n }\n}));\n\n// ----------------------------------------------------------------------\n\nAuthLayout.propTypes = {\n children: PropTypes.node\n};\n\nexport default function AuthLayout({ children }) {\n return (\n <HeaderStyle>\n <RouterLink to=\"/\">{window.location.pathname !== '/login' ? <Logo /> : null}</RouterLink>\n\n <MHidden width=\"smDown\">\n <Typography\n variant=\"body2\"\n sx={{\n mt: { md: -2 }\n }}\n >\n {children}\n </Typography>\n </MHidden>\n </HeaderStyle>\n );\n}\n","import * as Yup from 'yup';\nimport { useState } from 'react';\nimport { Icon } from '@iconify/react';\nimport { useFormik, Form, FormikProvider } from 'formik';\nimport eyeFill from '@iconify/icons-eva/eye-fill';\nimport eyeOffFill from '@iconify/icons-eva/eye-off-fill';\nimport { useNavigate } from 'react-router-dom';\n// material\nimport { Stack, TextField, IconButton, InputAdornment } from '@mui/material';\nimport { LoadingButton } from '@mui/lab';\n\n// ----------------------------------------------------------------------\n\nexport default function RegisterForm() {\n const navigate = useNavigate();\n const [showPassword, setShowPassword] = useState(false);\n\n const RegisterSchema = Yup.object().shape({\n firstName: Yup.string()\n .min(2, 'Too Short!')\n .max(50, 'Too Long!')\n .required('First name required'),\n lastName: Yup.string().min(2, 'Too Short!').max(50, 'Too Long!').required('Last name required'),\n email: Yup.string().email('Email must be a valid email address').required('Email is required'),\n password: Yup.string().required('Password is required')\n });\n\n const formik = useFormik({\n initialValues: {\n firstName: '',\n lastName: '',\n email: '',\n password: ''\n },\n validationSchema: RegisterSchema,\n onSubmit: () => {\n navigate('/dashboard', { replace: true });\n }\n });\n\n const { errors, touched, handleSubmit, isSubmitting, getFieldProps } = formik;\n\n return (\n <FormikProvider value={formik}>\n <Form autoComplete=\"off\" noValidate onSubmit={handleSubmit}>\n <Stack spacing={3}>\n <Stack direction={{ xs: 'column', sm: 'row' }} spacing={2}>\n <TextField\n fullWidth\n label=\"First name\"\n {...getFieldProps('firstName')}\n error={Boolean(touched.firstName && errors.firstName)}\n helperText={touched.firstName && errors.firstName}\n />\n\n <TextField\n fullWidth\n label=\"Last name\"\n {...getFieldProps('lastName')}\n error={Boolean(touched.lastName && errors.lastName)}\n helperText={touched.lastName && errors.lastName}\n />\n </Stack>\n\n <TextField\n fullWidth\n autoComplete=\"username\"\n type=\"email\"\n label=\"Email address\"\n {...getFieldProps('email')}\n error={Boolean(touched.email && errors.email)}\n helperText={touched.email && errors.email}\n />\n\n <TextField\n fullWidth\n autoComplete=\"current-password\"\n type={showPassword ? 'text' : 'password'}\n label=\"Password\"\n {...getFieldProps('password')}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton edge=\"end\" onClick={() => setShowPassword((prev) => !prev)}>\n <Icon icon={showPassword ? eyeFill : eyeOffFill} />\n </IconButton>\n </InputAdornment>\n )\n }}\n error={Boolean(touched.password && errors.password)}\n helperText={touched.password && errors.password}\n />\n\n <LoadingButton\n fullWidth\n size=\"large\"\n type=\"submit\"\n variant=\"contained\"\n loading={isSubmitting}\n >\n Register\n </LoadingButton>\n </Stack>\n </Form>\n </FormikProvider>\n );\n}\n","import { Link as RouterLink } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport Card from '@mui/material/Card';\nimport Link from '@mui/material/Link';\nimport Box from '@mui/material/Box';\n// layouts\nimport AuthLayout from '../layouts/AuthLayout';\n// components\nimport Page from '../components/Page';\nimport { MHidden } from '../components/@material-extend';\nimport { RegisterForm } from '../components/authentication/register';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Page)(({ theme }) => ({\n [theme.breakpoints.up('md')]: {\n display: 'flex'\n }\n}));\n\nconst SectionStyle = styled(Card)(({ theme }) => ({\n width: '100%',\n maxWidth: 464,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n margin: theme.spacing(2, 0, 2, 2)\n}));\n\nconst ContentStyle = styled('div')(({ theme }) => ({\n maxWidth: 480,\n margin: 'auto',\n display: 'flex',\n minHeight: '100vh',\n flexDirection: 'column',\n justifyContent: 'center',\n padding: theme.spacing(12, 0)\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function Register() {\n return (\n <RootStyle title=\"Register | Quiteclear\">\n <AuthLayout>\n Already have an account? \n <Link underline=\"none\" variant=\"subtitle2\" component={RouterLink} to=\"/login\">\n Login\n </Link>\n </AuthLayout>\n\n <MHidden width=\"mdDown\">\n <SectionStyle>\n <Typography variant=\"h3\" sx={{ px: 5, mt: 10, mb: 5 }}>\n Register to Quiteclear\n </Typography>\n <img alt=\"register\" src=\"/static/illustrations/illustration_register.png\" />\n </SectionStyle>\n </MHidden>\n\n <Container>\n <ContentStyle>\n <Box sx={{ mb: 5 }}>\n <Typography variant=\"h4\" gutterBottom>\n Get started absolutely free.\n </Typography>\n <Typography sx={{ color: 'text.secondary' }}>\n Free forever. No credit card needed.\n </Typography>\n </Box>\n\n <RegisterForm />\n\n <Typography variant=\"body2\" align=\"center\" sx={{ color: 'text.secondary', mt: 3 }}>\n By registering, I agree to Quiteclear \n <Link underline=\"always\" sx={{ color: 'text.primary' }}>\n Terms of Service\n </Link>\n and \n <Link underline=\"always\" sx={{ color: 'text.primary' }}>\n Privacy Policy\n </Link>\n .\n </Typography>\n\n <MHidden width=\"smUp\">\n <Typography variant=\"subtitle2\" sx={{ mt: 3, textAlign: 'center' }}>\n Already have an account? \n <Link to=\"/login\" component={RouterLink}>\n Login\n </Link>\n </Typography>\n </MHidden>\n </ContentStyle>\n </Container>\n </RootStyle>\n );\n}\n","import { Icon } from '@iconify/react';\nimport shoppingCartFill from '@iconify/icons-eva/shopping-cart-fill';\n// material\nimport { styled } from '@mui/material/styles';\nimport { Badge } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled('div')(({ theme }) => ({\n zIndex: 999,\n right: 0,\n display: 'flex',\n cursor: 'pointer',\n position: 'fixed',\n alignItems: 'center',\n top: theme.spacing(16),\n height: theme.spacing(5),\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n paddingTop: theme.spacing(1.25),\n boxShadow: theme.customShadows.z20,\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n borderTopLeftRadius: theme.shape.borderRadiusMd,\n borderBottomLeftRadius: theme.shape.borderRadiusMd,\n transition: theme.transitions.create('opacity'),\n '&:hover': { opacity: 0.72 }\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function CartWidget() {\n return (\n <RootStyle>\n <Badge showZero badgeContent={0} color=\"error\" max={99}>\n <Icon icon={shoppingCartFill} width={24} height={24} />\n </Badge>\n </RootStyle>\n );\n}\n","import PropTypes from 'prop-types';\n// material\nimport { alpha, styled } from '@mui/material/styles';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled('span')(({ theme, ownerState }) => {\n const { color, variant } = ownerState;\n\n const styleFilled = (color) => ({\n color: theme.palette[color].contrastText,\n backgroundColor: theme.palette[color].main\n });\n\n const styleOutlined = (color) => ({\n color: theme.palette[color].main,\n backgroundColor: 'transparent',\n border: `1px solid ${theme.palette[color].main}`\n });\n\n const styleGhost = (color) => ({\n color: theme.palette[color].dark,\n backgroundColor: alpha(theme.palette[color].main, 0.16)\n });\n\n return {\n height: 22,\n minWidth: 22,\n lineHeight: 0,\n borderRadius: 8,\n cursor: 'default',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n display: 'inline-flex',\n justifyContent: 'center',\n padding: theme.spacing(0, 1),\n color: theme.palette.grey[800],\n fontSize: theme.typography.pxToRem(12),\n fontFamily: theme.typography.fontFamily,\n backgroundColor: theme.palette.grey[300],\n fontWeight: theme.typography.fontWeightBold,\n\n ...(color !== 'default'\n ? {\n ...(variant === 'filled' && { ...styleFilled(color) }),\n ...(variant === 'outlined' && { ...styleOutlined(color) }),\n ...(variant === 'ghost' && { ...styleGhost(color) })\n }\n : {\n ...(variant === 'outlined' && {\n backgroundColor: 'transparent',\n color: theme.palette.text.primary,\n border: `1px solid ${theme.palette.grey[500_32]}`\n }),\n ...(variant === 'ghost' && {\n color: theme.palette.text.secondary,\n backgroundColor: theme.palette.grey[500_16]\n })\n })\n };\n});\n\n// ----------------------------------------------------------------------\n\nexport default function Label({ color = 'default', variant = 'ghost', children, ...other }) {\n return (\n <RootStyle ownerState={{ color, variant }} {...other}>\n {children}\n </RootStyle>\n );\n}\n\nLabel.propTypes = {\n children: PropTypes.node,\n color: PropTypes.oneOf([\n 'default',\n 'primary',\n 'secondary',\n 'info',\n 'success',\n 'warning',\n 'error'\n ]),\n variant: PropTypes.oneOf(['filled', 'outlined', 'ghost'])\n};\n","import PropTypes from 'prop-types';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { Box, Card, Link, Typography, Stack } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport Label from '../../Label';\n\nconst ProductImgStyle = styled('img')({\n top: 0,\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n position: 'absolute'\n});\n\nconst ProductImgStyleDisabled = styled('img')({\n top: 0,\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n position: 'absolute',\n filter: 'grayscale(1)'\n});\n\nShopProductCard.propTypes = {\n product: PropTypes.object\n};\n\nexport default function ShopProductCard({ product, urldata, status }) {\n const { name } = product;\n\n return (\n <Card>\n <Box sx={{ pt: '100%', position: 'relative' }}>\n <Label\n variant=\"filled\"\n color={status ? 'error' : 'success'}\n sx={{\n zIndex: 9,\n top: 16,\n right: 16,\n position: 'absolute',\n textTransform: 'uppercase'\n }}\n >\n {status ? 'Not Available' : 'Available'}\n </Label>\n {status ? (\n <ProductImgStyleDisabled alt={name} src={urldata} />\n ) : (\n <ProductImgStyle alt={name} src={urldata} />\n )}\n </Box>\n\n <Stack spacing={2} sx={{ p: 3 }}>\n <Link to=\"#\" color=\"inherit\" underline=\"hover\" component={RouterLink}>\n <Typography variant=\"subtitle2\" noWrap>\n {name}\n </Typography>\n </Link>\n\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n {/* <ColorPreview colors={colors} /> */}\n <Typography variant=\"subtitle1\">\n {/* <Typography\n component=\"span\"\n variant=\"body1\"\n sx={{\n color: 'text.disabled',\n textDecoration: 'line-through'\n }}\n >\n {priceSale && fCurrency(priceSale)}\n </Typography> */}\n </Typography>\n </Stack>\n </Stack>\n </Card>\n );\n}\n","import PropTypes from 'prop-types';\nimport { useState } from 'react';\n// material\nimport Grid from '@mui/material/Grid';\nimport Modal from '@mui/material/Modal';\nimport Box from '@mui/material/Box';\nimport TableContainer from '@mui/material/TableContainer';\nimport Table from '@mui/material/Table';\nimport Close from '@mui/icons-material/Close';\nimport Paper from '@mui/material/Paper';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport Typography from '@mui/material/Typography';\nimport ShopProductCard from './ProductCard';\nimport instance from '../../../AxiosInstance';\n\nProductList.propTypes = {\n products: PropTypes.array.isRequired\n};\n\nexport default function ProductList({ products, urldata, ...other }) {\n const style = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n maxWidth: 500,\n width: '100%',\n bgcolor: 'background.paper',\n borderRadius: 3,\n boxShadow: 24,\n border: 'none',\n outline: 'none',\n p: 4\n };\n\n const [modalIsOpen, setModalIsOpen] = useState(false);\n const [subProducts, setSubProducts] = useState([]);\n\n const fetchSubProducts = async (productID) => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/get/product/pid/${productID}`,\n {\n method: 'GET'\n }\n );\n if (response.status === 200) {\n const data = await response.data;\n setSubProducts(data.data);\n }\n };\n\n return (\n <>\n <Grid container spacing={3} {...other}>\n {products\n .filter((product) => product.disable !== true)\n .map((product, index) => (\n <Grid\n onClick={() => {\n fetchSubProducts(index + 1);\n setModalIsOpen(true);\n }}\n key={product.id}\n item\n xs={12}\n sm={6}\n md={3}\n >\n <ShopProductCard\n product={product}\n urldata={urldata.find((item) => item.name === product.name).url}\n status={product.disable}\n />\n </Grid>\n ))}\n </Grid>\n\n <Modal open={modalIsOpen}>\n <Box sx={style}>\n <Grid container direction=\"row\" textAlign=\"center\" justifyContent=\"center\">\n <Grid item xs={4} />\n <Grid item xs={4}>\n <Typography alignContent=\"center\" variant=\"h5\">\n Sub Product\n </Typography>\n </Grid>\n <Grid item xs={4}>\n <Typography\n style={{\n position: 'absolute',\n top: '0',\n right: '0',\n display: 'flex',\n width: '10%',\n cursor: 'pointer',\n paddingTop: '5px',\n justifyContent: 'space-evenly'\n }}\n onClick={() => {\n setModalIsOpen(false);\n setSubProducts([]);\n }}\n >\n <Close color=\"error\" style={{ color: 'black' }} />\n </Typography>\n </Grid>\n </Grid>\n\n {subProducts.length > 0 ? (\n <TableContainer component={Paper}>\n <Table\n label=\"Sub Products\"\n sx={{ minWidth: 350 }}\n size=\"small\"\n aria-label=\"a dense table\"\n >\n <TableBody>\n {subProducts.map((subProduct, index) => (\n <TableRow\n key={index}\n sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\n >\n <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '18px' }}>\n {subProduct.name}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n ) : (\n <Typography>No Sub Product</Typography>\n )}\n </Box>\n </Modal>\n </>\n );\n}\n","import instance from '../AxiosInstance';\n\nexport const getBrandsServices = async () => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/brand`, {\n method: 'GET'\n });\n return response;\n};\n\nexport const getUserWiseBrandsServices = async () => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/get/userwise-pricing?type=brand`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getUserWiseModelsServices = async () => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/get/userwise-pricing?type=model`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getTrimsServices = async () => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/trim`, {\n method: 'GET'\n });\n return response;\n};\n\nexport const getModelsServices = async () => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/model`, {\n method: 'GET'\n });\n return response;\n};\n\nexport const getShippingTax = async () => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/get/config/search?type=shipping_price`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getModalTaxServices = async () => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/get/config/search?type=model_tax`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getBrandsTaxServices = async () => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/get/config/search?type=brand_tax`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getAddonsTaxServices = async () => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/get/config/search?type=addon_tax`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getProductsServices = async () => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/product`, {\n method: 'GET'\n });\n return response;\n};\n","// material\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport { useEffect, useState } from 'react';\nimport Page from '../components/Page';\nimport { ProductList } from '../components/_dashboard/products';\nimport { getProductsServices } from '../services/products.services';\n\nexport default function EcommerceShop() {\n const [productNames, setproductNames] = useState([]);\n\n useEffect(() => {\n const fetchProduct = async () => {\n const productNames = await getProductsServices();\n const productNamesData = await productNames.data.data;\n setproductNames(productNamesData);\n };\n fetchProduct();\n }, []);\n\n const urldata = [\n {\n name: '3D Model',\n url: '/static/mock-images/products/product_1.jpg'\n },\n {\n name: 'Clear Aligner',\n url: '/static/mock-images/products/product_2.jpg'\n }\n ];\n\n return (\n <Page title=\"Products | Quiteclear\">\n <Container style={{ width: '100%', maxWidth: 1500 }}>\n <Typography variant=\"h4\" sx={{ mb: 5 }}>\n Products\n </Typography>\n\n <ProductList products={productNames} urldata={urldata} />\n </Container>\n </Page>\n );\n}\n","import PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\n\nimport searchFill from '@iconify/icons-eva/search-fill';\n// material\nimport { styled } from '@mui/material/styles';\nimport { Box, Toolbar, Typography, OutlinedInput, InputAdornment } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Toolbar)(({ theme }) => ({\n height: 96,\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme.spacing(0, 1, 0, 3)\n}));\n\nconst SearchStyle = styled(OutlinedInput)(({ theme }) => ({\n width: 240,\n transition: theme.transitions.create(['box-shadow', 'width'], {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.shorter\n }),\n '&.Mui-focused': { width: 320, boxShadow: theme.customShadows.z8 },\n '& fieldset': {\n borderWidth: `1px !important`,\n borderColor: `${theme.palette.grey[500_32]} !important`\n }\n}));\n\n// ----------------------------------------------------------------------\n\nUserListToolbarWithoutDebounce.propTypes = {\n numSelected: PropTypes.number,\n onFilterName: PropTypes.func\n};\n\nexport default function UserListToolbarWithoutDebounce({ numSelected, onFilterName, name }) {\n return (\n <RootStyle\n sx={{\n ...(numSelected > 0 && {\n color: 'primary.main',\n bgcolor: 'primary.lighter'\n })\n }}\n >\n {numSelected > 0 ? (\n <Typography component=\"div\" variant=\"subtitle1\">\n {numSelected} selected\n </Typography>\n ) : (\n <div>\n <SearchStyle\n onChange={onFilterName}\n placeholder={`Search ${name}...`}\n startAdornment={\n <InputAdornment position=\"start\">\n <Box component={Icon} icon={searchFill} sx={{ color: 'text.disabled' }} />\n </InputAdornment>\n }\n />\n </div>\n )}\n </RootStyle>\n );\n}\n","import PropTypes from 'prop-types';\nimport Typography from '@mui/material/Typography';\nimport Paper from '@mui/material/Paper';\n\nSearchNotFound.propTypes = {\n title: PropTypes.string\n};\n\nexport default function SearchNotFound({ title = 'No Data Found', ...other }) {\n return (\n <Paper {...other}>\n <Typography gutterBottom align=\"center\" variant=\"subtitle1\">\n {title}\n </Typography>\n </Paper>\n );\n}\n","import PropTypes from 'prop-types';\n// material\nimport { visuallyHidden } from '@mui/utils';\nimport { Box, TableRow, TableCell, TableHead, TableSortLabel } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nUserListHead.propTypes = {\n order: PropTypes.oneOf(['asc', 'desc']),\n orderBy: PropTypes.string,\n // rowCount: PropTypes.number,\n headLabel: PropTypes.array,\n // numSelected: PropTypes.number,\n onRequestSort: PropTypes.func\n // onSelectAllClick: PropTypes.func\n};\n\nexport default function UserListHead({\n order,\n orderBy,\n // rowCount,\n headLabel,\n // numSelected,\n onRequestSort\n // onSelectAllClick\n}) {\n const createSortHandler = (property) => (event) => {\n onRequestSort(event, property);\n };\n\n return (\n <TableHead>\n <TableRow>\n {headLabel.map((headCell) => (\n <TableCell\n key={headCell.id}\n align={headCell.alignRight ? 'right' : 'left'}\n sortDirection={orderBy === headCell.id ? order : false}\n >\n <TableSortLabel\n hideSortIcon\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : 'asc'}\n onClick={createSortHandler(headCell.id)}\n >\n {headCell.label}\n {orderBy === headCell.id ? (\n <Box sx={{ ...visuallyHidden }}>\n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </Box>\n ) : null}\n </TableSortLabel>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n}\n","import PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\n\nimport searchFill from '@iconify/icons-eva/search-fill';\n// material\nimport { styled } from '@mui/material/styles';\nimport { Box, Toolbar, Typography, OutlinedInput, InputAdornment } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Toolbar)(({ theme }) => ({\n height: 96,\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme.spacing(0, 1, 0, 3)\n}));\n\nconst SearchStyle = styled(OutlinedInput)(({ theme }) => ({\n width: 240,\n transition: theme.transitions.create(['box-shadow', 'width'], {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.shorter\n }),\n '&.Mui-focused': { width: 320, boxShadow: theme.customShadows.z8 },\n '& fieldset': {\n borderWidth: `1px !important`,\n borderColor: `${theme.palette.grey[500_32]} !important`\n }\n}));\n\n// ----------------------------------------------------------------------\n\nUserListToolbar.propTypes = {\n numSelected: PropTypes.number,\n onFilterName: PropTypes.func\n};\n\nexport default function UserListToolbar({ numSelected, onFilterName, name }) {\n return (\n <RootStyle\n sx={{\n ...(numSelected > 0 && {\n color: 'primary.main',\n bgcolor: 'primary.lighter'\n })\n }}\n >\n {numSelected > 0 ? (\n <Typography component=\"div\" variant=\"subtitle1\">\n {numSelected} selected\n </Typography>\n ) : (\n <div>\n <SearchStyle\n onChange={onFilterName}\n placeholder={`Search ${name}...`}\n startAdornment={\n <InputAdornment position=\"start\">\n <Box component={Icon} icon={searchFill} sx={{ color: 'text.disabled' }} />\n </InputAdornment>\n }\n />\n </div>\n )}\n </RootStyle>\n );\n}\n","import PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { Toolbar, OutlinedInput, InputAdornment, Box } from '@mui/material';\nimport { Icon } from '@iconify/react';\nimport searchFill from '@iconify/icons-eva/search-fill';\n\nconst RootStyle = styled(Toolbar)(({ theme }) => ({\n height: 96,\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme.spacing(0, 1, 0, 3)\n}));\n\nconst SearchStyle = styled(OutlinedInput)(({ theme }) => ({\n width: 240,\n transition: theme.transitions.create(['box-shadow', 'width'], {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.shorter\n }),\n '&.Mui-focused': { width: 320, boxShadow: theme.customShadows.z8 },\n '& fieldset': {\n borderWidth: `1px !important`,\n borderColor: `${theme.palette.grey[500_32]} !important`\n }\n}));\n\nOrderListToolbar.propTypes = {\n numSelected: PropTypes.number,\n onFilterName: PropTypes.func,\n title: PropTypes.string,\n children: PropTypes.any\n};\n\nexport default function OrderListToolbar({\n numSelected,\n filterName,\n onFilterName,\n title,\n children\n}) {\n return (\n <RootStyle\n sx={{\n ...(numSelected > 0 && {\n color: 'primary.main',\n bgcolor: 'primary.lighter'\n })\n }}\n >\n <SearchStyle\n onChange={onFilterName}\n defaultValue={filterName}\n placeholder={`Search ${title}...`}\n startAdornment={\n <InputAdornment position=\"start\">\n <Box component={Icon} icon={searchFill} sx={{ color: 'text.disabled' }} />\n </InputAdornment>\n }\n />\n {children}\n </RootStyle>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport Button from '@mui/material/Button';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport const EditPatient = (props) => {\n const [values, setValues] = useState({\n address1: props?.address?.address?.address_line_1,\n address2: props?.address?.address?.address_line_2,\n landmark: props?.address?.address?.landmark,\n name: props?.address?.name,\n mobile: props?.address?.mobile,\n state: '',\n pincode: props?.address?.address?.pincode?.toString(),\n pincodeId: props?.address?.address?.pincodeId,\n city: ''\n });\n const [pincodes, setPincodes] = useState([]);\n const [spinner, setSpinner] = useState(false);\n useEffect(() => {\n const fetcher = async () => {\n const responseForPincode = await fetch(\n `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${values.pincode}`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${window.localStorage.getItem('token')}`\n }\n }\n );\n const data = await responseForPincode.json();\n setValues({\n ...values,\n city: data.data.city.name,\n state: data.data.city.state.name,\n pincodeId: data.data.id\n });\n };\n\n fetcher();\n // eslint-disable-next-line\n }, []);\n const [isOpen2, setIsOpen2] = useState(false);\n const [errors, setErrors] = useState({\n street: false,\n state: false,\n pincode: false,\n city: false\n });\n const addPatientHandler = async () => {\n if (\n values.pincode !== '' &&\n values.city !== '' &&\n values.state !== '' &&\n values.address1.length > 0 &&\n // values.address2.length > 0 &&\n values.landmark.length > 0\n ) {\n setSpinner(true);\n const addAddressResp = await fetch(\n `${process.env.REACT_APP_THIRDINREV_API}/patient/${props.address.id}`,\n {\n method: 'PUT',\n headers: {\n 'Content-type': 'application/json',\n Authorization: `Bearer ${window.localStorage.getItem('token')}`\n },\n body: JSON.stringify({\n name: values.name,\n mobile: values.mobile,\n address_line_1: values.address1,\n address_line_2: values.address2.length > 0 ? values.address2 : ' ',\n landmark: values.landmark,\n pincode_id: Number(values.pincodeId)\n })\n }\n );\n await addAddressResp.json();\n window.location.reload();\n } else {\n setErrors({\n ...errors,\n street: values.street.length < 1,\n city: values.city === '',\n pincode: values.pincode === '',\n state: values.state === ''\n });\n }\n };\n\n const handleChange = async (prop, v) => {\n if (prop === 'pincode') {\n setValues({ ...values, pincode: v });\n if (v?.length === 6) {\n setSpinner(true);\n const responseForPincode = await fetch(\n `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${v}`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${window.localStorage.getItem('token')}`\n }\n }\n );\n const data = await responseForPincode.json();\n setValues({\n ...values,\n city: data.data.city.name,\n state: data.data.city.state.name,\n pincode: v,\n pincodeId: data.data.id\n });\n setSpinner(false);\n }\n } else setValues({ ...values, [prop]: v });\n\n if (prop === 'address1')\n setErrors({\n ...errors,\n address1: v.length < 1\n });\n if (prop === 'landmark')\n setErrors({\n ...errors,\n landmark: v.length < 1\n });\n if (prop === 'city')\n setErrors({\n ...errors,\n city: v === ''\n });\n if (prop === 'pincode')\n setErrors({\n ...errors,\n pincode: v === ''\n });\n if (prop === 'state')\n setErrors({\n ...errors,\n state: v === ''\n });\n };\n const fetchPincodes = async (e) => {\n if (e.target.value?.length === 3) {\n if (e.target.value?.length === 3) {\n const resp = await fetch(\n `${process.env.REACT_APP_THIRDINREV_API}/pincodes?pincode=${e.target?.value}`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${window.localStorage.getItem('token')}`\n }\n }\n );\n const pincodeData = await resp.json();\n pincodeData.data.forEach((pincode) => {\n setPincodes((currentArray) => [...currentArray, pincode.toString()]);\n });\n }\n }\n };\n return (\n <>\n <h1 style={{ textAlign: 'center' }}>Update Patient</h1>\n <Box style={{ padding: '15px' }}>\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.name}\n onChange={(e) => handleChange('name', e.target.value)}\n label=\"Patient Name\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.name}\n helperText={errors.name ? 'Patient Name is required.' : null}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"number\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.mobile}\n onChange={(e) => handleChange('mobile', e.target.value)}\n label=\"Phone Number\"\n color=\"primary\"\n autoComplete=\"off\"\n onInput={(e) => {\n e.target.value = Number(e.target.value).toString().slice(0, 10);\n }}\n error={errors.phone}\n helperText={errors.phone ? 'Phone Number is required.' : null}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.address1}\n onChange={(e) => handleChange('address1', e.target.value)}\n label=\"Address 1\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.address1}\n helperText={errors.address1 ? 'Address 1 is required.' : null}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.address2}\n onChange={(e) => handleChange('address2', e.target.value)}\n label=\"Address 2\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.address2}\n helperText={errors.address2 ? 'Address 2 is required.' : null}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.landmark}\n onChange={(e) => handleChange('landmark', e.target.value)}\n label=\"Landmark\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.landmark}\n helperText={errors.landmark ? 'Landmark is required.' : null}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n marginTop: '15px'\n }}\n >\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n value={values.state}\n label=\"Choose State\"\n disabled=\"true\"\n style={{ width: '32%', marginTop: '5px', color: errors.state ? 'red' : null }}\n onChange={(e) => handleChange('state', e.target.value)}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n value={values.city}\n style={{ width: '32%', marginTop: '5px', color: errors.city ? 'red' : null }}\n label=\"Choose City\"\n disabled=\"true\"\n onChange={(e) => handleChange('city', e.target.value)}\n />\n\n <Autocomplete\n style={{ width: '32%', marginTop: '5px' }}\n id=\"combo-box-demo\"\n noOptionsText=\"No results found.\"\n open={isOpen2}\n onKeyPress={() => setIsOpen2(true)}\n onKeyDown={() => setIsOpen2(true)}\n onClose={() => setIsOpen2(false)}\n options={pincodes}\n value={values.pincode}\n onChange={(e, v) => handleChange('pincode', v)}\n renderInput={(params) => (\n <TextField\n {...params}\n color=\"primary\"\n label=\"Choose Pincode\"\n onChange={fetchPincodes}\n error={errors.pincode}\n helperText={errors.pincode ? 'Pincode is required.' : null}\n />\n )}\n />\n </div>\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '25px' }}>\n {spinner ? (\n <CircularProgress />\n ) : (\n <Button variant=\"contained\" style={{ marginTop: '15px' }} onClick={addPatientHandler}>\n Save changes\n </Button>\n )}\n </div>\n </Box>\n </>\n );\n};\n","import { Icon } from '@iconify/react';\nimport { useRef, useState } from 'react';\nimport editFill from '@iconify/icons-eva/edit-fill';\nimport { Link as RouterLink } from 'react-router-dom';\nimport moreVerticalFill from '@iconify/icons-eva/more-vertical-fill';\n// material\nimport { Menu, MenuItem, IconButton, ListItemIcon, ListItemText, Modal } from '@mui/material';\nimport { Box } from '@mui/system';\nimport { EditPatient } from '../../EditPatient';\n\n// ----------------------------------------------------------------------\n\nexport default function UserMoreMenu(props) {\n const ref = useRef(null);\n const [openEdit, setOpenEdit] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const style = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n maxWidth: 600,\n width: '100%',\n bgcolor: 'background.paper',\n borderRadius: 3,\n boxShadow: 24,\n p: 4\n };\n\n return (\n <>\n <Modal\n open={openEdit}\n onClose={() => setOpenEdit(false)}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n <Box sx={style}>\n <EditPatient address={props.address} />\n </Box>\n </Modal>\n <IconButton ref={ref} onClick={() => setIsOpen(true)}>\n <Icon icon={moreVerticalFill} width={20} height={20} />\n </IconButton>\n\n <Menu\n open={isOpen}\n anchorEl={ref.current}\n onClose={() => setIsOpen(false)}\n PaperProps={{\n sx: { width: 200, maxWidth: '100%' }\n }}\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n >\n <MenuItem\n component={RouterLink}\n to={`/dashboard/edit/patient/${props.id}`}\n sx={{ color: 'text.secondary' }}\n >\n <ListItemIcon>\n <Icon icon={editFill} width={24} height={24} />\n </ListItemIcon>\n <ListItemText primary=\"Edit\" primaryTypographyProps={{ variant: 'body2' }} />\n </MenuItem>\n </Menu>\n </>\n );\n}\n","import { headers } from '../utils/headers';\nimport instance from '../AxiosInstance';\n\nexport const getPincodesDetailsServices = async (v) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/pincodes/${v}`, {\n method: 'GET'\n });\n return response;\n};\n\nexport const uploadPatientsFileServices = async (folderName) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/media`, {\n method: 'POST',\n headers,\n data: JSON.stringify({\n type: 'stl',\n file_name: `${folderName}.zip`\n })\n });\n return response;\n};\n\nexport const uploadPatientsFileByIdServices = async (folderName, values) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/media`, {\n method: 'POST',\n headers,\n data: JSON.stringify({\n type: 'file',\n file_name: `${folderName}.zip`,\n patient_uuid: values.patientUuid\n })\n });\n return response;\n};\n\nexport const getPatientsAttachmentByIdServices = async (id) => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/patient/attachments/${id}`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getPatientsDetailsByIdServices = async (id) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/patient/${id}`, {\n method: 'GET'\n });\n return response;\n};\n\nexport const getPatientsAddressByIdServices = async (id) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/address/${id}/patient`, {\n method: 'GET'\n });\n return response;\n};\n\nexport const addPatientsServices = async (body) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/patient`, {\n method: 'POST',\n headers,\n data: JSON.stringify(body)\n });\n return response;\n};\n\nexport const editPatientsServices = async (id, body) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/patient/${id}`, {\n method: 'PUT',\n headers,\n data: JSON.stringify(body)\n });\n return response;\n};\n\nexport const getAllPincodesServices = async (e) => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/pincodes?pincode=${e.target?.value}`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getAllPatientsListsServices = async (rowsPerPage, page, searchByName) => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/patient?size=${rowsPerPage}&page=${page}&term=${searchByName}`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n","import { debounce } from 'lodash';\nimport { Icon } from '@iconify/react';\nimport { useEffect, useState, useMemo } from 'react';\nimport plusFill from '@iconify/icons-eva/plus-fill';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TablePagination from '@mui/material/TablePagination';\nimport Stack from '@mui/material/Stack';\nimport TableContainer from '@mui/material/TableContainer';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport UserListToolbarWithoutDebounce from '../components/_dashboard/user/UserListToolbarWithoutDebounce';\nimport Page from '../components/Page';\nimport Scrollbar from '../components/Scrollbar';\nimport SearchNotFound from '../components/SearchNotFound';\nimport { UserListHead, UserMoreMenu } from '../components/_dashboard/user';\nimport { getAllPatientsListsServices } from '../services/patients.services';\n\nconst TABLE_HEAD = [\n { id: 'name', label: 'Name', alignRight: false },\n { id: 'mobile', label: 'Mobile Number', alignRight: false },\n { id: '' }\n];\n\nexport default function User() {\n const [page, setPage] = useState(0);\n const [pageCount, setPageCount] = useState(1);\n const [order, setOrder] = useState('asc');\n const [selected, setSelected] = useState([]);\n const [orderBy, setOrderBy] = useState('name');\n const [filterName, setFilterName] = useState('');\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [patients, setPatients] = useState([]);\n const [spinner, setSpinner] = useState(false);\n const [addressDetails] = useState([]);\n\n useEffect(() => {\n const search = async () => {\n setPatients([]);\n setSpinner(true);\n const searchByName = (\n filterName.includes('#') ? `%23${filterName.split('#')[1]}` : filterName\n ).toLowerCase();\n const response = await getAllPatientsListsServices(rowsPerPage, page, searchByName);\n setSpinner(false);\n const data = await response?.data;\n setPatients(data?.data);\n setPageCount(data?.meta?.length);\n };\n search();\n // eslint-disable-next-line\n }, [filterName, rowsPerPage, page]);\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const handleSelectAllClick = (event) => {\n if (event.target.checked) {\n const newSelecteds = patients.map((n) => n.name);\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n\n const handleChangePage = async (event, newPage) => {\n setPage(newPage);\n setPatients([]);\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const changeHandler = (event) => {\n setPage(0);\n setFilterName(event.target.value);\n };\n\n const debouncedChangeHandler = useMemo(() => debounce(changeHandler, 600), []);\n\n const filteredUsers = patients;\n\n const isUserNotFound = filteredUsers.length === 0;\n\n return (\n <Page title=\"Patients | Quiteclear\">\n <Container style={{ width: '100%', maxWidth: 1500 }}>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={5}>\n <Typography variant=\"h4\" gutterBottom>\n Patients\n </Typography>\n <Button\n variant=\"contained\"\n component={RouterLink}\n to=\"/dashboard/add/patient\"\n startIcon={<Icon icon={plusFill} />}\n >\n New Patient\n </Button>\n </Stack>\n <Card>\n <UserListToolbarWithoutDebounce\n numSelected={selected.length}\n filterName={filterName}\n onFilterName={debouncedChangeHandler}\n name=\"Patients\"\n />\n\n <Scrollbar>\n <TableContainer sx={{ minWidth: 800 }}>\n <Table>\n <UserListHead\n order={order}\n orderBy={orderBy}\n headLabel={TABLE_HEAD}\n rowCount={patients.length}\n numSelected={selected.length}\n onRequestSort={handleRequestSort}\n onSelectAllClick={handleSelectAllClick}\n />\n <TableBody>\n {filteredUsers.map((row) => {\n const { id, name, address, mobile } = row;\n const isItemSelected = selected.indexOf(name) !== -1;\n\n return (\n <TableRow\n hover\n key={id}\n tabIndex={-1}\n role=\"checkbox\"\n selected={isItemSelected}\n aria-checked={isItemSelected}\n >\n <TableCell>{name}</TableCell>\n\n <TableCell align=\"left\">{mobile}</TableCell>\n\n <TableCell align=\"right\">\n <UserMoreMenu\n id={id}\n address={{\n address,\n name,\n id,\n mobile\n }}\n addressDetails={addressDetails}\n />\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n {isUserNotFound && (\n <TableBody>\n <TableRow>\n <TableCell align=\"center\" colSpan={6} sx={{ py: 3 }}>\n {spinner ? (\n <div style={{ width: '100%' }}>\n <CircularProgress style={{ textAlign: 'center' }} />\n </div>\n ) : (\n <SearchNotFound searchQuery={filterName} />\n )}\n </TableCell>\n </TableRow>\n </TableBody>\n )}\n </Table>\n </TableContainer>\n </Scrollbar>\n\n <TablePagination\n rowsPerPageOptions={[10, 50, 100]}\n component=\"div\"\n count={pageCount}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage=\"Patients per page\"\n />\n </Card>\n </Container>\n </Page>\n );\n}\n","// ----------------------------------------------------------------------\n\nexport const varWrapEnter = {\n animate: {\n transition: { staggerChildren: 0.1 }\n }\n};\n\nexport const varWrapExit = {\n exit: {\n transition: { staggerChildren: 0.1 }\n }\n};\n\nexport const varWrapBoth = {\n animate: {\n transition: { staggerChildren: 0.07, delayChildren: 0.1 }\n },\n exit: {\n transition: { staggerChildren: 0.05, staggerDirection: -1 }\n }\n};\n","import {\n varBounceOut,\n varBounceOutUp,\n varBounceOutDown,\n varBounceOutLeft,\n varBounceOutRight\n} from './BounceOut';\n\n// ----------------------------------------------------------------------\n\nconst TRANSITION_ENTER = {\n duration: 0.72,\n ease: [0.43, 0.13, 0.23, 0.96]\n};\n\nconst TRANSITION_EXIT = {\n duration: 0.48,\n ease: [0.43, 0.13, 0.23, 0.96]\n};\n\nexport const varBounceIn = {\n animate: {\n scale: [0.3, 1.1, 0.9, 1.03, 0.97, 1],\n opacity: [0, 1, 1, 1, 1, 1],\n transition: TRANSITION_ENTER\n },\n exit: varBounceOut.animate\n};\n\nexport const varBounceInUp = {\n animate: {\n y: [720, -24, 12, -4, 0],\n scaleY: [4, 0.9, 0.95, 0.985, 1],\n opacity: [0, 1, 1, 1, 1],\n transition: { ...TRANSITION_ENTER }\n },\n exit: { ...varBounceOutDown.animate, transition: TRANSITION_EXIT }\n};\n\nexport const varBounceInDown = {\n animate: {\n y: [-720, 24, -12, 4, 0],\n scaleY: [4, 0.9, 0.95, 0.985, 1],\n opacity: [0, 1, 1, 1, 1],\n transition: TRANSITION_ENTER\n },\n exit: { ...varBounceOutUp.animate, transition: TRANSITION_EXIT }\n};\n\nexport const varBounceInLeft = {\n animate: {\n x: [-720, 24, -12, 4, 0],\n scaleX: [3, 1, 0.98, 0.995, 1],\n opacity: [0, 1, 1, 1, 1],\n transition: TRANSITION_ENTER\n },\n exit: { ...varBounceOutLeft.animate, transition: TRANSITION_EXIT }\n};\n\nexport const varBounceInRight = {\n animate: {\n x: [720, -24, 12, -4, 0],\n scaleX: [3, 1, 0.98, 0.995, 1],\n opacity: [0, 1, 1, 1, 1],\n transition: TRANSITION_ENTER\n },\n exit: { ...varBounceOutRight.animate, transition: TRANSITION_EXIT }\n};\n","// ----------------------------------------------------------------------\n\nexport const varBounceOut = {\n animate: {\n scale: [0.9, 1.1, 0.3],\n opacity: [1, 1, 0]\n }\n};\n\nexport const varBounceOutUp = {\n animate: {\n y: [-12, 24, -720],\n scaleY: [0.985, 0.9, 3],\n opacity: [1, 1, 0]\n }\n};\n\nexport const varBounceOutDown = {\n animate: {\n y: [12, -24, 720],\n scaleY: [0.985, 0.9, 3],\n opacity: [1, 1, 0]\n }\n};\n\nexport const varBounceOutLeft = {\n animate: {\n x: [0, 24, -720],\n scaleX: [1, 0.9, 2],\n opacity: [1, 1, 0]\n }\n};\n\nexport const varBounceOutRight = {\n animate: {\n x: [0, -24, 720],\n scaleX: [1, 0.9, 2],\n opacity: [1, 1, 0]\n }\n};\n","import PropTypes from 'prop-types';\nimport { motion } from 'framer-motion';\n// material\nimport { Box } from '@mui/material';\n//\nimport { varWrapEnter } from './variants';\n\n// ----------------------------------------------------------------------\n\nMotionContainer.propTypes = {\n open: PropTypes.bool.isRequired,\n children: PropTypes.node\n};\n\nexport default function MotionContainer({ open, children, ...other }) {\n return (\n <Box\n component={motion.div}\n initial={false}\n animate={open ? 'animate' : 'exit'}\n variants={varWrapEnter}\n {...other}\n >\n {children}\n </Box>\n );\n}\n","import { motion } from 'framer-motion';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport { styled } from '@mui/material/styles';\nimport { Box, Button, Typography, Container } from '@mui/material';\nimport { MotionContainer, varBounceIn } from '../components/animate';\nimport Page from '../components/Page';\n\nconst RootStyle = styled(Page)(({ theme }) => ({\n display: 'flex',\n minHeight: '100%',\n alignItems: 'center',\n paddingTop: theme.spacing(15),\n paddingBottom: theme.spacing(10)\n}));\n\nexport default function Page404() {\n const location = useLocation();\n const title = 'Sorry, page not found!';\n return (\n <RootStyle title=\"404 Page Not Found | Quiteclear\">\n <Container>\n <MotionContainer initial=\"initial\" open>\n <Box sx={{ maxWidth: 480, margin: 'auto', textAlign: 'center' }}>\n <motion.div variants={varBounceIn}>\n <Typography variant=\"h3\" paragraph>\n {location?.state?.title ? location?.state?.title : title}\n </Typography>\n </motion.div>\n <Typography sx={{ color: 'text.secondary' }}>\n Sorry, we couldn’t find the page you’re looking for. Perhaps you’ve mistyped the URL?\n Be sure to check your spelling.\n </Typography>\n\n <motion.div variants={varBounceIn}>\n <Box\n component=\"img\"\n src=\"/static/illustrations/illustration_404.svg\"\n sx={{ height: 260, mx: 'auto', my: { xs: 5, sm: 10 } }}\n />\n </motion.div>\n\n <Button to=\"/\" size=\"large\" variant=\"contained\" component={RouterLink}>\n Go to Home\n </Button>\n </Box>\n </MotionContainer>\n </Container>\n </RootStyle>\n );\n}\n","import React, { useEffect } from 'react';\nimport TextField from '@mui/material/TextField';\nimport FormControl from '@mui/material/FormControl';\nimport Button from '@mui/material/Button';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport SaveIcon from '@mui/icons-material/Save';\nimport AddTaskIcon from '@mui/icons-material/AddTask';\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport ReplayOutlinedIcon from '@mui/icons-material/ReplayOutlined';\nimport '../styles/components/FoilAddModal.css';\nimport Autocomplete from '@mui/material/Autocomplete';\n\nexport default function ThreeDModal(props) {\n const [rerenderedCart, setRerenderedCart] = React.useState([...props.inCartItems]);\n const [spinner, setSpinner] = React.useState(false);\n const [commonData, setCommonData] = React.useState({\n thickness: 0.0,\n aligner: '',\n foil: ''\n });\n const [upperData, setUpperData] = React.useState({\n prefix: 'Upper',\n minRange: -1,\n maxRange: -1\n });\n const [lowerData, setLowerData] = React.useState({\n prefix: 'Lower',\n minRange: -1,\n maxRange: -1\n });\n const [errors, setErrors] = React.useState({\n upperMax: false,\n upperMin: false,\n lowerMax: false,\n lowerMin: false\n });\n const [errorCommon, setErrorCommon] = React.useState({\n foil: false\n });\n const [cartData, setCartData] = React.useState([...props.inCartItems]);\n const handleChangeUpper = (e, props) => {\n if (props === 'maxRange') {\n if (e.target.value > 0) {\n setUpperData({\n ...upperData,\n maxRange: e.target.value\n });\n } else {\n setUpperData({\n ...upperData,\n maxRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n if (props === 'minRange') {\n if (e.target.value > 0) {\n setUpperData({\n ...upperData,\n minRange: e.target.value\n });\n } else {\n setUpperData({\n ...upperData,\n minRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n };\n const resetUpper = () => {\n setUpperData({\n maxRange: -1,\n minRange: -1,\n prefix: 'Upper'\n });\n };\n const submitLower = () => {\n setErrors({\n ...errors,\n lowerMax: Number(lowerData.maxRange) < Number(lowerData.minRange),\n lowerMin: Number(lowerData.maxRange) < Number(lowerData.minRange),\n upperMin: Number(upperData.minRange) > Number(upperData.maxRange),\n upperMax: Number(upperData.maxRange) < Number(upperData.minRange)\n });\n setErrorCommon({\n foil: commonData.foil === ''\n });\n if (\n upperData.minRange > -1 &&\n upperData.maxRange > -1 &&\n Number(upperData.maxRange) >= Number(upperData.minRange) &&\n lowerData.minRange > -1 &&\n lowerData.maxRange > -1 &&\n Number(lowerData.maxRange) >= Number(lowerData.minRange) &&\n commonData.foil !== ''\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...upperData,\n foil: commonData.foil\n },\n {\n ...lowerData,\n foil: commonData.foil\n }\n ]);\n resetCommon();\n resetUpper();\n resetLower();\n } else if (\n upperData.minRange > -1 &&\n upperData.maxRange > -1 &&\n Number(upperData.maxRange) >= Number(upperData.minRange) &&\n commonData.foil !== '' &&\n lowerData.minRange === -1 &&\n lowerData.maxRange === -1\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...upperData,\n foil: commonData.foil\n }\n ]);\n resetCommon();\n resetUpper();\n } else if (\n lowerData.minRange > -1 &&\n lowerData.maxRange > -1 &&\n Number(lowerData.maxRange) >= Number(lowerData.minRange) &&\n commonData.foil !== '' &&\n upperData.minRange === -1 &&\n upperData.maxRange === -1\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...lowerData,\n foil: commonData.foil\n }\n ]);\n resetCommon();\n resetLower();\n }\n };\n const resetLower = () => {\n setLowerData({\n maxRange: -1,\n minRange: -1,\n prefix: 'Lower'\n });\n };\n const resetCommon = () => {\n setCommonData({\n foil: ''\n });\n };\n const resetAll = () => {\n resetUpper();\n resetLower();\n resetCommon();\n };\n const handleChangeLower = (e, props) => {\n if (props === 'maxRange') {\n if (e.target.value > 0) {\n setLowerData({\n ...lowerData,\n maxRange: e.target.value\n });\n } else {\n setLowerData({\n ...lowerData,\n maxRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n if (props === 'minRange') {\n if (e.target.value > 0) {\n setLowerData({\n ...lowerData,\n minRange: e.target.value\n });\n } else {\n setLowerData({\n ...lowerData,\n minRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n };\n\n const handlerSave = () => {\n const correctInput = rerenderedCart.length;\n let isCorrectCounter = 0;\n rerenderedCart.forEach((item) => {\n if (\n Number(item.minRange) <= Number(item.maxRange) &&\n Number(item.maxRange >= 0) &&\n Number(item.minRange >= 0)\n )\n isCorrectCounter += 1;\n });\n if (isCorrectCounter === correctInput) {\n props.setInCartItems([...rerenderedCart]);\n props.handleClose();\n }\n };\n\n const handleEditInCart = (value, props, id) => {\n cartData[id][props] = value;\n setRerenderedCart([...cartData]);\n };\n const deleteInCart = (id) => {\n setSpinner(true);\n setCartData([...cartData.filter((item, index) => index !== id)]);\n };\n useEffect(() => {\n setRerenderedCart([...cartData]);\n setSpinner(false);\n }, [cartData]);\n return (\n <div className=\"foil_add_modal_div\">\n <h1 style={{ textAlign: 'center' }}>3D Models</h1>\n <div className=\"foil_add_modal_main_div\">\n <div className=\"foil_add_modal_upper_lower_div\">\n <div className=\"foil_add_modal_upper_lower_subdiv\">\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Upper</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Min\"\n value={upperData.minRange === -1 ? 'Min' : upperData.minRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeUpper(e, 'minRange')}\n error={Number(upperData.minRange) > Number(upperData.maxRange)}\n helperText={\n Number(upperData.minRange) > Number(upperData.maxRange) ? 'Incorrect Range' : null\n }\n />\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Max\"\n value={upperData.maxRange === -1 ? 'Max' : upperData.maxRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeUpper(e, 'maxRange')}\n error={Number(upperData.minRange) > Number(upperData.maxRange)}\n helperText={\n Number(upperData.minRange) > Number(upperData.maxRange) ? 'Incorrect Range' : null\n }\n />\n </div>\n\n <div className=\"foil_add_modal_upper_lower_subdiv\">\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Lower</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Min\"\n value={lowerData.minRange === -1 ? 'Min' : lowerData.minRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeLower(e, 'minRange')}\n error={Number(lowerData.minRange) > Number(lowerData.maxRange)}\n helperText={\n Number(lowerData.minRange) > Number(lowerData.maxRange) ? 'Incorrect Range' : null\n }\n />\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Max\"\n value={lowerData.maxRange === -1 ? 'Max' : lowerData.maxRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeLower(e, 'maxRange')}\n error={Number(lowerData.minRange) > Number(lowerData.maxRange)}\n helperText={\n Number(lowerData.minRange) > Number(lowerData.maxRange) ? 'Incorrect Range' : null\n }\n />\n </div>\n </div>\n\n <div className=\"foil_add_modal_common_dropdown_div\">\n <FormControl className=\"modal_type\">\n <Autocomplete\n options={props?.model || []}\n value={props.model.find((option) => option.id === commonData.foil) || null} // Controlled value\n getOptionLabel={(option) => option.name || ''}\n onChange={(event, newValue) => {\n setCommonData({ ...commonData, foil: newValue?.id || '' });\n setErrorCommon({ foil: !newValue });\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Model Type\" error={errorCommon.foil} />\n )}\n />\n {errorCommon.foil ? (\n <FormHelperText style={{ color: 'red' }}>*Model Type is required.</FormHelperText>\n ) : null}\n </FormControl>\n </div>\n <div className=\"foil_add_modal_common_dropdown_btn_div\">\n <Button variant=\"contained\" color=\"success\" onClick={submitLower}>\n <AddTaskIcon />\n </Button>\n <Button variant=\"contained\" color=\"error\" onClick={resetAll}>\n <ReplayOutlinedIcon />\n </Button>\n </div>\n </div>\n <div>\n <h1 style={{ textAlign: 'center' }}>In Cart</h1>\n {!spinner &&\n rerenderedCart.map((cart, index) => (\n <div className=\"foil_add_modal_main_div\" key={index}>\n <div className=\"foil_add_modal_upper_lower_div\">\n <div className=\"foil_add_modal_upper_lower_subdiv\">\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>{cart.prefix}</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Min\"\n defaultValue={cart.minRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleEditInCart(e.target.value, 'minRange', index)}\n error={\n Number(cart.minRange) > Number(cart.maxRange) || Number(cart.minRange) < 0\n }\n helperText={\n Number(cart.minRange) > Number(cart.maxRange) || Number(cart.minRange) < 0\n ? 'Icorrect Range'\n : null\n }\n />\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Max\"\n defaultValue={cart.maxRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleEditInCart(e.target.value, 'maxRange', index)}\n error={\n Number(cart.minRange) > Number(cart.maxRange) || Number(cart.maxRange) < 0\n }\n helperText={\n Number(cart.minRange) > Number(cart.maxRange) || Number(cart.maxRange) < 0\n ? 'Incorrect Range'\n : null\n }\n />\n </div>\n </div>\n <div className=\"foil_add_modal_common_dropdown_div_cart\">\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-evenly',\n width: '100%'\n }}\n >\n <FormControl style={{ width: '150px' }}>\n <TextField\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n defaultValue={\n props?.model.find((mode) => mode.id === Number(cart.foil))?.name\n }\n label=\"Model Type\"\n disabled\n onChange={(e) => handleEditInCart(e.target.value, 'foil', index)}\n />\n </FormControl>\n <Button variant=\"contained\" onClick={() => deleteInCart(index)} color=\"error\">\n <DeleteOutlineIcon />\n </Button>\n </div>\n </div>\n </div>\n ))}\n </div>\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '15px' }}>\n {rerenderedCart.length === 0 ? (\n <Button\n variant=\"contained\"\n onClick={handlerSave}\n style={{ fontSize: '16px' }}\n color=\"error\"\n >\n Close\n </Button>\n ) : (\n <Button variant=\"contained\" onClick={handlerSave}>\n <SaveIcon /> Save and Continue\n </Button>\n )}\n </div>\n </div>\n );\n}\n","import React, { useEffect } from 'react';\nimport TextField from '@mui/material/TextField';\nimport FormControl from '@mui/material/FormControl';\nimport Button from '@mui/material/Button';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport AddTaskIcon from '@mui/icons-material/AddTask';\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport SaveIcon from '@mui/icons-material/Save';\nimport ReplayOutlinedIcon from '@mui/icons-material/ReplayOutlined';\nimport '../styles/components/FoilAddModal.css';\nimport Autocomplete from '@mui/material/Autocomplete';\n\nexport default function ClearAlignersModal(props) {\n const [spinner, setSpinner] = React.useState(false);\n const [rerenderedCart, setRerenderedCart] = React.useState([...props.inCartItems]);\n const [commonData, setCommonData] = React.useState({\n thickness: 0.0,\n aligner: '',\n foil: ''\n });\n\n const [upperDataTemplate, setUpperDataTemplate] = React.useState({\n prefix: 'Upper',\n minRange: -1,\n maxRange: -1\n });\n const [lowerDataTemplate, setLowerDataTemplate] = React.useState({\n prefix: 'Lower',\n minRange: -1,\n maxRange: -1\n });\n const [upperDataAligner, setUpperDataAligner] = React.useState({\n prefix: 'Upper',\n minRange: -1,\n maxRange: -1\n });\n const [lowerDataAligner, setLowerDataAligner] = React.useState({\n prefix: 'Lower',\n minRange: -1,\n maxRange: -1\n });\n const [upperDataRetainer, setUpperDataRetainer] = React.useState({\n prefix: 'Upper',\n minRange: -1,\n maxRange: -1\n });\n const [lowerDataRetainer, setLowerDataRetainer] = React.useState({\n prefix: 'Lower',\n minRange: -1,\n maxRange: -1\n });\n const [errorsTemplate, setErrorsTemplate] = React.useState({\n upperMax: false,\n upperMin: false,\n lowerMax: false,\n lowerMin: false\n });\n\n const [errorsAligner, setErrorsAligner] = React.useState({\n upperMax: false,\n upperMin: false,\n lowerMax: false,\n lowerMin: false\n });\n const [errorsRetainer, setErrorsRetainer] = React.useState({\n upperMax: false,\n upperMin: false,\n lowerMax: false,\n lowerMin: false\n });\n const [errorCommon, setErrorCommon] = React.useState({\n foil: false\n });\n const [cartData, setCartData] = React.useState([...props.inCartItems]);\n const handleChangeUpper = (e, props) => {\n if (props === 'maxRangeT') {\n if (e.target.value > 0) {\n setUpperDataTemplate({\n ...upperDataTemplate,\n maxRange: e.target.value\n });\n } else {\n setUpperDataTemplate({\n ...upperDataTemplate,\n maxRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n if (props === 'minRangeT') {\n if (e.target.value > 0) {\n setUpperDataTemplate({\n ...upperDataTemplate,\n minRange: e.target.value\n });\n } else {\n setUpperDataTemplate({\n ...upperDataTemplate,\n minRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n\n if (props === 'maxRangeA') {\n if (e.target.value > 0) {\n setUpperDataAligner({\n ...upperDataAligner,\n maxRange: e.target.value\n });\n } else {\n setUpperDataAligner({\n ...upperDataAligner,\n maxRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n if (props === 'minRangeA') {\n if (e.target.value > 0) {\n setUpperDataAligner({\n ...upperDataAligner,\n minRange: e.target.value\n });\n } else {\n setUpperDataAligner({\n ...upperDataAligner,\n minRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n if (props === 'maxRangeR') {\n if (e.target.value > 0) {\n setUpperDataRetainer({\n ...upperDataRetainer,\n maxRange: e.target.value\n });\n } else {\n setUpperDataRetainer({\n ...upperDataRetainer,\n maxRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n if (props === 'minRangeR') {\n if (e.target.value > 0) {\n setUpperDataRetainer({\n ...upperDataRetainer,\n minRange: e.target.value\n });\n } else {\n setUpperDataRetainer({\n ...upperDataRetainer,\n minRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n };\n\n const handleChangeLower = (e, props) => {\n if (props === 'maxRangeT') {\n if (e.target.value > 0) {\n setLowerDataTemplate({\n ...lowerDataTemplate,\n maxRange: e.target.value\n });\n } else {\n setLowerDataTemplate({\n ...lowerDataTemplate,\n maxRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n if (props === 'minRangeT') {\n if (e.target.value > 0) {\n setLowerDataTemplate({\n ...lowerDataTemplate,\n minRange: e.target.value\n });\n } else {\n setLowerDataTemplate({\n ...lowerDataTemplate,\n minRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n\n if (props === 'maxRangeA') {\n if (e.target.value > 0) {\n setLowerDataAligner({\n ...lowerDataAligner,\n maxRange: e.target.value\n });\n } else {\n setLowerDataAligner({\n ...lowerDataAligner,\n maxRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n if (props === 'minRangeA') {\n if (e.target.value > 0) {\n setLowerDataAligner({\n ...lowerDataAligner,\n minRange: e.target.value\n });\n } else {\n setLowerDataAligner({\n ...lowerDataAligner,\n minRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n\n if (props === 'maxRangeR') {\n if (e.target.value > 0) {\n setLowerDataRetainer({\n ...lowerDataRetainer,\n maxRange: e.target.value\n });\n } else {\n setLowerDataRetainer({\n ...lowerDataRetainer,\n maxRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n if (props === 'minRangeR') {\n if (e.target.value > 0) {\n setLowerDataRetainer({\n ...lowerDataRetainer,\n minRange: e.target.value\n });\n } else {\n setLowerDataRetainer({\n ...lowerDataRetainer,\n minRange: e.target.value < 0 ? 0 : e.target.value\n });\n }\n }\n };\n\n useEffect(() => {}, [cartData, rerenderedCart]);\n const submitLower = () => {\n setErrorsTemplate({\n ...errorsTemplate,\n lowerMax: Number(lowerDataTemplate.maxRange) < Number(lowerDataTemplate.minRange),\n lowerMin: Number(lowerDataTemplate.maxRange) < Number(lowerDataTemplate.minRange),\n upperMin: Number(upperDataTemplate.minRange) > Number(upperDataTemplate.maxRange),\n upperMax: Number(upperDataTemplate.maxRange) < Number(upperDataTemplate.minRange)\n });\n setErrorsAligner({\n ...errorsAligner,\n lowerMax: Number(lowerDataAligner.maxRange) < Number(lowerDataAligner.minRange),\n lowerMin: Number(lowerDataAligner.maxRange) < Number(lowerDataAligner.minRange),\n upperMin: Number(upperDataAligner.minRange) > Number(upperDataAligner.maxRange),\n upperMax: Number(upperDataAligner.maxRange) < Number(upperDataAligner.minRange)\n });\n\n setErrorCommon({\n foil: commonData.foil === ''\n });\n\n setErrorsRetainer({\n ...errorsRetainer,\n lowerMax: Number(lowerDataRetainer.maxRange) < Number(lowerDataRetainer.minRange),\n lowerMin: Number(lowerDataRetainer.maxRange) < Number(lowerDataRetainer.minRange),\n upperMin: Number(upperDataRetainer.minRange) > Number(upperDataRetainer.maxRange),\n upperMax: Number(upperDataRetainer.maxRange) < Number(upperDataRetainer.minRange)\n });\n if (\n upperDataTemplate.minRange > -1 &&\n upperDataTemplate.maxRange > -1 &&\n Number(upperDataTemplate.maxRange) >= Number(upperDataTemplate.minRange) &&\n lowerDataTemplate.minRange > -1 &&\n lowerDataTemplate.maxRange > -1 &&\n Number(lowerDataTemplate.maxRange) >= Number(lowerDataTemplate.minRange) &&\n commonData.foil !== ''\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...upperDataTemplate,\n aligner: '1',\n foil: commonData.foil\n },\n {\n ...lowerDataTemplate,\n aligner: '1',\n foil: commonData.foil\n }\n ]);\n resetAll();\n } else if (\n upperDataTemplate.minRange > -1 &&\n upperDataTemplate.maxRange > -1 &&\n Number(upperDataTemplate.maxRange) >= Number(upperDataTemplate.minRange) &&\n commonData.foil !== '' &&\n lowerDataTemplate.minRange === -1 &&\n lowerDataTemplate.maxRange === -1\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...upperDataTemplate,\n aligner: '1',\n foil: commonData.foil\n }\n ]);\n resetAll();\n } else if (\n lowerDataTemplate.minRange > -1 &&\n lowerDataTemplate.maxRange > -1 &&\n Number(lowerDataTemplate.maxRange) >= Number(lowerDataTemplate.minRange) &&\n commonData.foil !== '' &&\n upperDataTemplate.minRange === -1 &&\n upperDataTemplate.maxRange === -1\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...lowerDataTemplate,\n aligner: '1',\n foil: commonData.foil\n }\n ]);\n resetAll();\n }\n\n if (\n upperDataAligner.minRange > -1 &&\n upperDataAligner.maxRange > -1 &&\n Number(upperDataAligner.maxRange) >= Number(upperDataAligner.minRange) &&\n lowerDataAligner.minRange > -1 &&\n lowerDataAligner.maxRange > -1 &&\n Number(lowerDataAligner.maxRange) >= Number(lowerDataAligner.minRange) &&\n commonData.foil !== ''\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...upperDataAligner,\n aligner: '2',\n foil: commonData.foil\n },\n {\n ...lowerDataAligner,\n aligner: '2',\n foil: commonData.foil\n }\n ]);\n resetAll();\n } else if (\n upperDataAligner.minRange > -1 &&\n upperDataAligner.maxRange > -1 &&\n Number(upperDataAligner.maxRange) >= Number(upperDataAligner.minRange) &&\n commonData.foil !== '' &&\n lowerDataAligner.minRange === -1 &&\n lowerDataAligner.maxRange === -1\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...upperDataAligner,\n aligner: '2',\n foil: commonData.foil\n }\n ]);\n resetAll();\n } else if (\n lowerDataAligner.minRange > -1 &&\n lowerDataAligner.maxRange > -1 &&\n Number(lowerDataAligner.maxRange) >= Number(lowerDataAligner.minRange) &&\n commonData.foil !== '' &&\n upperDataAligner.minRange === -1 &&\n upperDataAligner.maxRange === -1\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...lowerDataAligner,\n aligner: '2',\n foil: commonData.foil\n }\n ]);\n resetAll();\n }\n\n if (\n upperDataRetainer.minRange > -1 &&\n upperDataRetainer.maxRange > -1 &&\n Number(upperDataRetainer.maxRange) >= Number(upperDataRetainer.minRange) &&\n lowerDataRetainer.minRange > -1 &&\n lowerDataRetainer.maxRange > -1 &&\n Number(lowerDataRetainer.maxRange) >= Number(lowerDataRetainer.minRange) &&\n commonData.foil !== ''\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...upperDataRetainer,\n aligner: '3',\n foil: commonData.foil\n },\n {\n ...lowerDataRetainer,\n aligner: '3',\n foil: commonData.foil\n }\n ]);\n resetAll();\n } else if (\n upperDataRetainer.minRange > -1 &&\n upperDataRetainer.maxRange > -1 &&\n Number(upperDataRetainer.maxRange) >= Number(upperDataRetainer.minRange) &&\n commonData.foil !== '' &&\n lowerDataRetainer.minRange === -1 &&\n lowerDataRetainer.maxRange === -1\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...upperDataRetainer,\n aligner: '3',\n foil: commonData.foil\n }\n ]);\n resetAll();\n } else if (\n lowerDataRetainer.minRange > -1 &&\n lowerDataRetainer.maxRange > -1 &&\n Number(lowerDataRetainer.maxRange) >= Number(lowerDataRetainer.minRange) &&\n commonData.foil !== '' &&\n upperDataRetainer.minRange === -1 &&\n upperDataRetainer.maxRange === -1\n ) {\n setCartData((currentArray) => [\n ...currentArray,\n {\n ...lowerDataRetainer,\n aligner: '3',\n foil: commonData.foil\n }\n ]);\n resetAll();\n }\n };\n const resetLower = () => {\n setLowerDataTemplate({\n maxRange: -1,\n minRange: -1,\n prefix: 'Lower'\n });\n setLowerDataAligner({\n maxRange: -1,\n minRange: -1,\n prefix: 'Lower'\n });\n setLowerDataRetainer({\n maxRange: -1,\n minRange: -1,\n prefix: 'Lower'\n });\n };\n const resetUpper = () => {\n setUpperDataTemplate({\n maxRange: -1,\n minRange: -1,\n prefix: 'Upper'\n });\n setUpperDataAligner({\n maxRange: -1,\n minRange: -1,\n prefix: 'Upper'\n });\n setUpperDataRetainer({\n maxRange: -1,\n minRange: -1,\n prefix: 'Upper'\n });\n };\n const resetCommon = () => {\n setCommonData({\n foil: ''\n });\n };\n const resetAll = () => {\n resetUpper();\n resetLower();\n resetCommon();\n };\n\n const handlerSave = () => {\n const correctInput = rerenderedCart.length;\n let isCorrectCounter = 0;\n rerenderedCart.forEach((item) => {\n if (\n Number(item.minRange) <= Number(item.maxRange) &&\n Number(item.minRange) >= 0 &&\n Number(item.maxRange) >= 0\n )\n isCorrectCounter += 1;\n });\n if (isCorrectCounter === correctInput) {\n props.setInCartItems([...rerenderedCart]);\n props.handleClose();\n }\n };\n\n const handleEditInCart = (value, props, id) => {\n cartData[id][props] = value;\n setRerenderedCart([...cartData]);\n };\n\n const deleteInCart = (id) => {\n setSpinner(true);\n setCartData([...cartData.filter((item, index) => index !== id)]);\n };\n useEffect(() => {\n setRerenderedCart([...cartData]);\n setSpinner(false);\n }, [cartData]);\n return (\n <div className=\"foil_add_modal_div\">\n <h1 style={{ textAlign: 'center' }}>Clear Aligner</h1>\n <div className=\"foil_add_modal_main_div\">\n <div\n className=\"foil_add_modal_main_div_mobile\"\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n <div className=\"foil_add_modal_upper_lower_div\">\n <p style={{ fontSize: '18px', fontWeight: '600' }}>Template</p>\n <div className=\"foil_add_modal_upper_lower_subdiv\">\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Upper</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Min\"\n value={upperDataTemplate.minRange === -1 ? 'Min' : upperDataTemplate.minRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeUpper(e, 'minRangeT')}\n error={Number(upperDataTemplate.minRange) > Number(upperDataTemplate.maxRange)}\n helperText={\n Number(upperDataTemplate.minRange) > Number(upperDataTemplate.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Max\"\n value={upperDataTemplate.maxRange === -1 ? 'Max' : upperDataTemplate.maxRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeUpper(e, 'maxRangeT')}\n error={Number(upperDataTemplate.minRange) > Number(upperDataTemplate.maxRange)}\n helperText={\n Number(upperDataTemplate.minRange) > Number(upperDataTemplate.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n </div>\n <div className=\"foil_add_modal_upper_lower_subdiv\">\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Lower</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Min\"\n value={lowerDataTemplate.minRange === -1 ? 'Min' : lowerDataTemplate.minRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeLower(e, 'minRangeT')}\n error={Number(lowerDataTemplate.minRange) > Number(lowerDataTemplate.maxRange)}\n helperText={\n Number(lowerDataTemplate.minRange) > Number(lowerDataTemplate.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Max\"\n value={lowerDataTemplate.maxRange === -1 ? 'Max' : lowerDataTemplate.maxRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeLower(e, 'maxRangeT')}\n error={Number(lowerDataTemplate.minRange) > Number(lowerDataTemplate.maxRange)}\n helperText={\n Number(lowerDataTemplate.minRange) > Number(lowerDataTemplate.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n </div>\n </div>\n <div className=\"foil_add_modal_upper_lower_div\">\n <p style={{ fontSize: '18px', fontWeight: '600', marginTop: '25px' }}>Aligner</p>\n <div className=\"foil_add_modal_upper_lower_subdiv\">\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Upper</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Min\"\n value={upperDataAligner.minRange === -1 ? 'Min' : upperDataAligner.minRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeUpper(e, 'minRangeA')}\n error={Number(upperDataAligner.minRange) > Number(upperDataAligner.maxRange)}\n helperText={\n Number(upperDataAligner.minRange) > Number(upperDataAligner.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Max\"\n value={upperDataAligner.maxRange === -1 ? 'Max' : upperDataAligner.maxRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeUpper(e, 'maxRangeA')}\n error={Number(upperDataAligner.minRange) > Number(upperDataAligner.maxRange)}\n helperText={\n Number(upperDataAligner.minRange) > Number(upperDataAligner.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n </div>\n <div className=\"foil_add_modal_upper_lower_subdiv\">\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Lower</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Min\"\n value={lowerDataAligner.minRange === -1 ? 'Min' : lowerDataAligner.minRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeLower(e, 'minRangeA')}\n error={Number(lowerDataAligner.minRange) > Number(lowerDataAligner.maxRange)}\n helperText={\n Number(lowerDataAligner.minRange) > Number(lowerDataAligner.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Max\"\n value={lowerDataAligner.maxRange === -1 ? 'Max' : lowerDataAligner.maxRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeLower(e, 'maxRangeA')}\n error={Number(lowerDataAligner.minRange) > Number(lowerDataAligner.maxRange)}\n helperText={\n Number(lowerDataAligner.minRange) > Number(lowerDataAligner.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n </div>\n </div>\n <div className=\"foil_add_modal_upper_lower_div\">\n <p style={{ fontSize: '18px', fontWeight: '600', marginTop: '25px' }}>Retainer</p>\n\n <div className=\"foil_add_modal_upper_lower_subdiv\">\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Upper</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Min\"\n value={upperDataRetainer.minRange === -1 ? 'Min' : upperDataRetainer.minRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeUpper(e, 'minRangeR')}\n error={Number(upperDataRetainer.minRange) > Number(upperDataRetainer.maxRange)}\n helperText={\n Number(upperDataRetainer.minRange) > Number(upperDataRetainer.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Max\"\n value={upperDataRetainer.maxRange === -1 ? 'Max' : upperDataRetainer.maxRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeUpper(e, 'maxRangeR')}\n error={Number(upperDataRetainer.minRange) > Number(upperDataRetainer.maxRange)}\n helperText={\n Number(upperDataRetainer.minRange) > Number(upperDataRetainer.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n </div>\n <div className=\"foil_add_modal_upper_lower_subdiv\">\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Lower</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Min\"\n value={lowerDataRetainer.minRange === -1 ? 'Min' : lowerDataRetainer.minRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeLower(e, 'minRangeR')}\n error={Number(lowerDataRetainer.minRange) > Number(lowerDataRetainer.maxRange)}\n helperText={\n Number(lowerDataRetainer.minRange) > Number(lowerDataRetainer.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Max\"\n value={lowerDataRetainer.maxRange === -1 ? 'Max' : lowerDataRetainer.maxRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleChangeLower(e, 'maxRangeR')}\n error={Number(lowerDataRetainer.minRange) > Number(lowerDataRetainer.maxRange)}\n helperText={\n Number(lowerDataRetainer.minRange) > Number(lowerDataRetainer.maxRange)\n ? 'Incorrect Range'\n : null\n }\n />\n </div>\n </div>\n </div>\n <div className=\"foil_add_modal_common_dropdown_div_clear\">\n <FormControl className=\"modal_type\">\n <Autocomplete\n options={props?.brand || []}\n value={props.brand.find((option) => option.id === commonData.foil) || null} // Ensure it maps correctly\n getOptionLabel={(option) => option.name || ''}\n onChange={(event, newValue) => {\n setCommonData({ ...commonData, foil: newValue?.id || '' });\n setErrorCommon({ foil: !newValue });\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Foil Brand\" error={errorCommon.foil} />\n )}\n />\n {errorCommon.foil ? (\n <FormHelperText style={{ color: 'red' }}>*Foil Brand is required.</FormHelperText>\n ) : null}\n </FormControl>\n\n <div\n className=\"foil_add_modal_common_dropdown_btn_div_clear\"\n style={{ maxHeight: '56px' }}\n >\n <Button variant=\"contained\" color=\"success\" onClick={submitLower}>\n <AddTaskIcon />\n </Button>\n <Button variant=\"contained\" color=\"error\" onClick={resetAll}>\n <ReplayOutlinedIcon />\n </Button>\n </div>\n </div>\n </div>\n <div>\n <h1 style={{ textAlign: 'center' }}>In Cart</h1>\n {!spinner &&\n rerenderedCart.map((cart, index) => (\n <div className=\"foil_add_modal_main_div\" key={index}>\n <div className=\"foil_add_modal_upper_lower_div\">\n <div className=\"foil_add_modal_upper_lower_subdiv\">\n <p style={{ paddingTop: '20px', paddingRight: '15px' }}>{cart.prefix}</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Min\"\n defaultValue={cart.minRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleEditInCart(e.target.value, 'minRange', index)}\n error={\n Number(cart.minRange) > Number(cart.maxRange) || Number(cart.minRange) < 0\n }\n helperText={\n Number(cart.minRange) > Number(cart.maxRange) || Number(cart.minRange) < 0\n ? 'Incorrect Range'\n : null\n }\n />\n <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n <TextField\n id=\"standard-basic\"\n style={{ width: '40px' }}\n label=\"Max\"\n defaultValue={cart.maxRange}\n variant=\"standard\"\n type=\"number\"\n onChange={(e) => handleEditInCart(e.target.value, 'maxRange', index)}\n error={\n Number(cart.minRange) > Number(cart.maxRange) || Number(cart.maxRange) < 0\n }\n helperText={\n Number(cart.minRange) > Number(cart.maxRange) || Number(cart.minRange) < 0\n ? 'Incorrect Range'\n : null\n }\n />\n </div>\n </div>\n <div className=\"foil_add_modal_common_dropdown_div_clear\">\n <FormControl className=\"modal_type\" style={{ maxWidth: '260px' }}>\n <TextField\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n defaultValue={\n props?.aligner.find((align) => align.id === Number(cart.aligner))?.name\n }\n label=\"Aligner Type\"\n disabled\n onChange={(e) => handleEditInCart(e.target.value, 'aligner', index)}\n />\n </FormControl>\n <FormControl className=\"modal_type\" style={{ maxWidth: '260px' }}>\n <TextField\n labelId=\"demo-simple-select-label\"\n defaultValue={props?.brand.find((bran) => bran.id === Number(cart.foil))?.name}\n label=\"Aligner Type\"\n disabled\n onChange={(e) => handleEditInCart(e.target.value, 'foil', index)}\n />\n </FormControl>\n <Button variant=\"contained\" onClick={() => deleteInCart(index)} color=\"error\">\n <DeleteOutlineIcon />\n </Button>\n </div>\n </div>\n ))}\n </div>\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '15px' }}>\n {rerenderedCart.length === 0 ? (\n <Button\n variant=\"contained\"\n onClick={handlerSave}\n style={{ fontSize: '16px' }}\n color=\"error\"\n >\n Close\n </Button>\n ) : (\n <Button variant=\"contained\" onClick={handlerSave}>\n <SaveIcon /> Save and Continue\n </Button>\n )}\n </div>\n </div>\n );\n}\n","export function abbreviate(s) {\n if (!s.trim()) return '';\n return `${s?.slice(0, 10)} ${s?.length > 10 ? '...,' : ','}`;\n}\n","import { headers } from '../utils/headers';\nimport instance from '../AxiosInstance';\n\nexport const changePasswordServices = async (values) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/change-password`, {\n method: 'POST',\n headers,\n data: JSON.stringify({\n old_password: values.cPassword?.trim(),\n new_password: values.newPassword?.trim(),\n new_password_confirmation: values.newPassword?.trim()\n })\n });\n return response;\n};\n\nexport const getDoctorAddressById = async (id) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/address/${id}/user`, {\n method: 'GET'\n });\n return response;\n};\n\nexport const getDoctorDetailsServices = async () => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/user-info`, {\n method: 'GET'\n });\n return response;\n};\n","import { headers } from '../utils/headers';\nimport instance from '../AxiosInstance';\n\nexport const getOrderDetailsById = async (id) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/order/${id}`, {\n method: 'GET'\n });\n return response;\n};\n\nexport const getPatientsListServices = async (term = '') => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/patient/list?term=${term}`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const updateOrderAddressByOrderIdServices = async (id, addid) => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/order/update/${id}/${addid}`,\n {\n method: 'PUT',\n headers,\n data: JSON.stringify({\n address_type: false\n })\n }\n );\n return response;\n};\n\nexport const shipToClinicServices = async (id, addressDr) => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/order/update/${id}/${addressDr[0].id}`,\n {\n method: 'PUT',\n headers,\n data: JSON.stringify({\n address_type: true\n })\n }\n );\n return response;\n};\n\nexport const downloadOrderInvoiceByIdServices = async (id, headers) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/order/invoice/${id}`, {\n headers\n });\n return response;\n};\n\nexport const getAddonsServices = async () => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/add-ons`, {\n method: 'GET'\n });\n return response;\n};\n\nexport const getOrdersListServices = async (\n rowsPerPageParam,\n pageParam,\n searchByName,\n orderStatusParam\n) => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/order?size=${rowsPerPageParam}&page=${pageParam}&term=${searchByName}&filter=${orderStatusParam}`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getPatientsOrdersListServices = async (patientId, rowsPerPage, page) => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/order/patient/${patientId}?size=${rowsPerPage}&page=${page}`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const razorPayOnlinePaymentServices = async (body) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/payment/razorpay`, {\n method: 'POST',\n headers,\n data: JSON.stringify(body)\n });\n return response;\n};\n\nexport const createOrderServices = async (body) => {\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/order`, {\n method: 'POST',\n headers,\n data: JSON.stringify(body)\n });\n return response;\n};\n\nexport const uploadOrderAttachment = async (fileName, type = 'file') => {\n const fileType = type.includes('image') ? 'image' : 'file';\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/media`, {\n method: 'POST',\n headers,\n data: JSON.stringify({\n type: fileType,\n file_name: fileName?.trim()\n })\n });\n return response;\n};\n","export function isUrl(s) {\n /* eslint-disable no-useless-escape */\n const regexp =\n /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/;\n return regexp.test(s);\n}\n","import React, { useState, useEffect, useMemo } from 'react';\nimport { debounce, filter } from 'lodash';\nimport '../styles/pages/OrderNow.css';\nimport AddCircleOutlineOutlinedIcon from '@mui/icons-material/AddCircleOutlineOutlined';\nimport AttachFileOutlinedIcon from '@mui/icons-material/AttachFileOutlined';\nimport CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';\nimport axios from 'axios';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport Modal from '@mui/material/Modal';\nimport TextField from '@mui/material/TextField';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport TableContainer from '@mui/material/TableContainer';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport Paper from '@mui/material/Paper';\nimport moment from 'moment';\nimport InputLabel from '@mui/material/InputLabel';\nimport Stack from '@mui/material/Stack';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport ListItemText from '@mui/material/ListItemText';\nimport TablePagination from '@mui/material/TablePagination';\nimport MenuItem from '@mui/material/MenuItem';\nimport FormControl from '@mui/material/FormControl';\nimport Select from '@mui/material/Select';\nimport swal from 'sweetalert';\nimport 'react-responsive-carousel/lib/styles/carousel.min.css';\nimport { UserListHead } from '../components/_dashboard/user';\nimport Scrollbar from '../components/Scrollbar';\nimport ThreeDModal from '../components/ThreeDModal';\nimport ClearAlignersModal from '../components/ClearAlignersModal';\nimport Page from '../components/Page';\nimport SearchNotFound from '../components/SearchNotFound';\nimport { abbreviate } from '../utils/abbreviator';\nimport { getDoctorAddressById, getDoctorDetailsServices } from '../services/profile.services';\nimport {\n getPatientsAddressByIdServices,\n getPatientsAttachmentByIdServices\n} from '../services/patients.services';\nimport {\n getAddonsTaxServices,\n getBrandsServices,\n getBrandsTaxServices,\n getModalTaxServices,\n getModelsServices,\n getShippingTax,\n getTrimsServices,\n getUserWiseBrandsServices,\n getUserWiseModelsServices,\n getProductsServices\n} from '../services/products.services';\nimport {\n createOrderServices,\n getAddonsServices,\n getPatientsListServices,\n getPatientsOrdersListServices,\n razorPayOnlinePaymentServices,\n uploadOrderAttachment\n} from '../services/orders.services';\nimport { isUrl } from '../utils/UrlValidator';\n// import AdvertisementModal from '../components/AdvertisementModal';\n\nconst TABLE_HEAD = [\n { id: 'ordereddate', label: 'Ordered On', alignRight: false },\n { id: 'delivereddate', label: 'Delivered On', alignRight: false },\n { id: 'amount', label: 'Total Amount', alignRight: false }\n];\nfunction descendingComparator(a, b, orderBy) {\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n}\n\nfunction getComparator(order, orderBy) {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n}\n\nfunction applySortFilter(array, comparator, query) {\n const stabilizedThis = array.map((el, index) => [el, index]);\n stabilizedThis.sort((a, b) => {\n const order = comparator(a[0], b[0]);\n if (order !== 0) return order;\n return a[1] - b[1];\n });\n if (query) {\n return filter(\n array,\n (_user) => _user.patient?.name.toLowerCase().indexOf(query.toLowerCase()) !== -1\n );\n }\n return stabilizedThis.map((el) => el[0]);\n}\n\nfunction loadScript(src) {\n return new Promise((resolve) => {\n const script = document.createElement('script');\n script.src = src;\n script.onload = () => {\n resolve(true);\n };\n script.onerror = () => {\n resolve(false);\n };\n document.body.appendChild(script);\n });\n}\n\nexport default function OrderNow() {\n const [page, setPage] = useState(0);\n const [pageCount, setPageCount] = useState(1);\n const [order, setOrder] = useState('asc');\n const [selected, setSelected] = useState([]);\n const [orderBy, setOrderBy] = useState('name');\n const [filterName] = useState('');\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const formdata = new FormData();\n const userData = JSON.parse(window.localStorage.getItem('userData'));\n const userId = JSON.parse(window.localStorage.getItem('userId'));\n const [inCart, setInCart] = useState([]);\n const [trim] = useState();\n const [address, setAddress] = useState([]);\n const [brands, setBrands] = useState([]);\n const [shippingCost, setShippingCost] = useState(0);\n const [trims, setTrims] = useState([]);\n const [ship2Clinic, setShip2Clinic] = useState(false);\n // const [openAdvertisement, setOpenAdvertisement] = useState(true);\n const [aligners] = useState([\n {\n id: 1,\n name: 'Template',\n slug: 'Template'\n },\n {\n id: 2,\n name: 'Aligner',\n slug: 'Aligner'\n },\n {\n id: 3,\n name: 'Retainer',\n slug: 'Retainer'\n }\n ]);\n const [models, setModels] = useState([]);\n const [patients, setPatients] = useState([]);\n const [addons, setAddons] = useState([]);\n const [patientsOrders, setPatientsOrders] = useState([]);\n const [productsListing, setProductsListing] = useState([]);\n const [spinner, setSpinner] = useState(false);\n const [spinnerHistory, setSpinnerHistory] = useState(false);\n const [attachmentFile, setAttachmentFile] = useState();\n const [attachmentFileType, setAttachmentFileType] = useState('file');\n const [orderDetails, setOrderDetails] = useState({\n patientId: '',\n addressId: '',\n productId: '',\n trim: '',\n files: '',\n instructions: '',\n attachmentId: '',\n driveLink: ''\n });\n const [orderErrors, setOrderErrors] = useState({\n patientId: false,\n addressId: false,\n trim: false,\n files: false,\n attachmentId: false,\n cart: false\n });\n\n const [addressList, setAddressList] = useState([]);\n const [addressAbbreviation, setAddressAbbreviation] = useState('');\n\n const addressWithoutAbbreviation = `${addressList[0]?.address_line_1}, ${addressList[0]?.address_line_2}, ${addressList[0]?.landmark}, ${addressList[0]?.state}, ${addressList[0]?.city}, ${addressList[0]?.pincode}`;\n\n useEffect(() => {\n const getPatientAddress = async () => {\n const addPatientAddress = await getDoctorAddressById(userId);\n const addressData = await addPatientAddress.data;\n setAddressList(addressData.data);\n setAddressAbbreviation(\n `${abbreviate(addressData.data[0]?.address_line_1)}${abbreviate(\n addressData.data[0]?.address_line_2\n )}${abbreviate(addressData.data[0]?.landmark)}${abbreviate(addressData.data[0]?.state)}${\n addressData.data[0]?.city\n }, ${addressData.data[0]?.pincode}`\n );\n };\n getPatientAddress();\n // eslint-disable-next-line\n }, []);\n\n const priceAndTax = (price, tax) => price * tax * 0.01;\n const TotalPrice = (price, tax, addon, addonTax) =>\n price * tax * 0.01 + addon * addonTax * 0.01 + addon + price;\n const TotalTax = (price, tax, addon, addonTax) =>\n priceAndTax(price, tax) + priceAndTax(addon, addonTax);\n\n const [addOnsCart, setAddOnsCart] = useState([]);\n\n const [priceOfCart, setPriceOfCart] = useState(0);\n useEffect(() => {\n const getAddress = async () => {\n const response = await getPatientsAddressByIdServices(orderDetails?.patientId);\n const data = await response.data;\n if (data?.meta?.code === 200) {\n setAddress(data.data);\n }\n };\n if (orderDetails.patientId) getAddress();\n }, [orderDetails.patientId]);\n\n useEffect(() => {\n const getBrands = async () => {\n const response = await getBrandsServices();\n if (response.status === 200) {\n const data = await response.data;\n setBrands(data.data);\n }\n };\n getBrands();\n\n const getBrandsUserWise = async () => {\n const response = await getUserWiseBrandsServices();\n if (response.status === 200) {\n const data = await response.data;\n setBrandsUserWise(data.data);\n }\n };\n getBrandsUserWise();\n const getModelsUserWise = async () => {\n const response = await getUserWiseModelsServices();\n if (response.status === 200) {\n const data = await response.data;\n setModelsUserWise(data.data);\n }\n };\n getModelsUserWise();\n const getTrims = async () => {\n const response = await getTrimsServices();\n if (response.status === 200) {\n const data = await response.data;\n setTrims(data.data);\n }\n };\n getTrims();\n const getProducts = async () => {\n const response = await getProductsServices();\n if (response.status === 200) {\n const data = await response.data;\n const prodArr = data.data.filter((obj) => obj.disable !== true);\n setProductsListing(prodArr);\n setOrderDetails({ ...orderDetails, productId: prodArr[0]?.name });\n }\n };\n getProducts();\n const getModels = async () => {\n const response = await getModelsServices();\n if (response.status === 200) {\n const data = await response.data;\n setModels(data.data);\n }\n };\n getModels();\n const getShip = async () => {\n const response = await getShippingTax();\n const data = await response.data;\n if (response.status === 200) setShippingCost(Number(data?.data?.value));\n };\n getShip();\n const getModelTax = async () => {\n const response = await getModalTaxServices();\n const data = await response.data;\n if (response.status === 200) setModelTax(data?.data?.value);\n };\n getModelTax();\n const getBrandTax = async () => {\n const response = await getBrandsTaxServices();\n const data = await response.data;\n if (response.status === 200) setBrandTax(data?.data?.value);\n };\n getBrandTax();\n\n const getAddOnsTax = async () => {\n const response = await getAddonsTaxServices();\n const data = await response.data;\n if (response.status === 200) setAddonTax(data?.data?.value);\n };\n getAddOnsTax();\n const getAddOns = async () => {\n const response = await getAddonsServices();\n const data = await response.data;\n if (response.status === 200) setAddons(data?.data);\n };\n getAddOns();\n const fetchPatients = async () => {\n const fetchPatiensArray = await getPatientsListServices();\n if (fetchPatiensArray.status === 200) {\n const data = await fetchPatiensArray.data;\n setPatients(data.data);\n }\n };\n fetchPatients();\n // eslint-disable-next-line\n }, []);\n const [brandsUserWise, setBrandsUserWise] = useState([]);\n const [modelsUserWise, setModelsUserWise] = useState([]);\n\n const [modelTax, setModelTax] = useState(0);\n const [brandTax, setBrandTax] = useState(0);\n const [addonTax, setAddonTax] = useState(0);\n const [tax, setTax] = useState(0);\n\n const findAlignerById = (id) => {\n if (Number(id) === 1) return 'Template';\n if (Number(id) === 2) return 'Aligner';\n return 'Retainer';\n };\n\n const [attachmentsList, setAttachmentsList] = useState([]);\n useEffect(() => {\n const fetchPatients = async () => {\n setSpinnerHistory(true);\n const fetchPatiensArray = await getPatientsOrdersListServices(\n orderDetails?.patientId,\n rowsPerPage,\n page\n );\n setSpinnerHistory(false);\n if (fetchPatiensArray.status === 200) {\n const data = await fetchPatiensArray.data;\n setPatientsOrders(data.data);\n setPageCount(data.meta.length);\n }\n };\n const getAttachments = async () => {\n const response = await getPatientsAttachmentByIdServices(orderDetails.patientId);\n const data = await response.data;\n if (response.status === 200) setAttachmentsList(data?.data);\n };\n if (orderDetails.patientId !== '') {\n getAttachments();\n fetchPatients();\n }\n // eslint-disable-next-line\n }, [orderDetails.patientId]);\n\n const modalStyle = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '90%',\n maxWidth: 1000,\n overflowY: 'scroll',\n bgcolor: 'background.paper',\n maxHeight: 600,\n borderRadius: '13px',\n marginTop: '20px',\n p: 4,\n padding: '10px'\n };\n\n const [open, setOpen] = React.useState(false);\n const handleOpen = () => setOpen(true);\n const handleClose = () => setOpen(false);\n useEffect(() => {\n setInCart([]);\n setPriceOfCart(0);\n }, [orderDetails.productId]);\n\n useEffect(() => {\n setOrderErrors({ ...orderErrors, cart: false });\n let sum = 0;\n for (let i = 0; i < inCart.length; i += 1) {\n if (orderDetails.productId === 'Clear Aligner') {\n let price = 0;\n for (let j = 0; j < brandsUserWise.length; j += 1) {\n if (brandsUserWise[j].productable_id === inCart[i].foil) {\n price =\n brandsUserWise[j].price *\n (Number(inCart[i].maxRange) - Number(inCart[i].minRange) + 1);\n inCart[i].price = price;\n }\n }\n sum += price;\n setTax(brandTax);\n } else {\n let price = 0;\n for (let j = 0; j < modelsUserWise.length; j += 1) {\n if (modelsUserWise[j].productable_id === inCart[i].foil) {\n price =\n modelsUserWise[j].price *\n (Number(inCart[i].maxRange) - Number(inCart[i].minRange) + 1);\n inCart[i].price = price;\n }\n }\n sum += price;\n setTax(modelTax);\n }\n }\n setPriceOfCart(sum);\n // eslint-disable-next-line\n }, [inCart]);\n\n const [personName, setPersonName] = useState([]);\n const [addonsPrice, setAddOnsPrice] = useState(0);\n const handleChange = (e, props) => {\n if (props === 'addons') {\n setPersonName(\n typeof e.target.value === 'number' ? e.target.value.split(',') : e.target.value\n );\n let price = 0;\n for (let i = 0; i < e.target.value.length; i += 1) {\n price += Number(addons.find((add) => add.id === e.target.value[i]).price);\n }\n setAddOnsPrice(price);\n setAddOnsCart(e.target.value);\n } else {\n setOrderDetails({ ...orderDetails, [props]: e.target.value });\n setOrderErrors({\n ...orderErrors,\n [props]: e.target.value === ''\n });\n }\n };\n\n const handleChangeId = (v) => {\n setOrderDetails({ ...orderDetails, patientId: v });\n setOrderErrors({\n ...orderErrors,\n patientId: v === ''\n });\n };\n\n useEffect(() => {\n setShip2Clinic(\n patients.find((patient) => patient.id === orderDetails.patientId)?.is_clinic_address\n );\n // eslint-disable-next-line\n }, [orderDetails.patientId]);\n\n const placeOrderHandler = async (e) => {\n e.preventDefault();\n const orderArray = [];\n if (\n orderDetails.productId &&\n inCart.length > 0 &&\n orderDetails.attachmentId &&\n orderDetails.patientId &&\n (orderDetails.addressId || ship2Clinic) &&\n (orderDetails.driveLink.trim().length !== 0 ? isUrl(orderDetails.driveLink) : true) &&\n (orderDetails.productId === 'Clear Aligner' ? orderDetails.trim : !orderDetails.trim)\n ) {\n setSpinner(true);\n if (orderDetails.productId === 'Clear Aligner') {\n inCart.forEach((cart) => {\n orderArray.push({\n min: cart.minRange,\n max: cart.maxRange,\n prefix: cart.prefix,\n brand_id: cart.foil,\n aligner_type_id: cart.aligner\n });\n });\n } else {\n inCart.forEach((cart) => {\n orderArray.push({\n min: Number(cart.minRange),\n max: Number(cart.maxRange),\n prefix: cart.prefix,\n model_type_id: cart.foil\n });\n });\n }\n const checkPaymentMethod = await getDoctorDetailsServices();\n let paymentMethod;\n if (checkPaymentMethod.data.meta.code === 200) paymentMethod = await checkPaymentMethod?.data;\n else {\n swal('Error', checkPaymentMethod?.data?.message, 'error');\n setSpinner(false);\n return;\n }\n if (paymentMethod?.data?.payment_method === '1' && !paymentMethod?.data?.is_blocked) {\n const res2 = await loadScript('https://checkout.razorpay.com/v1/checkout.js');\n if (!res2) {\n alert('Razorpay SDK failed to load. Are you online?');\n setSpinner(false);\n return;\n }\n const productID = orderDetails.productId === 'Clear Aligner' ? 2 : 1;\n const body = {\n product_id: productID,\n quantity: 1,\n amount: priceOfCart + addonsPrice,\n shipping_cost: shippingCost,\n tax: TotalTax(priceOfCart, tax, addonsPrice, addonTax),\n total_amount: TotalPrice(priceOfCart, tax, addonsPrice, addonTax) + Number(shippingCost),\n order_details: orderArray,\n addon: addOnsCart\n };\n const resp = await razorPayOnlinePaymentServices(body);\n\n const data = await resp.data;\n\n const options = {\n key: process.env.REACT_APP_RZRPAYKEY,\n currency: 'INR',\n amount: data?.data?.amount?.toString(),\n order_id: data?.data?.id,\n name: 'Quiteclear',\n description: 'Thank you for shopping with us.',\n handler: async (response) => {\n if (response.razorpay_payment_id) {\n let filePath = '';\n if (fileName) {\n const res = await uploadOrderAttachment(fileName, attachmentFileType);\n const resdata = await res.data;\n const { uploadURL } = resdata.data;\n filePath = resdata?.data?.filePath;\n formdata.append('file', attachmentFile);\n await axios.put(uploadURL, attachmentFile, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n });\n }\n setSpinner(true);\n\n const productID = orderDetails.productId === 'Clear Aligner' ? 2 : 1;\n const body = {\n product_id: productID,\n quantity: 1,\n amount: priceOfCart + addonsPrice,\n shipping_cost: shippingCost,\n tax: TotalTax(priceOfCart, tax, addonsPrice, addonTax),\n total_amount:\n TotalPrice(priceOfCart, tax, addonsPrice, addonTax) + Number(shippingCost),\n customer_id: Number(window.localStorage.getItem('userId')),\n address_id: ship2Clinic ? null : orderDetails.addressId,\n patient_id: orderDetails.patientId,\n drive_link: orderDetails.driveLink,\n instructions: orderDetails.instructions ? orderDetails.instructions : ' ',\n stl_attachment: orderDetails?.attachmentId,\n order_details: orderArray,\n file_attachment: filePath !== '' ? filePath : ' ',\n razorpay_order_id: data?.data?.id,\n add_ons: addOnsCart,\n ship_to_clinic: ship2Clinic\n };\n if (orderDetails.productId === 'Clear Aligner') {\n body.trim_id = orderDetails.trim;\n }\n createOrderServices(body).then((res) => {\n setSpinner(false);\n if (res.status === 201) {\n swal('Order Created', '', 'success');\n setTimeout(() => window.location.reload(), 1500);\n }\n });\n } else {\n setSpinner(false);\n swal(`Payment usuccessful`, 'Error occurred !', 'error');\n }\n },\n prefill: {\n name: userData.name,\n email: userData.email,\n phone: userData.mobile\n },\n notes: {\n eventName: 'Quiteclear',\n name: userData.name,\n email: userData.email,\n phone: userData.mobile\n }\n };\n const paymentObject = new window.Razorpay(options);\n paymentObject.open();\n setSpinner(false);\n } else if (!paymentMethod?.data?.is_blocked) {\n setSpinner(true);\n let filePath = '';\n if (fileName) {\n const res = await uploadOrderAttachment(fileName, attachmentFileType);\n const resdata = await res.data;\n const { uploadURL } = resdata.data;\n filePath = resdata?.data?.filePath;\n formdata.append('file', attachmentFile);\n await axios.put(uploadURL, attachmentFile, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n });\n }\n const productID = orderDetails.productId === 'Clear Aligner' ? 2 : 1;\n const body = {\n product_id: productID,\n quantity: 1,\n amount: priceOfCart + addonsPrice,\n shipping_cost: shippingCost,\n tax: TotalTax(priceOfCart, tax, addonsPrice, addonTax),\n total_amount: TotalPrice(priceOfCart, tax, addonsPrice, addonTax) + Number(shippingCost),\n customer_id: Number(window.localStorage.getItem('userId')),\n address_id: ship2Clinic ? null : orderDetails.addressId,\n patient_id: orderDetails.patientId,\n drive_link: orderDetails.driveLink,\n instructions: orderDetails.instructions ? orderDetails.instructions : ' ',\n file_attachment: filePath !== '' ? filePath : ' ',\n stl_attachment: orderDetails?.attachmentId,\n order_details: orderArray,\n add_ons: addOnsCart,\n ship_to_clinic: ship2Clinic\n };\n if (orderDetails?.productId === 'Clear Aligner') {\n body.trim_id = orderDetails.trim;\n }\n createOrderServices(body).then((res) => {\n setSpinner(false);\n if (res.status === 201) {\n swal('Order Created', '', 'success');\n setTimeout(() => window.location.reload(), 1500);\n }\n });\n } else {\n swal('Error', 'Your account has been suspended.', 'error');\n }\n } else {\n setOrderErrors({\n ...orderErrors,\n files: orderDetails.files.length === 0,\n patientId: orderDetails.patientId === '',\n addressId: orderDetails.addressId === '',\n trim: orderDetails.trim === '',\n attachmentId: orderDetails.attachmentId === '',\n cart: inCart.length === 0\n });\n }\n };\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const handleSelectAllClick = (event) => {\n if (event.target.checked) {\n const newSelecteds = patients.map((n) => n.name);\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n const handleChangePage = async (event, newPage) => {\n setPage(newPage);\n setSpinnerHistory(true);\n const fetchPatiensArray = await getPatientsOrdersListServices(\n orderDetails.patientId,\n rowsPerPage,\n newPage\n );\n\n setSpinnerHistory(false);\n if (fetchPatiensArray.status === 200) {\n const data = await fetchPatiensArray.data;\n setPatientsOrders(data.data);\n }\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - patientsOrders.length) : 0;\n\n const filteredUsers = applySortFilter(patientsOrders, getComparator(order, orderBy), filterName);\n\n const isUserNotFound = filteredUsers.length === 0;\n\n const openFileSeletor = () => {\n document.getElementById('file').click();\n };\n const [fileName, setFileName] = useState('');\n\n const changeHandler = async (event) => {\n const fetchPatiensArray = await getPatientsListServices(event.target.value);\n if (fetchPatiensArray.status === 200) {\n const data = await fetchPatiensArray.data;\n setPatients(data.data);\n }\n };\n\n const debouncedChangeHandler = useMemo(\n () => debounce(changeHandler, 600),\n // eslint-disable-next-line\n []\n );\n\n return (\n <Page title=\"Order Now | Quiteclear\">\n {/* <AdvertisementModal\n open={openAdvertisement}\n handleClose={() => setOpenAdvertisement(false)}\n /> */}\n <Container style={{ width: '100%', maxWidth: 1500 }}>\n <Typography variant=\"h4\" sx={{ mb: 5 }}>\n Order Now\n </Typography>\n <div className=\"orderSection\">\n <Modal\n open={open && orderDetails.productId === 'Clear Aligner'}\n onClose={handleClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n <Box sx={modalStyle}>\n <ClearAlignersModal\n setInCartItems={setInCart}\n handleClose={handleClose}\n inCartItems={inCart}\n aligner={aligners}\n brand={brands}\n />\n </Box>\n </Modal>\n <Modal\n open={open && orderDetails.productId === '3D Model'}\n onClose={handleClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n <Box sx={modalStyle}>\n <ThreeDModal\n setInCartItems={setInCart}\n handleClose={handleClose}\n inCartItems={inCart}\n model={models}\n />\n </Box>\n </Modal>\n <div className=\"orderForm\">\n <form encType=\"multipart/form-data\" action=\"\" onSubmit={placeOrderHandler}>\n <div className=\"orderFormInp\">\n <FormControl fullWidth>\n <Autocomplete\n id=\"country-select-demo\"\n options={patients}\n autoHighlight\n noOptionsText=\"No Patients Found.\"\n onChange={(e, v) => handleChangeId(v?.id || '')}\n getOptionLabel={(option) => [option.name, option.mobile]}\n renderOption={(props, option) => (\n <Box component=\"li\" {...props}>\n <div className=\"patients_dropdown_menu_item\">\n <span className=\"patients_dropdown_menu_item_name\">{option.name}</span>\n <span className=\"patients_dropdown_menu_item_phone\">{option.mobile}</span>\n </div>\n </Box>\n )}\n renderInput={(params) => (\n <TextField\n {...params}\n error={orderErrors.patientId}\n label=\"Choose a patient\"\n inputProps={{\n ...params.inputProps\n }}\n onChange={debouncedChangeHandler}\n />\n )}\n />\n {orderErrors.patientId ? (\n <FormHelperText style={{ color: 'red' }}>*Patient is required</FormHelperText>\n ) : null}\n </FormControl>\n </div>\n <div className=\"orderFormInp\">\n <FormControl fullWidth>\n <InputLabel id=\"demo-simple-select-label\">Choose Files </InputLabel>\n <Select\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n value={orderDetails.attachmentId}\n label=\"Choose Files \"\n error={orderErrors.attachmentId}\n onChange={(e) => handleChange(e, 'attachmentId')}\n MenuProps={{ style: { maxHeight: '300px' } }}\n >\n {attachmentsList?.map((attach) => (\n <MenuItem value={attach?.attachment_url} key={attach?.id}>\n {\n attach?.attachment_url?.split('/')[\n attach?.attachment_url?.split('/').length - 1\n ]\n }\n </MenuItem>\n ))}\n {attachmentsList?.length === 0 ? (\n <MenuItem disabled value=\"\">\n <em>No attachments found.</em>\n </MenuItem>\n ) : null}\n </Select>\n {orderErrors.attachmentId ? (\n <FormHelperText style={{ color: 'red' }}>*Files is required</FormHelperText>\n ) : null}\n </FormControl>\n </div>\n <div className=\"orderFormInp\">\n {ship2Clinic ? (\n <TextField\n title={addressWithoutAbbreviation}\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n value={addressAbbreviation}\n style={{ padding: '0%', margin: '0%', width: '100%' }}\n label=\"Choose Address\"\n color=\"primary\"\n autoComplete=\"off\"\n multiline=\"true\"\n disabled\n />\n ) : (\n <FormControl fullWidth>\n <InputLabel id=\"demo-simple-select-label\">Choose Address </InputLabel>\n <Select\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select-address\"\n label=\"Choose Address \"\n error={orderErrors.addressId}\n onChange={(e) => handleChange(e, 'addressId')}\n disabled={ship2Clinic}\n MenuProps={{ style: { maxHeight: '300px' } }}\n >\n {address?.map((addres) => (\n <MenuItem value={addres.id} key={addres.id}>\n {abbreviate(addres?.address_line_1)}\n {abbreviate(addres?.address_line_2)}\n {abbreviate(addres?.landmark)}\n {abbreviate(addres?.state)}\n {addres?.city} {addres?.pincode}\n </MenuItem>\n ))}\n {address.length === 0 ? (\n <MenuItem disabled value=\"\">\n <em>No address found.</em>\n </MenuItem>\n ) : null}\n </Select>\n {orderErrors.addressId ? (\n <FormHelperText style={{ color: 'red' }}>*Address is required</FormHelperText>\n ) : null}\n </FormControl>\n )}\n <div\n style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}\n >\n <FormControlLabel\n control={\n <Checkbox\n checked={ship2Clinic}\n onChange={() => {\n setShip2Clinic(!ship2Clinic);\n }}\n />\n }\n label=\"Ship to Clinic/Office\"\n />\n </div>\n </div>\n <div\n className=\"orderFormInp\"\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n justifyContent: 'space-between'\n }}\n >\n <FormControl fullWidth style={{ width: '80%' }}>\n <InputLabel id=\"demo-simple-select-label\">Choose Product</InputLabel>\n <Select\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n value={orderDetails.productId}\n label=\"Choose Product\"\n error={orderErrors.cart}\n onChange={(e) => handleChange(e, 'productId')}\n MenuProps={{ style: { maxHeight: '300px' } }}\n >\n {productsListing?.map((product) => (\n <MenuItem value={product?.name} key={product?.id} disabled={product.disable}>\n {product?.name}\n </MenuItem>\n ))}\n {productsListing?.length === 0 ? (\n <MenuItem disabled value=\"\">\n <em>No products found.</em>\n </MenuItem>\n ) : null}\n </Select>\n {orderErrors.cart ? (\n <FormHelperText style={{ color: 'red' }}>\n *Please add items in your cart.\n </FormHelperText>\n ) : null}\n </FormControl>\n <div className=\"orderFormInp\" style={{ marginTop: '0%' }}>\n {orderDetails.productId === '3D Models' ? (\n <Button variant=\"contained\" onClick={handleOpen}>\n <AddCircleOutlineOutlinedIcon />\n </Button>\n ) : (\n <Button variant=\"contained\" onClick={handleOpen}>\n <AddCircleOutlineOutlinedIcon />\n </Button>\n )}\n </div>\n </div>\n {orderDetails.productId === 'Clear Aligner' ? (\n <div className=\"orderFormInp\">\n <FormControl fullWidth>\n <InputLabel id=\"demo-simple-select-label\">Choose Trim</InputLabel>\n <Select\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n value={trim}\n error={orderErrors.trim}\n label=\"Choose Trim\"\n onChange={(e) => handleChange(e, 'trim')}\n MenuProps={{ style: { maxHeight: '300px' } }}\n >\n {trims?.map((align) => (\n <MenuItem key={align.id} value={align.id}>\n {align.name}\n </MenuItem>\n ))}\n </Select>\n {orderErrors.trim ? (\n <FormHelperText style={{ color: 'red' }}>*Trim is required</FormHelperText>\n ) : null}\n </FormControl>\n </div>\n ) : null}\n <div className=\"orderFormInp\">\n <FormControl fullWidth>\n <InputLabel id=\"demo-multiple-checkbox-label\">Choose Add-ons</InputLabel>\n <Select\n labelId=\"demo-multiple-checkbox-label\"\n id=\"demo-multiple-checkbox\"\n label=\"Choose Add-ons\"\n value={personName}\n MenuProps={{ style: { maxHeight: '300px' } }}\n multiple\n onChange={(e) => handleChange(e, 'addons')}\n input={<OutlinedInput label=\"Choose Add-ons\" />}\n renderValue={() => (\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.5 }}>\n {addOnsCart.map((value, index) => (\n <p key={index} style={{ color: '#000' }}>\n {addons.find((addon) => addon.id === value).name}{' '}\n </p>\n ))}\n </Box>\n )}\n >\n {addons.map((addon) => (\n <MenuItem\n key={addon.id}\n value={addon.id}\n style={{\n fontWeight: addOnsCart.find((add) => addon.id === add) ? '600' : '300',\n backgroundColor: addOnsCart.find((add) => addon.id === add)\n ? '#faf5e6'\n : '#fff'\n }}\n >\n <Checkbox checked={personName.indexOf(addon.id) > -1} />\n <ListItemText\n primary={addon.name}\n secondary={Number(addon.price).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </div>\n <div className=\"orderFormInp\" style={{ width: '100%' }}>\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%' }}\n value={orderDetails.instructions}\n onChange={(e) => handleChange(e, 'instructions')}\n label=\"Instructions\"\n color=\"primary\"\n autoComplete=\"off\"\n inputProps={{\n maxLength: 500\n }}\n multiline=\"true\"\n />\n <FormHelperText style={{ paddingLeft: '10px', color: '#7b6f00' }}>\n Include IPR Chart, priority etc. (Max Limit: 500 characters)\n </FormHelperText>\n </div>\n <div className=\"orderFormInp\" style={{ width: '100%' }}>\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%' }}\n value={orderDetails.driveLink}\n onChange={(e) => handleChange(e, 'driveLink')}\n label=\"Drive Link\"\n color=\"primary\"\n autoComplete=\"off\"\n error={orderDetails.driveLink.trim() ? !isUrl(orderDetails.driveLink) : false}\n helperText={\n orderDetails.driveLink.trim().length !== 0 &&\n !isUrl(orderDetails.driveLink) &&\n 'Invalid link.'\n }\n inputProps={{\n maxLength: 250\n }}\n multiline=\"true\"\n />\n </div>\n <div\n className=\"orderFormInp\"\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n justifyContent: 'space-between'\n }}\n >\n <input\n type=\"file\"\n style={{ display: 'none' }}\n name=\"file\"\n id=\"file\"\n className=\"file\"\n onChange={(e) => {\n setFileName(e.target.files[0].name);\n setAttachmentFile(e.target.files[0]);\n setAttachmentFileType(e.target.files[0].type);\n }}\n accept=\"application/pdf,.doc,.docs,.docx,.jpg,.jpeg,.png\"\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '80%' }}\n value={fileName}\n label=\"Attachment\"\n color=\"primary\"\n disabled\n autoComplete=\"off\"\n />\n <div className=\"orderFormInp\" style={{ marginTop: '0%' }}>\n {fileName === '' ? (\n <Button variant=\"contained\" onClick={openFileSeletor}>\n <AttachFileOutlinedIcon />\n </Button>\n ) : (\n <Button\n variant=\"contained\"\n onClick={() => {\n setFileName('');\n setAttachmentFileType('');\n setAttachmentFile();\n }}\n color=\"error\"\n >\n <CancelOutlinedIcon />\n </Button>\n )}\n </div>\n </div>\n </form>\n </div>\n <div className=\"cartScreenDiv\">\n <Card style={{ marginBottom: '20px' }}>\n <div\n className=\"order3dView_orderNow\"\n style={{\n padding: '10px',\n paddingLeft: '30px',\n paddingRight: '30px'\n }}\n >\n <h2>Your Cart</h2>\n <div style={{ minHeight: '150px' }}>\n {orderDetails.productId === 'Clear Aligner'\n ? inCart.map((cart, index) => (\n <ListItem\n key={index}\n component=\"div\"\n style={{\n boxShadow: '0 0 5px #ccc',\n margin: '10px 0 10px 0'\n }}\n disablePadding\n >\n <ListItemButton>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%'\n }}\n >\n <p>{`${index + 1}. ${findAlignerById(inCart[index]?.aligner)} - \n ${brands.find((brand) => inCart[index]?.foil === brand.id)?.name} - ${\n cart?.prefix\n } ${cart?.minRange}-\n ${cart?.maxRange}`}</p>\n <p style={{ color: '#d9c300', fontWeight: 'bold' }}>\n {(cart?.price ? cart?.price : 0).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </p>\n </div>\n </ListItemButton>\n </ListItem>\n ))\n : inCart.map((cart, index) => (\n <ListItem\n key={index}\n component=\"div\"\n style={{\n boxShadow: '0 0 5px #ccc',\n margin: '10px 0 10px 0'\n }}\n disablePadding\n >\n <ListItemButton>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%'\n }}\n >\n <p>{`${index + 1}. ${\n models.find((model) => inCart[index]?.foil === model.id)?.name\n } 3D Model - ${cart.prefix}\n ${cart.minRange}-${cart.maxRange}`}</p>\n <p style={{ color: '#d9c300', fontWeight: 'bold' }}>\n {(cart?.price ? cart?.price : 0).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </p>\n </div>\n </ListItemButton>\n </ListItem>\n ))}\n </div>\n </div>\n </Card>\n\n <TableContainer\n component={Paper}\n style={{\n border: '1px solid #d9c300',\n minHeight: '160px'\n }}\n >\n <Table sx={{ minWidth: 350 }} size=\"small\" aria-label=\"a dense table\">\n <TableBody>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n Subtotal\n </TableCell>\n <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n {priceOfCart.toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n Add-ons\n </TableCell>\n <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n {addonsPrice.toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n Shipping Cost\n </TableCell>\n <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n {shippingCost.toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n Tax\n </TableCell>\n <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n {TotalTax(priceOfCart, tax, addonsPrice, addonTax).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n <p style={{ fontWeight: '900' }}>Total</p>\n </TableCell>\n <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n <p style={{ fontWeight: '900' }}>\n {(\n TotalPrice(priceOfCart, tax, addonsPrice, addonTax) + Number(shippingCost)\n ).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </p>\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n <div className=\"FormBtn\">\n {spinner ? (\n <CircularProgress style={{ marginTop: '10px' }} />\n ) : (\n <Button\n variant=\"contained\"\n onClick={placeOrderHandler}\n style={{ width: '33%', height: '2.5rem' }}\n >\n Place Order\n </Button>\n )}\n </div>\n </div>\n </div>\n </Container>\n <Container style={{ width: '100%', maxWidth: 1500, marginTop: '55px' }}>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={5}>\n <Typography variant=\"h4\" gutterBottom>\n Previous Orders\n </Typography>\n </Stack>\n\n <Card>\n <Scrollbar>\n <TableContainer sx={{ minWidth: 800 }}>\n <Table>\n <UserListHead\n order={order}\n orderBy={orderBy}\n headLabel={TABLE_HEAD}\n rowCount={patientsOrders.length}\n numSelected={selected.length}\n onRequestSort={handleRequestSort}\n onSelectAllClick={handleSelectAllClick}\n />\n <TableBody>\n {filteredUsers.map((row) => {\n const { id, patient } = row;\n const isItemSelected = selected.indexOf(patient?.name) !== -1;\n\n return (\n <TableRow\n hover\n key={id}\n tabIndex={-1}\n onClick={() => {\n // navigate(`/dashboard/history/${row.id}`);\n window.open(\n `${window.location.origin}/dashboard/history/${row.id}`,\n '_blank',\n 'noopener,noreferrer'\n );\n }}\n role=\"checkbox\"\n selected={isItemSelected}\n aria-checked={isItemSelected}\n style={{ cursor: 'pointer' }}\n >\n <TableCell align=\"left\">\n {moment(row?.ordered_on).format('DD/MM/YYYY')}\n </TableCell>\n <TableCell align=\"left\">\n {row?.delivered_on\n ? moment(row?.delivered_on).format('DD/MM/YYYY')\n : '--'}\n </TableCell>\n <TableCell align=\"left\">\n {Number(row?.total_amount).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n </TableRow>\n );\n })}\n {emptyRows > 0 && (\n <TableRow style={{ height: 53 * emptyRows }}>\n <TableCell colSpan={6} />\n </TableRow>\n )}\n </TableBody>\n {isUserNotFound && (\n <TableBody>\n <TableRow>\n <TableCell align=\"center\" colSpan={6} sx={{ py: 3 }}>\n {spinnerHistory ? (\n <div style={{ width: '100%' }}>\n <CircularProgress style={{ textAlign: 'center' }} />\n </div>\n ) : (\n <SearchNotFound searchQuery={filterName} />\n )}\n </TableCell>\n </TableRow>\n </TableBody>\n )}\n </Table>\n </TableContainer>\n </Scrollbar>\n <TablePagination\n rowsPerPageOptions={[10]}\n component=\"div\"\n count={pageCount}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n />\n </Card>\n </Container>\n </Page>\n );\n}\n","import { debounce } from 'lodash';\nimport { useEffect, useMemo, useState } from 'react';\nimport moment from 'moment';\nimport { useNavigate } from 'react-router-dom';\nimport {\n Card,\n Table,\n Stack,\n TableRow,\n TableBody,\n TableCell,\n Container,\n Typography,\n TableContainer,\n TablePagination,\n CircularProgress\n} from '@mui/material';\nimport Page from '../../Page';\nimport Scrollbar from '../../Scrollbar';\nimport SearchNotFound from '../../SearchNotFound';\nimport { UserListHead, UserListToolbar } from '../user';\nimport instance from '../../../AxiosInstance';\n\nconst TABLE_HEAD = [\n { id: 'id', label: 'Order ID', alignRight: false },\n { id: 'patient', label: 'Patient Name', alignRight: false },\n { id: 'mobile', label: \"Patient's Phone Number\", alignRight: false },\n { id: 'ordereddate', label: 'Ordered On', alignRight: false },\n { id: 'delivereddate', label: 'Delivered On', alignRight: false },\n { id: 'amount', label: 'Total Amount', alignRight: false }\n];\n\nexport default function PendingOrders() {\n const [page, setPage] = useState(0);\n const [pageCount, setPageCount] = useState(1);\n const [order, setOrder] = useState('asc');\n const [selected, setSelected] = useState([]);\n const [orderBy, setOrderBy] = useState('name');\n const [filterName, setFilterName] = useState('');\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [patients, setPatients] = useState([]);\n const [spinner, setSpinner] = useState(false);\n\n const navigate = useNavigate();\n\n useEffect(() => {\n const search = async () => {\n setPatients([]);\n const searchByName = (\n filterName.includes('#') ? `%23${filterName.split('#')[1]}` : filterName\n ).toLowerCase();\n setSpinner(true);\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/dashboard/pending-orders-list?size=${rowsPerPage}&page=${page}&term=${searchByName}`,\n {\n method: 'GET'\n }\n );\n\n setSpinner(false);\n const data = await response.data;\n if (response.status === 200) {\n setPatients(data?.data);\n setPageCount(data?.meta?.length);\n }\n };\n search();\n // eslint-disable-next-line\n }, [filterName, rowsPerPage, page]);\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const handleSelectAllClick = (event) => {\n if (event.target.checked) {\n const newSelecteds = patients.map((n) => n.name);\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n\n const handleChangePage = async (event, newPage) => {\n setPage(newPage);\n setPatients([]);\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const changeHandler = (event) => {\n setPage(0);\n setFilterName(event.target.value);\n };\n\n const debouncedChangeHandler = useMemo(() => debounce(changeHandler, 600), []);\n\n const filteredUsers = patients;\n\n const isUserNotFound = filteredUsers.length === 0;\n\n return (\n <Page>\n <Container style={{ width: '100%', maxWidth: 1500 }}>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mt={5}>\n <Typography variant=\"h5\" gutterBottom>\n Pending Orders\n </Typography>\n </Stack>\n\n <Card>\n <UserListToolbar\n numSelected={selected.length}\n filterName={filterName}\n onFilterName={debouncedChangeHandler}\n name=\"Orders\"\n />\n\n <Scrollbar>\n <TableContainer sx={{ minWidth: 800 }}>\n <Table>\n <UserListHead\n order={order}\n orderBy={orderBy}\n headLabel={TABLE_HEAD}\n rowCount={patients.length}\n numSelected={selected.length}\n onRequestSort={handleRequestSort}\n onSelectAllClick={handleSelectAllClick}\n />\n <TableBody>\n {filteredUsers?.map((row) => {\n const { id, patient } = row;\n const isItemSelected = selected.indexOf(patient?.name) !== -1;\n\n return (\n <TableRow\n hover\n key={id}\n tabIndex={-1}\n onClick={() => {\n navigate(`/dashboard/history/${row.id}`);\n }}\n role=\"checkbox\"\n selected={isItemSelected}\n aria-checked={isItemSelected}\n style={{ cursor: 'pointer' }}\n >\n <TableCell>#QC{row?.id}</TableCell>\n <TableCell variant=\"subtitle2\" noWrap>\n {row?.patient?.name}\n </TableCell>\n <TableCell align=\"left\">{row?.patient?.mobile}</TableCell>\n <TableCell align=\"left\">\n {moment(row?.ordered_on).format('DD/MM/YYYY')}\n </TableCell>\n <TableCell align=\"left\">\n {row?.delivered_on\n ? moment(row?.delivered_on).format('DD/MM/YYYY')\n : '--'}\n </TableCell>\n <TableCell align=\"left\">\n {Number(row?.total_amount).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n {isUserNotFound && (\n <TableBody>\n <TableRow>\n <TableCell align=\"center\" colSpan={6} sx={{ py: 3 }}>\n {spinner ? (\n <div style={{ width: '100%' }}>\n <CircularProgress style={{ textAlign: 'center' }} />\n </div>\n ) : (\n <SearchNotFound searchQuery={filterName} />\n )}\n </TableCell>\n </TableRow>\n </TableBody>\n )}\n </Table>\n </TableContainer>\n </Scrollbar>\n <TablePagination\n rowsPerPageOptions={[10, 50, 100]}\n component=\"div\"\n count={pageCount}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage=\"Orders per page\"\n />\n </Card>\n </Container>\n </Page>\n );\n}\n","import { replace } from 'lodash';\nimport numeral from 'numeral';\n\n// ----------------------------------------------------------------------\n\nexport function fCurrency(number) {\n return numeral(number).format(Number.isInteger(number) ? '$0,0' : '$0,0.00');\n}\n\nexport function fPercent(number) {\n return numeral(number / 100).format('0.0%');\n}\n\nexport function fNumber(number) {\n return numeral(number).format();\n}\n\nexport function fShortenNumber(number) {\n return replace(numeral(number).format('0.00a'), '.00', '');\n}\n\nexport function fData(number) {\n return numeral(number).format('0.0 b');\n}\n\nexport function formatPhoneNumber(number) {\n const formattedNumber = `${number.slice(0, 3)} ${number.slice(3, 6)} ${number.slice(6, 10)}`;\n return formattedNumber;\n}\n","import { Icon } from '@iconify/react';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Card, Typography } from '@mui/material';\n// utils\nimport { fShortenNumber } from '../../../utils/formatNumber';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Card)(({ theme }) => ({\n boxShadow: 'none',\n textAlign: 'center',\n padding: theme.spacing(5, 0),\n color: theme.palette.secondary.darker,\n backgroundColor: theme.palette.secondary.lighter\n}));\n\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\n margin: 'auto',\n display: 'flex',\n borderRadius: '50%',\n alignItems: 'center',\n width: theme.spacing(8),\n height: theme.spacing(8),\n justifyContent: 'center',\n marginBottom: theme.spacing(3),\n color: theme.palette.secondary.dark,\n backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.secondary.dark, 0)} 0%, ${alpha(\n theme.palette.secondary.dark,\n 0.24\n )} 100%)`\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function AppItemOrders(props) {\n return (\n <RootStyle>\n <IconWrapperStyle>\n <Icon icon=\"gg:sand-clock\" width={24} height={24} />\n </IconWrapperStyle>\n <Typography variant=\"h3\">{fShortenNumber(props?.pending)}</Typography>\n <Typography variant=\"subtitle2\" sx={{ opacity: 0.72 }}>\n Pending Orders\n </Typography>\n </RootStyle>\n );\n}\n","import { Icon } from '@iconify/react';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Card, Typography } from '@mui/material';\n// utils\nimport { fShortenNumber } from '../../../utils/formatNumber';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Card)(({ theme }) => ({\n boxShadow: 'none',\n textAlign: 'center',\n padding: theme.spacing(5, 0),\n color: theme.palette.info.darker,\n backgroundColor: theme.palette.info.lighter\n}));\n\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\n margin: 'auto',\n display: 'flex',\n borderRadius: '50%',\n alignItems: 'center',\n width: theme.spacing(8),\n height: theme.spacing(8),\n justifyContent: 'center',\n marginBottom: theme.spacing(3),\n color: theme.palette.info.dark,\n backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.info.dark, 0)} 0%, ${alpha(\n theme.palette.info.dark,\n 0.24\n )} 100%)`\n}));\n\n// ----------------------------------------------------------------------\n\n// const TOTAL = 50;\n\nexport default function AppNewUsers(props) {\n return (\n <RootStyle>\n <IconWrapperStyle>\n <Icon icon=\"healthicons:inpatient\" width={24} height={24} />\n </IconWrapperStyle>\n <Typography variant=\"h3\">{fShortenNumber(props?.patients)}</Typography>\n <Typography variant=\"subtitle2\" sx={{ opacity: 0.72 }}>\n Total Patients\n </Typography>\n </RootStyle>\n );\n}\n","import { Icon } from '@iconify/react';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Card, Typography } from '@mui/material';\n// utils\nimport { fShortenNumber } from '../../../utils/formatNumber';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Card)(({ theme }) => ({\n boxShadow: 'none',\n textAlign: 'center',\n padding: theme.spacing(5, 0),\n color: theme.palette.success.darker,\n backgroundColor: theme.palette.success.lighter\n}));\n\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\n margin: 'auto',\n display: 'flex',\n borderRadius: '50%',\n alignItems: 'center',\n width: theme.spacing(8),\n height: theme.spacing(8),\n justifyContent: 'center',\n marginBottom: theme.spacing(3),\n color: theme.palette.success.dark,\n backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.success.dark, 0)} 0%, ${alpha(\n theme.palette.success.dark,\n 0.24\n )} 100%)`\n}));\n\n// ----------------------------------------------------------------------\n\n// const TOTAL = 200;\n\nexport default function AppWeeklySales(props) {\n return (\n <RootStyle>\n <IconWrapperStyle>\n <Icon icon=\"carbon:order-details\" width={24} height={24} />\n </IconWrapperStyle>\n <Typography variant=\"h3\">{fShortenNumber(props?.orders)}</Typography>\n <Typography variant=\"subtitle2\" sx={{ opacity: 0.72 }}>\n Total Orders\n </Typography>\n </RootStyle>\n );\n}\n","import instance from '../AxiosInstance';\n\nexport const getPendingOrdersServices = async () => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/dashboard/pending-orders`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getTotalOrdersServices = async () => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/dashboard/total-orders`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n\nexport const getTotalPatientsCountServices = async () => {\n const response = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/dashboard/total-patient`,\n {\n method: 'GET'\n }\n );\n return response;\n};\n","import Typography from '@mui/material/Typography';\nimport Container from '@mui/material/Container';\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport { useEffect, useState } from 'react';\nimport swal from 'sweetalert';\nimport PendingOrders from '../components/_dashboard/app/PendingOrders';\nimport Page from '../components/Page';\nimport { AppNewUsers, AppItemOrders, AppWeeklySales } from '../components/_dashboard/app';\nimport {\n getPendingOrdersServices,\n getTotalOrdersServices,\n getTotalPatientsCountServices\n} from '../services/dashboard.services';\n\nexport default function DashboardApp() {\n const [patients, setPatients] = useState(0);\n const [orders, setOrders] = useState(0);\n const [pending, setPending] = useState(0);\n\n useEffect(() => {\n const fetchPendingOrders = async () => {\n const res = await getPendingOrdersServices();\n const data = await res.data;\n if (res.status === 200) setPending(data?.data?.total_pending);\n else if (res.status === 203) {\n swal(data.message, 'Please login again', 'error');\n setTimeout(() => {\n window.localStorage.clear();\n window.location.reload();\n }, 3000);\n }\n };\n fetchPendingOrders();\n\n const fetchOrders = async () => {\n const res = await getTotalOrdersServices();\n const data = await res.data;\n setOrders(data.data.total_orders);\n };\n fetchOrders();\n\n const fetchPatients = async () => {\n const fetchPatient = await getTotalPatientsCountServices();\n const data = await fetchPatient.data;\n if (fetchPatient.status === 203) {\n swal(data.message, 'Please login again', 'error');\n setTimeout(() => {\n window.localStorage.clear();\n window.location.reload();\n }, 3000);\n }\n if (fetchPatient.status === 200) setPatients(data?.data?.total_patient);\n };\n fetchPatients();\n // eslint-disable-next-line\n }, []);\n return (\n <Page>\n <Container maxWidth=\"xl\">\n <Box sx={{ pb: 5 }}>\n <Typography variant=\"h4\">Hi, Welcome back</Typography>\n </Box>\n <Grid container spacing={3}>\n <Grid item xs={12} sm={6} md={4}>\n <AppWeeklySales orders={orders} />\n </Grid>\n <Grid item xs={12} sm={6} md={4}>\n <AppNewUsers patients={patients} />\n </Grid>\n <Grid item xs={12} sm={6} md={4}>\n <AppItemOrders pending={pending} />\n </Grid>\n <Grid item xs={12} sm={12} md={12}>\n <PendingOrders />\n </Grid>\n </Grid>\n </Container>\n </Page>\n );\n}\n","export const ORDER_STATUS = {\n OrderPlaced: 'Order Placed',\n InManufacturing: 'In Manufacturing',\n Ready_for_Dispatch: 'Ready for Dispatch',\n Dispatched: 'Dispatched',\n Delivered: 'Delivered',\n Cancelled: 'Cancelled'\n};\n\nexport const ORDER_STATUS_ARR = [\n 'Order Placed',\n 'In Manufacturing',\n 'Ready for Dispatch',\n 'Dispatched',\n 'Delivered',\n 'Cancelled'\n];\n","import { debounce } from 'lodash';\nimport { useEffect, useMemo, useState } from 'react';\nimport moment from 'moment';\nimport { sentenceCase } from 'change-case';\nimport { useNavigate } from 'react-router-dom';\nimport Button from '@mui/material/Button';\nimport { Icon } from '@iconify/react';\nimport Card from '@mui/material/Card';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport FormControl from '@mui/material/FormControl';\nimport Stack from '@mui/material/Stack';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TableContainer from '@mui/material/TableContainer';\nimport InputLabel from '@mui/material/InputLabel';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport Table from '@mui/material/Table';\nimport TableRow from '@mui/material/TableRow';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TablePagination from '@mui/material/TablePagination';\nimport Page from '../components/Page';\nimport Scrollbar from '../components/Scrollbar';\nimport SearchNotFound from '../components/SearchNotFound';\nimport { UserListHead, OrderListToolbar } from '../components/_dashboard/user';\nimport { ORDER_STATUS_ARR } from '../constants/OrdersStatus';\nimport Label from '../components/Label';\nimport { getOrdersListServices } from '../services/orders.services';\n\nconst TABLE_HEAD = [\n { id: 'id', label: 'Order ID', alignRight: false },\n { id: 'patient', label: 'Patient Name', alignRight: false },\n { id: 'mobile', label: \"Patient's Mobile Number\", alignRight: false },\n { id: 'ordereddate', label: 'Ordered On', alignRight: false },\n { id: 'delivereddate', label: 'Delivered On', alignRight: false },\n { id: 'amount', label: 'Total Amount', alignRight: false },\n { id: 'order status', label: 'Order Status', alignRight: false }\n];\n\nfunction getCorrectColor(id) {\n if (id === 'Order Placed') return 'info';\n if (id === 'In Manufacturing') return 'primary';\n if (id === 'Ready for Dispatch') return 'warning';\n if (id === 'Dispatched') return 'error';\n if (id === 'Cancelled') return 'error';\n return 'success';\n}\n\nexport default function OrderHistory() {\n const searchByNameParam =\n window.location.search?.split('&')[2]?.split('=')[1].replace(/%20/g, ' ') || '';\n const orderStatusParam =\n window.location.search?.split('&')[3]?.split('=')[1].replace(/%20/g, ' ') || '';\n const pageParam = Number(window.location.search?.split('&')[1]?.split('=')[1]) || 0;\n const rowsPerPageParam = Number(window.location.search?.split('&')[0]?.split('=')[1]) || 10;\n const [page, setPage] = useState(0);\n const [orderStatusId, setOrderStatusId] = useState('');\n const [pageCount, setPageCount] = useState(1);\n const [order, setOrder] = useState('asc');\n const [selected, setSelected] = useState([]);\n const [orderBy, setOrderBy] = useState('name');\n const filterParam =\n window.location.search?.split('&')[2]?.split('=')[1].replace(/%20/g, ' ') || '';\n const filterValue = (\n filterParam.includes('%23') ? `#${filterParam.split('%23')[1]}` : filterParam\n ).toLowerCase();\n const [filterName, setFilterName] = useState(filterValue);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [patients, setPatients] = useState([]);\n const [spinner, setSpinner] = useState(false);\n\n const navigate = useNavigate();\n\n useEffect(() => {\n const search = async () => {\n setSpinner(true);\n setPatients([]);\n setPage(pageParam);\n setOrderStatusId(orderStatusParam);\n setRowsPerPage(rowsPerPageParam);\n setFilterName(\n window.location.search?.split('&')[2]?.split('=')[1].replace(/%20/g, ' ') || ''\n );\n const searchByName = (\n searchByNameParam.includes('#')\n ? `%23${searchByNameParam.split('#')[1]}`\n : searchByNameParam\n ).toLowerCase();\n const response = await getOrdersListServices(\n rowsPerPageParam,\n pageParam,\n searchByName,\n orderStatusParam\n );\n setSpinner(false);\n const data = await response.data;\n setPatients(data.data);\n setPageCount(data.meta.length);\n };\n search();\n // eslint-disable-next-line\n }, [window.location.search]);\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const handleSelectAllClick = (event) => {\n if (event.target.checked) {\n const newSelecteds = patients.map((n) => n.name);\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n\n const fetchordersByStatus = async (value) => {\n setOrderStatusId(value);\n setSpinner(true);\n setPatients([]);\n setPageCount(0);\n navigate(`?rowsPerPage=${rowsPerPage}&page=0&search=${filterName}&filter=${value}`);\n };\n\n const handleChangePage = async (event, newPage) => {\n if (newPage < 0) return;\n setPage(newPage);\n setSpinner(true);\n setPatients([]);\n setPageCount(0);\n navigate(\n `?rowsPerPage=${rowsPerPage}&page=${newPage}&search=${filterName}&filter=${orderStatusId}`\n );\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n setSpinner(true);\n setPatients([]);\n setPageCount(0);\n navigate(\n `?rowsPerPage=${parseInt(\n event.target.value,\n 10\n )}&page=0&search=${filterName}&filter=${orderStatusId}`\n );\n };\n\n const changeHandler = (event) => {\n setPage(0);\n const { value } = event.target;\n const searchByName = (value.includes('#') ? `%23${value.split('#')[1]}` : value).toLowerCase();\n navigate(\n `?rowsPerPage=${\n Number(window.location.search?.split('&')[0]?.split('=')[1]) || 10\n }&page=0&search=${searchByName}&filter=${\n window.location.search?.split('&')[3]?.split('=')[1].replace(/%20/g, ' ') || ''\n }`\n );\n setFilterName(event.target.value);\n };\n\n const downloadCSV = async () => {\n const anchor = document.createElement('a');\n document.body.appendChild(anchor);\n const headers = new Headers();\n headers.append('Authorization', `Bearer ${window.localStorage.getItem('token')}`);\n fetch(`${process.env.REACT_APP_THIRDINREV_API}/excel`, { headers })\n .then((response) => response.blob())\n .then((blobby) => {\n const objectUrl = window.URL.createObjectURL(blobby);\n\n anchor.href = objectUrl;\n anchor.download = `orders.xlsx`;\n anchor.click();\n\n window.URL.revokeObjectURL(objectUrl);\n });\n };\n\n const debouncedChangeHandler = useMemo(\n () => debounce(changeHandler, 600),\n // eslint-disable-next-line\n []\n );\n\n const filteredUsers = patients;\n\n const isUserNotFound = filteredUsers.length === 0;\n\n return (\n <Page title=\"Order History | Quiteclear\">\n <Container style={{ width: '100%', maxWidth: 1500 }}>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={5}>\n <Typography variant=\"h4\" gutterBottom>\n Order History\n </Typography>\n <Button\n variant=\"contained\"\n onClick={downloadCSV}\n startIcon={<Icon icon=\"iwwa:file-csv\" />}\n >\n Download Excel\n </Button>\n </Stack>\n\n <Card>\n <OrderListToolbar\n numSelected={selected.length}\n filterName={filterName}\n onFilterName={debouncedChangeHandler}\n title=\"Orders\"\n >\n <div style={{ display: 'flex', flexDirection: 'flex-end', marginLeft: '15px' }}>\n <FormControl className=\"organizer_filter_select\">\n <InputLabel id=\"demo-simple-select-label\">Filter by Order Status</InputLabel>\n <Select\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n value={orderStatusId}\n label=\"Filter by Order Status\"\n onChange={(e) => fetchordersByStatus(e.target.value)}\n >\n {ORDER_STATUS_ARR?.map((status, index) => (\n <MenuItem key={index} value={status}>\n {status}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n {orderStatusId && (\n <Button\n onClick={() => {\n setOrderStatusId('');\n navigate(\n `?rowsPerPage=${rowsPerPage}&page=${page}&search=${filterName}&filter=`\n );\n }}\n >\n Clear\n </Button>\n )}\n </div>\n </OrderListToolbar>\n\n <Scrollbar>\n <TableContainer sx={{ minWidth: 800 }}>\n <Table>\n <UserListHead\n order={order}\n orderBy={orderBy}\n headLabel={TABLE_HEAD}\n rowCount={patients.length}\n numSelected={selected.length}\n onRequestSort={handleRequestSort}\n onSelectAllClick={handleSelectAllClick}\n />\n <TableBody>\n {filteredUsers.map((row) => {\n const { id, patient } = row;\n const isItemSelected = selected.indexOf(patient?.name) !== -1;\n\n return (\n <TableRow\n hover\n key={id}\n tabIndex={-1}\n onClick={() => {\n navigate(`/dashboard/history/${row.id}`);\n }}\n role=\"checkbox\"\n selected={isItemSelected}\n aria-checked={isItemSelected}\n style={{ cursor: 'pointer' }}\n >\n <TableCell>#QC{id}</TableCell>\n <TableCell>{patient?.name}</TableCell>\n <TableCell align=\"left\">{patient?.mobile}</TableCell>\n <TableCell align=\"left\">\n {moment(row?.ordered_on).format('DD/MM/YYYY')}\n </TableCell>\n <TableCell align=\"center\">\n {row?.delivered_on\n ? moment(row?.delivered_on).format('DD/MM/YYYY')\n : '--'}\n </TableCell>\n <TableCell align=\"left\">\n {Number(row?.total_amount).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n <TableCell align=\"left\">\n <Label variant=\"ghost\" color={getCorrectColor(row?.status)}>\n {sentenceCase(row?.status)}\n </Label>\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n {spinner && (\n <TableBody>\n <TableRow>\n <TableCell />\n <TableCell align=\"center\" colSpan={6} sx={{ py: 3 }}>\n <div style={{ width: '100%' }}>\n <CircularProgress style={{ textAlign: 'center' }} />\n </div>\n </TableCell>\n </TableRow>\n </TableBody>\n )}\n {!spinner && isUserNotFound && (\n <TableBody>\n <TableRow>\n <TableCell />\n <TableCell align=\"center\" colSpan={6} sx={{ py: 3 }}>\n <SearchNotFound title=\"No Orders Found.\" />\n </TableCell>\n </TableRow>\n </TableBody>\n )}\n </Table>\n </TableContainer>\n </Scrollbar>\n <TablePagination\n rowsPerPageOptions={[10, 50, 100]}\n component=\"div\"\n count={pageCount}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage=\"Orders per page\"\n />\n </Card>\n </Container>\n </Page>\n );\n}\n","import React from 'react';\nimport Card from '@mui/material/Card';\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport FormControl from '@mui/material/FormControl';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport InputLabel from '@mui/material/InputLabel';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport LocalShippingOutlinedIcon from '@mui/icons-material/LocalShippingOutlined';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport StyledSnackbar from './StyledSnackbar';\nimport { isUrl } from '../utils/UrlValidator';\n\nexport const TrackingDetails = ({ data }) => {\n const [open, setOpen] = React.useState(false);\n const [snackbarData, setSnackBarData] = React.useState({\n xPos: 'center',\n yPos: 'bottom',\n title: '',\n status: 'success'\n });\n const handleClick = () => {\n setOpen(true);\n };\n\n const handleClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n\n setOpen(false);\n };\n\n const copyCall = () => {\n navigator.clipboard.writeText(trackingDetails);\n setSnackBarData({\n xPos: 'center',\n yPos: 'bottom',\n title: 'Copied to clipboard',\n status: 'success'\n });\n handleClick();\n };\n\n const [trackingDetails, setTrackingDetails] = React.useState(data);\n\n return (\n <Grid item xs={12} sm={6} md={12}>\n <Card\n style={{\n padding: '15px',\n marginTop: '25px',\n display: 'flex',\n flexDirection: 'column',\n justifyItems: 'center',\n paddingBottom: '35px'\n }}\n >\n <p\n style={{\n fontSize: '18px',\n fontWeight: '900',\n paddingLeft: '15px',\n marginBottom: '15px'\n }}\n >\n Tracking Details\n </p>\n\n <Box component=\"form\" autoComplete=\"off\">\n <FormControl style={{ width: '100%' }} variant=\"outlined\">\n <InputLabel htmlFor=\"outlined-adornment-password\">Tracking Details</InputLabel>\n <OutlinedInput\n id=\"outlined-adornment-password\"\n type=\"text\"\n value={trackingDetails}\n title={trackingDetails}\n style={{ width: '100%' }}\n disabled=\"true\"\n onChange={(e) => setTrackingDetails(e.target.value)}\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton aria-label=\"toggle password visibility\" onClick={copyCall} edge=\"end\">\n {trackingDetails && <ContentCopyIcon />}\n </IconButton>\n </InputAdornment>\n }\n label=\"Tracking Details\"\n />\n </FormControl>\n <div style={{ width: '100%', display: 'flex', justifyContent: 'space-evenly' }}>\n {isUrl(trackingDetails) && (\n <Button\n variant=\"contained\"\n onClick={() => window.open(trackingDetails)}\n style={{ margin: 'auto', marginTop: '25px', maxWidth: 'max-content' }}\n >\n Track Now <LocalShippingOutlinedIcon style={{ marginLeft: '5px' }} />\n </Button>\n )}\n </div>\n </Box>\n </Card>\n <StyledSnackbar\n xPos={snackbarData.xPos}\n yPos={snackbarData.yPos}\n title={snackbarData.title}\n status={snackbarData.status}\n open={open}\n onClose={handleClose}\n />\n </Grid>\n );\n};\n","import * as React from 'react';\nimport Box from '@mui/material/Box';\nimport Stepper from '@mui/material/Stepper';\nimport Step from '@mui/material/Step';\nimport StepLabel from '@mui/material/StepLabel';\nimport { EmojiEmotions, Factory, LocalShipping } from '@mui/icons-material';\nimport DisabledByDefaultIcon from '@mui/icons-material/DisabledByDefault';\nimport InventoryIcon from '@mui/icons-material/Inventory';\n\nexport const HorizontalLinearStepper = (props) => (\n <Box sx={{ width: '100%' }}>\n <Stepper activeStep={props.active} orientation=\"vertical\">\n <Step\n sx={{\n '& .MuiStepLabel-root .Mui-completed': {\n color: 'secondary.dark' // circle color (COMPLETED)\n },\n '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel': {\n color: 'grey.500' // Just text label (COMPLETED)\n },\n '& .MuiStepLabel-root .Mui-active': {\n color: 'secondary.dark' // circle color (ACTIVE)\n },\n '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel': {\n color: 'common.white' // Just text label (ACTIVE)\n },\n '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {\n fill: 'common.white' // circle's number (ACTIVE)\n }\n }}\n >\n <StepLabel>Order Placed</StepLabel>\n </Step>\n {props?.cancelled && props.active === 0.5 && (\n <Step\n sx={{\n '& .MuiStepLabel-label': {\n color: 'red' // Just text label (ACTIVE)\n }\n }}\n >\n <StepLabel icon={<DisabledByDefaultIcon style={{ color: 'red' }} />}>\n Order Cancelled\n </StepLabel>\n </Step>\n )}\n <Step\n sx={{\n '& .MuiStepLabel-root .Mui-completed': {\n color: '#7a0bc0' // circle color (COMPLETED)\n },\n '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel': {\n color: 'grey.500' // Just text label (COMPLETED)\n },\n '& .MuiStepLabel-root .Mui-active': {\n color: '#7a0bc0' // circle color (ACTIVE)\n },\n '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel': {\n color: 'common.white' // Just text label (ACTIVE)\n },\n '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {\n fill: 'black' // circle's number (ACTIVE)\n }\n }}\n >\n <StepLabel icon={<Factory style={{ color: props.active < 1 ? 'grey' : '#7a0bc0' }} />}>\n In Manufacturing\n </StepLabel>\n </Step>\n {props?.cancelled && props.active === 1.5 && (\n <Step\n sx={{\n '& .MuiStepLabel-label': {\n color: 'red' // Just text label (ACTIVE)\n }\n }}\n >\n <StepLabel icon={<DisabledByDefaultIcon style={{ color: 'red' }} />}>\n Order Cancelled\n </StepLabel>\n </Step>\n )}\n <Step\n sx={{\n '& .MuiStepLabel-root .Mui-completed': {\n color: '#ffb72b' // circle color (COMPLETED)\n },\n '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel': {\n color: 'grey.500' // Just text label (COMPLETED)\n },\n '& .MuiStepLabel-root .Mui-active': {\n color: 'secondary.main' // circle color (ACTIVE)\n },\n '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel': {\n color: 'common.white' // Just text label (ACTIVE)\n },\n '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {\n fill: 'black' // circle's number (ACTIVE)\n }\n }}\n >\n <StepLabel\n icon={<InventoryIcon style={{ color: props.active < 2 ? 'grey' : '#ffb72b' }} />}\n >\n Ready for Dispatch\n </StepLabel>\n </Step>\n <Step\n sx={{\n '& .MuiStepLabel-root .Mui-completed': {\n color: 'red' // circle color (COMPLETED)\n },\n '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel': {\n color: 'grey.500' // Just text label (COMPLETED)\n },\n '& .MuiStepLabel-root .Mui-active': {\n color: 'secondary.main' // circle color (ACTIVE)\n },\n '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel': {\n color: 'common.white' // Just text label (ACTIVE)\n },\n '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {\n fill: 'black' // circle's number (ACTIVE)\n }\n }}\n >\n <StepLabel icon={<LocalShipping style={{ color: props.active < 3 ? 'grey' : 'red' }} />}>\n Dispatched\n </StepLabel>\n </Step>\n <Step\n sx={{\n '& .MuiStepLabel-root .Mui-completed': {\n color: 'green' // circle color (COMPLETED)\n },\n '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel': {\n color: 'grey.500' // Just text label (COMPLETED)\n },\n '& .MuiStepLabel-root .Mui-active': {\n color: 'secondary.main' // circle color (ACTIVE)\n },\n '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel': {\n color: 'common.white' // Just text label (ACTIVE)\n },\n '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {\n fill: 'black' // circle's number (ACTIVE)\n }\n }}\n >\n <StepLabel icon={<EmojiEmotions style={{ color: props.active < 4 ? 'grey' : 'green' }} />}>\n Delivered\n </StepLabel>\n </Step>\n </Stepper>\n </Box>\n);\n","import React from 'react';\nimport Card from '@mui/material/Card';\nimport Grid from '@mui/material/Grid';\n\nexport const ReasonForCancellation = ({ data }) => (\n <Grid item xs={12} sm={6} md={12}>\n <Card\n style={{\n padding: '15px',\n marginTop: '25px',\n display: 'flex',\n flexDirection: 'column',\n justifyItems: 'center',\n paddingBottom: '35px'\n }}\n >\n <p\n style={{\n fontSize: '18px',\n fontWeight: '900',\n paddingLeft: '15px',\n marginBottom: '15px'\n }}\n >\n Reason for Cancellation\n </p>\n\n <p\n style={{\n textAlign: 'justify',\n fontSize: '0.875rem'\n }}\n >\n {data}\n </p>\n </Card>\n </Grid>\n);\n","import React, { useEffect, useState } from 'react';\nimport Grid from '@mui/material/Grid';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport FormControl from '@mui/material/FormControl';\nimport Stack from '@mui/material/Stack';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\nimport InputLabel from '@mui/material/InputLabel';\nimport TableContainer from '@mui/material/TableContainer';\nimport Paper from '@mui/material/Paper';\nimport Table from '@mui/material/Table';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport TableRow from '@mui/material/TableRow';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Modal from '@mui/material/Modal';\nimport TextField from '@mui/material/TextField';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport pdfMake from 'pdfmake/build/pdfmake.min';\nimport pdfFonts from 'pdfmake/build/vfs_fonts';\nimport { Close, Save } from '@mui/icons-material';\nimport ModeEditOutlineOutlinedIcon from '@mui/icons-material/ModeEditOutlineOutlined';\nimport { Icon } from '@iconify/react';\nimport { TrackingDetails } from '../components/TrackingDetails';\nimport { logo } from '../components/pdflogoBase64';\nimport { HorizontalLinearStepper } from '../components/Stepper';\nimport Page from '../components/Page';\nimport '../styles/pages/OrderNow.css';\nimport { formatPhoneNumber } from '../utils/formatNumber';\nimport { ReasonForCancellation } from '../components/CancelledOrder';\nimport {\n getOrderDetailsById,\n updateOrderAddressByOrderIdServices,\n shipToClinicServices,\n downloadOrderInvoiceByIdServices,\n getAddonsServices\n} from '../services/orders.services';\nimport { getPatientsAddressByIdServices } from '../services/patients.services';\nimport { getDoctorAddressById } from '../services/profile.services';\n\nexport default function OrderDetails() {\n const navigate = useNavigate();\n const { id } = useParams();\n const userId = window.localStorage.getItem('userId');\n const [orderDetails, setOrderDetails] = useState([]);\n const [spinner, setSpinner] = useState(false);\n const [saveSpinner, setSaveSpinner] = useState(false);\n const [edit, setEdit] = useState(false);\n const [error, setError] = useState(false);\n const [address, setAddress] = useState([]);\n const [addons, setAddons] = useState([]);\n const [ship2Clinic, setShip2Clinic] = useState(false);\n useEffect(() => {\n const fetchOrderById = async () => {\n setSpinner(true);\n const response = await getOrderDetailsById(id);\n const data = await response.data;\n if (data?.meta?.code === 200) {\n setOrderDetails(data.data);\n setShip2Clinic(data.data?.address_history?.address_type);\n } else if (response.status === 404 || response.status === 400) {\n navigate('/not-found', { state: { title: 'Sorry, Order not found!' } });\n }\n setSpinner(false);\n };\n fetchOrderById();\n // eslint-disable-next-line\n }, [id]);\n\n const updateOrderAddress = async (addid) => {\n if (addid && !ship2Clinic) {\n setError(false);\n setSaveSpinner(true);\n await updateOrderAddressByOrderIdServices(id, addid);\n window.location.reload();\n setSaveSpinner(false);\n setEdit(false);\n } else if (ship2Clinic) {\n setError(false);\n setSaveSpinner(true);\n await shipToClinicServices(id, addressDr);\n window.location.reload();\n setSaveSpinner(false);\n setEdit(false);\n } else {\n setError(true);\n }\n };\n\n const addressChangeHandler = (e) => {\n setError(false);\n setAddressID(e.target.value);\n };\n const addressCloseHandler = () => {\n setError(false);\n setEdit(false);\n };\n const [addressDr, setAddressDr] = useState([]);\n useEffect(() => {\n const fetchUserAddress = async () => {\n const response = await getPatientsAddressByIdServices(orderDetails?.patient?.id);\n const data = await response.data;\n setAddress(data.data);\n };\n if (orderDetails?.patient?.id !== undefined) fetchUserAddress();\n const fetchUserAddressDr = async () => {\n const response = await getDoctorAddressById(userId);\n const data = await response.data;\n setAddressDr(data.data);\n };\n fetchUserAddressDr();\n // eslint-disable-next-line\n }, [edit]);\n const [addressID, setAddressID] = useState(orderDetails?.address_history?.id);\n const printDocument = async () => {\n const headers = new Headers();\n headers.append('Authorization', `Bearer ${window.localStorage.getItem('token')}`);\n const response = await downloadOrderInvoiceByIdServices(id, headers);\n\n const { data } = response;\n const phone = data?.data?.admin?.find((item) => item.key === 'support_phone').value;\n const adminPhone = formatPhoneNumber(phone);\n const adminEmail = data.data.admin.find((item) => item.key === 'support_email').value;\n const adminWebsite = data.data.admin.find((item) => item.key === 'website').value;\n const orderData = data.data.order_details.map((details) => {\n if (details.model_type !== null) {\n return [\n {\n text: `Model - ${details.model_type.name} - ${details.prefix} - [${details.min} - ${details.max}]`,\n alignment: 'left'\n },\n { text: details.max - details.min + 1, alignment: 'right' },\n {\n text: Number(details.price)\n .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n ?.split('₹')[1],\n alignment: 'right'\n },\n {\n text: Number(details.price * (details.max - details.min + 1))\n .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n ?.split('₹')[1],\n alignment: 'right'\n }\n ];\n }\n return [\n {\n text: `${details.brand.name} - ${details.aligner_type.name} - ${details.prefix} - [${details.min} - ${details.max}]`,\n alignment: 'left'\n },\n { text: details.max - details.min + 1, alignment: 'right' },\n {\n text: Number(details.price)\n .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n ?.split('₹')[1],\n alignment: 'right'\n },\n {\n text: Number(details.price * (details.max - details.min + 1))\n .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n ?.split('₹')[1],\n alignment: 'right'\n }\n ];\n });\n\n let addonslist = ``;\n\n for (let i = 0; i < data.data.order_add_ons.length; i += 1) {\n if (i === data.data.order_add_ons.length - 1)\n addonslist += `${data.data.order_add_ons[i].add_on.name}`;\n else addonslist += `${data.data.order_add_ons[i].add_on.name}, `;\n }\n\n const documentDefinition = {\n content: [\n {\n style: 'header',\n alignment: 'center',\n text: 'Order Summary'\n },\n\n {\n style: 'logo',\n alignment: 'justify',\n columns: [\n {\n image: logo,\n height: 120,\n width: 120\n },\n {\n style: 'nameTable',\n table: {\n body: [\n ['Name', `: ${data.data.patient.name}`],\n ['Order Date', `: ${data.data.ordered_on}`],\n [\n 'Delivery Date',\n `: ${\n data.data.delivered_on === '-' ? ' -' : ` ${data.data.delivered_on}`\n }`\n ],\n ['Payment mode', `: ${data.data.invoice.payment_mode}`]\n ]\n },\n layout: 'noBorders'\n }\n ]\n },\n {\n style: 'tableBillTo',\n table: {\n widths: [70, 180],\n headerRows: 1,\n // keepWithHeaderRows: 1,\n body: [\n [{ text: 'Bill to', style: 'tableHeader', colSpan: 2, alignment: 'center' }, {}],\n ['Name', data.data.user.name],\n [\n 'Address',\n `${data.data.address_history.address_line_1}, ${\n data.data.address_history.address_line_2.trim()\n ? `${data.data.address_history.address_line_2.trim()}, `\n : ''\n } ${data.data.address_history.landmark}`\n ],\n ['City', data.data.address_history.pincode.city.name],\n ['Zipcode', data.data.address_history.pincode.pincode],\n ['State', data.data.address_history.pincode.city.state.name]\n ]\n }\n },\n {\n style: 'detailsTable',\n table: {\n widths: [270, 50, 80, 80],\n body: [\n [\n { text: 'Description', style: 'tableHeader', alignment: 'center' },\n { text: 'Unit', style: 'tableHeader', alignment: 'center' },\n { text: 'Base price [₹]', style: 'tableHeader', alignment: 'center' },\n { text: 'Amount [₹]', style: 'tableHeader', alignment: 'center' }\n ],\n ...orderData\n ]\n }\n },\n {\n style: 'addonsTable',\n table: {\n widths: [50, 360, 80],\n body: [\n [\n 'Add-on',\n addonslist,\n {\n text: Number(data.data.addons_total)\n .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n ?.split('₹')[1],\n alignment: 'right'\n }\n ]\n ]\n }\n },\n {\n columns: [\n {\n style: 'instructionsTable',\n table: {\n widths: [200],\n heights: ['auto', 50],\n body: [\n [{ text: 'Instructions', style: 'tableHeader', alignment: 'center' }],\n [data.data.instructions]\n ]\n }\n },\n {\n style: 'totalTable',\n table: {\n widths: [120, 80],\n body: [\n [\n 'Subtotal [₹]',\n {\n text: Number(data.data.amount)\n .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n ?.split('₹')[1],\n alignment: 'right'\n }\n ],\n [\n 'Shipping cost [₹]',\n {\n text: Number(data.data.shipping_cost)\n .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n ?.split('₹')[1],\n alignment: 'right'\n }\n ],\n [\n 'Taxes [₹]',\n {\n text: Number(data.data.tax)\n .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n ?.split('₹')[1],\n alignment: 'right'\n }\n ],\n [\n { text: 'Total [₹]', bold: true },\n {\n text: Number(data.data.total_amount)\n .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n ?.split('₹')[1],\n bold: true,\n alignment: 'right'\n }\n ]\n ]\n }\n }\n ]\n },\n {\n style: 'footer',\n alignment: 'center',\n text: `\\nThank You for your Order.\\nIf you have any query related to this order please feel free to contact.\\nPhone No. +91 ${adminPhone}, Email: ${adminEmail}, Website: ${adminWebsite}`\n }\n ],\n styles: {\n header: {\n fontSize: 18,\n bold: true,\n alignment: 'justify'\n },\n tableHeader: {\n bold: true,\n fontSize: 13,\n color: 'black'\n },\n logo: {\n margin: [20, 50, 0, 0]\n },\n nameTable: {\n margin: [110, 10, 0, 0]\n },\n tableBillTo: {\n margin: [250, 0, 0, 20]\n },\n addonsTable: {\n margin: [0, 20, 0, 0]\n },\n instructionsTable: {\n margin: [0, 20, 0, 0]\n },\n totalTable: {\n margin: [40, 20, 0, 0]\n },\n footer: {\n margin: [0, 20, 0, 0]\n }\n }\n };\n\n pdfMake.vfs = pdfFonts.pdfMake.vfs;\n pdfMake.createPdf(documentDefinition).download('Order Summary.pdf');\n };\n\n useEffect(() => {\n const getAddOns = async () => {\n const response = await getAddonsServices();\n const data = await response.data;\n if (response.status === 200) setAddons(data?.data);\n };\n getAddOns();\n }, []);\n\n const downloadInvoice = () => {\n // using s3 instead of cdn due to cache issue\n window.open(\n `${process.env.REACT_APP_S3_URL}/${orderDetails?.invoice_url}`,\n '_blank',\n 'noopener,noreferrer'\n );\n };\n\n const style = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '100%',\n maxWidth: 350,\n bgcolor: 'background.paper',\n borderRadius: 3,\n boxShadow: 10,\n border: 'none',\n outline: 'none',\n p: 4\n };\n\n return (\n <Page title=\"Order Details | Quiteclear\">\n <Modal\n open={edit}\n onClose={() => setEdit(false)}\n aria-labelledby=\"simple-modal-title\"\n aria-describedby=\"simple-modal-description\"\n >\n <Box sx={style}>\n <Button\n style={{\n position: 'absolute',\n top: '0',\n right: '0',\n display: 'flex',\n width: '10%',\n cursor: 'pointer',\n justifyContent: 'space-evenly'\n }}\n onClick={() => addressCloseHandler()}\n color=\"error\"\n >\n <Close color=\"error\" />\n </Button>\n <p\n style={{ fontWeight: '900', fontSize: '18px', minWidth: '220px', textAlign: 'center' }}\n >\n Change Delivery Address\n </p>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n marginTop: '20px'\n }}\n >\n {ship2Clinic ? (\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '99%', height: '56px' }}\n value=\"Shipping to Clinic/Office\"\n label=\"Choose Address\"\n color=\"primary\"\n autoComplete=\"off\"\n inputProps={{\n maxLength: 100\n }}\n multiline=\"true\"\n disabled\n />\n ) : (\n <FormControl style={{ width: '100%', padding: '0px' }}>\n <InputLabel id=\"demo-simple-select-label\">Choose Address </InputLabel>\n <Select\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n label=\"Choose Address \"\n error={error}\n disabled={ship2Clinic}\n defaultValue={addressID}\n inputProps={{\n maxLength: 100\n }}\n onChange={(e) => addressChangeHandler(e)}\n >\n {address?.map((addres) => (\n <MenuItem value={addres.id} key={addres.id}>\n {addres?.address_line_1?.slice(0, 5)}\n {addres?.address_line_1?.length > 10 ? '... ,' : ', '}\n {addres?.address_line_2?.slice(0, 5)}\n {addres?.address_line_2?.length > 1 ? '... ,' : ''}\n {addres?.landmark?.slice(0, 5)}\n {addres?.address_line_1?.length > 10 ? '...' : ', '}\n {addres.state?.slice(0, 5)}\n {addres?.state?.length > 10 ? '...' : ', '}\n {addres?.city}, {addres?.pincode}\n </MenuItem>\n ))}\n {address?.length === 0 ? (\n <MenuItem disabled value=\"\">\n <em>No address found.</em>\n </MenuItem>\n ) : null}\n </Select>\n {error ? (\n <FormHelperText style={{ color: 'red' }}>\n *Please select an address.\n </FormHelperText>\n ) : null}\n </FormControl>\n )}\n <FormControlLabel\n control={\n <Checkbox\n checked={ship2Clinic}\n onChange={() => {\n setShip2Clinic(!ship2Clinic);\n }}\n />\n }\n label=\"Ship to Clinic/Office\"\n />\n </div>\n {saveSpinner ? (\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n <CircularProgress />\n </div>\n ) : (\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n <Button\n variant=\"contained\"\n style={{\n display: 'flex',\n width: '40%',\n cursor: 'pointer',\n justifyContent: 'space-evenly',\n boxShadow: '0 0 2px #ccc',\n marginTop: '10px'\n }}\n onClick={() => updateOrderAddress(addressID)}\n >\n <Save style={{ color: '#fff' }} />\n <p>Save</p>\n </Button>\n </div>\n )}\n </Box>\n </Modal>\n <Container maxWidth=\"xl\">\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={5}>\n <Typography variant=\"h4\">Order Details : #QC{orderDetails?.id}</Typography>\n <div>\n {orderDetails?.invoice_url ? (\n <Button\n className=\"downloadButton\"\n variant=\"contained\"\n onClick={downloadInvoice}\n to=\"#\"\n startIcon={<Icon icon=\"akar-icons:cloud-download\" />}\n >\n Download Invoice\n </Button>\n ) : null}\n <Button\n variant=\"contained\"\n onClick={printDocument}\n to=\"#\"\n startIcon={<Icon icon=\"akar-icons:cloud-download\" />}\n >\n Order Summary\n </Button>\n </div>\n </Stack>\n <Grid container spacing={3}>\n <Grid item xs={12} md={12} lg={12}>\n <div>\n {spinner ? (\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <CircularProgress />\n </div>\n ) : (\n <Grid container spacing={3}>\n <Grid item xs={12} sm={6} md={8}>\n <Card style={{ padding: '15px' }}>\n <TableContainer component={Paper} style={{ marginBottom: '15px' }}>\n <Table sx={{ minWidth: 650 }} size=\"small\" aria-label=\"a dense table\">\n <TableBody>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell\n component=\"th\"\n scope=\"row\"\n style={{ fontWeight: '900', fontSize: '18px', minWidth: '220px' }}\n >\n Your Details\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Name\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {orderDetails?.user?.name}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Email\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {orderDetails?.user?.email}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Mobile Number\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {orderDetails?.user?.mobile}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Delivering Address\n </TableCell>\n\n <TableCell component=\"th\" scope=\"row\">\n <p>\n {orderDetails?.address_history?.address_line_1},\n {orderDetails?.address_history?.address_line_2}\n {orderDetails?.address_history?.address_line_2.trim()?.length > 0\n ? ' ,'\n : ''}\n {orderDetails?.address_history?.landmark},{' '}\n {orderDetails?.address_history?.pincode?.city?.state?.name},{' '}\n {orderDetails?.address_history?.pincode?.city?.name},{' '}\n {orderDetails?.address_history?.pincode?.pincode}\n </p>\n </TableCell>\n {orderDetails?.orders_histories?.id + 0.5 > 3 ||\n orderDetails.status === 'Cancelled' ? null : (\n <TableCell component=\"th\" scope=\"row\" onClick={() => setEdit(true)}>\n <ModeEditOutlineOutlinedIcon\n color=\"primary\"\n style={{ cursor: 'pointer' }}\n />\n </TableCell>\n )}\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell\n component=\"th\"\n scope=\"row\"\n style={{ fontWeight: '900', fontSize: '18px', minWidth: '220px' }}\n >\n Patient's Details\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Name\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {orderDetails?.patient?.name}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Mobile\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {orderDetails?.patient?.mobile}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell\n component=\"th\"\n scope=\"row\"\n style={{ fontWeight: '900', fontSize: '18px', minWidth: '220px' }}\n >\n Order Summary\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Product Name\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {orderDetails?.product?.name}\n </TableCell>\n </TableRow>\n {orderDetails?.trim?.name?.trim() ? (\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Trim\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {orderDetails?.trim?.name}\n </TableCell>\n </TableRow>\n ) : null}\n {orderDetails?.order_details?.map((od, index) => (\n <TableRow\n key={index}\n sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\n >\n <TableCell component=\"th\" scope=\"row\">\n Product {index + 1}\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {od?.prefix} - {od?.min} to {od?.max} - {od?.aligner_type?.name}{' '}\n {od?.brand?.name} {od?.model_type?.name}\n </TableCell>\n </TableRow>\n ))}\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Add-ons\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {orderDetails?.add_ons?.map((add) => (\n <p key={add}>\n {addons?.find((addon) => addon?.id === add)?.name}\n </p>\n ))}\n {orderDetails?.add_ons?.length === 0 ? <p>--</p> : null}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Instructions\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {orderDetails?.instructions?.trim() ? (\n <p style={{ wordBreak: 'break-word' }}>\n {orderDetails?.instructions}\n </p>\n ) : (\n <p>No instructions.</p>\n )}\n </TableCell>\n </TableRow>\n <TableRow\n sx={{\n '&:last-child td, &:last-child th': {\n border: 0\n }\n }}\n >\n <TableCell component=\"th\" scope=\"row\">\n Drive Link\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {orderDetails?.drive_link?.trim() ? (\n <a\n className=\"drive_link_href\"\n variant=\"contained\"\n href={orderDetails?.drive_link}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Click here <OpenInNewIcon />\n </a>\n ) : (\n <p>--</p>\n )}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell\n component=\"th\"\n scope=\"row\"\n style={{ fontWeight: '900', fontSize: '18px', minWidth: '220px' }}\n >\n Price\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Subtotal & Add-ons\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {Number(orderDetails?.amount).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Tax\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {Number(orderDetails?.tax).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Shipping Cost\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {Number(orderDetails?.shipping_cost).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n </TableRow>\n <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n <TableCell component=\"th\" scope=\"row\">\n Total Amount\n </TableCell>\n <TableCell component=\"th\" scope=\"row\">\n {Number(orderDetails?.total_amount).toLocaleString('en-IN', {\n style: 'currency',\n currency: 'INR'\n })}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </Card>\n </Grid>\n <Grid item xs={12} sm={6} md={4}>\n <Card style={{ padding: '15px' }}>\n <p style={{ fontSize: '18px', fontWeight: '900', paddingLeft: '15px' }}>\n Order Status\n </p>\n <HorizontalLinearStepper\n active={orderDetails?.orders_histories?.id + 0.5}\n cancelled={orderDetails?.status === 'Cancelled'}\n />\n </Card>\n {orderDetails.status === 'Cancelled' && (\n <ReasonForCancellation data={orderDetails?.reason} />\n )}\n <TrackingDetails data={orderDetails?.tracking_info} />\n </Grid>\n </Grid>\n )}\n </div>\n </Grid>\n </Grid>\n </Container>\n </Page>\n );\n}\n","export const logo = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAOxAAADsQBlSsOGwAABF9pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0nYWRvYmU6bnM6bWV0YS8nPgo8cmRmOlJERiB4bWxuczpyZGY9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMnPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6QXR0cmliPSdodHRwOi8vbnMuYXR0cmlidXRpb24uY29tL2Fkcy8xLjAvJz4KICA8QXR0cmliOkFkcz4KICAgPHJkZjpTZXE+CiAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9J1Jlc291cmNlJz4KICAgICA8QXR0cmliOkNyZWF0ZWQ+MjAyMi0wMy0zMDwvQXR0cmliOkNyZWF0ZWQ+CiAgICAgPEF0dHJpYjpFeHRJZD42N2E0NjE1ZC0wZTZiLTRkNTUtOTc3YS1lMjQzZGZjZWI4ZGE8L0F0dHJpYjpFeHRJZD4KICAgICA8QXR0cmliOkZiSWQ+NTI1MjY1OTE0MTc5NTgwPC9BdHRyaWI6RmJJZD4KICAgICA8QXR0cmliOlRvdWNoVHlwZT4yPC9BdHRyaWI6VG91Y2hUeXBlPgogICAgPC9yZGY6bGk+CiAgIDwvcmRmOlNlcT4KICA8L0F0dHJpYjpBZHM+CiA8L3JkZjpEZXNjcmlwdGlvbj4KCiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0nJwogIHhtbG5zOmRjPSdodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyc+CiAgPGRjOnRpdGxlPgogICA8cmRmOkFsdD4KICAgIDxyZGY6bGkgeG1sOmxhbmc9J3gtZGVmYXVsdCc+cWM8L3JkZjpsaT4KICAgPC9yZGY6QWx0PgogIDwvZGM6dGl0bGU+CiA8L3JkZjpEZXNjcmlwdGlvbj4KCiA8cmRmOkRlc2NyaXB0aW9uIHJk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uxYA0LBhQ0yePBk7d+7EmTNnkJqaihMnTmDFihV45plnUKVKFeTl5eGvf/0runfvfs/yV9PBgwexbt062O32cj9nwoQJGD58OJYuXerGZKQXubm5WLx4MS5evCg7CumBIFLYDz/8IEwmkwAgAgMDxaxZs4TVai31OVevXhXPPvusACAAiPr164v09HSVEt/p1KlTzixz5swp9/MaNWokAIh33nnHjenkOXDggPPP5dSpU7LjaN6oUaMEAFG7dm1hs9lkxyGN4xE6Kernn3/GmDFjYLfbUbt2bcTFxeHll1+G2Vz65Ro1a9bE/PnzMXfuXJjNZpw7dw7Dhg2D1WpVKfntCgsLnb/Pz8+XkoH0r6CgAABQVFRUoTNBRHfDi+JIUc8//zxyc3MRHByM2NhYNGvWrMLPLykpwfjx47F79258+eWXePXVV92U9t5at26NDRs2IDU1FaNHj1Z9PnmH2bNno1u3bujZsyd8fHxkxyGN4xE6KWbVqlU4cOAAgJvfqCpa5re8/PLLGD58OABgypQpuHHjhmIZK6Jv37744x//CF9fXynzSf8iIiLw2muvITo6WnYU0gEWOinmq6++AgDExMRg5MiRLq01depUWCwWZGRkYPny5UrE0wyHw4HExERs374d+/btU/QCwby8PCQnJyM9PV2xNSuisLAQP/30E7Zu3YrDhw8jLy9PkXVLSkpw9uxZJCQkuOVry8jIwIULFxRf11UZGRmIj4/Htm3bcOLECdhsNtmRSCbZL+KTPly/fl2YzeYKX0RWmscee0wAEH379i31cUePHhVRUVEiKipKnDlzptTHtmjRQkRFRYl58+aV+rj8/Hznmhs2bLjn49555x3n46KiopwXAwYFBd32/yckJJQ6TwghsrKyxJtvvimqV6/uvPAMgDAYDOLhhx8Wq1evLnONu7Hb7WLhwoWiffv2wmAwONetUaOGGDlypPjll1/KvVZlL4o7ffq0GDFihPD397/ta/P19RWDBg0SR48ercyXJi5cuCDGjh0rgoODb1u3TZs2YtGiRUIIIS5evOj8e9i/f3+ZazZs2FBERUWJRYsWiYsXL4ru3bs71x0xYkSlct7Lhx9+KKKiosSjjz5aoedt2bJFdO7cWRiNxtu+7qpVq4rx48eLtLQ0RXOSNrDQSRGbNm1yflO5cOGCImt++umnzivlS1ORkgkP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r1/f+ftLly7d83GVeR3V3YYNGwYASE5OxoIFC0p9rNVqxbJly7B48WLn9QX3cuvsiBCizJvb5Ofno0OHDqhfvz569OgBIUQFvoK7s1gszjMO33//PU6ePFnq41NTU7F48WIsXrzY+Rr5vdy6qj0uLg6rVq0q9bHnzp3DZ599VoHknikmJgZ169YFALz++utl3t9g+fLl2Lp1KwA474tAXkDiW+ZIpxYvXuzcYjQ0NFQsXLhQ2O32Up+TlZUl/vznPzvfZxsZGSkuXbpU7pkRERECgHj22Wfv+vlp06bd9n5kT3ofepMmTQQAYbFY7jnrv3d8++6778pc+/fvW//b3/5217+DGzduiP79+zsfN3v27FLXrOz70KOiosTPP/9818cdO3ZM1K5d2/le/NOnT5e6bklJiWjevLlz34N7vW/94sWLIiYmptLvQ//666/LfOx/i42NFTNnzhTXrl0r1+Mr8j70hQsXOr+Onj17iqtXr971cRs2bBBVq1YVAEStWrVEXl5ehb4G0i4WOrnFihUrREBAgPMbUHR0tPjHP/4h4uPjxeXLl0VOTo44e/as2Lhxoxg/frwIDQ11PjYmJkacP3++QvP+/ve/Ozcmee+998SpU6fE6dOnxfLly8WIESMEcHOf61t7iXtKoQshxIkTJ27bi+Fg43wAAAUASURBVLxv375i6dKlIiEhQRw5ckR89tlnon79+rdtZ1oe165dE3Xq1HE+r2PHjmLevHni8OHD4tChQ+KTTz4RdevWdX5+wIABwuFwlLpmRbd+/X0Jmc1m8corr4h169aJxMREsXfvXjF58mQRGBjofMyMGTPK9bXt3r37tnXfeustsXPnTnHt2jVx+PBh8dlnn4mwsDAB4Lav0Z2FPnv2bOecevXqlatIK7r16x//+EfnjPDwcPGPf/xDbNmyRRw/flwsWbJEjBkzxvl5f39/ceDAgQp9DaRtLHRym+PHj4uuXbuWue/07z9q1aolXnzxRRETEyPCw8OdH9OnTy91VkFBwR27gv3+w2KxiPXr13vcTnG3nD59WnTo0KHMP5/nn39eWK3Wcq97/vz5cv0dDBkyROTm5pa5XmX2ct+4caOIiooqdb7ZbBZz584t99clhBBz5sy54+Yk//0RExMjDh8+rEqhDx069LbZR44cKfM5FS10m80mXn311TL/PmvUqCH27t1bofykfXwNndymRYsW2LVrFzZu3IgnnniiXG+buXLlCr7++mscOnQIGRkZzo+CgoJSn+fv74/Dhw9jzJgxd+wM9vDDD2PPnj3o16+fS1+POzVp0gT/+c9/8Mknn+D++++/7XNGoxE9evTA1q1bMXfu3ArtfFanTh3s2LED//znP+96cWHz5s3x73//G6tWrXLbldB9+vTByZMnMWHCBERERNz2OT8/P4wdOxYnTpzA888/X6F1x40bh3379qFz5853XPQVFhaG999/H3v27CnXFeFKeOKJJ5wb+LRp06Zc7/+vKJPJhE8//RR79uxB7969b7sgFLj5Vrs333wTSUlJiu4rQNpgEEKBK2CIyqGkpATJyclITU1FXl4eoqKiULduXcW/4RYXFyMxMRE5OTlo0KAB6tSpo+j6arh27RpSU1NhMBjQuHFj+Pn5ubymzWbDTz/9hMuXLyMiIgJNmjRRfUtdIQQuXryI9PR0hIaGol69emXeZKY8Ll++jMTEROTn56NWrVp48MEHXdrytbKSkpKQkpKC7t27K/J3Vpb8/HycP38e+fn5qFGjBurUqcMr2r0YC52IiEgHeMqdiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQD/wcwyXULDmbbLwAAAABJRU5ErkJggg==`;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\n\nexport function UploadLoader(props) {\n return (\n <Box sx={{ position: 'relative', display: 'inline-flex' }}>\n <CircularProgress variant=\"determinate\" {...props} />\n <Box\n sx={{\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n <Typography variant=\"caption\" component=\"div\" color=\"text.secondary\">\n {`${Math.round(props.value)}%`}\n </Typography>\n </Box>\n </Box>\n );\n}\n\nUploadLoader.propTypes = {\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n * @default 0\n */\n value: PropTypes.number.isRequired\n};\n","import React, { useState, useEffect } from 'react';\nimport Button from '@mui/material/Button';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport swal from 'sweetalert';\nimport instance from '../AxiosInstance';\nimport { headers } from '../utils/headers';\n\nexport const EditAddressModal = (props) => {\n const [values, setValues] = useState({\n address1: props?.address?.address_line_1,\n address2: props?.address?.address_line_2,\n landmark: props?.address?.landmark,\n state: '',\n pincode: props?.address?.pincode,\n city: '',\n pincodeId: props?.address?.pincodeId\n });\n const [errors, setErrors] = useState({\n address1: false,\n address2: false,\n landmark: false,\n pincode: false\n });\n const [pincodes, setPincodes] = useState([]);\n const [spinner, setSpinner] = useState(false);\n useEffect(() => {\n const fetcher = async () => {\n const responseForPincode = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${values.pincode}`,\n {\n method: 'GET'\n }\n );\n const data = await responseForPincode.data;\n setValues({\n ...values,\n city: data?.data?.city?.name,\n state: data?.data?.city?.state?.name,\n pincodeId: data?.data?.id\n });\n };\n\n fetcher();\n // eslint-disable-next-line\n }, []);\n const [isOpen2, setIsOpen2] = useState(false);\n\n const addPatientHandler = async () => {\n if (\n values.pincode !== '' &&\n values.city !== '' &&\n values.state !== '' &&\n values.address1.length > 0 &&\n values.landmark.length > 0\n ) {\n setSpinner(true);\n const addAddressResp = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/address/${props.index}`,\n {\n method: 'PUT',\n headers,\n data: JSON.stringify({\n address_line_1: values.address1,\n address_line_2: values.address2.length > 0 ? values.address2 : ' ',\n landmark: values.landmark,\n pincode_id: Number(values.pincodeId)\n })\n }\n );\n\n setSpinner(false);\n if (addAddressResp.status === 201) {\n swal('Updated Successfully.', '', 'success');\n setValues({\n state: '',\n city: '',\n pincode: '',\n address1: '',\n address2: '',\n landmark: ''\n });\n props.handleClose();\n props.getAddressForced();\n } else {\n swal('Something went wrong.', '', 'error');\n }\n } else {\n setErrors({\n ...errors,\n address1: values.address1.length < 1,\n landmark: values.landmark.length < 1,\n city: values.city === '',\n pincode: values.pincode === '',\n state: values.state === ''\n });\n }\n };\n\n const handleChange = async (prop, v) => {\n if (prop === 'pincode') {\n setValues({ ...values, pincode: v });\n if (v?.length === 6) {\n setSpinner(true);\n const responseForPincode = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${v}`,\n {\n method: 'GET'\n }\n );\n const data = await responseForPincode.data;\n setValues({\n ...values,\n city: data.data.city.name,\n state: data.data.city.state.name,\n pincode: v,\n pincodeId: data.data.id\n });\n setSpinner(false);\n }\n } else setValues({ ...values, [prop]: v });\n\n if (prop === 'address1')\n setErrors({\n ...errors,\n address1: v.length < 1\n });\n if (prop === 'landmark')\n setErrors({\n ...errors,\n landmark: v.length < 1\n });\n if (prop === 'city')\n setErrors({\n ...errors,\n city: v === ''\n });\n if (prop === 'pincode')\n setErrors({\n ...errors,\n pincode: v === ''\n });\n if (prop === 'state')\n setErrors({\n ...errors,\n state: v === ''\n });\n };\n const fetchPincodes = async (e) => {\n if (e.target.value?.length === 3) {\n if (e.target.value?.length === 3) {\n const resp = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/pincodes?pincode=${e.target?.value}`,\n {\n method: 'GET'\n }\n );\n\n const pincodeData = await resp.data;\n pincodeData.data.forEach((pincode) => {\n setPincodes((currentArray) => [...currentArray, pincode.toString()]);\n });\n }\n }\n };\n return (\n <>\n <h1 style={{ textAlign: 'center' }}>Update Address</h1>\n <Box style={{ padding: '15px' }}>\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.address1}\n onChange={(e) => handleChange('address1', e.target.value)}\n label=\"Address 1\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.address1}\n helperText={errors.address1 ? 'Address 1 is required.' : null}\n inputProps={{\n maxLength: 100\n }}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.address2}\n onChange={(e) => handleChange('address2', e.target.value)}\n label=\"Address 2\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.address2}\n helperText={errors.address2 ? 'Address 2 is required.' : null}\n inputProps={{\n maxLength: 100\n }}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.landmark}\n onChange={(e) => handleChange('landmark', e.target.value)}\n label=\"Landmark\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.landmark}\n helperText={errors.landmark ? 'Landmark is required.' : null}\n inputProps={{\n maxLength: 100\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n marginTop: '15px'\n }}\n >\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n value={values.state}\n label=\"Choose State\"\n disabled=\"true\"\n style={{ width: '32%', marginTop: '5px', color: errors.state ? 'red' : null }}\n onChange={(e) => handleChange('state', e.target.value)}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n value={values.city}\n style={{ width: '32%', marginTop: '5px', color: errors.city ? 'red' : null }}\n label=\"Choose City\"\n disabled=\"true\"\n onChange={(e) => handleChange('city', e.target.value)}\n />\n\n <Autocomplete\n style={{ width: '32%', marginTop: '5px' }}\n id=\"combo-box-demo\"\n noOptionsText=\"No results found.\"\n open={isOpen2}\n onKeyPress={() => setIsOpen2(true)}\n onKeyDown={() => setIsOpen2(true)}\n onClose={() => setIsOpen2(false)}\n options={pincodes}\n value={values.pincode}\n onChange={(e, v) => handleChange('pincode', v)}\n renderInput={(params) => (\n <TextField\n {...params}\n color=\"primary\"\n label=\"Choose Pincode\"\n onChange={fetchPincodes}\n error={errors.pincode}\n helperText={errors.pincode ? 'Pincode is required.' : null}\n />\n )}\n />\n </div>\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '25px' }}>\n {spinner ? (\n <CircularProgress />\n ) : (\n <Button variant=\"contained\" style={{ marginTop: '15px' }} onClick={addPatientHandler}>\n Save changes\n </Button>\n )}\n </div>\n </Box>\n </>\n );\n};\n","import React, { useState } from 'react';\n// material\nimport Grid from '@mui/material/Grid';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport axios from 'axios';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport LinearProgress from '@mui/material/LinearProgress';\n\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport '../styles/pages/OrderNow.css';\nimport CloudUploadOutlinedIcon from '@mui/icons-material/CloudUploadOutlined';\nimport swal from 'sweetalert';\nimport '../styles/pages/ClientsDashboard.css';\nimport 'react-responsive-carousel/lib/styles/carousel.min.css';\nimport { Carousel } from 'react-responsive-carousel';\nimport JSZip from 'jszip';\nimport { StlViewer } from 'react-stl-viewer';\nimport { OBJModel } from 'react-3d-viewer';\nimport { useNavigate } from 'react-router-dom';\nimport Page from '../components/Page';\nimport { UploadLoader } from '../components/UploadLoader';\nimport { EditAddressModal } from '../components/EditAddressModal';\nimport {\n addPatientsServices,\n getAllPincodesServices,\n getPincodesDetailsServices,\n uploadPatientsFileServices\n} from '../services/patients.services';\n\nexport default function AddPatient() {\n const zip = new JSZip();\n const [errorMsg, setErrorMsg] = useState({\n phone: 'Mobile Number field is required.'\n });\n const navigate = useNavigate();\n\n const [files, setFiles] = useState([]);\n const [file, setFile] = useState('');\n const [idx, setIdx] = useState(0);\n const [progressUpload, setProgressUpload] = useState(0);\n const [progressUploadShow, setProgressUploadShow] = useState(false);\n const [obj, setObj] = useState(false);\n const [orderErrors, setOrderErrors] = useState({\n patientId: false,\n addressId: false,\n trim: false,\n files: false\n });\n const [volume] = useState(0);\n let stlWidth = window.innerWidth * 0.358 >= '300px' ? '300px' : window.innerWidth * 0.358;\n if (window.innerWidth <= 504) {\n stlWidth = window.innerWidth * 0.8;\n }\n const [src, setSrc] = useState('');\n const modalStyle = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '90%',\n maxWidth: 600,\n overflowY: 'scroll',\n bgcolor: 'background.paper',\n maxHeight: '100%',\n borderRadius: '13px',\n marginTop: '20px',\n p: 4,\n padding: '10px'\n };\n const [values, setValues] = useState({\n address1: '',\n address2: '',\n landmark: '',\n state: '',\n pincode: '',\n city: '',\n pincodeId: '',\n name: '',\n phone: ''\n });\n const [heroFiles, setHeroFiles] = useState([]);\n const [isOpen2, setIsOpen2] = useState(false);\n const [spinner, setSpinner] = useState(false);\n const [indexOfAddress] = useState();\n const [id] = useState();\n const [errors, setErrors] = useState({});\n\n const style = {\n top: 0,\n left: 0,\n width: stlWidth,\n height: '300px',\n maxWidth: '576px'\n };\n const [folderName, setFolderName] = useState('');\n const stlfileHandler = (e) => {\n try {\n setFilesError(false);\n if (!e.target.files[0]) return;\n setFolderName(e.target.files[0].webkitRelativePath.split('/')[0]);\n setOrderErrors({\n ...orderErrors,\n trim: false\n });\n setFile(e.target?.files[0]);\n setFiles([]);\n for (let i = 0; i < e.target.files.length; i += 1) {\n if (\n e.target.files.item(i).name.split('.')[1] === 'obj' ||\n e.target.files.item(i).name.split('.')[1] === 'OBJ'\n ) {\n setObj(true);\n } else if (\n e.target.files.item(i).name.split('.')[1] === 'STL' ||\n e.target.files.item(i).name.split('.')[1] === 'stl'\n ) {\n setObj(false);\n }\n\n if (\n e.target.files.item(i).name.split('.')[1] === 'obj' ||\n e.target.files.item(i).name.split('.')[1] === 'OBJ' ||\n e.target.files.item(i).name.split('.')[1] === 'STL' ||\n e.target.files.item(i).name.split('.')[1] === 'stl'\n ) {\n setFiles((currentArray) => [\n ...currentArray,\n {\n title: e.target.files.item(i).name,\n src: URL.createObjectURL(e.target?.files.item(i))\n }\n ]);\n setHeroFiles((currentArray) => [...currentArray, e.target?.files.item(i)]);\n }\n }\n\n if (e.target.files.item(0)) setSrc(URL.createObjectURL(e.target.files.item(0)));\n } catch (err) {\n console.log(err);\n }\n };\n\n const [pincodes, setPincodes] = useState([]);\n\n const handleChange = async (prop, v) => {\n if (prop === 'pincode') {\n setValues({ ...values, pincode: v });\n if (v?.length === 6) {\n const responseForPincode = await getPincodesDetailsServices(v);\n const data = await responseForPincode.data;\n setValues({\n ...values,\n city: data.data.city.name,\n state: data.data.city.state.name,\n pincode: v,\n pincodeId: data.data.id\n });\n }\n } else setValues({ ...values, [prop]: v });\n\n if (prop === 'phone') {\n setErrors({\n ...errors,\n phone: v?.length !== 10 && v > 0\n });\n if (v?.length > 0 && v?.length < 10 && v > 0)\n setErrorMsg({ ...errorMsg, phone: 'Invalid Mobile Number.' });\n }\n if (prop === 'name')\n setErrors({\n ...errors,\n name: v?.length < 1\n });\n };\n const [open, setOpen] = useState(false);\n const [filesError, setFilesError] = useState(false);\n\n const addPatientHandler = async () => {\n try {\n const formdata = new FormData();\n if (values.name !== '' && values?.phone?.length === 10 && folderName !== '') {\n setSpinner(true);\n for (let i = 0; i < heroFiles.length; i += 1) {\n zip.file(heroFiles[i].name, heroFiles[i]);\n }\n\n const progressElements = document?.querySelector('.zip-progress-text');\n zip\n .generateAsync({ type: 'blob', compression: 'DEFLATE' }, ({ currentFile, percent }) => {\n if (currentFile) {\n progressElements.innerHTML = `Zipping files: ${percent.toFixed(1)}%`;\n }\n })\n .then(async (content) => {\n progressElements.innerHTML = ``;\n formdata.append('file', content);\n const responseURL = await uploadPatientsFileServices(folderName);\n const data = await responseURL.data;\n\n const uploadURL = data?.data.uploadURL;\n const fileURL = data?.data?.filePath;\n const patientUuid = data?.data?.patient_uuid;\n\n setProgressUploadShow(true);\n const awsResponse = await axios.put(uploadURL, formdata, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n onUploadProgress: (progressEvent) => {\n const percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total\n );\n setProgressUpload(percentCompleted);\n }\n });\n setProgressUploadShow(false);\n if (awsResponse.status === 200 || awsResponse.status === 201) {\n setSpinner(false);\n console.log(file, volume, src);\n const body = {\n name: values.name,\n address_line_1: values.address1,\n address_line_2: values.address2.length > 0 ? values.address2 : ' ',\n landmark: values.landmark,\n pincode_id: values.pincodeId === '' ? null : values.pincodeId,\n attachment: fileURL,\n patient_uuid: patientUuid,\n is_clinic_address: ship2Clinic\n };\n if (values.phone > 0) {\n body.mobile = values.phone;\n }\n const response = await addPatientsServices(body);\n\n if (response.status === 201) {\n swal('Patient Added', '', 'success');\n setValues({\n state: '',\n city: '',\n pincode: '',\n address1: '',\n address2: '',\n landmark: '',\n name: '',\n phone: ''\n });\n navigate('/dashboard/patients');\n } else {\n setSpinner(false);\n swal('Error', 'Error occurred while adding patient', 'error');\n }\n } else {\n setSpinner(false);\n swal('Error', 'Error occurred while uploading file\\nPlease try again', 'error');\n }\n })\n .catch((err) => {\n setSpinner(false);\n console.error('something went wrong ', err);\n });\n } else {\n setErrors({\n ...errors,\n phone: values?.phone?.length !== 10,\n name: values.name.length < 1\n });\n setFilesError(folderName === '');\n }\n } catch (err) {\n console.log(err);\n }\n };\n const openFileSeletor = () => {\n document.getElementById('file').click();\n };\n const fetchPincodes = async (e) => {\n if (e.target.value?.length === 3) {\n if (e.target.value?.length === 3) {\n setPincodes([]);\n const resp = await getAllPincodesServices(e);\n const pincodeData = await resp.data;\n pincodeData.data.forEach((pincode) => {\n setPincodes((currentArray) => [...currentArray, pincode.toString()]);\n });\n }\n }\n };\n\n const [ship2Clinic, setShip2Clinic] = useState(false);\n\n React.useEffect(() => {\n if (files.length > 0) setIdx(files[0].src);\n }, [files]);\n\n const handleClose = () => setOpen(false);\n return (\n <Page title=\"Add Patient | Quiteclear\">\n <Container maxWidth=\"xl\">\n <Box sx={{ pb: 5 }}>\n <Typography variant=\"h4\">Create a patient</Typography>\n </Box>\n <Modal\n open={open}\n onClose={handleClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n <Box sx={modalStyle}>\n <EditAddressModal address={indexOfAddress} index={id} handleClose={handleClose} />\n </Box>\n </Modal>\n <Grid container spacing={3}>\n <Grid item xs={12} md={6} lg={6}>\n <Card\n style={{\n padding: '15px',\n paddingTop: '20px',\n paddingBottom: '20px',\n height: '100%'\n }}\n >\n <div className=\"client_dashboard_patient_details\">\n <Box>\n <Typography\n id=\"modal-modal-title\"\n variant=\"h4\"\n style={{ textAlign: 'center' }}\n component=\"h2\"\n >\n Patient Details\n </Typography>\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.name}\n onChange={(e) => handleChange('name', e.target.value)}\n label=\"Name\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.name}\n helperText={errors.name ? 'Name field is required.' : null}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"number\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.phone !== '0' ? values.phone : ''}\n onChange={(e) => handleChange('phone', e.target.value)}\n label=\"Mobile Number\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.phone}\n onInput={(e) => {\n e.target.value =\n e.target.value === '0'\n ? ''\n : Number(e.target.value).toString().slice(0, 10);\n }}\n helperText={errors.phone ? errorMsg.phone : null}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.address1}\n onChange={(e) => handleChange('address1', e.target.value)}\n label=\"Address 1\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.address1}\n helperText={errors.address1 ? 'Address 1 is required.' : null}\n inputProps={{\n maxLength: 100\n }}\n multiline=\"true\"\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.address2}\n onChange={(e) => handleChange('address2', e.target.value)}\n label=\"Address 2\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.address2}\n helperText={errors.address2 ? 'Address 2 is required.' : null}\n inputProps={{\n maxLength: 100\n }}\n multiline=\"true\"\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.landmark}\n onChange={(e) => handleChange('landmark', e.target.value)}\n label=\"Landmark\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.landmark}\n helperText={errors.landmark ? 'Landmark is required.' : null}\n inputProps={{\n maxLength: 100\n }}\n multiline=\"true\"\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n marginTop: '15px'\n }}\n >\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n value={values.state}\n label=\"Choose State\"\n disabled=\"true\"\n style={{ width: '32%', marginTop: '5px' }}\n onChange={(e) => handleChange('state', e.target.value)}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n value={values.city}\n style={{ width: '32%', marginTop: '5px', color: errors.city ? 'red' : null }}\n label=\"Choose City\"\n disabled=\"true\"\n onChange={(e) => handleChange('city', e.target.value)}\n />\n <Autocomplete\n style={{ width: '32%', marginTop: '5px' }}\n id=\"combo-box-demo\"\n noOptionsText=\"No results found.\"\n open={isOpen2}\n onKeyPress={() => setIsOpen2(true)}\n onKeyDown={() => setIsOpen2(true)}\n onClose={() => setIsOpen2(false)}\n options={pincodes}\n value={values.pincode}\n onChange={(e, v) => handleChange('pincode', v)}\n renderInput={(params) => (\n <TextField\n {...params}\n color=\"primary\"\n label=\"Choose Pincode\"\n onChange={fetchPincodes}\n error={errors.pincode}\n helperText={errors.pincode ? 'Pincode is required.' : null}\n />\n )}\n />\n <div style={{ width: '100%', textAlign: 'left', marginTop: '15px' }}>\n <FormControlLabel\n control={\n <Checkbox\n checked={ship2Clinic}\n onChange={() => {\n setShip2Clinic(!ship2Clinic);\n }}\n />\n }\n label=\"Ship to Clinic/Office\"\n />\n </div>\n </div>\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '25px' }}>\n {spinner ? (\n <CircularProgress />\n ) : (\n <Button\n variant=\"contained\"\n style={{ marginTop: '15px', fontSize: '16px' }}\n onClick={addPatientHandler}\n >\n Add Patient\n </Button>\n )}\n </div>\n </Box>\n </div>\n </Card>\n </Grid>\n <Grid item xs={12} md={6} lg={6} style={{ height: '100%' }}>\n <Card\n style={{\n paddingBottom: '15px',\n paddingTop: '15px',\n height: '100%'\n }}\n >\n <div className=\"client_dashboard_patient_details\">\n <h2>Upload Files</h2>\n <div\n className=\"order3dView_orderNow\"\n style={{ display: 'flex', justifyContent: 'center' }}\n >\n {files.length === 0 ? (\n <div\n style={{\n border: '1px dashed #ccc',\n minWidth: '90%'\n }}\n >\n <img\n src=\"/static/upload.png\"\n alt=\"upload\"\n style={{ width: '50%', margin: 'auto', marginTop: '10%' }}\n />\n </div>\n ) : (\n <Carousel\n showIndicators={false}\n showStatus={false}\n width={stlWidth > '300px' ? '300px' : stlWidth}\n >\n {files\n .filter((obj) => obj.src === idx)\n .map((file) =>\n obj ? (\n <OBJModel\n key={file.src}\n src={file.src}\n width={stlWidth}\n height={300}\n texPath=\"\"\n />\n ) : (\n <StlViewer\n key={file.src}\n style={style}\n orbitControls\n shadows\n url={file.src}\n />\n )\n )}\n </Carousel>\n )}\n </div>\n <div style={{ width: '90%', margin: 'auto', marginBottom: '20px' }}>\n {files.map((file, index) => (\n <Tooltip key={file.src} title={file.title}>\n <IconButton\n type=\"button\"\n style={{\n backgroundColor: file.src === idx ? '#d9c300' : '#f5eeb3',\n border: '1px solid #d9c300',\n height: '20px',\n width: '20px',\n outline: 'none',\n margin: '1px'\n }}\n key={file}\n // title={file.title}\n onClick={() => setIdx(file.src)}\n >\n <Typography style={{ fontSize: '8px', color: '#000' }} component=\"p\">\n {index + 1}\n </Typography>\n </IconButton>\n </Tooltip>\n ))}\n </div>\n </div>\n <div className=\"client_dashboard_patient_details\">\n <input\n type=\"file\"\n placeholder=\"files\"\n name=\"files[]\"\n accept=\".stl\"\n directory=\"\"\n id=\"file\"\n style={{ display: 'none' }}\n webkitdirectory=\"\"\n onChange={(e) => stlfileHandler(e)}\n multiple\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '80%', marginBottom: '20px' }}\n value={folderName}\n // onChange={(e) => handleChange(e, 'instructions')}\n label=\"File Name\"\n color=\"primary\"\n error={filesError}\n helperText={filesError ? 'Please upload a file.' : null}\n disabled\n autoComplete=\"off\"\n />\n <div className=\"orderFormInp\" style={{ marginTop: '0%', paddingBottom: '20px' }}>\n {progressUploadShow && <UploadLoader value={progressUpload} />}\n {progressUploadShow && (\n <p style={{ fontWeight: '300', fontStyle: 'italic', color: '#ccc' }}>\n Uploading files...\n </p>\n )}\n {!progressUploadShow &&\n (spinner ? (\n <div style={{ width: '100%', maxWidth: '250px', margin: 'auto' }}>\n <LinearProgress />\n </div>\n ) : (\n <Button variant=\"contained\" onClick={openFileSeletor}>\n <CloudUploadOutlinedIcon style={{ marginRight: '5px' }} /> Upload Files\n </Button>\n ))}\n <div className=\"zip-progress\">\n <p\n className=\"zip-progress-text\"\n style={{ fontWeight: '300', fontStyle: 'italic', color: '#ccc' }}\n />\n </div>\n </div>\n <p style={{ fontWeight: '300', fontStyle: 'italic', color: '#ccc' }}>\n Supported files : STL,OBJ\n </p>\n </div>\n </Card>\n </Grid>\n </Grid>\n </Container>\n </Page>\n );\n}\n","import { Icon } from '@iconify/react';\nimport { useRef, useState } from 'react';\nimport editFill from '@iconify/icons-eva/edit-fill';\nimport { Link as RouterLink } from 'react-router-dom';\nimport trash2Outline from '@iconify/icons-eva/trash-2-outline';\nimport moreVerticalFill from '@iconify/icons-eva/more-vertical-fill';\n// material\nimport CircularProgress from '@mui/material/CircularProgress';\nimport ListItemText from '@mui/material/ListItemText';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport IconButton from '@mui/material/IconButton';\nimport MenuItem from '@mui/material/MenuItem';\nimport Menu from '@mui/material/Menu';\n\nimport swal from 'sweetalert';\nimport instance from '../AxiosInstance';\nimport { headers } from '../utils/headers';\n\n// ----------------------------------------------------------------------\n\nexport default function AddressMoreMenu(props) {\n const ref = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n const [spinner, setSpinner] = useState(false);\n const deleteHandler = async () => {\n swal({\n title: 'Are you sure?',\n text: 'Once deleted, you will not be able to recover this address !',\n icon: 'warning',\n customClass: 'Custom_Cancel',\n buttons: true,\n dangerMode: true\n }).then(async (willDelete) => {\n if (willDelete) {\n await instance(`${process.env.REACT_APP_THIRDINREV_API}/address/${props.id}`, {\n method: 'DELETE',\n headers,\n data: JSON.stringify({\n id: Number(window.localStorage.getItem('userId')),\n addressable_type: 'user'\n })\n });\n\n setIsOpen(false);\n setSpinner(false);\n props.getAddressForced();\n }\n });\n };\n const editHandler = () => {\n setIsOpen(false);\n props.editHandler(props.address, props.id);\n };\n return (\n <>\n <IconButton ref={ref} onClick={() => setIsOpen(true)}>\n <Icon icon={moreVerticalFill} width={20} height={20} />\n </IconButton>\n\n <Menu\n open={isOpen}\n anchorEl={ref.current}\n onClose={() => setIsOpen(false)}\n PaperProps={{\n sx: { width: 200, maxWidth: '100%' }\n }}\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n >\n {props.delete !== 'false' && (\n <MenuItem sx={{ color: 'text.secondary' }} onClick={deleteHandler}>\n <ListItemIcon>\n {spinner ? (\n <CircularProgress />\n ) : (\n <Icon icon={trash2Outline} width={24} height={24} />\n )}\n </ListItemIcon>\n <ListItemText primary=\"Delete\" primaryTypographyProps={{ variant: 'body2' }} />\n </MenuItem>\n )}\n\n <MenuItem\n component={RouterLink}\n to=\"#\"\n sx={{ color: 'text.secondary' }}\n onClick={editHandler}\n >\n <ListItemIcon>\n <Icon icon={editFill} width={24} height={24} />\n </ListItemIcon>\n <ListItemText primary=\"Edit\" primaryTypographyProps={{ variant: 'body2' }} />\n </MenuItem>\n </Menu>\n </>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nimport swal from 'sweetalert';\nimport instance from '../AxiosInstance';\nimport { headers } from '../utils/headers';\n\nexport const AddAddressModal = (props) => {\n const [values, setValues] = useState({\n address1: '',\n address2: '',\n landmark: '',\n state: '',\n pincode: '',\n city: '',\n pincodeId: ''\n });\n const [errors, setErrors] = useState({\n address1: false,\n address2: false,\n landmark: false,\n pincode: false\n });\n const [pincodes, setPincodes] = useState([]);\n const [spinner, setSpinner] = useState(false);\n useEffect(() => {\n const fetcher = async () => {\n const responseForPincode = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${values.pincode}`,\n {\n method: 'GET'\n }\n );\n const data = await responseForPincode.data;\n setValues({\n ...values,\n city: data?.data?.city?.name,\n state: data?.data?.city?.state?.name,\n pincodeId: data?.data?.id\n });\n };\n\n fetcher();\n // eslint-disable-next-line\n }, []);\n const [isOpen2, setIsOpen2] = useState(false);\n\n const addPatientHandler = async () => {\n if (\n values.pincode !== '' &&\n values.city !== '' &&\n values.state !== '' &&\n values.address1.length > 0 &&\n values.landmark.length > 0\n ) {\n setSpinner(true);\n const addAddressResp = await instance(`${process.env.REACT_APP_THIRDINREV_API}/address`, {\n method: 'POST',\n headers,\n data: JSON.stringify({\n address_line_1: values.address1,\n address_line_2: values.address2.length > 0 ? values.address2 : ' ',\n landmark: values.landmark,\n pincode_id: Number(values.pincodeId),\n addressable_type: props.user ? 'user' : 'patient',\n addressable_id: props.pid\n })\n });\n\n setSpinner(false);\n if (addAddressResp.status === 201) {\n swal('Updated Successfully.', '', 'success');\n setValues({\n state: '',\n city: '',\n pincode: '',\n address1: '',\n address2: '',\n landmark: ''\n });\n props.handleClose();\n props.getAddressForced();\n } else {\n swal('Something went wrong.', '', 'error');\n }\n } else {\n setErrors({\n ...errors,\n address1: values.address1.length < 1,\n landmark: values.landmark.length < 1,\n city: values.city === '',\n pincode: values.pincode === '',\n state: values.state === ''\n });\n }\n };\n\n const handleChange = async (prop, v) => {\n if (prop === 'pincode') {\n setValues({ ...values, pincode: v });\n if (v?.length === 6) {\n setSpinner(true);\n const responseForPincode = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${v}`,\n {\n method: 'GET'\n }\n );\n const data = await responseForPincode.data;\n setValues({\n ...values,\n city: data.data.city.name,\n state: data.data.city.state.name,\n pincode: v,\n pincodeId: data.data.id\n });\n setSpinner(false);\n }\n } else setValues({ ...values, [prop]: v });\n\n if (prop === 'address1')\n setErrors({\n ...errors,\n address1: v.length < 1\n });\n if (prop === 'landmark')\n setErrors({\n ...errors,\n landmark: v.length < 1\n });\n if (prop === 'city')\n setErrors({\n ...errors,\n city: v === ''\n });\n if (prop === 'pincode')\n setErrors({\n ...errors,\n pincode: v === ''\n });\n if (prop === 'state')\n setErrors({\n ...errors,\n state: v === ''\n });\n };\n const fetchPincodes = async (e) => {\n if (e.target.value?.length === 3) {\n if (e.target.value?.length === 3) {\n setPincodes([]);\n const resp = await instance(\n `${process.env.REACT_APP_THIRDINREV_API}/pincodes?pincode=${e.target?.value}`,\n {\n method: 'GET'\n }\n );\n\n const pincodeData = await resp.data;\n pincodeData.data.forEach((pincode) => {\n setPincodes((currentArray) => [...currentArray, pincode.toString()]);\n });\n }\n }\n };\n return (\n <>\n <h1 style={{ textAlign: 'center' }}>Add Address</h1>\n <Box style={{ padding: '15px' }}>\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.address1}\n onChange={(e) => handleChange('address1', e.target.value)}\n label=\"Address 1\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.address1}\n helperText={errors.address1 ? 'Address 1 is required.' : null}\n inputProps={{\n maxLength: 100\n }}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.address2}\n onChange={(e) => handleChange('address2', e.target.value)}\n label=\"Address 2\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.address2}\n helperText={errors.address2 ? 'Address 2 is required.' : null}\n inputProps={{\n maxLength: 100\n }}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.landmark}\n onChange={(e) => handleChange('landmark', e.target.value)}\n label=\"Landmark\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.landmark}\n helperText={errors.landmark ? 'Landmark is required.' : null}\n inputProps={{\n maxLength: 100\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n marginTop: '15px'\n }}\n >\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n value={values.state}\n label=\"Choose State\"\n disabled=\"true\"\n style={{ width: '32%', marginTop: '5px', color: errors.state ? 'red' : null }}\n onChange={(e) => handleChange('state', e.target.value)}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n value={values.city}\n style={{ width: '32%', marginTop: '5px', color: errors.city ? 'red' : null }}\n label=\"Choose City\"\n disabled=\"true\"\n onChange={(e) => handleChange('city', e.target.value)}\n />\n\n <Autocomplete\n style={{ width: '32%', marginTop: '5px' }}\n id=\"combo-box-demo\"\n noOptionsText=\"No results found.\"\n open={isOpen2}\n onKeyPress={() => setIsOpen2(true)}\n onKeyDown={() => setIsOpen2(true)}\n onClose={() => setIsOpen2(false)}\n options={pincodes}\n value={values.pincode}\n onChange={(e, v) => handleChange('pincode', v)}\n renderInput={(params) => (\n <TextField\n {...params}\n color=\"primary\"\n label=\"Choose Pincode\"\n onChange={fetchPincodes}\n error={errors.pincode}\n helperText={errors.pincode ? 'Pincode is required.' : null}\n />\n )}\n />\n </div>\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '25px' }}>\n {spinner ? (\n <CircularProgress />\n ) : (\n <Button variant=\"contained\" style={{ marginTop: '15px' }} onClick={addPatientHandler}>\n Save changes\n </Button>\n )}\n </div>\n </Box>\n </>\n );\n};\n","import React, { useState, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport Modal from '@mui/material/Modal';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport axios from 'axios';\nimport TextField from '@mui/material/TextField';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport TableContainer from '@mui/material/TableContainer';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport Paper from '@mui/material/Paper';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport '../styles/pages/ClientsDashboard.css';\nimport 'react-responsive-carousel/lib/styles/carousel.min.css';\nimport { Carousel } from 'react-responsive-carousel';\nimport CloudUploadOutlinedIcon from '@mui/icons-material/CloudUploadOutlined';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport JSZip from 'jszip';\nimport { StlViewer } from 'react-stl-viewer';\nimport { OBJModel } from 'react-3d-viewer';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport swal from 'sweetalert';\nimport AddressMoreMenu from '../components/AddressMoreMenu';\nimport Page from '../components/Page';\nimport { EditAddressModal } from '../components/EditAddressModal';\nimport { AddAddressModal } from '../components/AddAddressModal';\nimport {\n getPatientsAttachmentByIdServices,\n getPatientsDetailsByIdServices,\n getPatientsAddressByIdServices,\n editPatientsServices,\n uploadPatientsFileByIdServices,\n getPincodesDetailsServices\n} from '../services/patients.services';\nimport { UploadLoader } from '../components/UploadLoader';\n\nexport default function EditPatient() {\n const zip = new JSZip();\n const [errorMsg, setErrorMsg] = useState({\n phone: 'Mobile Number field is required.'\n });\n const { pid } = useParams();\n const navigate = useNavigate();\n const [files, setFiles] = useState([]);\n const [file, setFile] = useState('');\n const [idx, setIdx] = useState(0);\n const [progressUpload, setProgressUpload] = useState(0);\n const [progressUploadShow, setProgressUploadShow] = useState(false);\n const [obj, setObj] = useState(false);\n const [orderErrors, setOrderErrors] = useState({\n patientId: false,\n addressId: false,\n trim: false,\n files: false\n });\n const [openAddAddressModal, setAddAddressModal] = useState(false);\n const [spinnerLoading, setSpinnerLoading] = useState(false);\n const [filesError, setFilesError] = useState(false);\n const [attachmentsList, setAttachmentsList] = useState([]);\n const [addressList, setAddressList] = useState([]);\n const [ship2Clinic, setShip2Clinic] = useState(false);\n useEffect(() => {\n const getAttachments = async () => {\n const response = await getPatientsAttachmentByIdServices(pid);\n const data = await response.data;\n if (response.status === 200) setAttachmentsList(data?.data);\n };\n getAttachments();\n }, [pid]);\n\n useEffect(() => {\n const getPatient = async () => {\n setSpinnerLoading(true);\n const addPatient = await getPatientsDetailsByIdServices(pid);\n setSpinnerLoading(false);\n const addressData = await addPatient.data;\n if (addPatient.status === 404 || addPatient.status === 400) {\n navigate('/not-found', { state: { title: 'Sorry, Patient not found!' } });\n }\n setValues({\n address1: addressData?.data?.address?.address_line_1,\n address2: addressData?.data?.address?.address_line_2,\n landmark: addressData?.data?.address?.landmark,\n state: addressData?.data?.address?.state,\n pincode: addressData?.data?.address?.pincode,\n city: addressData?.data?.address?.city,\n pincodeId: addressData?.data?.address?.pincode_id,\n name: addressData?.data?.name,\n phone: addressData?.data?.mobile,\n patientUuid: addressData?.data?.patient_uuid\n });\n setShip2Clinic(addressData?.data?.is_clinic_address);\n };\n getPatient();\n\n const getPatientAddress = async () => {\n const addPatientAddress = await getPatientsAddressByIdServices(pid);\n const addressData = await addPatientAddress.data;\n setAddressList(addressData.data);\n };\n getPatientAddress();\n // eslint-disable-next-line\n }, [pid]);\n\n const addAddressHandler = async () => {\n setAddAddressModal(true);\n };\n\n const [volume] = useState(0);\n let stlWidth = window.innerWidth * 0.358 >= '300px' ? '300px' : window.innerWidth * 0.358;\n if (window.innerWidth <= 504) {\n stlWidth = window.innerWidth * 0.8;\n }\n const [src, setSrc] = useState('');\n const modalStyle = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '90%',\n maxWidth: 600,\n overflowY: 'scroll',\n bgcolor: 'background.paper',\n maxHeight: '100%',\n borderRadius: '13px',\n marginTop: '20px',\n p: 4,\n padding: '10px'\n };\n const [folderName, setFolderName] = useState('');\n const [values, setValues] = useState({\n address1: '',\n address2: '',\n landmark: '',\n state: '',\n pincode: '',\n city: '',\n pincodeId: '',\n name: '',\n phone: '',\n patientUuid: ''\n });\n const [heroFiles, setHeroFiles] = useState([]);\n const [spinner, setSpinner] = useState(false);\n const [indexOfAddress, setIndexOfAddress] = useState();\n const [id, setId] = useState();\n const [errors, setErrors] = useState({\n address1: false,\n address2: false,\n landmark: false,\n pincode: false\n });\n\n const fetchEditPatient = async () => {\n if (values.name !== '' && values?.phone?.length === 10) {\n const body = {\n name: values.name,\n mobile: values.phone,\n patient_uuid: values.patientUuid,\n is_clinic_address: ship2Clinic\n };\n const addPatient = await editPatientsServices(pid, body);\n setSpinner(false);\n const data = await addPatient.data;\n if (addPatient.status === 200) {\n swal('Updated Successfully', '', 'success');\n setValues({\n state: '',\n city: '',\n pincode: '',\n address1: '',\n address2: '',\n landmark: '',\n name: '',\n phone: ''\n });\n navigate('/dashboard/patients');\n } else {\n swal('Error', data?.message, 'error');\n }\n }\n };\n\n const addPatientHandler = async () => {\n if (values.name !== '' && values?.phone?.length === 10) {\n setSpinner(true);\n if (heroFiles.length > 0 && folderName !== '') {\n for (let i = 0; i < heroFiles.length; i += 1) {\n zip.file(heroFiles[i].name, heroFiles[i]);\n }\n const formdata = new FormData();\n const progressElements = document?.querySelector('.zip-progress-text');\n zip\n .generateAsync({ type: 'blob', compression: 'DEFLATE' }, ({ currentFile, percent }) => {\n if (currentFile) {\n progressElements.innerHTML = `Zipping files: ${percent.toFixed(1)}%`;\n }\n })\n .then(async (content) => {\n progressElements.innerHTML = ``;\n formdata.append('file', content);\n\n const responseURL = await uploadPatientsFileByIdServices(folderName, values);\n\n const data = await responseURL.data;\n\n const uploadURL = data?.data.uploadURL;\n const fileURL = data?.data?.filePath;\n\n setProgressUploadShow(true);\n const awsResponse = await axios.put(uploadURL, formdata, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n onUploadProgress: (progressEvent) => {\n const percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total\n );\n setProgressUpload(percentCompleted);\n }\n });\n setProgressUploadShow(false);\n if (awsResponse.status === 200 || awsResponse.status === 201) {\n setSpinner(false);\n console.log(file, volume, src);\n const body = {\n name: values.name,\n mobile: '',\n attachment: fileURL,\n patient_uuid: values.patientUuid\n };\n if (values.phone > 0) body.mobile = values.phone;\n const response = await editPatientsServices(pid, body);\n\n if (response.status === 200) {\n swal('Patient Updated', '', 'success');\n setValues({\n state: '',\n city: '',\n pincode: '',\n address1: '',\n address2: '',\n landmark: '',\n name: '',\n phone: ''\n });\n navigate('/dashboard/patients');\n } else {\n setSpinner(false);\n swal('Error', 'Error occurred while adding patient', 'error');\n }\n } else {\n setSpinner(false);\n swal('Error', 'Error occurred while uploading file\\nPlease try again', 'error');\n }\n })\n .catch((err) => {\n setSpinner(false);\n console.error('something went wrong', err);\n });\n } else {\n fetchEditPatient();\n }\n } else {\n setErrors({\n ...errors,\n phone: values.phone.length !== 10,\n name: values.name.length < 1\n });\n }\n };\n\n const style = {\n top: 0,\n left: 0,\n width: stlWidth,\n height: '300px',\n maxWidth: '576px'\n };\n const stlfileHandler = (e) => {\n setFilesError(false);\n if (!e.target.files[0]) return;\n setFolderName(e.target.files[0].webkitRelativePath.split('/')[0]);\n setOrderErrors({\n ...orderErrors,\n trim: false\n });\n setFile(e.target?.files[0]);\n setFiles([]);\n\n for (let i = 0; i < e.target.files.length; i += 1) {\n if (\n e.target.files.item(i).name.split('.')[1] === 'obj' ||\n e.target.files.item(i).name.split('.')[1] === 'OBJ'\n ) {\n setObj(true);\n } else if (\n e.target.files.item(i).name.split('.')[1] === 'STL' ||\n e.target.files.item(i).name.split('.')[1] === 'stl'\n ) {\n setObj(false);\n }\n if (\n e.target.files.item(i).name.split('.')[1] === 'obj' ||\n e.target.files.item(i).name.split('.')[1] === 'OBJ' ||\n e.target.files.item(i).name.split('.')[1] === 'STL' ||\n e.target.files.item(i).name.split('.')[1] === 'stl'\n ) {\n setFiles((currentArray) => [\n ...currentArray,\n { title: e.target.files.item(i).name, src: URL.createObjectURL(e.target?.files.item(i)) }\n ]);\n setHeroFiles((currentArray) => [...currentArray, e.target?.files.item(i)]);\n }\n }\n\n if (e.target.files.item(0)) setSrc(URL.createObjectURL(e.target.files.item(0)));\n };\n\n const handleChange = async (prop, v) => {\n if (prop === 'pincode') {\n setValues({ ...values, pincode: v });\n if (v?.length === 6) {\n const responseForPincode = await getPincodesDetailsServices(v);\n const data = await responseForPincode.data;\n setValues({\n ...values,\n city: data.data.city.name,\n state: data.data.city.state.name,\n pincode: v,\n pincodeId: data.data.id\n });\n }\n } else setValues({ ...values, [prop]: v });\n\n if (prop === 'address1')\n setErrors({\n ...errors,\n address1: v.length < 1\n });\n if (prop === 'phone') {\n setErrors({\n ...errors,\n phone: v?.length !== 10 && v > 0\n });\n if (v?.length > 0 && v?.length < 10 && v > 0)\n setErrorMsg({ ...errorMsg, phone: 'Invalid Mobile Number.' });\n }\n if (prop === 'name')\n setErrors({\n ...errors,\n name: v?.length < 1\n });\n\n if (prop === 'landmark')\n setErrors({\n ...errors,\n landmark: v.length < 1\n });\n if (prop === 'city')\n setErrors({\n ...errors,\n city: v === ''\n });\n if (prop === 'pincode')\n setErrors({\n ...errors,\n pincode: v === ''\n });\n if (prop === 'state')\n setErrors({\n ...errors,\n state: v === ''\n });\n };\n const openFileSeletor = () => {\n document.getElementById('file').click();\n };\n const [open, setOpen] = useState(false);\n\n const editHandler = (address, id) => {\n setIndexOfAddress(address);\n setId(id);\n setOpen(true);\n };\n\n React.useEffect(() => {\n if (files.length > 0) setIdx(files[0].src);\n }, [files]);\n\n const getAddressForPatients = async () => {\n const getPatientAddress = async () => {\n const addPatientAddress = await getPatientsAddressByIdServices(pid);\n const addressData = await addPatientAddress.data;\n setAddressList(addressData.data);\n };\n getPatientAddress();\n };\n\n const handleClose = () => setOpen(false);\n return (\n <Page title=\"Update Patient | Quiteclear\">\n <Container maxWidth=\"xl\">\n <Box sx={{ pb: 5 }}>\n <Typography variant=\"h4\">Update patient</Typography>\n </Box>\n <Modal\n open={open}\n onClose={handleClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n <Box sx={modalStyle}>\n <EditAddressModal\n address={indexOfAddress}\n getAddressForced={getAddressForPatients}\n index={id}\n handleClose={handleClose}\n />\n </Box>\n </Modal>\n <Modal\n open={openAddAddressModal}\n onClose={() => setAddAddressModal(false)}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n <Box sx={modalStyle}>\n <AddAddressModal\n address={indexOfAddress}\n getAddressForced={getAddressForPatients}\n index={id}\n pid={pid}\n handleClose={() => setAddAddressModal(false)}\n />\n </Box>\n </Modal>\n <Grid container spacing={3}>\n <Grid item xs={12} md={6} lg={6}>\n <Card style={{ padding: '15px', paddingTop: '20px', paddingBottom: '20px' }}>\n <div className=\"client_dashboard_patient_details\">\n <Box>\n <Typography\n id=\"modal-modal-title\"\n variant=\"h4\"\n style={{ textAlign: 'center' }}\n component=\"h2\"\n >\n Patient Details\n </Typography>\n {spinnerLoading ? (\n <CircularProgress />\n ) : (\n <>\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.name}\n onChange={(e) => handleChange('name', e.target.value)}\n label=\"Name\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.name}\n helperText={errors.name ? 'Name field is required.' : null}\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"number\"\n style={{ width: '100%', marginTop: '15px' }}\n value={values.phone !== '0' ? values.phone : ''}\n onChange={(e) => handleChange('phone', e.target.value)}\n label=\"Mobile Number\"\n color=\"primary\"\n autoComplete=\"off\"\n error={errors.phone}\n onInput={(e) => {\n e.target.value =\n e.target.value === '0'\n ? ''\n : Number(e.target.value).toString().slice(0, 10);\n }}\n helperText={errors.phone ? errorMsg.phone : null}\n />\n <div style={{ width: '100%', textAlign: 'left', marginTop: '15px' }}>\n <FormControlLabel\n control={\n <Checkbox\n checked={ship2Clinic}\n onChange={() => {\n setShip2Clinic(!ship2Clinic);\n }}\n />\n }\n label=\"Ship to Clinic/Office\"\n />\n </div>\n </>\n )}\n </Box>\n </div>\n </Card>\n <Grid item xs={12} md={12} lg={12}>\n <div className=\"client_dashboard_patient_details\" style={{ marginTop: '20px' }}>\n <Card style={{ padding: '15px', paddingTop: '20px', paddingBottom: '20px' }}>\n <h2>Your Addresses</h2>\n {addressList?.length === 0 ? spinner : null}\n <TableContainer\n component={Paper}\n style={{ marginTop: '10px', maxHeight: '376px', overflowY: 'scroll' }}\n >\n <Table sx={{ minWidth: 350 }} size=\"small\" aria-label=\"a dense table\">\n <TableBody>\n {addressList.map((add, index) => (\n <TableRow\n sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\n key={index}\n >\n <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n {index + 1}. {add?.address_line_1}, {add?.address_line_2}{' '}\n {add?.address_line_2 !== ' ' ? ',' : ''}\n {add?.landmark}, {add?.state}, {add?.city}, {add?.pincode}\n </TableCell>\n <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n <AddressMoreMenu\n id={add.id}\n setOpen={setOpen}\n editHandler={editHandler}\n address={add}\n getAddressForced={getAddressForPatients}\n />\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n <Button\n variant=\"contained\"\n style={{ marginTop: '15px', fontSize: '16px' }}\n onClick={addAddressHandler}\n >\n Add Address\n </Button>\n </Card>\n </div>\n </Grid>\n </Grid>\n\n <Grid item xs={12} md={6} lg={6}>\n <Grid item xs={12} md={6} lg={12} style={{ height: '100%' }}>\n <Card\n style={{\n paddingBottom: '15px',\n paddingTop: '15px'\n }}\n >\n <div className=\"client_dashboard_patient_details\">\n <h2>Upload Files</h2>\n <div\n className=\"order3dView_orderNow\"\n style={{ display: 'flex', justifyContent: 'center' }}\n >\n {files.length === 0 ? (\n <div\n style={{\n border: '1px dashed #ccc',\n minWidth: '90%'\n }}\n >\n <img\n src=\"/static/upload.png\"\n alt=\"upload\"\n style={{ width: '50%', margin: 'auto', marginTop: '10%' }}\n />\n {/* <p>Upload your files</p> */}\n </div>\n ) : (\n <Carousel\n showIndicators={false}\n showStatus={false}\n width={stlWidth > '300px' ? '300px' : stlWidth}\n >\n {files\n .filter((obj) => obj.src === idx)\n .map((file) =>\n obj ? (\n <OBJModel\n key={file.src}\n src={file.src}\n width={stlWidth}\n height={300}\n texPath=\"\"\n />\n ) : (\n <StlViewer\n key={file.src}\n style={style}\n orbitControls\n shadows\n url={file.src}\n />\n )\n )}\n </Carousel>\n )}\n </div>\n <div style={{ width: '90%', margin: 'auto', marginBottom: '20px' }}>\n {files.map((file, index) => (\n <Tooltip key={file.src} title={file.title}>\n <IconButton\n type=\"button\"\n style={{\n backgroundColor: file.src === idx ? '#d9c300' : '#f5eeb3',\n border: '1px solid #d9c300',\n height: '20px',\n width: '20px',\n outline: 'none',\n margin: '1px'\n }}\n key={file}\n title={file.title}\n onClick={() => setIdx(file.src)}\n >\n <Typography style={{ fontSize: '8px', color: '#000' }} component=\"p\">\n {index + 1}\n </Typography>\n </IconButton>\n </Tooltip>\n ))}\n </div>\n </div>\n <div className=\"client_dashboard_patient_details\">\n <input\n type=\"file\"\n placeholder=\"files\"\n name=\"files[]\"\n accept=\".stl\"\n directory=\"\"\n id=\"file\"\n style={{ display: 'none' }}\n webkitdirectory=\"\"\n onChange={(e) => stlfileHandler(e)}\n multiple\n />\n <TextField\n id=\"outlined-adornment-name-registration\"\n type=\"text\"\n style={{ width: '80%', marginBottom: '20px' }}\n value={folderName}\n label=\"File Name\"\n color=\"primary\"\n error={filesError}\n helperText={filesError ? 'Please upload a file.' : null}\n disabled\n autoComplete=\"off\"\n />\n <div className=\"orderFormInp\" style={{ marginTop: '0%', paddingBottom: '20px' }}>\n {progressUploadShow && <UploadLoader value={progressUpload} />}\n {progressUploadShow && (\n <p style={{ fontWeight: '300', fontStyle: 'italic', color: '#ccc' }}>\n Uploading files...\n </p>\n )}\n {!progressUploadShow &&\n (spinner ? (\n <div style={{ width: '100%', maxWidth: '250px', margin: 'auto' }}>\n <LinearProgress />\n </div>\n ) : (\n <Button variant=\"contained\" onClick={openFileSeletor}>\n <CloudUploadOutlinedIcon style={{ marginRight: '5px' }} /> Upload Files\n </Button>\n ))}\n </div>\n <div className=\"zip-progress\">\n <p\n className=\"zip-progress-text\"\n style={{\n fontWeight: '300',\n fontStyle: 'italic',\n color: '#ccc',\n marginBottom: '20px'\n }}\n />\n </div>\n <div>\n <p style={{ fontWeight: '600', marginBottom: '10px' }}>\n Previously uploaded files\n </p>\n\n {attachmentsList.map((item, index) => (\n <ListItem\n key={index}\n component=\"div\"\n style={{\n boxShadow: '0 0 5px #ccc',\n margin: 'auto',\n marginBottom: '10px',\n maxWidth: '80%'\n }}\n disablePadding\n >\n <ListItemButton>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-around',\n width: '100%',\n padding: '5px',\n wordBreak: 'break-all'\n }}\n >\n <p\n style={{\n width: '50%',\n wordWrap: 'break-word'\n }}\n key={item.attachment_url}\n >\n {\n item?.attachment_url?.split('/')[\n item?.attachment_url?.split('/').length - 1\n ]\n }\n </p>\n <p style={{ textAlign: 'left', width: '50%' }}>{`Uploaded at: ${\n new Date(item.createdAt).toLocaleString().split(',')[0]\n } ${' '} ${new Date(item.createdAt).toLocaleTimeString('en-US', {\n timeZone: 'IST',\n hour12: true,\n hour: 'numeric',\n minute: 'numeric'\n })}`}</p>\n </div>\n </ListItemButton>\n </ListItem>\n ))}\n </div>\n <p style={{ fontWeight: '300', fontStyle: 'italic', color: '#ccc' }}>\n Supported files : STL,OBJ\n </p>\n </div>\n </Card>\n </Grid>\n </Grid>\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n marginTop: '20px',\n marginBottom: '20px',\n width: '100%'\n }}\n >\n {spinner ? (\n <CircularProgress />\n ) : (\n <Button\n variant=\"contained\"\n style={{ marginTop: '15px', fontSize: '16px' }}\n onClick={addPatientHandler}\n >\n Update Patient\n </Button>\n )}\n </div>\n </Grid>\n </Container>\n </Page>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport Grid from '@mui/material/Grid';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport FormControl from '@mui/material/FormControl';\nimport Modal from '@mui/material/Modal';\nimport TextField from '@mui/material/TextField';\nimport InputLabel from '@mui/material/InputLabel';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport IconButton from '@mui/material/IconButton';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport Box from '@mui/material/Box';\nimport swal from 'sweetalert';\nimport { Visibility, VisibilityOff } from '@mui/icons-material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TableContainer from '@mui/material/TableContainer';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport Paper from '@mui/material/Paper';\nimport { EditAddressModal } from '../components/EditAddressModal';\nimport '../styles/pages/ClientsDashboard.css';\nimport 'react-responsive-carousel/lib/styles/carousel.min.css';\nimport Page from '../components/Page';\nimport AddressMoreMenu from '../components/AddressMoreMenu';\nimport { AddAddressModal } from '../components/AddAddressModal';\nimport {\n changePasswordServices,\n getDoctorAddressById,\n getDoctorDetailsServices\n} from '../services/profile.services';\n\nexport default function MyProfile() {\n const userId = window.localStorage.getItem('userId');\n const [userData, setUserdata] = useState();\n const [addressList, setAddressList] = useState([]);\n const handleClickShowPassword1 = () => {\n setValues({\n ...values,\n showPassword1: !values.showPassword1\n });\n };\n const handleClickShowPassword2 = () => {\n setValues({\n ...values,\n showPassword2: !values.showPassword2\n });\n };\n const handleClickShowPassword3 = () => {\n setValues({\n ...values,\n showPassword3: !values.showPassword3\n });\n };\n const handleMouseDownPassword = (event) => {\n event.preventDefault();\n };\n\n const [loading, setLoading] = useState({\n forPasswordVerification: false,\n forPasswordUpdate: false\n });\n\n const [values, setValues] = useState({\n cPassword: '',\n newPassword: '',\n confirmPassword: '',\n showPassword1: false,\n showPassword2: false,\n showPassword3: false\n });\n\n const [spinner, setSpinner] = useState(false);\n const handleChangePass = (prop) => (event) => {\n setValues({ ...values, [prop]: event.target.value });\n if (prop === 'cPassword') {\n setErrors({\n ...errors,\n cPassword: !event.target.value\n });\n }\n if (prop === 'newPassword') {\n setErrors({\n ...errors,\n newPassword: event.target.value.length < 6\n });\n }\n if (prop === 'confirmPassword') {\n setErrors({\n ...errors,\n confirmPassword: values.newPassword !== event.target.value\n });\n }\n };\n const [openAddAddressModal, setAddAddressModal] = useState(false);\n const [errors, setErrors] = useState({\n cPassword: false,\n newPassword: false,\n confirmPassword: false\n });\n\n const [cPwdWrg, setCPwdWrg] = useState('Password must be at least 6 characters long.');\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n if (\n values.cPassword.length >= 6 &&\n values.newPassword === values.confirmPassword &&\n values.newPassword.length >= 6\n ) {\n setSpinner(true);\n setLoading({ ...loading, forPasswordVerification: true });\n const response = await changePasswordServices(values);\n setLoading({ ...loading, forPasswordVerification: false });\n const data = await response.data;\n if (data?.meta?.code === 200) {\n window.localStorage.setItem('token', data?.meta?.token);\n swal('Password updated successfully.', '', 'success');\n setValues({\n ...values,\n cPassword: '',\n newPassword: '',\n confirmPassword: ''\n });\n }\n if (data?.meta?.code === 403) {\n swal(data.message, '', 'error');\n }\n if (data?.meta?.code === 400) {\n setErrors({ ...errors, cPassword: true });\n setCPwdWrg('Current password is incorrect.');\n }\n } else if (values.cPassword.length < 6) {\n setErrors({ ...errors, cPassword: values.cPassword.length < 6 });\n } else if (values.confirmPassword !== values.newPassword) {\n setErrors({ ...errors, confirmPassword: true });\n } else if (values.cPassword && values.newPassword.length < 6) {\n setErrors({ ...errors, newPassword: values.newPassword.length < 6 });\n }\n setSpinner(false);\n };\n\n const modalStyle = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '90%',\n maxWidth: 600,\n overflowY: 'scroll',\n bgcolor: 'background.paper',\n maxHeight: '100%',\n borderRadius: '13px',\n marginTop: '20px',\n p: 4,\n padding: '10px'\n };\n\n const [spinner3] = useState(<p>No Address recorded.</p>);\n const [indexOfAddress, setIndexOfAddress] = useState();\n const [id, setId] = useState();\n\n useEffect(() => {\n const getPatientAddress = async () => {\n const addPatientAddress = await getDoctorAddressById(userId);\n const addressData = await addPatientAddress.data;\n setAddressList(addressData.data);\n };\n getPatientAddress();\n\n const getUserInfo = async () => {\n const getInfo = await getDoctorDetailsServices();\n setUserdata(getInfo.data.data);\n };\n getUserInfo();\n // eslint-disable-next-line\n }, []);\n\n const addAddressHandler = async () => {\n setAddAddressModal(true);\n };\n\n const [open, setOpen] = useState(false);\n const editHandler = (address, id) => {\n setIndexOfAddress(address);\n setId(id);\n setOpen(true);\n };\n\n const getAddressForPatients = async () => {\n const getPatientAddress = async () => {\n const addPatientAddress = await getDoctorAddressById(userId);\n const addressData = await addPatientAddress.data;\n setAddressList(addressData.data);\n };\n getPatientAddress();\n };\n\n const handleClose = () => setOpen(false);\n\n return (\n <Page title=\"My Profile | Quiteclear\">\n <Container maxWidth=\"xl\">\n <Modal\n open={open}\n onClose={handleClose}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n <Box sx={modalStyle}>\n <EditAddressModal\n address={indexOfAddress}\n getAddressForced={getAddressForPatients}\n index={id}\n handleClose={handleClose}\n />\n </Box>\n </Modal>\n <Modal\n open={openAddAddressModal}\n onClose={() => setAddAddressModal(false)}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n <Box sx={modalStyle}>\n <AddAddressModal\n address={indexOfAddress}\n getAddressForced={getAddressForPatients}\n index={id}\n pid={window.localStorage.getItem('userId')}\n handleClose={() => setAddAddressModal(false)}\n user=\"true\"\n />\n </Box>\n </Modal>\n <Box sx={{ pb: 5 }}>\n <Typography variant=\"h4\">My Profile</Typography>\n </Box>\n <Grid container spacing={3}>\n <Grid item xs={12} md={6} lg={6}>\n <Card style={{ marginTop: '15px', paddingTop: '15px', minHeight: '380px' }}>\n <div className=\"client_dashboard_patient_details\">\n <h2>Your Details</h2>\n <Box\n onSubmit={handleSubmit}\n component=\"form\"\n style={{ padding: '10px' }}\n noValidate\n autoComplete=\"off\"\n >\n {userData ? (\n <>\n <div className=\"form_input_div\">\n <TextField\n id=\"outlined-adornment-cpassword\"\n value={userData.name}\n style={{ width: '100%' }}\n label=\"Name\"\n autoComplete=\"off\"\n disabled\n />\n </div>\n <div className=\"form_input_div\">\n <TextField\n id=\"outlined-adornment-cpassword\"\n value={userData.email}\n style={{ width: '100%' }}\n label=\"Email\"\n autoComplete=\"off\"\n disabled\n />\n </div>\n <div className=\"form_input_div\">\n <TextField\n id=\"outlined-adornment-cpassword\"\n value={userData.mobile}\n style={{ width: '100%' }}\n label=\"Mobile Number\"\n autoComplete=\"off\"\n disabled\n />\n </div>\n <div className=\"form_input_div\">\n <TextField\n id=\"outlined-adornment-cpassword\"\n value={userData.additional_emails}\n style={{ width: '100%' }}\n autoComplete=\"off\"\n label=\"Additional Emails\"\n multiline=\"true\"\n disabled\n />\n </div>\n <div className=\"form_input_div\">\n <TextField\n id=\"outlined-adornment-cpassword\"\n value={userData.additional_contacts}\n style={{ width: '100%' }}\n label=\"Additional Contacts\"\n autoComplete=\"off\"\n multiline=\"true\"\n disabled\n />\n </div>\n </>\n ) : (\n <CircularProgress />\n )}\n </Box>\n </div>\n </Card>\n <Grid item xs={12} md={12} lg={12}>\n <div className=\"client_dashboard_patient_details\" style={{ marginTop: '20px' }}>\n <Card style={{ padding: '15px', paddingTop: '20px', paddingBottom: '20px' }}>\n <h2>Your Address</h2>\n {addressList.length === 0 ? spinner3 : null}\n <TableContainer\n component={Paper}\n style={{ marginTop: '10px', maxHeight: '376px', overflowY: 'scroll' }}\n >\n <Table sx={{ minWidth: 350 }} size=\"small\" aria-label=\"a dense table\">\n <TableBody>\n {addressList.map((add, index) => (\n <TableRow\n sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\n key={index}\n >\n <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n {index + 1}. {add?.address_line_1}, {add?.address_line_2}{' '}\n {add?.address_line_2 !== ' ' ? ',' : ''}\n {add?.landmark}, {add?.state}, {add?.city}, {add?.pincode}\n </TableCell>\n <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n <AddressMoreMenu\n id={add.id}\n setOpen={setOpen}\n editHandler={editHandler}\n address={add}\n delete=\"false\"\n getAddressForced={getAddressForPatients}\n />\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n {addressList.length === 0 && (\n <Button\n variant=\"contained\"\n style={{ marginTop: '15px', fontSize: '16px' }}\n onClick={addAddressHandler}\n >\n Add Address\n </Button>\n )}\n </Card>\n </div>\n </Grid>\n </Grid>\n <Grid item xs={12} md={6} lg={6}>\n <Card style={{ marginTop: '15px', paddingBottom: '15px', paddingTop: '15px' }}>\n <div className=\"client_dashboard_patient_details\">\n <h2>Change Password</h2>\n <Box\n onSubmit={handleSubmit}\n component=\"form\"\n style={{ padding: '10px' }}\n noValidate\n autoComplete=\"off\"\n >\n <div className=\"form_input_div\">\n <FormControl sx={{ width: '100%' }} color=\"primary\" variant=\"outlined\">\n <InputLabel\n style={{ color: errors.cPassword ? '#D10000' : 'grey' }}\n htmlFor=\"outlined-adornment-cpassword\"\n >\n Current Password\n </InputLabel>\n <OutlinedInput\n id=\"outlined-adornment-cpassword\"\n type={values.showPassword1 ? 'text' : 'password'}\n value={values.cPassword}\n style={{ width: '100%' }}\n onChange={handleChangePass('cPassword')}\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPassword1}\n onMouseDown={handleMouseDownPassword}\n edge=\"end\"\n >\n {values.showPassword1 ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </InputAdornment>\n }\n label=\"Current Password\"\n autoComplete=\"off\"\n error={errors.cPassword}\n />\n {errors.cPassword && (\n <FormHelperText error id=\"accountId-error\">\n {values.cPassword.length === 0\n ? 'Password field is required.'\n : errors.cPassword && cPwdWrg}\n </FormHelperText>\n )}\n </FormControl>\n </div>\n <div className=\"form_input_div\">\n <FormControl sx={{ width: '100%' }} color=\"primary\" variant=\"outlined\">\n <InputLabel\n style={{\n color: errors.newPassword ? '#D10000' : 'grey'\n }}\n htmlFor=\"outlined-adornment-newpassword\"\n >\n New Password\n </InputLabel>\n <OutlinedInput\n id=\"outlined-adornment-newpassword\"\n type={values.showPassword2 ? 'text' : 'password'}\n value={values.newPassword}\n style={{ width: '100%' }}\n onChange={handleChangePass('newPassword')}\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPassword2}\n onMouseDown={handleMouseDownPassword}\n edge=\"end\"\n >\n {values.showPassword2 ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </InputAdornment>\n }\n label=\"New Password\"\n autoComplete=\"off\"\n error={errors.newPassword}\n />\n {errors.newPassword && (\n <FormHelperText error id=\"accountId-error\">\n {values.newPassword.length === 0\n ? 'Password field is required.'\n : 'Password must be at least 6 characters long.'}\n </FormHelperText>\n )}\n </FormControl>\n </div>\n <div className=\"form_input_div\">\n <FormControl sx={{ width: '100%' }} color=\"primary\" variant=\"outlined\">\n <InputLabel\n style={{\n color: errors.confirmPassword ? '#D10000' : 'grey'\n }}\n htmlFor=\"outlined-adornment-confirm-password\"\n >\n Confirm Password\n </InputLabel>\n <OutlinedInput\n id=\"outlined-adornment-confirm-password\"\n type={values.showPassword3 ? 'text' : 'password'}\n value={values.confirmPassword}\n style={{ width: '100%' }}\n onChange={handleChangePass('confirmPassword')}\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPassword3}\n onMouseDown={handleMouseDownPassword}\n edge=\"end\"\n >\n {values.showPassword3 ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </InputAdornment>\n }\n label=\"Confirm Password\"\n autoComplete=\"off\"\n error={errors.confirmPassword}\n />\n {errors.confirmPassword && (\n <FormHelperText error id=\"accountId-error\">\n {values.confirmPassword.length === 0\n ? 'Password field is required.'\n : 'Confirm password does not match with new password.'}\n </FormHelperText>\n )}\n </FormControl>\n </div>\n <div\n style={{\n display: 'flex',\n width: '100%',\n justifyContent: 'center',\n marginTop: '15px'\n }}\n >\n {spinner ? (\n <CircularProgress />\n ) : (\n <Button variant=\"contained\" type=\"submit\">\n Update Password\n </Button>\n )}\n </div>\n </Box>\n </div>\n </Card>\n </Grid>\n </Grid>\n </Container>\n </Page>\n );\n}\n","import { useState } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport {\n Button,\n CircularProgress,\n FormControl,\n FormHelperText,\n IconButton,\n InputAdornment,\n InputLabel,\n OutlinedInput\n} from '@mui/material';\nimport Box from '@mui/material/Box';\nimport swal from 'sweetalert';\nimport { Visibility, VisibilityOff } from '@mui/icons-material';\nimport { unescape } from 'lodash';\nimport { headers } from '../../../utils/headers';\nimport instance from '../../../AxiosInstance';\n\n// ----------------------------------------------------------------------\n\nexport default function ForgotPasswordForm() {\n const { token } = useParams();\n const navigate = useNavigate();\n const handleClickShowPassword2 = () => {\n setValues({\n ...values,\n showPassword2: !values.showPassword2\n });\n };\n const handleClickShowPassword3 = () => {\n setValues({\n ...values,\n showPassword3: !values.showPassword3\n });\n };\n const handleMouseDownPassword = (event) => {\n event.preventDefault();\n };\n\n const [loading, setLoading] = useState({\n forPasswordVerification: false,\n forPasswordUpdate: false\n });\n\n const [values, setValues] = useState({\n newPassword: '',\n confirmPassword: '',\n showPassword1: false,\n showPassword2: false,\n showPassword3: false\n });\n\n const [spinner, setSpinner] = useState(false);\n const handleChange = (prop) => (event) => {\n setValues({ ...values, [prop]: event.target.value });\n if (prop === 'newPassword') {\n setErrors({\n ...errors,\n newPassword: event.target.value.length < 6\n });\n }\n if (prop === 'confirmPassword') {\n setErrors({\n ...errors,\n confirmPassword: values.newPassword !== event.target.value\n });\n }\n };\n\n const [errors, setErrors] = useState({\n cPassword: false,\n newPassword: false,\n confirmPassword: false\n });\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n if (values.newPassword === values.confirmPassword && values.newPassword?.trim().length >= 6) {\n setSpinner(true);\n const tok = unescape(encodeURIComponent(token));\n const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/reset-password`, {\n method: 'POST',\n headers,\n data: JSON.stringify({\n password: values.newPassword?.trim(),\n password_confirmation: values.confirmPassword?.trim(),\n token: tok\n })\n });\n\n setLoading({ ...loading, forPasswordVerification: false });\n const data = await response.data;\n if (response.status === 200) {\n swal('Password updated successfully.', '', 'success');\n navigate('/');\n setValues({\n ...values,\n newPassword: '',\n confirmPassword: ''\n });\n }\n if (response.status === 403) {\n swal(data.message, '', 'error');\n }\n if (response.status === 403) {\n swal(data.message, '', 'error');\n }\n if (response.status === 401) {\n swal(data.message, 'Please login again', 'error');\n setTimeout(() => {\n window.localStorage.clear();\n }, 3000);\n }\n } else if (values.confirmPassword !== values.newPassword) {\n setErrors({ ...errors, confirmPassword: true });\n }\n setSpinner(false);\n };\n\n return (\n <Box\n onSubmit={handleSubmit}\n component=\"form\"\n style={{ marginTop: '-50px' }}\n noValidate\n autoComplete=\"off\"\n >\n <div className=\"form_input_div\">\n <FormControl sx={{ width: '100%' }} color=\"primary\" variant=\"outlined\">\n <InputLabel\n style={{\n color: errors.newPassword ? '#D10000' : 'grey'\n }}\n htmlFor=\"outlined-adornment-newpassword\"\n >\n New Password\n </InputLabel>\n <OutlinedInput\n id=\"outlined-adornment-newpassword\"\n type={values.showPassword2 ? 'text' : 'password'}\n value={values.newPassword}\n style={{ width: '100%' }}\n onChange={handleChange('newPassword')}\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPassword2}\n onMouseDown={handleMouseDownPassword}\n edge=\"end\"\n >\n {values.showPassword2 ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </InputAdornment>\n }\n label=\"New Password\"\n autoComplete=\"off\"\n error={errors.newPassword}\n />\n {errors.newPassword && (\n <FormHelperText error id=\"accountId-error\">\n {values.newPassword.length === 0\n ? 'Password field is required.'\n : 'Password must be at least 6 characters long.'}\n </FormHelperText>\n )}\n </FormControl>\n </div>\n <div className=\"form_input_div\">\n <FormControl sx={{ width: '100%' }} color=\"primary\" variant=\"outlined\">\n <InputLabel\n style={{\n color: errors.confirmPassword ? '#D10000' : 'grey'\n }}\n htmlFor=\"outlined-adornment-confirm-password\"\n >\n Confirm Password\n </InputLabel>\n <OutlinedInput\n id=\"outlined-adornment-confirm-password\"\n type={values.showPassword3 ? 'text' : 'password'}\n value={values.confirmPassword}\n style={{ width: '100%' }}\n onChange={handleChange('confirmPassword')}\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPassword3}\n onMouseDown={handleMouseDownPassword}\n edge=\"end\"\n >\n {values.showPassword3 ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </InputAdornment>\n }\n label=\"Confirm Password\"\n autoComplete=\"off\"\n error={errors.confirmPassword}\n />\n {errors.confirmPassword && (\n <FormHelperText error id=\"accountId-error\">\n {values.confirmPassword.length === 0\n ? 'Password field is required.'\n : 'Confirm password does not match with new password.'}\n </FormHelperText>\n )}\n </FormControl>\n </div>\n <div\n style={{\n display: 'flex',\n width: '100%',\n justifyContent: 'center',\n marginTop: '15px'\n }}\n >\n {spinner ? (\n <CircularProgress />\n ) : (\n <Button style={{ width: '100%', minHeight: '45px' }} variant=\"contained\" type=\"submit\">\n Change Password\n </Button>\n )}\n </div>\n </Box>\n );\n}\n","import { Link as RouterLink } from 'react-router-dom';\nimport { styled } from '@mui/material/styles';\nimport Card from '@mui/material/Card';\nimport Typography from '@mui/material/Typography';\nimport Stack from '@mui/material/Stack';\nimport Link from '@mui/material/Link';\nimport Container from '@mui/material/Container';\nimport AuthLayout from '../layouts/AuthLayout';\nimport Page from '../components/Page';\nimport { MHidden } from '../components/@material-extend';\nimport ForgotPasswordForm from '../components/authentication/login/ForgotPasswordForm';\n\nconst RootStyle = styled(Page)(({ theme }) => ({\n [theme.breakpoints.up('md')]: {\n display: 'flex'\n }\n}));\n\nconst SectionStyle = styled(Card)(({ theme }) => ({\n width: '100%',\n maxWidth: 464,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n margin: theme.spacing(2, 0, 2, 2)\n}));\n\nconst ContentStyle = styled('div')(({ theme }) => ({\n maxWidth: 480,\n margin: 'auto',\n display: 'flex',\n minHeight: '100vh',\n flexDirection: 'column',\n justifyContent: 'center',\n padding: theme.spacing(12, 0)\n}));\n\nexport default function ForgotPassword() {\n return (\n <RootStyle title=\"Forgot Password | Quiteclear\">\n <AuthLayout>.</AuthLayout>\n\n <MHidden width=\"mdDown\">\n <SectionStyle>\n <Typography variant=\"h3\" sx={{ px: 5, mt: 10, mb: 5 }}>\n Hi, Welcome Back\n </Typography>\n <Link underline=\"none\" variant=\"subtitle2\" component={RouterLink} to=\"/\">\n <img src=\"/static/illustrations/illustration_login.png\" alt=\"login\" />\n </Link>\n </SectionStyle>\n </MHidden>\n\n <Container maxWidth=\"sm\">\n <ContentStyle>\n <Stack sx={{ mb: 5 }}>\n <Typography variant=\"h4\" gutterBottom>\n Recover your account\n </Typography>\n <Typography sx={{ color: 'text.secondary' }}>Enter your details below.</Typography>\n </Stack>\n\n <ForgotPasswordForm />\n </ContentStyle>\n </Container>\n </RootStyle>\n );\n}\n","import { Navigate, useRoutes } from 'react-router-dom';\nimport DashboardLayout from './layouts/dashboard';\nimport LogoOnlyLayout from './layouts/LogoOnlyLayout';\nimport Login from './pages/Login';\nimport Register from './pages/Register';\nimport Products from './pages/Products';\nimport User from './pages/User';\nimport NotFound from './pages/Page404';\nimport OrderNow from './pages/OrderNow';\nimport ClientDashboard from './pages/ClientsDashboard';\nimport OrderHistory from './pages/OrderHistory';\nimport OrderDetails from './pages/OrderDetails';\nimport AddPatient from './pages/AddPatient';\nimport EditPatient from './pages/EditPatient';\nimport MyProfile from './pages/MyProfile';\nimport ForgotPassword from './pages/ForgotPassword';\n\nexport default function Router() {\n return useRoutes([\n {\n path: '/dashboard',\n element: window.localStorage.getItem('token') ? (\n <DashboardLayout />\n ) : (\n <Navigate to=\"/login\" replace />\n ),\n children: [\n { element: <Navigate to=\"/dashboard/app\" replace /> },\n { path: 'app', element: <ClientDashboard /> },\n { path: 'patients', element: <User /> },\n { path: 'add/patient', element: <AddPatient /> },\n { path: 'edit/patient/:pid', element: <EditPatient /> },\n { path: 'products', element: <Products /> },\n { path: 'order', element: <OrderNow /> },\n { path: 'history', element: <OrderHistory /> },\n { path: 'profile', element: <MyProfile /> },\n { path: 'history/:id', element: <OrderDetails /> }\n ]\n },\n {\n path: '/',\n element: <LogoOnlyLayout />,\n children: [\n { path: 'login', element: <Login /> },\n { path: 'register', element: <Register /> },\n { path: 'not-found', element: <NotFound /> },\n { path: '404', element: <NotFound /> },\n { path: '/', element: <Navigate to=\"/dashboard\" /> },\n { path: 'forgot-password/:token', element: <ForgotPassword /> },\n { path: '*', element: <Navigate to=\"/404\" /> }\n ]\n },\n { path: '*', element: <Navigate to=\"/404\" replace /> }\n ]);\n}\n","// ----------------------------------------------------------------------\n\nconst shape = {\n borderRadius: 8,\n borderRadiusSm: 12,\n borderRadiusMd: 16\n};\n\nexport default shape;\n","import { alpha } from '@mui/material/styles';\n\n// ----------------------------------------------------------------------\n\nfunction createGradient(color1, color2) {\n return `linear-gradient(to bottom, ${color1}, ${color2})`;\n}\n\n// SETUP COLORS\nconst GREY = {\n 0: '#FFFFFF',\n 100: '#F9FAFB',\n 200: '#F4F6F8',\n 300: '#DFE3E8',\n 400: '#C4CDD5',\n 500: '#919EAB',\n 600: '#637381',\n 700: '#454F5B',\n 800: '#212B36',\n 900: '#161C24',\n 500_8: alpha('#919EAB', 0.08),\n 500_12: alpha('#919EAB', 0.12),\n 500_16: alpha('#919EAB', 0.16),\n 500_24: alpha('#919EAB', 0.24),\n 500_32: alpha('#919EAB', 0.32),\n 500_48: alpha('#919EAB', 0.48),\n 500_56: alpha('#919EAB', 0.56),\n 500_80: alpha('#919EAB', 0.8)\n};\n\nconst PRIMARY = {\n lighter: '#faedc8',\n light: '#e5d05b',\n main: '#d9c300',\n dark: '#7b6f00',\n darker: '#003f52',\n contrastText: '#fff'\n};\nconst SECONDARY = {\n lighter: '#D6E4FF',\n light: '#84A9FF',\n main: '#3366FF',\n dark: '#1939B7',\n darker: '#091A7A',\n contrastText: '#fff'\n};\nconst INFO = {\n lighter: '#D0F2FF',\n light: '#74CAFF',\n main: '#1890FF',\n dark: '#0C53B7',\n darker: '#04297A',\n contrastText: '#fff'\n};\nconst SUCCESS = {\n lighter: '#E9FCD4',\n light: '#AAF27F',\n main: '#54D62C',\n dark: '#229A16',\n darker: '#08660D',\n contrastText: GREY[800]\n};\nconst WARNING = {\n lighter: '#FFF7CD',\n light: '#FFE16A',\n main: '#FFC107',\n dark: '#B78103',\n darker: '#7A4F01',\n contrastText: GREY[800]\n};\nconst ERROR = {\n lighter: '#FFE7D9',\n light: '#FFA48D',\n main: '#FF4842',\n dark: '#B72136',\n darker: '#7A0C2E',\n contrastText: '#fff'\n};\n\nconst GRADIENTS = {\n primary: createGradient(PRIMARY.light, PRIMARY.main),\n info: createGradient(INFO.light, INFO.main),\n success: createGradient(SUCCESS.light, SUCCESS.main),\n warning: createGradient(WARNING.light, WARNING.main),\n error: createGradient(ERROR.light, ERROR.main)\n};\n\nconst CHART_COLORS = {\n violet: ['#826AF9', '#9E86FF', '#D0AEFF', '#F7D2FF'],\n blue: ['#2D99FF', '#83CFFF', '#A5F3FF', '#CCFAFF'],\n green: ['#2CD9C5', '#60F1C8', '#A4F7CC', '#C0F2DC'],\n yellow: ['#FFE700', '#FFEF5A', '#FFF7AE', '#FFF3D6'],\n red: ['#FF6C40', '#FF8F6D', '#FFBD98', '#FFF2D4']\n};\n\nconst palette = {\n common: { black: '#000', white: '#fff' },\n primary: { ...PRIMARY },\n secondary: { ...SECONDARY },\n info: { ...INFO },\n success: { ...SUCCESS },\n warning: { ...WARNING },\n error: { ...ERROR },\n grey: GREY,\n gradients: GRADIENTS,\n chart: CHART_COLORS,\n divider: GREY[500_24],\n text: { primary: GREY[800], secondary: GREY[600], disabled: GREY[500] },\n background: { paper: '#fff', default: '#fff', neutral: GREY[200] },\n action: {\n active: GREY[600],\n hover: GREY[500_8],\n selected: GREY[500_16],\n disabled: GREY[500_80],\n disabledBackground: GREY[500_24],\n focus: GREY[500_24],\n hoverOpacity: 0.08,\n disabledOpacity: 0.48\n }\n};\n\nexport default palette;\n","// ----------------------------------------------------------------------\n\nfunction pxToRem(value) {\n return `${value / 16}rem`;\n}\n\nfunction responsiveFontSizes({ sm, md, lg }) {\n return {\n '@media (min-width:600px)': {\n fontSize: pxToRem(sm)\n },\n '@media (min-width:900px)': {\n fontSize: pxToRem(md)\n },\n '@media (min-width:1200px)': {\n fontSize: pxToRem(lg)\n }\n };\n}\n\nconst FONT_PRIMARY = 'Public Sans, sans-serif';\n\nconst typography = {\n fontFamily: FONT_PRIMARY,\n fontWeightRegular: 400,\n fontWeightMedium: 600,\n fontWeightBold: 700,\n h1: {\n fontWeight: 700,\n lineHeight: 80 / 64,\n fontSize: pxToRem(40),\n ...responsiveFontSizes({ sm: 52, md: 58, lg: 64 })\n },\n h2: {\n fontWeight: 700,\n lineHeight: 64 / 48,\n fontSize: pxToRem(32),\n ...responsiveFontSizes({ sm: 40, md: 44, lg: 48 })\n },\n h3: {\n fontWeight: 700,\n lineHeight: 1.5,\n fontSize: pxToRem(24),\n ...responsiveFontSizes({ sm: 26, md: 30, lg: 32 })\n },\n h4: {\n fontWeight: 700,\n lineHeight: 1.5,\n fontSize: pxToRem(20),\n ...responsiveFontSizes({ sm: 20, md: 24, lg: 24 })\n },\n h5: {\n fontWeight: 700,\n lineHeight: 1.5,\n fontSize: pxToRem(18),\n ...responsiveFontSizes({ sm: 19, md: 20, lg: 20 })\n },\n h6: {\n fontWeight: 700,\n lineHeight: 28 / 18,\n fontSize: pxToRem(17),\n ...responsiveFontSizes({ sm: 18, md: 18, lg: 18 })\n },\n subtitle1: {\n fontWeight: 600,\n lineHeight: 1.5,\n fontSize: pxToRem(16)\n },\n subtitle2: {\n fontWeight: 600,\n lineHeight: 22 / 14,\n fontSize: pxToRem(14)\n },\n body1: {\n lineHeight: 1.5,\n fontSize: pxToRem(16)\n },\n body2: {\n lineHeight: 22 / 14,\n fontSize: pxToRem(14)\n },\n caption: {\n lineHeight: 1.5,\n fontSize: pxToRem(12)\n },\n overline: {\n fontWeight: 700,\n lineHeight: 1.5,\n fontSize: pxToRem(12),\n letterSpacing: 1.1,\n textTransform: 'uppercase'\n },\n button: {\n fontWeight: 700,\n lineHeight: 24 / 14,\n fontSize: pxToRem(14),\n textTransform: 'capitalize'\n }\n};\n\nexport default typography;\n","import { merge } from 'lodash';\nimport Card from './Card';\nimport Lists from './Lists';\nimport Paper from './Paper';\nimport Input from './Input';\nimport Button from './Button';\nimport Tooltip from './Tooltip';\nimport Backdrop from './Backdrop';\nimport Typography from './Typography';\nimport IconButton from './IconButton';\nimport Autocomplete from './Autocomplete';\n\n// ----------------------------------------------------------------------\n\nexport default function ComponentsOverrides(theme) {\n return merge(\n Card(theme),\n Lists(theme),\n Paper(theme),\n Input(theme),\n Button(theme),\n Tooltip(theme),\n Backdrop(theme),\n Typography(theme),\n IconButton(theme),\n Autocomplete(theme)\n );\n}\n","// ----------------------------------------------------------------------\n\nexport default function Card(theme) {\n return {\n MuiCard: {\n styleOverrides: {\n root: {\n boxShadow: theme.customShadows.z16,\n borderRadius: theme.shape.borderRadiusMd,\n position: 'relative',\n zIndex: 0 // Fix Safari overflow: hidden with border radius\n }\n }\n },\n MuiCardHeader: {\n defaultProps: {\n titleTypographyProps: { variant: 'h6' },\n subheaderTypographyProps: { variant: 'body2' }\n },\n styleOverrides: {\n root: {\n padding: theme.spacing(3, 3, 0)\n }\n }\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: theme.spacing(3)\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Lists(theme) {\n return {\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n color: 'inherit',\n minWidth: 'auto',\n marginRight: theme.spacing(2)\n }\n }\n },\n MuiListItemAvatar: {\n styleOverrides: {\n root: {\n minWidth: 'auto',\n marginRight: theme.spacing(2)\n }\n }\n },\n MuiListItemText: {\n styleOverrides: {\n root: {\n marginTop: 0,\n marginBottom: 0\n },\n multiline: {\n marginTop: 0,\n marginBottom: 0\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Paper() {\n return {\n MuiPaper: {\n defaultProps: {\n elevation: 0\n },\n\n styleOverrides: {\n root: {\n backgroundImage: 'none'\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Input(theme) {\n return {\n MuiInputBase: {\n styleOverrides: {\n root: {\n '&.Mui-disabled': {\n '& svg': { color: theme.palette.text.disabled }\n }\n },\n input: {\n '&::placeholder': {\n opacity: 1,\n color: theme.palette.text.disabled\n }\n }\n }\n },\n MuiInput: {\n styleOverrides: {\n underline: {\n '&:before': {\n borderBottomColor: theme.palette.grey[500_56]\n }\n }\n }\n },\n MuiFilledInput: {\n styleOverrides: {\n root: {\n backgroundColor: theme.palette.grey[500_12],\n '&:hover': {\n backgroundColor: theme.palette.grey[500_16]\n },\n '&.Mui-focused': {\n backgroundColor: theme.palette.action.focus\n },\n '&.Mui-disabled': {\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n underline: {\n '&:before': {\n borderBottomColor: theme.palette.grey[500_56]\n }\n }\n }\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[500_32]\n },\n '&.Mui-disabled': {\n '& .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.action.disabledBackground\n }\n }\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Button(theme) {\n return {\n MuiButton: {\n styleOverrides: {\n root: {\n '&:hover': {\n boxShadow: 'none'\n }\n },\n sizeLarge: {\n height: 48\n },\n containedInherit: {\n color: theme.palette.grey[800],\n boxShadow: theme.customShadows.z8,\n '&:hover': {\n backgroundColor: theme.palette.grey[400]\n }\n },\n containedPrimary: {\n boxShadow: theme.customShadows.primary\n },\n containedSecondary: {\n boxShadow: theme.customShadows.secondary\n },\n outlinedInherit: {\n border: `1px solid ${theme.palette.grey[500_32]}`,\n '&:hover': {\n backgroundColor: theme.palette.action.hover\n }\n },\n textInherit: {\n '&:hover': {\n backgroundColor: theme.palette.action.hover\n }\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Tooltip(theme) {\n return {\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backgroundColor: theme.palette.grey[800]\n },\n arrow: {\n color: theme.palette.grey[800]\n }\n }\n }\n };\n}\n","import { alpha } from '@mui/material/styles';\n\n// ----------------------------------------------------------------------\n\nexport default function Backdrop(theme) {\n const varLow = alpha(theme.palette.grey[900], 0.48);\n const varHigh = alpha(theme.palette.grey[900], 1);\n\n return {\n MuiBackdrop: {\n styleOverrides: {\n root: {\n background: [\n `rgb(22,28,36)`,\n `-moz-linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`,\n `-webkit-linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`,\n `linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`\n ],\n '&.MuiBackdrop-invisible': {\n background: 'transparent'\n }\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Typography(theme) {\n return {\n MuiTypography: {\n styleOverrides: {\n paragraph: {\n marginBottom: theme.spacing(2)\n },\n gutterBottom: {\n marginBottom: theme.spacing(1)\n }\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function IconButton(theme) {\n return {\n MuiIconButton: {\n variants: [\n {\n props: { color: 'default' },\n style: {\n '&:hover': { backgroundColor: theme.palette.action.hover }\n }\n },\n {\n props: { color: 'inherit' },\n style: {\n '&:hover': { backgroundColor: theme.palette.action.hover }\n }\n }\n ],\n\n styleOverrides: {\n root: {}\n }\n }\n };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Autocomplete(theme) {\n return {\n MuiAutocomplete: {\n styleOverrides: {\n paper: {\n boxShadow: theme.customShadows.z20\n }\n }\n }\n };\n}\n","// material\nimport { alpha } from '@mui/material/styles';\nimport palette from './palette';\n\n// ----------------------------------------------------------------------\n\nconst LIGHT_MODE = palette.grey[500];\n\nconst createShadow = (color) => {\n const transparent1 = alpha(color, 0.2);\n const transparent2 = alpha(color, 0.14);\n const transparent3 = alpha(color, 0.12);\n return [\n 'none',\n `0px 2px 1px -1px ${transparent1},0px 1px 1px 0px ${transparent2},0px 1px 3px 0px ${transparent3}`,\n `0px 3px 1px -2px ${transparent1},0px 2px 2px 0px ${transparent2},0px 1px 5px 0px ${transparent3}`,\n `0px 3px 3px -2px ${transparent1},0px 3px 4px 0px ${transparent2},0px 1px 8px 0px ${transparent3}`,\n `0px 2px 4px -1px ${transparent1},0px 4px 5px 0px ${transparent2},0px 1px 10px 0px ${transparent3}`,\n `0px 3px 5px -1px ${transparent1},0px 5px 8px 0px ${transparent2},0px 1px 14px 0px ${transparent3}`,\n `0px 3px 5px -1px ${transparent1},0px 6px 10px 0px ${transparent2},0px 1px 18px 0px ${transparent3}`,\n `0px 4px 5px -2px ${transparent1},0px 7px 10px 1px ${transparent2},0px 2px 16px 1px ${transparent3}`,\n `0px 5px 5px -3px ${transparent1},0px 8px 10px 1px ${transparent2},0px 3px 14px 2px ${transparent3}`,\n `0px 5px 6px -3px ${transparent1},0px 9px 12px 1px ${transparent2},0px 3px 16px 2px ${transparent3}`,\n `0px 6px 6px -3px ${transparent1},0px 10px 14px 1px ${transparent2},0px 4px 18px 3px ${transparent3}`,\n `0px 6px 7px -4px ${transparent1},0px 11px 15px 1px ${transparent2},0px 4px 20px 3px ${transparent3}`,\n `0px 7px 8px -4px ${transparent1},0px 12px 17px 2px ${transparent2},0px 5px 22px 4px ${transparent3}`,\n `0px 7px 8px -4px ${transparent1},0px 13px 19px 2px ${transparent2},0px 5px 24px 4px ${transparent3}`,\n `0px 7px 9px -4px ${transparent1},0px 14px 21px 2px ${transparent2},0px 5px 26px 4px ${transparent3}`,\n `0px 8px 9px -5px ${transparent1},0px 15px 22px 2px ${transparent2},0px 6px 28px 5px ${transparent3}`,\n `0px 8px 10px -5px ${transparent1},0px 16px 24px 2px ${transparent2},0px 6px 30px 5px ${transparent3}`,\n `0px 8px 11px -5px ${transparent1},0px 17px 26px 2px ${transparent2},0px 6px 32px 5px ${transparent3}`,\n `0px 9px 11px -5px ${transparent1},0px 18px 28px 2px ${transparent2},0px 7px 34px 6px ${transparent3}`,\n `0px 9px 12px -6px ${transparent1},0px 19px 29px 2px ${transparent2},0px 7px 36px 6px ${transparent3}`,\n `0px 10px 13px -6px ${transparent1},0px 20px 31px 3px ${transparent2},0px 8px 38px 7px ${transparent3}`,\n `0px 10px 13px -6px ${transparent1},0px 21px 33px 3px ${transparent2},0px 8px 40px 7px ${transparent3}`,\n `0px 10px 14px -6px ${transparent1},0px 22px 35px 3px ${transparent2},0px 8px 42px 7px ${transparent3}`,\n `0px 11px 14px -7px ${transparent1},0px 23px 36px 3px ${transparent2},0px 9px 44px 8px ${transparent3}`,\n `0px 11px 15px -7px ${transparent1},0px 24px 38px 3px ${transparent2},0px 9px 46px 8px ${transparent3}`\n ];\n};\n\nconst createCustomShadow = (color) => {\n const transparent = alpha(color, 0.24);\n\n return {\n z1: `0 1px 2px 0 ${transparent}`,\n z8: `0 8px 16px 0 ${transparent}`,\n z12: `0 0 2px 0 ${transparent}, 0 12px 24px 0 ${transparent}`,\n z16: `0 0 2px 0 ${transparent}, 0 16px 32px -4px ${transparent}`,\n z20: `0 0 2px 0 ${transparent}, 0 20px 40px -4px ${transparent}`,\n z24: `0 0 4px 0 ${transparent}, 0 24px 48px 0 ${transparent}`,\n primary: `0 8px 16px 0 ${alpha(palette.primary.main, 0.24)}`,\n secondary: `0 8px 16px 0 ${alpha(palette.secondary.main, 0.24)}`,\n info: `0 8px 16px 0 ${alpha(palette.info.main, 0.24)}`,\n success: `0 8px 16px 0 ${alpha(palette.success.main, 0.24)}`,\n warning: `0 8px 16px 0 ${alpha(palette.warning.main, 0.24)}`,\n error: `0 8px 16px 0 ${alpha(palette.error.main, 0.24)}`\n };\n};\n\nexport const customShadows = createCustomShadow(LIGHT_MODE);\n\nconst shadows = createShadow(LIGHT_MODE);\n\nexport default shadows;\n","import PropTypes from 'prop-types';\nimport { useMemo } from 'react';\n// material\nimport { CssBaseline } from '@mui/material';\nimport { ThemeProvider, createTheme, StyledEngineProvider } from '@mui/material/styles';\n//\nimport shape from './shape';\nimport palette from './palette';\nimport typography from './typography';\nimport componentsOverride from './overrides';\nimport shadows, { customShadows } from './shadows';\n\n// ----------------------------------------------------------------------\n\nThemeConfig.propTypes = {\n children: PropTypes.node\n};\n\nexport default function ThemeConfig({ children }) {\n const themeOptions = useMemo(\n () => ({\n palette,\n shape,\n typography,\n shadows,\n customShadows\n }),\n []\n );\n\n const theme = createTheme(themeOptions);\n theme.components = componentsOverride(theme);\n\n return (\n <StyledEngineProvider injectFirst>\n <ThemeProvider theme={theme}>\n <CssBaseline />\n {children}\n </ThemeProvider>\n </StyledEngineProvider>\n );\n}\n","// material\nimport { useTheme } from '@mui/material/styles';\nimport { GlobalStyles as GlobalThemeStyles } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nexport default function GlobalStyles() {\n const theme = useTheme();\n\n return (\n <GlobalThemeStyles\n styles={{\n '*': {\n margin: 0,\n padding: 0,\n boxSizing: 'border-box'\n },\n html: {\n width: '100%',\n height: '100%',\n WebkitOverflowScrolling: 'touch'\n },\n body: {\n width: '100%',\n height: '100%'\n },\n '#root': {\n width: '100%',\n height: '100%'\n },\n input: {\n '&[type=number]': {\n MozAppearance: 'textfield',\n '&::-webkit-outer-spin-button': {\n margin: 0,\n WebkitAppearance: 'none'\n },\n '&::-webkit-inner-spin-button': {\n margin: 0,\n WebkitAppearance: 'none'\n }\n }\n },\n textarea: {\n '&::-webkit-input-placeholder': {\n color: theme.palette.text.disabled\n },\n '&::-moz-placeholder': {\n opacity: 1,\n color: theme.palette.text.disabled\n },\n '&:-ms-input-placeholder': {\n color: theme.palette.text.disabled\n },\n '&::placeholder': {\n color: theme.palette.text.disabled\n }\n },\n img: { display: 'block', maxWidth: '100%' },\n\n // Lazy Load Img\n '.blur-up': {\n WebkitFilter: 'blur(5px)',\n filter: 'blur(5px)',\n transition: 'filter 400ms, -webkit-filter 400ms'\n },\n '.blur-up.lazyloaded ': {\n WebkitFilter: 'blur(0)',\n filter: 'blur(0)'\n }\n }}\n />\n );\n}\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// ----------------------------------------------------------------------\n\nexport default function ScrollToTop() {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n}\n","// material\nimport { alpha, useTheme } from '@mui/material/styles';\nimport { GlobalStyles } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nexport function BaseOptionChartStyle() {\n const theme = useTheme();\n\n const background = {\n backdropFilter: 'blur(6px)',\n WebkitBackdropFilter: 'blur(6px)', // Fix on Mobile\n backgroundColor: alpha(theme.palette.background.default, 0.72)\n };\n\n return (\n <GlobalStyles\n styles={{\n '&.apexcharts-canvas': {\n // Tooltip\n '.apexcharts-xaxistooltip': {\n ...background,\n border: 0,\n boxShadow: theme.customShadows.z24,\n color: theme.palette.text.primary,\n borderRadius: theme.shape.borderRadiusSm,\n '&:before': { borderBottomColor: 'transparent' },\n '&:after': { borderBottomColor: alpha(theme.palette.background.default, 0.72) }\n },\n '.apexcharts-tooltip.apexcharts-theme-light': {\n ...background,\n border: 0,\n boxShadow: theme.customShadows.z24,\n borderRadius: theme.shape.borderRadiusSm,\n '& .apexcharts-tooltip-title': {\n border: 0,\n textAlign: 'center',\n fontWeight: theme.typography.fontWeightBold,\n backgroundColor: theme.palette.grey[500_16],\n color: theme.palette.text[theme.palette.mode === 'light' ? 'secondary' : 'primary']\n }\n },\n // Legend\n '.apexcharts-legend': {\n padding: 0\n },\n '.apexcharts-legend-series': {\n display: 'flex !important',\n alignItems: 'center'\n },\n '.apexcharts-legend-marker': {\n marginRight: 8\n },\n '.apexcharts-legend-text': {\n lineHeight: '18px',\n textTransform: 'capitalize'\n }\n }\n }}\n />\n );\n}\n\nexport default function BaseOptionChart() {\n const theme = useTheme();\n\n const LABEL_TOTAL = {\n show: true,\n label: 'Total',\n color: theme.palette.text.secondary,\n ...theme.typography.subtitle2\n };\n\n const LABEL_VALUE = {\n offsetY: 8,\n color: theme.palette.text.primary,\n ...theme.typography.h3\n };\n\n return {\n // Colors\n colors: [\n theme.palette.primary.main,\n theme.palette.chart.yellow[0],\n theme.palette.chart.blue[0],\n theme.palette.chart.violet[0],\n theme.palette.chart.green[0],\n theme.palette.chart.red[0]\n ],\n\n // Chart\n chart: {\n toolbar: { show: false },\n zoom: { enabled: false },\n // animations: { enabled: false },\n foreColor: theme.palette.text.disabled,\n fontFamily: theme.typography.fontFamily\n },\n\n // States\n states: {\n hover: {\n filter: {\n type: 'lighten',\n value: 0.04\n }\n },\n active: {\n filter: {\n type: 'darken',\n value: 0.88\n }\n }\n },\n\n // Fill\n fill: {\n opacity: 1,\n gradient: {\n type: 'vertical',\n shadeIntensity: 0,\n opacityFrom: 0.4,\n opacityTo: 0,\n stops: [0, 100]\n }\n },\n\n // Datalabels\n dataLabels: { enabled: false },\n\n // Stroke\n stroke: {\n width: 3,\n curve: 'smooth',\n lineCap: 'round'\n },\n\n // Grid\n grid: {\n strokeDashArray: 3,\n borderColor: theme.palette.divider\n },\n\n // Xaxis\n xaxis: {\n axisBorder: { show: false },\n axisTicks: { show: false }\n },\n\n // Markers\n markers: {\n size: 0,\n strokeColors: theme.palette.background.paper\n },\n\n // Tooltip\n tooltip: {\n x: {\n show: false\n }\n },\n\n // Legend\n legend: {\n show: true,\n fontSize: 13,\n position: 'top',\n horizontalAlign: 'right',\n markers: {\n radius: 12\n },\n fontWeight: 500,\n itemMargin: { horizontal: 12 },\n labels: {\n colors: theme.palette.text.primary\n }\n },\n\n // plotOptions\n plotOptions: {\n // Bar\n bar: {\n columnWidth: '28%',\n borderRadius: 4\n },\n // Pie + Donut\n pie: {\n donut: {\n labels: {\n show: true,\n value: LABEL_VALUE,\n total: LABEL_TOTAL\n }\n }\n },\n // Radialbar\n radialBar: {\n track: {\n strokeWidth: '100%',\n background: theme.palette.grey[500_16]\n },\n dataLabels: {\n value: LABEL_VALUE,\n total: LABEL_TOTAL\n }\n },\n // Radar\n radar: {\n polygons: {\n fill: { colors: ['transparent'] },\n strokeColors: theme.palette.divider,\n connectorColors: theme.palette.divider\n }\n },\n // polarArea\n polarArea: {\n rings: {\n strokeColor: theme.palette.divider\n },\n spokes: {\n connectorColors: theme.palette.divider\n }\n }\n },\n\n // Responsive\n responsive: [\n {\n // sm\n breakpoint: theme.breakpoints.values.sm,\n options: {\n plotOptions: { bar: { columnWidth: '40%' } }\n }\n },\n {\n // md\n breakpoint: theme.breakpoints.values.md,\n options: {\n plotOptions: { bar: { columnWidth: '32%' } }\n }\n }\n ]\n };\n}\n","// routes\nimport Router from './routes';\n// theme\nimport ThemeConfig from './theme';\nimport GlobalStyles from './theme/globalStyles';\n// components\nimport ScrollToTop from './components/ScrollToTop';\nimport { BaseOptionChartStyle } from './components/charts/BaseOptionChart';\n\n// ----------------------------------------------------------------------\n\nexport default function App() {\n return (\n <ThemeConfig>\n <ScrollToTop />\n <GlobalStyles />\n <BaseOptionChartStyle />\n <Router />\n </ThemeConfig>\n );\n}\n","/* eslint-disable */\n/* @ts-nocheck */\n\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log('This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA');\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator\n .serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log('New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.');\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator\n .serviceWorker\n .ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","// scroll bar\nimport 'simplebar/src/simplebar.css';\n\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { HelmetProvider } from 'react-helmet-async';\n\n//\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport reportWebVitals from './reportWebVitals';\n\n// ----------------------------------------------------------------------\n\nReactDOM.render(\n <HelmetProvider>\n <BrowserRouter>\n <App />\n </BrowserRouter>\n </HelmetProvider>,\n document.getElementById('root')\n);\n\n// If you want to enable client cache, register instead.\nserviceWorker.unregister();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}