{"version":3,"file":"static/js/main.b2eac073.js","mappings":"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","sources":["components/styles.js","components/Layout/styles.js","components/Header/styles.js","components/Wrappers/Wrappers.js","context/LayoutContext.js","context/mock.js","config.js","context/UserContext.js","common/helpers.js","pages/order/components/InvoicingDelivery.js","pages/order/helpers/form.js","context/OrderContext.js","components/Header/Header.js","components/Sidebar/styles.js","components/Sidebar/components/SidebarLink/styles.js","components/Sidebar/components/Dot.js","components/Chat/Chat.js","components/Sidebar/components/SidebarLink/SidebarLink.js","components/Sidebar/Sidebar.js","pages/dashboard/styles.js","pages/dashboard/Dashboard.js","components/Widget/styles.js","components/Widget/Widget.js","pages/order/styles.js","pages/order/components/Breadcrumb.js","pages/order/components/FormFooter.js","pages/order/components/TreatmentPlan.js","pages/order/components/CaseAttributes.js","pages/order/components/CaseDesign.js","pages/order/components/CaseMethod.js","components/Notification/styles.js","components/Notification/Notification.js","pages/order/components/FileAttachment.js","pages/order/components/OrderConfirmation.js","pages/order/AddOrder.js","pages/order/RefineOrder.js","pages/order/helpers/statuses.js","pages/order/ViewOrder.js","pages/order/OrderList.js","pages/contact/styles.js","pages/contact/ContactUs.js","pages/download/styles.js","pages/download/Download.js","components/Sidebar/SidebarStructure.js","components/BreadCrumbs/index.js","components/Layout/Layout.js","pages/error/styles.js","pages/error/Error.js","pages/login/styles.js","pages/login/Login.js","pages/reset/styles.js","pages/reset/Reset.js","pages/treatment-plan/styles.js","pages/treatment-plan/TreatmentPlan.js","components/App.js","serviceWorker.js","themes/default.js","themes/index.js","context/ThemeContext.js","index.js"],"sourcesContent":["import { makeStyles } from '@material-ui/styles'\nimport tinycolor from 'tinycolor2'\n\nexport default makeStyles(theme => ({\n layoutContainer: {\n height: 200,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginTop: theme.spacing(2),\n border: '1px dashed',\n borderColor: theme.palette.primary.main,\n position: 'relative',\n },\n layoutText: {\n color: tinycolor(theme.palette.background.light)\n .darken()\n .toHexString(),\n },\n layoutButtonsRow: {\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n },\n layoutButton: {\n backgroundColor: theme.palette.background.light,\n width: 125,\n height: 50,\n outline: 'none',\n border: 'none',\n },\n layoutButtonActive: {\n backgroundColor: tinycolor(theme.palette.background.light)\n .darken()\n .toHexString(),\n },\n buttonsContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n marginTop: theme.spacing(2),\n },\n notificationCallButton: {\n color: 'white',\n marginBottom: theme.spacing(1),\n textTransform: 'none',\n },\n codeContainer: {\n display: 'flex',\n flexDirection: 'column',\n marginTop: theme.spacing(2),\n },\n codeComponent: {\n flexGrow: 1,\n },\n notificationItem: {\n marginTop: theme.spacing(2),\n },\n notificationCloseButton: {\n right: theme.spacing(2),\n },\n toastsContainer: {\n marginTop: theme.spacing(9),\n right: 0,\n boxShadow: 'none',\n '& div': {\n display: 'flex',\n alignItems: 'center',\n boxShadow: 'none',\n overflow: 'visible',\n },\n '& p': {\n paddingRight: 52,\n },\n },\n progress: {\n visibility: 'hidden',\n },\n notification: {\n display: 'flex',\n alignItems: 'center',\n background: 'transparent',\n boxShadow: 'none',\n overflow: 'visible',\n },\n}))\n","import { makeStyles } from '@material-ui/styles'\n\nexport default makeStyles(theme => ({\n root: {\n display: 'flex',\n maxWidth: '100vw',\n overflowX: 'hidden',\n },\n content: {\n flexGrow: 1,\n padding: 38,\n width: `calc(100vw - 240px)`,\n minHeight: '100vh',\n },\n contentShift: {\n width: `calc(100vw - ${240 + theme.spacing(6)}px)`,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n fakeToolbar: {\n ...theme.mixins.toolbar,\n height: '80px'\n },\n link: {\n marginRight: theme.spacing(2),\n },\n defaultRadio: {\n color: '#536DFE',\n '&.MuiRadio-colorSecondary.Mui-checked': {\n color: '#536DFE',\n },\n },\n successRadio: {\n color: '#23a075',\n '&.MuiRadio-colorSecondary.Mui-checked': {\n color: '#23a075',\n },\n },\n secondaryRadio: {\n color: '#FF5C93',\n '&.MuiRadio-colorSecondary.Mui-checked': {\n color: '#FF5C93',\n },\n },\n warningRadio: {\n color: '#FFC260',\n '&.MuiRadio-colorSecondary.Mui-checked': {\n color: '#FFC260',\n },\n },\n infoRadio: {\n color: '#9013FE',\n '&.MuiRadio-colorSecondary.Mui-checked': {\n color: '#9013FE',\n },\n },\n button: {\n boxShadow: theme.customShadows.widget,\n textTransform: 'none',\n '&:active': {\n boxShadow: theme.customShadows.widgetWide,\n },\n },\n ecommerceIcon: {\n color: '#6E6E6E',\n },\n calendarIcon: {\n color: theme.palette.primary.main,\n marginRight: 14,\n },\n margin: {\n marginBottom: 24,\n },\n changeThemeFab: {\n position: 'fixed',\n top: theme.spacing(15),\n right: 0,\n zIndex: 1,\n borderRadius: 0,\n borderTopLeftRadius: '50%',\n borderBottomLeftRadius: '50%',\n },\n navPadding: {\n paddingTop: `${theme.spacing(1)}px !important`,\n paddingBottom: `6px !important`,\n },\n date: {\n marginRight: 38,\n color: theme.palette.type === 'dark' ? '#D6D6D6' : '#4A494A',\n },\n}))\n","import { makeStyles } from '@material-ui/styles'\nimport { alpha } from '@material-ui/core/styles/colorManipulator'\n\nexport default makeStyles(theme => ({\n logotype: {\n color: theme.palette.type === 'dark' ? theme.palette.primary.main : 'white',\n marginLeft: theme.spacing(2.5),\n marginRight: theme.spacing(2.5),\n fontWeight: 500,\n fontSize: 18,\n whiteSpace: 'nowrap',\n [theme.breakpoints.down('xs')]: {\n display: 'none',\n },\n },\n appBar: {\n width: '100%',\n zIndex: theme.zIndex.drawer + 1,\n transition: theme.transitions.create(['margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n },\n toolbar: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n minHeight: '80px'\n },\n hide: {\n display: 'none',\n },\n grow: {\n flexGrow: 1,\n },\n search: {\n position: 'relative',\n borderRadius: 25,\n paddingLeft: theme.spacing(2.5),\n width: 36,\n backgroundColor: alpha(theme.palette.common.black, 0),\n transition: theme.transitions.create(['background-color', 'width']),\n '&:hover': {\n cursor: 'pointer',\n backgroundColor: alpha(theme.palette.common.black, 0.08),\n },\n },\n searchFocused: {\n backgroundColor: alpha(theme.palette.common.black, 0.08),\n width: '100%',\n [theme.breakpoints.up('md')]: {\n width: 250,\n },\n },\n searchIcon: {\n width: 36,\n right: 0,\n height: '100%',\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: theme.transitions.create('right'),\n '&:hover': {\n cursor: 'pointer',\n },\n },\n searchIconOpened: {\n right: theme.spacing(1.25),\n },\n inputRoot: {\n color: 'inherit',\n width: '100%',\n },\n inputInput: {\n height: 36,\n padding: 0,\n paddingRight: 36 + theme.spacing(1.25),\n width: '100%',\n },\n messageContent: {\n display: 'flex',\n flexDirection: 'column',\n },\n headerMenu: {\n marginTop: theme.spacing(7),\n },\n headerMenuList: {\n display: 'flex',\n flexDirection: 'column',\n },\n headerMenuItem: {\n '&:hover, &:focus': {\n backgroundColor: theme.palette.primary.main,\n color: 'white',\n },\n },\n headerMenuButton: {\n marginLeft: theme.spacing(2),\n padding: theme.spacing(0.5),\n },\n headerMenuButtonCollapse: {\n marginRight: theme.spacing(2),\n },\n headerIcon: {\n fontSize: 28,\n color: 'rgba(255, 255, 255, 0.35)',\n },\n headerIconCollapse: {\n color: theme.palette.type === 'dark' ? theme.palette.primary.main : 'white',\n },\n profileMenu: {\n minWidth: 265,\n },\n profileMenuUser: {\n display: 'flex',\n flexDirection: 'column',\n padding: theme.spacing(2),\n },\n profileMenuItem: {\n color: theme.palette.text.hint,\n },\n profileMenuIcon: {\n marginRight: theme.spacing(2),\n color: theme.palette.text.hint,\n },\n profileMenuLink: {\n fontSize: 16,\n textDecoration: 'none',\n '&:hover': {\n cursor: 'pointer',\n },\n },\n messageNotification: {\n height: 'auto',\n display: 'flex',\n alignItems: 'center',\n '&:hover, &:focus': {\n backgroundColor: theme.palette.background.light,\n },\n },\n messageNotificationSide: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginRight: theme.spacing(2),\n },\n messageNotificationBodySide: {\n alignItems: 'flex-start',\n marginRight: 0,\n },\n sendMessageButton: {\n margin: theme.spacing(4),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n textTransform: 'none',\n },\n sendButtonIcon: {\n marginLeft: theme.spacing(2),\n },\n headerRightLabel: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n display: 'flex',\n alignItems: 'center',\n },\n headerButton: {\n color: theme.palette.primary,\n backgroundColor: theme.palette.background.light,\n marginRight: theme.spacing(3),\n },\n smileAcademyLogo: {\n width: '12rem',\n marginLeft: theme.spacing(3),\n }\n}))\n","import React from 'react'\nimport {\n withStyles,\n Badge as BadgeBase,\n Typography as TypographyBase,\n Button as ButtonBase,\n Chip as ChipBase,\n Tooltip as TooltipBase,\n Avatar as AvatarBase,\n Paper as PaperBase,\n AppBar as AppBarBase,\n Link as LinkBase,\n CircularProgress as CircularProgressBase,\n LinearProgress as LinearProgressBase,\n Radio as RadioBase,\n} from '@material-ui/core'\nimport { useTheme, makeStyles } from '@material-ui/styles'\nimport classnames from 'classnames'\n\n// styles\nconst useStyles = makeStyles(theme => ({\n badge: {\n fontWeight: 600,\n height: props => {\n if (!props.variant) return 16\n },\n minWidth: props => {\n if (!props.variant) return 16\n },\n },\n}))\n\nfunction Badge({ children, colorBrightness, color, ...props }) {\n const classes = useStyles(props)\n const theme = useTheme()\n const Styled = createStyled({\n badge: {\n backgroundColor: getColor(color, theme, colorBrightness),\n color: 'white',\n },\n })\n\n return (\n \n {styledProps => (\n \n {children}\n \n )}\n \n )\n}\n\nfunction Chip({ colorBrightness, color, ...props }) {\n const theme = useTheme()\n const Styled = createStyled({\n root: {\n backgroundColor: getColor(color, theme, colorBrightness),\n color: 'white',\n },\n })\n\n return (\n \n {styledProps => (\n \n )}\n \n )\n}\n\nfunction Typography({ children, weight, size, colorBrightness, color, block, uppercase, style, ...props }) {\n const theme = useTheme()\n\n return (\n \n {children}\n \n )\n}\n\nfunction Button({ children, color, className, style, ...props }) {\n const useStyles = makeStyles(theme => ({\n root: {\n color: getColor(color, theme),\n },\n contained: {\n backgroundColor: getColor(color, theme),\n boxShadow: theme.customShadows.widget,\n color:\n theme.palette.type === 'dark' && !color\n ? '#000'\n : `${color ? 'white' : theme.palette.text.primary} !important`,\n '&:hover': {\n backgroundColor: getColor(color, theme, 'light'),\n boxShadow: theme.customShadows.widgetWide,\n },\n '&:active': {\n boxShadow: theme.customShadows.widgetWide,\n },\n },\n outlined: {\n color: getColor(color, theme),\n borderColor: getColor(color, theme),\n },\n select: {\n backgroundColor: theme.palette.primary.main,\n color: '#fff',\n },\n }))\n const classes = useStyles()\n\n return (\n \n {children}\n \n )\n}\n\nfunction Avatar({ children, color, colorBrightness, ...props }) {\n const theme = useTheme()\n\n const Styled = createStyled({\n colorDefault: {\n backgroundColor: getColor(color, theme, colorBrightness),\n },\n })\n\n return (\n \n {({ classes }) => (\n \n {children}\n \n )}\n \n )\n}\n\nfunction Tooltip({ children, color, ...props }) {\n const theme = useTheme()\n\n const Styled = createStyled({\n tooltip: {\n backgroundColor: getColor(color, theme),\n color: 'white',\n },\n })\n\n return (\n \n {({ classes }) => (\n \n {children}\n \n )}\n \n )\n}\n\nfunction Paper({ children, color, ...props }) {\n const theme = useTheme()\n\n const Styled = createStyled({\n root: {\n backgroundColor: getColor(color, theme),\n },\n })\n\n return (\n \n {({ classes }) => (\n \n {children}\n \n )}\n \n )\n}\n\nfunction AppBar({ children, color, ...props }) {\n const useStyles = makeStyles(theme => ({\n root: {\n backgroundColor: getColor(color, theme),\n },\n }))\n\n const classes = useStyles()\n\n return (\n \n {children}\n \n )\n}\n\nfunction Link({ children, color, ...props }) {\n const useStyles = makeStyles(theme => ({\n root: {\n color: color ? `${getColor(color, theme)} !important` : theme.palette.text.primary,\n },\n }))\n\n const classes = useStyles()\n\n return (\n \n {children}\n \n )\n}\n\nfunction CircularProgress({ children, color, ...props }) {\n const useStyles = makeStyles(theme => ({\n root: {\n color: color ? `${getColor(color, theme)} !important` : theme.palette.primary.main,\n },\n }))\n\n const classes = useStyles()\n\n return (\n \n {children}\n \n )\n}\n\nfunction LinearProgress({ children, color, ...props }) {\n const theme = useTheme()\n\n const Styled = createStyled({\n root: {\n backgroundColor: getCustomBackgroundColor(color),\n },\n bar: {\n backgroundColor: color ? `${getColor(color, theme)} !important` : theme.palette.primary.main,\n },\n })\n\n return (\n \n {({ classes }) => (\n \n {children}\n \n )}\n \n )\n}\n\nfunction Radio({ children, color, ...props }) {\n const Styled = createStyled({\n root: {\n color: 'green',\n '&$checked': {\n color: 'green',\n },\n },\n checked: {},\n // '&.Mui-checked': {\n // color: theme.palette[color].main\n // },\n // '&:hover': {\n // backgroundColor: `${theme.palette[color].main} !important`,\n // opacity: .1\n // }\n })\n\n return (\n \n {({ classes }) => (\n \n )}\n \n )\n}\n\nexport {\n Badge,\n Typography,\n Button,\n Chip,\n Tooltip,\n Avatar,\n Paper,\n AppBar,\n Link,\n CircularProgress,\n LinearProgress,\n Radio,\n}\n\n// ########################################################################\n\nfunction getColor(color, theme, brightness = 'main') {\n if (color && theme.palette[color] && theme.palette[color][brightness]) {\n return theme.palette[color][brightness]\n } else {\n return color\n }\n}\n\nfunction getCustomBackgroundColor(color) {\n switch (color) {\n case 'primary':\n return 'rgba(83, 109, 254, .3)'\n case 'secondary':\n return 'rgba(255, 198, 208, 0.3)'\n case 'warning':\n return 'rgba(255, 219, 198, 0.3)'\n case 'success':\n return 'rgba(147, 212, 185, 0.3)'\n case 'info':\n return 'rgba(214, 172, 254, 0.3)'\n default:\n return '#C4D4FE'\n }\n}\n\nfunction getFontWeight(style) {\n switch (style) {\n case 'light':\n return 300\n case 'medium':\n return 500\n case 'bold':\n return 600\n default:\n return 400\n }\n}\n\nfunction getFontSize(size, variant = '', theme) {\n let multiplier\n\n switch (size) {\n case 'sm':\n multiplier = 0.8\n break\n case 'md':\n multiplier = 1.5\n break\n case 'xl':\n multiplier = 2\n break\n case 'xxl':\n multiplier = 3\n break\n default:\n multiplier = 1\n break\n }\n\n const defaultSize =\n variant && theme.typography[variant] ? theme.typography[variant].fontSize : theme.typography.fontStyle + 'px'\n\n return `calc(${defaultSize} * ${multiplier})`\n}\n\nfunction createStyled(styles, options) {\n const Styled = function(props) {\n const { children, ...other } = props\n return children(other)\n }\n\n return withStyles(styles, options)(Styled)\n}\n","import React from \"react\";\n\nvar LayoutStateContext = React.createContext();\nvar LayoutDispatchContext = React.createContext();\n\nfunction layoutReducer(state, action) {\n switch (action.type) {\n case \"TOGGLE_SIDEBAR\":\n return { ...state, isSidebarOpened: !state.isSidebarOpened };\n default: {\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n }\n}\n\nfunction LayoutProvider({ children }) {\n var [state, dispatch] = React.useReducer(layoutReducer, {\n isSidebarOpened: true,\n });\n return (\n \n \n {children}\n \n \n );\n}\n\nfunction useLayoutState() {\n var context = React.useContext(LayoutStateContext);\n if (context === undefined) {\n throw new Error(\"useLayoutState must be used within a LayoutProvider\");\n }\n return context;\n}\n\nfunction useLayoutDispatch() {\n var context = React.useContext(LayoutDispatchContext);\n if (context === undefined) {\n throw new Error(\"useLayoutDispatch must be used within a LayoutProvider\");\n }\n return context;\n}\n\nconst toggleSidebar = dispatch => {\n dispatch({\n type: \"TOGGLE_SIDEBAR\"\n });\n};\n\nexport {\n LayoutProvider,\n useLayoutState,\n useLayoutDispatch,\n toggleSidebar,\n LayoutStateContext\n};\n","export const mockUser = {\n username: '76503934-53b3-48ce-b7f8-7da6ca537876',\n pool: {\n userPoolId: 'ap-southeast-2_abcdef',\n clientId: 'jkhde76edg76weg',\n },\n signInUserSession: {\n idToken: {\n jwtToken: 'an_id_token',\n payload: {\n sub: '76503934-53b3-48ce-b7f8-7da6ca537876',\n token_use: 'id',\n 'cognito:groups': ['dental-practice'],\n },\n },\n refreshToken: {\n token: 'a_refresh_token',\n },\n accessToken: {\n jwtToken: 'a_jwt_token',\n payload: {\n sub: '76503934-53b3-48ce-b7f8-7da6ca537876',\n token_use: 'access',\n 'cognito:groups': ['dental-practice'],\n },\n },\n },\n authenticationFlowType: 'USER_SRP_AUTH',\n attributes: {\n sub: '76503934-53b3-48ce-b7f8-7da6ca537876',\n email_verified: true,\n name: 'Carina Heights Dental',\n email: 'admin@smile-academy.com.au',\n },\n practice: {\n practiceId: '76503934-53b3-48ce-b7f8-7da6ca537876',\n name: 'Carina Heights Dental',\n address: '12 eather street, Coorparoo 4152 QLD',\n allowFullArchTreatment: true,\n },\n};\n\nexport const mockOrder = {\n status: 'Needs Approval',\n createdAt: 1598924883029,\n orderId: 'db6e49a0-ec48-11ea-9c56-a3c6b024487e',\n prescriberName: 'Dr John Doe',\n patientName: 'Chris James',\n instructions: 'Instructions for the case',\n trimLine: 'Straight cut at the gingival zenith margin',\n allowIPR: 'Yes',\n allowAttachment: 'No',\n upperMidline: 'Move right',\n lowerMidline: 'Maintain',\n anteriorLeveling: 'Level By Incisal Edges',\n treatmentType: 'Treat 5 to 5',\n links: [\n {\n url: 'http://www.google.com.au',\n type: 'approval',\n token: '123',\n },\n {\n url: 'http://www.apple.com.au',\n type: 'patient',\n token: '456',\n },\n ],\n};\n\nexport const mockFileUpload = {\n signed_link: 'http://mocked_presigned_url',\n key: 'mocked_filekey',\n original_filename: 'mocked_filename',\n};\n\nexport const mockOrdersList = {\n count: 7,\n items: [\n {\n createdAt: 1598924883029,\n orderId: '2c427850-ebf5-11ea-91aa-31381756c164',\n patientName: 'Chris James',\n prescriberName: 'Dr John Doe',\n serialNumber: '200901-114803',\n treatmentType: 'Treat 5 to 5',\n status: 'Waiting For Impression',\n },\n {\n createdAt: 1598402620082,\n orderId: '2f490920-e735-11ea-9477-5bbfd8711a3e',\n patientName: 'Emilien Perico',\n prescriberName: 'Dr John Doe',\n treatmentType: 'Treat 5 to 5',\n serialNumber: '200902-101204',\n status: 'Case Submitted',\n },\n {\n createdAt: 1598959884704,\n orderId: 'aae23a00-ec46-11ea-a63e-b5661439f3a8',\n patientName: 'Chris James',\n prescriberName: 'Dr John Doe',\n serialNumber: '200901-213124',\n treatmentType: 'Treat 5 to 5',\n status: 'Case Needs Approval',\n },\n {\n createdAt: 1598923863133,\n orderId: 'cc5ab0d0-ebf2-11ea-8c4c-67334c09cf5a',\n patientName: 'Chris James',\n prescriberName: 'Dr John Doe',\n serialNumber: '200901-113103',\n treatmentType: 'Treat 5 to 5',\n status: 'Case Redesign',\n },\n {\n createdAt: 1598960825146,\n orderId: 'db6e49a0-ec48-11ea-9c56-a3c6b024487e',\n patientName: 'Chris James',\n prescriberName: 'Dr John Doe',\n serialNumber: '200901-214705',\n treatmentType: 'Treat 5 to 5',\n status: 'Case Approved',\n },\n {\n createdAt: 1598924326573,\n orderId: 'e09605d0-ebf3-11ea-900d-99cf845304ad',\n patientName: 'Chris James',\n prescriberName: 'Dr John Doe',\n serialNumber: '200901-113846',\n treatmentType: 'Treat 5 to 5',\n status: 'Case In Production',\n },\n {\n createdAt: 1598924326593,\n orderId: 'e09605d0-ebf3-11ea-900d-99cf845304ad',\n patientName: 'Chris James',\n prescriberName: 'Dr John Doe',\n serialNumber: '200901-113846',\n treatmentType: 'Treat 5 to 5',\n status: 'Case Shipped',\n },\n {\n createdAt: 1598944326573,\n orderId: 'e09605d0-ebf3-11ea-900d-99cf845304gf',\n patientName: 'Pete Simmons',\n prescriberName: 'Dr Alison James',\n serialNumber: '200901-113823',\n treatmentType: 'Treat 5 to 5',\n status: 'Case In Progress',\n },\n ],\n};\n","import { Auth } from 'aws-amplify';\n\nconst configVariables = {\n termsAndConditionsUrl: 'https://www.smile-academy.com.au/terms-and-conditions',\n contactEmailAddress: 'info@smile-academy.com.au',\n youtubeVideo: 'https://www.youtube.com/watch?v=kwcwJ1_WcFk&ab_channel=SmileAcademy',\n consentFormUrl:\n 'https://smileacademycomau-my.sharepoint.com/:b:/r/personal/aurelien_smile-academy_com_au/Documents/Smile%20Academy/Marketing/Shared%20marketing%20-%20Smile%20Academy/Consent%20form/Smile%20Academy%20-%20Patient%20informed%20consent%20form.pdf?csf=1&web=1&e=vuU13M',\n marketingMaterialUrl:\n 'https://smileacademycomau-my.sharepoint.com/:f:/g/personal/aurelien_smile-academy_com_au/Eh2quvnpaK9Coy_HDU4ivk0BaclXV7AX93kW2IOpSCXrVA?e=lpx8y6',\n pricingUrlAustralia:\n 'https://smileacademycomau-my.sharepoint.com/:b:/g/personal/aurelien_smile-academy_com_au/EfBhUmK-5y9Mhg7M5fUavsQBpOtm4geUd8CwgImVot7acA?e=7eYamh',\n pricingUrlNewZealand:\n 'https://smileacademycomau-my.sharepoint.com/:b:/g/personal/aurelien_smile-academy_com_au/EXRoNQyX5I1PvdeL-z0FU3EBhADboNPITPmmx4FnhKjSeQ?e=r5AsgP',\n // if isBackend is false, data will be mocked on the frontend. If true, if will use this config file to fetch data\n isBackend: process.env.REACT_APP_BACKEND === 'true',\n Auth: {\n email: 'admin@smile-academy.com.au', // used for local sign in only\n password: 'password',\n mandatorySignIn: true,\n region: 'ap-southeast-2',\n userPoolId: process.env.REACT_APP_COGNITO_USER_POOL_ID,\n userPoolWebClientId: process.env.REACT_APP_COGNITO_APP_CLIENT_ID,\n },\n API: {\n endpoints: [\n {\n name: 'dentist-portal-api',\n endpoint: process.env.REACT_APP_API_GATEWAY_URL,\n region: 'ap-southeast-2',\n custom_header: async () => {\n try {\n const session = await Auth.currentSession();\n return { Authorization: session.idToken.jwtToken };\n } catch (error) {\n return;\n }\n },\n },\n ],\n },\n};\n\nexport default configVariables;\n","import React from 'react';\nimport { toast } from 'react-toastify';\nimport { mockUser } from './mock';\nimport { API, Auth } from 'aws-amplify';\n\nimport config from '../../src/config';\n\nvar UserStateContext = React.createContext();\nvar UserDispatchContext = React.createContext();\n\nconst apiName = config.API.endpoints[0].name;\n\nconst isOrthoUser = (data) => {\n const userGroups = data?.signInUserSession?.idToken?.payload['cognito:groups'] || [];\n return RegExp('ortho', 'gi').test(userGroups);\n};\n\n// Use localStorage for isAuthenticated to avoid re-routing after a page refresh\nconst initialData = {\n isLoading: false,\n isAuthenticated: localStorage.getItem('isAuthenticated'),\n isOrtho: false,\n currentUser: null,\n territory: null,\n errorMessage: '',\n};\n\nfunction userReducer(state, { type, payload }) {\n switch (type) {\n case 'AUTH_STARTED':\n return { ...state, isLoading: true, errorMessage: '' };\n case 'LOGIN_SUCCESS':\n return { ...state, currentUser: payload, isLoading: false };\n case 'AUTH_SUCCESS':\n return {\n ...state,\n isAuthenticated: true,\n currentUser: payload,\n isOrtho: isOrthoUser(payload),\n territory: payload.practice?.territory,\n isLoading: false,\n };\n case 'AUTH_ERROR':\n return { ...state, isAuthenticated: false, currentUser: null, isLoading: false, errorMessage: payload };\n case 'RESET_PASSWORD_STARTED':\n return { ...state, isLoading: true, errorMessage: '' };\n case 'RESET_PASSWORD_SUCCESS':\n return { ...state, isLoading: false, errorMessage: '' };\n case 'RESET_PASSWORD_ERROR':\n return { ...state, isLoading: false, errorMessage: payload };\n case 'SIGN_OUT_SUCCESS':\n return { ...initialData, isAuthenticated: localStorage.getItem('isAuthenticated') };\n default: {\n return state;\n }\n }\n}\n\nfunction UserProvider({ children }) {\n var [state, dispatch] = React.useReducer(userReducer, initialData);\n\n return (\n \n {children}\n \n );\n}\n\nfunction useUserState() {\n var context = React.useContext(UserStateContext);\n if (context === undefined) {\n throw new Error('useUserState must be used within a UserProvider');\n }\n return context;\n}\n\nfunction useUserDispatch() {\n var context = React.useContext(UserDispatchContext);\n if (context === undefined) {\n throw new Error('useUserDispatch must be used within a UserProvider');\n }\n return context;\n}\n\n// ###########################################################\n\nconst actions = {\n signIn: (email, password, history) => async (dispatch) => {\n dispatch({ type: 'AUTH_STARTED' });\n if (!config.isBackend) {\n setTimeout(() => {\n localStorage.setItem('isAuthenticated', true);\n actions.getCurrentUser(history)(dispatch);\n }, 1000);\n } else {\n try {\n const user = await Auth.signIn(email, password);\n if (user.challengeName === 'NEW_PASSWORD_REQUIRED') {\n dispatch({ type: 'LOGIN_SUCCESS', payload: user });\n history.push('/password-reset');\n } else {\n localStorage.setItem('isAuthenticated', true);\n actions.getCurrentUser(history)(dispatch);\n }\n } catch (error) {\n console.log('Unable to login', error);\n dispatch({ type: 'AUTH_ERROR', payload: 'Something is wrong with your login or password' });\n }\n }\n },\n\n signOut: (history) => async (dispatch) => {\n if (config.isBackend) Auth.signOut();\n localStorage.removeItem('isAuthenticated');\n dispatch({ type: 'SIGN_OUT_SUCCESS' });\n history.push('/login');\n },\n\n getCurrentUser: (history) => async (dispatch) => {\n if (!config.isBackend) return dispatch({ type: 'AUTH_SUCCESS', payload: mockUser });\n try {\n const [cognitoUser, practice] = await Promise.all([\n Auth.currentAuthenticatedUser(),\n API.get(apiName, '/practice'),\n ]);\n dispatch({ type: 'AUTH_SUCCESS', payload: { ...cognitoUser, practice } });\n } catch (error) {\n console.log('Unable to get current user, signing out');\n actions.signOut(history)(dispatch);\n }\n },\n\n /**\n * Completes the user's new password\n * @param user the CognitoUser object\n * @param password the new password\n */\n completeNewPassword: (user, password, history) => async (dispatch) => {\n if (!config.isBackend || !user) return history.push('/login');\n try {\n dispatch({ type: 'RESET_PASSWORD_STARTED' });\n await Auth.completeNewPassword(user, password, []);\n\n dispatch({ type: 'RESET_PASSWORD_SUCCESS' });\n toast.success('Your password has been updated');\n\n const email = user?.challengeParam?.userAttributes?.email;\n if (!email) return history.push('/login');\n\n await Auth.signIn(email, password);\n localStorage.setItem('isAuthenticated', true);\n actions.getCurrentUser(history)(dispatch);\n } catch (error) {\n console.log('Unable to change password', error);\n dispatch({ type: 'RESET_PASSWORD_ERROR', payload: error.message });\n }\n },\n};\n\nexport { UserProvider, useUserState, useUserDispatch, actions };\n","import { paramCase } from 'change-case';\n\nexport const extractExtensionFrom = (filename) => {\n if (!filename) return null;\n const regex = /(?:\\.([^.]+))?$/;\n return regex.exec(filename)[1];\n};\n\nexport const extractNameFrom = (filename) => {\n if (!filename) return null;\n const regex = /(.+?)(\\.[^.]*$|$)/;\n return regex.exec(filename)[1];\n};\n\n/**\n * Creates a filename for the treatment archive with the following format:\n *\n * - For a new case: /___.zip\n * - For a refinement case: /_refinement___.zip\n *\n * where parent_folder can be:\n * - treatment_plan: when the treatment plan is provided\n * - patient_photos: when traditional impressions are used\n * - not defined: when the treatment is uploaded to full contour (3D Scan and treatment plan not provided)\n */\nexport const getUniqueFilename = (order, fileExtension, uploadToFullContour) => {\n const patient = paramCase(order.patientName);\n const prescriber = paramCase(order.prescriberName);\n const trimLine = order.trimLine.match(/scalloped/i) ? 'scalloped' : 'straight';\n let filename = '';\n if (order.refinement === 'Yes') {\n filename = `${patient}_refinement_${order.previousCaseNumber}_${trimLine}_${order.serialNumber}.${fileExtension}`;\n } else {\n filename = `${patient}_${prescriber}_${trimLine}_${order.serialNumber}.${fileExtension}`;\n }\n\n if (uploadToFullContour) return filename;\n\n const folder = order.provideTreatmentPlan === 'Yes' ? 'treatment_plan' : 'patient_photos';\n return `${folder}/${filename}`;\n};\n\nconst desc = (a, b, orderBy) => {\n if (b[orderBy] < a[orderBy]) return -1;\n if (b[orderBy] > a[orderBy]) return 1;\n return 0;\n};\n\nexport const stableSort = (array, cmp) => {\n const stabilizedThis = array.map((el, index) => [el, index]);\n stabilizedThis.sort((a, b) => {\n const order = cmp(a[0], b[0]);\n if (order !== 0) return order;\n return a[1] - b[1];\n });\n return stabilizedThis.map((el) => el[0]);\n};\n\nexport const getSorting = (order, orderBy) => {\n return order === 'desc' ? (a, b) => desc(a, b, orderBy) : (a, b) => -desc(a, b, orderBy);\n};\n\nexport const deepClone = (obj) => {\n if (obj === null) return null;\n\n let clone = Object.assign({}, obj);\n Object.keys(clone).forEach((key) => (clone[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key]));\n if (Array.isArray(obj)) {\n clone.length = obj.length;\n return Array.from(clone);\n }\n return clone;\n};\n","import React from 'react'\n\n// components\nimport {\n Checkbox,\n Divider,\n FormControl,\n FormControlLabel,\n InputLabel,\n MenuItem,\n Radio,\n RadioGroup,\n Select,\n TextField,\n} from '@material-ui/core'\nimport { Typography } from '../../../components/Wrappers/Wrappers'\n\n//config\nimport config from '../../../config'\n\nimport { invoicingRecipientAttributes, deliveryAddressAttributes } from '../helpers/form'\n\nexport const defaultOption = 'default'\nexport const otherOption = 'other'\n\nconst DeliveryTextField = ({ newOrder, formErrors, attribute, onChange }) => (\n \n)\n\nconst DeliveryFormControl = ({ newOrder, formErrors, attribute, onChange }) => (\n \n \n {attribute.label}\n \n \n {attribute.items.map(item => (\n \n {item}\n \n ))}\n \n \n)\n\nconst Section = ({ title }) => (\n <>\n \n {title}\n \n \n \n)\n\nconst InvoicingSection = ({ newOrder, user, formErrors, onTextFieldChange }) => (\n <>\n
\n \n Select the practice recipient for your invoice\n \n } label={user?.attributes?.name} />\n } label=\"Other\" />\n \n \n\n {newOrder.invoicingOption === otherOption &&\n invoicingRecipientAttributes.map(attr => (\n \n ))}\n \n)\n\nconst DeliverySection = ({ newOrder, user, formErrors, onTextFieldChange }) => (\n <>\n
\n \n Select the delivery address for your order\n \n }\n label={user?.practice?.address || user?.attributes?.name}\n />\n } label=\"Other\" />\n \n \n\n {newOrder.deliveryOption === otherOption &&\n deliveryAddressAttributes.map(attr =>\n attr.items ? (\n \n ) : (\n \n )\n )}\n \n)\n\nconst TermsAndConditions = ({ checkboxValue, checkboxClicked }) => (\n checkboxClicked(!checkboxValue)} />}\n label={\n
\n I have read and I accept the \n \n terms and conditions\n \n from Smile Academy \n
\n }\n style={{ marginTop: 15, marginBottom: 35 }}\n />\n)\n\nconst InvoicingDelivery = ({ user, newOrder, formErrors, onTextFieldChange, termsAccepted, termsClicked }) => (\n <>\n \n \n \n \n)\n\nexport default InvoicingDelivery\n","import { deepClone } from '../../../common/helpers';\nimport moment from 'moment';\nimport { defaultOption, otherOption } from '../components/InvoicingDelivery';\n\nexport const impressionMethod = 'impression';\n\nexport const scanMethod = 'scan';\n\nexport const emptyOrder = () => {\n const serialNumber = moment().format('YYMMDD-HHmmss');\n\n return {\n provideTreatmentPlan: '',\n prescriberName: '',\n patientName: '',\n instructions: '',\n treatmentType: '',\n arches: 'Upper and lower',\n allowIPR: '',\n allowAttachment: '',\n upperMidline: '',\n lowerMidline: '',\n posteriorCrossbite: '',\n anteriorPosteriorRelation: '',\n trimLine: 'Straight cut at the gingival zenith margin',\n retainersRequired: '',\n dentalMonitoring: '',\n serialNumber,\n method: '',\n invoicingOption: defaultOption,\n invoicingRecipient: '',\n deliveryOption: defaultOption,\n deliveryStreetAddress: '',\n deliverySuburb: '',\n deliveryPostcode: '',\n deliveryState: '',\n };\n};\n\nexport const defaultFormStepsTitle = [\n 'Treatment Plan',\n 'Case Attributes',\n 'Case Design',\n '3D Scan / Impression',\n 'Files Attachment',\n 'Invoicing & Delivery',\n 'Order Confirmation',\n];\n\nexport const refinementFormStepsTitle = [\n 'Case Design',\n '3D Scan / Impression',\n 'Files Attachment',\n 'Order Confirmation',\n];\n\n// ======================== Design Attributes ============================\n\nconst designAttributes = [\n {\n id: 'treatmentType',\n label: 'Treatment Type',\n items: [\n '3 to 3 (Canine to Canine)',\n '5 to 5 (2nd Premolar to 2nd Premolar)',\n '7 to 7 (2nd Molar to 2nd Molar)',\n ],\n required: true,\n scope: ['dental'],\n },\n {\n id: 'arches',\n label: 'Arches Selection',\n items: ['Upper and lower', 'Upper only', 'Lower only'],\n required: true,\n scope: ['dental', 'ortho'],\n },\n {\n id: 'allowIPR',\n label: 'Allow IPR',\n items: [\n 'No IPR',\n 'Yes, First Expansion and Proclination then IPR',\n 'Yes, First IPR, try to avoid Expansion and Proclination',\n ],\n required: true,\n scope: ['dental'],\n },\n {\n id: 'allowAttachment',\n label: 'Allow Attachment',\n items: ['Yes', 'No'],\n required: true,\n scope: ['dental'],\n },\n {\n id: 'upperMidline',\n label: 'Upper Midline',\n items: ['Maintain', \"Move to patient's left\", \"Move to patient's right\", 'Improve'],\n required: true,\n scope: ['dental'],\n },\n {\n id: 'lowerMidline',\n label: 'Lower Midline',\n items: ['Maintain', \"Move to patient's left\", \"Move to patient's right\", 'Improve'],\n required: true,\n scope: ['dental'],\n },\n {\n id: 'posteriorCrossbite',\n label: 'Posterior Crossbite Handling',\n items: ['Maintain Posterior Crossbite', 'Correct Premolars', 'Correct Molars', 'N/A'],\n scope: ['dental', '7to7-treatment'],\n },\n {\n id: 'anteriorPosteriorRelation',\n label: 'Anterior Posterior Relation',\n items: [\n 'Maintain Anterior Posterior Relation',\n 'Improve Canine Relationship',\n 'Improve Molar Relationship',\n 'N/A',\n ],\n scope: ['dental', '7to7-treatment'],\n },\n {\n id: 'trimLine',\n label: 'Trim Line',\n items: ['Straight cut at the gingival zenith margin', 'Scalloped margin'],\n scope: ['dental', 'ortho'],\n },\n {\n id: 'retainersRequired',\n label: 'Retainers required (Free of charge)',\n items: [\n { value: 'Yes', displayValue: 'Yes (Order retainers with aligners)' },\n { value: 'No', displayValue: 'No (Order retainers on treatment completion)' },\n ],\n required: true,\n scope: ['dental', 'ortho'],\n },\n {\n id: 'dentalMonitoring',\n label: 'AI Dental Monitoring',\n items: ['Yes', 'No'],\n required: true,\n scope: ['dental', 'ortho'],\n helperText: [\n 'Cost: $199+ɢsᴛ (Includes ScanBox',\n Pro,\n ' and concierge monitoring service by Smile Academy)',\n ],\n },\n];\n\n/**\n * Restrict treatment type input field for refinement order. We can't downgrade a treatment type\n * @param {*} allAttributes a copy of all the design attributes\n * @param {*} order the current order being created\n * @param {*} allowFullArchTreatment does the practice allow full arch treatment\n */\nconst getDesignAttributesForRefinementOrder = (allAttributes, order, allowFullArchTreatment) => {\n // remove modifiers specific to full arch treatment if the treatment type is not full arch\n const isFullArchTreatment = order.treatmentType.match('7 to 7');\n let attributes = isFullArchTreatment\n ? allAttributes\n : allAttributes.filter((attr) => !attr.scope.includes('7to7-treatment'));\n\n attributes.forEach((attr) => {\n if (attr.id === 'treatmentType') {\n // only keep current treatment type and above\n if (order.treatmentType.match('5 to 5')) {\n // remove first element\n attr.items.shift();\n } else if (order.treatmentType.match('7 to 7')) {\n // only keep the last item\n attr.items = attr.items.slice(2);\n }\n\n // remove 7 to 7 treatment option if the practice cannot do full arch treatment\n if (!allowFullArchTreatment) {\n attr.items = attr.items.filter((item) => !item.match('7 to 7'));\n }\n }\n });\n\n // remove Dental Monitoring attribute for refinement orders\n attributes = attributes.filter((attr) => attr.id !== 'dentalMonitoring');\n\n return attributes;\n};\n\n/**\n * Returns the relevant design attributes based on provided treatment plan and full arch treatment capability\n * @param {*} allAttributes a copy of all the design attributes\n * @param {*} order the current order being created\n * @param {*} allowFullArchTreatment does the practice allow full arch treatment\n */\nconst getDesignAttributesForOrder = (allAttributes, order, allowFullArchTreatment) => {\n // remove modifiers specific to orthodontia if the treatment is not provided by the practice but by Smile Academy\n const scope = order.provideTreatmentPlan === 'Yes' ? 'ortho' : 'dental';\n let attributes = allAttributes.filter((attr) => attr.scope.includes(scope));\n\n // remove 7 to 7 treatment option if the practice cannot do full arch treatment\n if (!allowFullArchTreatment) {\n attributes = attributes.map((attr) => {\n if (attr.id === 'treatmentType' && attr.items.length === 3) attr.items.pop();\n return attr;\n });\n }\n\n // remove modifiers specific to full arch treatment if the treatment type is not full arch\n const isFullArchTreatment = order.treatmentType.match('7 to 7');\n if (!isFullArchTreatment) {\n attributes = attributes.filter((attr) => !attr.scope.includes('7to7-treatment'));\n }\n\n return attributes;\n};\n\n/**\n * Returns the input fields for the Case Design form\n * Filter based on whether the case is for a dentist or an ortho dentist\n * Display full arch treatment (7 to 7) only for allowed practices\n */\nexport const caseDesignAttributes = (order, allowFullArchTreatment = false) => {\n // clone with safely copies deeply nested objects/arrays\n const attributesCopy = deepClone(designAttributes);\n\n return order.refinement === 'Yes'\n ? getDesignAttributesForRefinementOrder(attributesCopy, order, allowFullArchTreatment)\n : getDesignAttributesForOrder(attributesCopy, order, allowFullArchTreatment);\n};\n\n// ======================== Invoicing & Delivery ============================\n\nexport const invoicingRecipientAttributes = [\n {\n id: 'invoicingRecipient',\n label: 'Practice Name',\n required: true,\n },\n];\n\nexport const deliveryAddressAttributes = [\n {\n id: 'deliveryStreetAddress',\n label: 'Street Address',\n required: true,\n },\n {\n id: 'deliverySuburb',\n label: 'Suburb',\n required: true,\n },\n {\n id: 'deliveryPostcode',\n label: 'Postcode',\n type: 'number',\n required: true,\n },\n {\n id: 'deliveryState',\n label: 'State/Country',\n required: true,\n items: ['ACT', 'NSW', 'NT', 'QLD', 'SA', 'TAS', 'VIC', 'WA', 'NZ'],\n },\n];\n\n// ======================== Order details ============================\n\n/**\n * Hide these properties in the order details screen\n */\nexport const excludedProperties = ['provideTreatmentPlan', 'filename'];\n\n// ======================== Helpers ============================\n\n/**\n * Clears N/A values from the form values\n */\nexport const sanitizeFormEntry = (formValues, [key, value]) => {\n formValues[key] = value === 'N/A' ? '' : value;\n return formValues;\n};\n\n/**\n * Returns true if the the error fields contains errors\n */\nexport const hasMissingRequiredFields = (errorFields) => Object.values(errorFields).filter((x) => !!x).length !== 0;\n\n/**\n * Finds the required fields that are missing\n */\nexport const findMissingRequiredFields = (formAttributes, order) => {\n const requiredFormAttributes = formAttributes.filter((el) => el.required);\n const requiredFieldErrors = requiredFormAttributes.reduce((errors, attr) => {\n errors[attr.id] = !order[attr.id];\n return errors;\n }, {});\n return requiredFieldErrors;\n};\n\nexport const formatInvoicingAndDelivery = (order, user) => {\n const orderCopy = { ...order };\n const isNewOrder = !order.orderId;\n const { deliveryStreetAddress, deliverySuburb, deliveryPostcode, deliveryState } = orderCopy;\n\n // invoicing\n if (orderCopy.invoicingOption === defaultOption && isNewOrder) {\n orderCopy.invoicingRecipient = user?.attributes?.name;\n }\n delete orderCopy.invoicingOption;\n\n // delivery\n if (orderCopy.deliveryOption === defaultOption && isNewOrder) {\n orderCopy.deliveryAddress = user?.practice?.address || `${user?.attributes?.name} address`;\n } else if (orderCopy.deliveryOption === otherOption || isNewOrder) {\n orderCopy.deliveryAddress = `${deliveryStreetAddress}, ${deliverySuburb} ${deliveryPostcode} ${deliveryState}`;\n }\n\n ['deliveryOption', 'deliveryStreetAddress', 'deliverySuburb', 'deliveryPostcode', 'deliveryState'].forEach(\n (attr) => delete orderCopy[attr]\n );\n\n return orderCopy;\n};\n","import React from 'react';\nimport { toast } from 'react-toastify';\nimport { API } from 'aws-amplify';\nimport axios from 'axios';\nimport config from '../config';\nimport { mockOrder, mockFileUpload, mockOrdersList } from './mock';\nimport { getUniqueFilename, extractExtensionFrom } from '../common/helpers';\nimport { impressionMethod, scanMethod } from '../pages/order/helpers/form';\n\nvar OrderStateContext = React.createContext();\nvar OrderDispatchContext = React.createContext();\n\nconst apiName = config.API.endpoints[0].name;\n\nconst initialData = {\n findLoading: false,\n findError: false,\n fetchLoading: false,\n fetchError: false,\n saveLoading: false,\n saveError: false,\n currentOrder: null,\n fileUploadLoading: false,\n fileUploadError: false,\n fileUpload: null,\n orders: null,\n search: {\n searchInput: '',\n orderStatus: '',\n },\n};\n\nfunction orderReducer(state = initialData, { type, payload }) {\n switch (type) {\n case 'ORDER_RESET_STATE':\n return { ...initialData };\n case 'ORDER_FORM_RESET':\n return { ...state, saveLoading: false, saveError: false, fileUpload: null };\n case 'ORDER_FORM_FIND_STARTED':\n return { ...state, currentOrder: null, findLoading: true, findError: false };\n case 'ORDER_FORM_FIND_SUCCESS':\n return { ...state, currentOrder: payload, findLoading: false };\n case 'ORDER_FORM_FIND_ERROR':\n return { ...state, currentOrder: null, findLoading: false, findError: true };\n case 'ORDER_FORM_SAVE_STARTED':\n return { ...state, saveLoading: true, saveError: false };\n case 'ORDER_FORM_SAVE_SUCCESS':\n return { ...state, saveLoading: false, currentOrder: null, orders: null };\n case 'ORDER_FORM_SAVE_ERROR':\n return { ...state, saveLoading: false, saveError: true };\n case 'ORDER_LIST_FETCH_STARTED':\n return { ...state, fetchLoading: true, fetchError: false };\n case 'ORDER_LIST_FETCH_SUCCESS':\n return { ...state, orders: payload, fetchLoading: false };\n case 'ORDER_LIST_FETCH_ERROR':\n return { ...state, orders: null, fetchLoading: false, fetchError: true };\n case 'ORDER_FORM_FILE_UPLOAD_STARTED':\n return { ...state, fileUploadLoading: true, fileUploadError: false, fileUpload: null };\n case 'ORDER_FORM_FILE_UPLOAD_SUCCESS':\n return { ...state, fileUploadLoading: false, fileUpload: payload };\n case 'ORDER_FORM_FILE_UPLOAD_ERROR':\n return { ...state, fileUploadLoading: false, fileUploadError: true };\n case 'ORDER_FORM_FILE_UPLOAD_DELETE':\n return { ...state, fileUpload: null };\n case 'ORDER_LIST_SEARCH':\n return { ...state, search: payload };\n default:\n return state;\n }\n}\n\nfunction OrderProvider({ children }) {\n var [state, dispatch] = React.useReducer(orderReducer, initialData);\n\n return (\n \n {children}\n \n );\n}\n\nfunction useOrderState() {\n var context = React.useContext(OrderStateContext);\n if (context === undefined) {\n throw new Error('useOrderState must be used within a OrderProvider');\n }\n return context;\n}\n\nfunction useOrderDispatch() {\n var context = React.useContext(OrderDispatchContext);\n if (context === undefined) {\n throw new Error('useOrderDispatch must be used within a OrderProvider');\n }\n return context;\n}\n\nfunction displayError(message, error) {\n console.log(error);\n const errorMsg = error.response?.data?.error || error.message;\n const finalMessage = errorMsg ? `${message}: ${errorMsg}` : message;\n toast.error(finalMessage);\n}\n\n// ###########################################################\n\nconst actions = {\n doResetState: () => async (dispatch) => {\n dispatch({ type: 'ORDER_RESET_STATE' });\n },\n\n doNewForm: () => async (dispatch) => {\n dispatch({ type: 'ORDER_FORM_RESET' });\n },\n\n doFind: (id) => async (dispatch) => {\n if (!config.isBackend) {\n dispatch({ type: 'ORDER_FORM_FIND_STARTED' });\n setTimeout(() => {\n dispatch({ type: 'ORDER_FORM_FIND_SUCCESS', payload: mockOrder });\n }, 1000);\n } else {\n try {\n dispatch({ type: 'ORDER_FORM_FIND_STARTED' });\n const order = await API.get(apiName, `/orders/${id}`);\n dispatch({ type: 'ORDER_FORM_FIND_SUCCESS', payload: order });\n } catch (error) {\n displayError('Unable to find the specified order', error);\n dispatch({ type: 'ORDER_FORM_FIND_ERROR' });\n }\n }\n },\n\n doCreate: (values) => async (dispatch) => {\n if (!config.isBackend) {\n dispatch({ type: 'ORDER_FORM_SAVE_SUCCESS' });\n } else {\n try {\n dispatch({ type: 'ORDER_FORM_SAVE_STARTED' });\n await API.post(apiName, '/orders', { body: values });\n dispatch({ type: 'ORDER_FORM_SAVE_SUCCESS' });\n } catch (error) {\n displayError('Unable to create order', error);\n dispatch({ type: 'ORDER_FORM_SAVE_ERROR' });\n }\n }\n },\n\n doCancel: (orderId, practiceId) => async (dispatch, history) => {\n if (!config.isBackend) {\n dispatch({ type: 'ORDER_FORM_SAVE_SUCCESS' });\n } else {\n try {\n dispatch({ type: 'ORDER_FORM_SAVE_STARTED' });\n await API.post(apiName, `/orders/cancel/${orderId}`, { body: { practiceId: practiceId } });\n dispatch({ type: 'ORDER_FORM_SAVE_SUCCESS' });\n history.push('/app/order/list');\n setTimeout(() => toast.success('Order is now cancelled'), 1000);\n } catch (error) {\n displayError('Unable to cancel order', error);\n dispatch({ type: 'ORDER_FORM_SAVE_ERROR' });\n }\n }\n },\n\n doUploadFile: (file, order) => async (dispatch) => {\n if (!file) {\n console.log('file to upload is undefined');\n dispatch({ type: 'ORDER_FORM_FILE_UPLOAD_ERROR' });\n } else if (!config.isBackend) {\n const res = { ...mockFileUpload };\n delete res.signed_link;\n dispatch({ type: 'ORDER_FORM_FILE_UPLOAD_SUCCESS', payload: { ...res, filename: file.name } });\n } else {\n try {\n dispatch({ type: 'ORDER_FORM_FILE_UPLOAD_STARTED' });\n const mustUploadToFullContour = order.method === scanMethod && order.provideTreatmentPlan !== 'Yes';\n const uploadLinkEndpoint = mustUploadToFullContour ? '/upload-link' : '/orders/upload-link';\n const fileExtension = extractExtensionFrom(file.name);\n const uniqueFilename = getUniqueFilename(order, fileExtension, mustUploadToFullContour);\n // get the upload link for the API\n const uploadLink = await API.post(apiName, uploadLinkEndpoint, {\n headers: { 'Content-Type': 'application/json' },\n body: { filename: uniqueFilename },\n });\n if (uploadLink.data.signed_link !== mockFileUpload.signed_link) {\n // signed_link is not mocked, upload the file to S3 (FullContour or SmileAcademy)\n await axios.put(uploadLink.data.signed_link, file, {\n headers: { 'Content-Type': 'application/zip' },\n });\n }\n delete uploadLink.data.signed_link;\n let payload = { ...uploadLink.data, filename: file.name };\n if (order.provideTreatmentPlan === 'Yes') payload.treatmentPlanFile = uniqueFilename;\n if (order.method === impressionMethod) payload.patientPhotos = uniqueFilename;\n dispatch({ type: 'ORDER_FORM_FILE_UPLOAD_SUCCESS', payload });\n } catch (error) {\n displayError('An error occurred trying to upload the file', error);\n dispatch({ type: 'ORDER_FORM_FILE_UPLOAD_ERROR' });\n }\n }\n },\n\n doDeleteUploadedFile: () => async (dispatch) => {\n dispatch({ type: 'ORDER_FORM_FILE_UPLOAD_DELETE' });\n },\n\n doFetch:\n (filter = null) =>\n async (dispatch) => {\n if (!config.isBackend) {\n dispatch({ type: 'ORDER_LIST_FETCH_STARTED' });\n setTimeout(() => {\n dispatch({ type: 'ORDER_LIST_FETCH_SUCCESS', payload: mockOrdersList });\n }, 1000);\n } else {\n try {\n dispatch({ type: 'ORDER_LIST_FETCH_STARTED' });\n const data = await API.get(apiName, '/orders', { queryStringParameters: filter });\n dispatch({ type: 'ORDER_LIST_FETCH_SUCCESS', payload: data });\n } catch (error) {\n displayError('Unable to find orders', error);\n dispatch({ type: 'ORDER_LIST_FETCH_ERROR' });\n }\n }\n },\n\n doDownloadTreatmentFile: async (practiceId, orderId, token) => {\n if (!practiceId || !orderId) return console.log('practiceId or orderId is undefined');\n if (!config.isBackend) return;\n try {\n const res = await API.post(apiName, '/orders/treatment-plan-link', {\n body: { practiceId, orderId, token },\n });\n if (!res.signed_link) throw new Error('Invalid download link');\n window.open(res.signed_link);\n } catch (error) {\n displayError('An error occurred trying to download the file', error);\n }\n },\n\n doSearchOrders: (search) => (dispatch) => {\n dispatch({ type: 'ORDER_LIST_SEARCH', payload: search });\n },\n};\n\nexport { OrderProvider, useOrderState, useOrderDispatch, actions };\n","import React, { useState, useEffect } from 'react'\nimport { AppBar, Toolbar, IconButton, Button } from '@material-ui/core'\nimport { useTheme } from '@material-ui/styles'\nimport { Menu as MenuIcon, ArrowBack as ArrowBackIcon } from '@material-ui/icons'\nimport classNames from 'classnames'\n\n// styles\nimport useStyles from './styles'\n\n// components\nimport { Typography } from '../Wrappers/Wrappers'\n\nimport smileAcademyLogo from '../../images/full-logo-transparent.png'\n\n// context\nimport { useLayoutState, useLayoutDispatch, toggleSidebar } from '../../context/LayoutContext'\nimport { useUserState, useUserDispatch, actions as userActions } from '../../context/UserContext'\nimport { useOrderDispatch, actions as orderActions } from '../../context/OrderContext'\n\nexport default function Header(props) {\n const classes = useStyles()\n const theme = useTheme()\n\n // global\n const layoutState = useLayoutState()\n const layoutDispatch = useLayoutDispatch()\n const userState = useUserState()\n const userDispatch = useUserDispatch()\n const orderDispatch = useOrderDispatch()\n\n // local\n const [isSmall, setSmall] = useState(false)\n\n const practiceName = userState.currentUser?.attributes?.name || ''\n\n useEffect(function() {\n window.addEventListener('resize', handleWindowWidthChange)\n handleWindowWidthChange()\n return function cleanup() {\n window.removeEventListener('resize', handleWindowWidthChange)\n }\n })\n\n const handleWindowWidthChange = () => {\n var windowWidth = window.innerWidth\n var breakpointWidth = theme.breakpoints.values.md\n var isSmallScreen = windowWidth < breakpointWidth\n setSmall(isSmallScreen)\n }\n\n const handleSignOut = () => {\n userActions.signOut(props.history)(userDispatch)\n orderActions.doResetState()(orderDispatch)\n }\n\n return (\n \n \n toggleSidebar(layoutDispatch)}\n className={classNames(classes.headerMenuButton, classes.headerMenuButtonCollapse)}\n >\n {(!layoutState.isSidebarOpened && isSmall) || (layoutState.isSidebarOpened && !isSmall) ? (\n \n ) : (\n \n )}\n \n \"smileAcademyLogo\"\n
\n \n \n {practiceName}\n \n \n \n \n \n )\n}\n","import { makeStyles } from \"@material-ui/styles\";\n\nconst drawerWidth = 240;\n\nexport default makeStyles(theme => ({\n menuButton: {\n marginLeft: 12,\n marginRight: 36\n },\n hide: {\n display: \"none\"\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n },\n drawerOpen: {\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen\n })\n },\n drawerClose: {\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n }),\n overflowX: \"hidden\",\n width: theme.spacing(7) + 40,\n [theme.breakpoints.down(\"sm\")]: {\n width: drawerWidth\n }\n },\n toolbar: {\n ...theme.mixins.toolbar,\n height: '80px',\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\"\n }\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3)\n },\n sidebarList: {\n marginTop: theme.spacing(1)\n },\n mobileBackButton: {\n marginTop: theme.spacing(0.5),\n marginLeft: theme.spacing(3),\n [theme.breakpoints.only(\"sm\")]: {\n marginTop: theme.spacing(0.625)\n },\n [theme.breakpoints.up(\"md\")]: {\n display: \"none\"\n }\n },\n popover: {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\"\n },\n fab: {\n width: 36,\n height: 34\n },\n noBoxShadow: {\n boxShadow: \"none !important\",\n marginRight: theme.spacing(1)\n },\n buttonLabel: {\n color: \"#fff\"\n },\n input: {\n \"& .MuiInputBase-input\": {\n color: \"#fff\"\n },\n \"& .MuiInput-underline:before\": {\n borderBottom: \"1px solid rgba(255, 255, 255, .45)\"\n }\n },\n chat: {\n width: 45,\n height: 45\n },\n padding: {\n paddingBottom: theme.spacing(2)\n }\n}));\n","import { makeStyles } from \"@material-ui/styles\";\n\nexport default makeStyles(theme => ({\n link: {\n textDecoration: \"none\",\n \"&:hover, &:focus\": {\n backgroundColor: theme.palette.background.default,\n \"& > .MuiSvgIcon-root\": {\n display: \"inline-block\"\n }\n },\n \"&.Mui-focusVisible\": {\n backgroundColor: \"transparent\"\n }\n },\n linkActive: {\n backgroundColor: theme.palette.background.default\n },\n linkNested: {\n paddingLeft: 0,\n \"&:hover, &:focus\": {\n backgroundColor:\n theme.palette.type === \"dark\"\n ? theme.palette.background.light\n : \"#FFFFFF\"\n }\n },\n linkIcon: {\n marginRight: theme.spacing(1),\n color:\n theme.palette.type === \"dark\"\n ? \"#616168 !important\"\n : theme.palette.text.secondary + \"99\",\n transition: theme.transitions.create(\"color\"),\n display: \"flex\",\n justifyContent: \"center\"\n },\n linkIconActive: {\n color: `${theme.palette.primary.main} !important`\n },\n linkText: {\n padding: 0,\n color:\n theme.palette.type === \"dark\"\n ? \"#D6D6D6 !important\"\n : theme.palette.text.secondary + \"CC\",\n transition: theme.transitions.create([\"opacity\", \"color\"]),\n fontSize: 14\n },\n linkTextActive: {\n color: theme.palette.text.primary\n },\n linkTextHidden: {\n opacity: 0\n },\n nestedList: {\n paddingLeft: theme.spacing(2) + 30\n },\n sectionTitle: {\n marginLeft: theme.spacing(4.5),\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(2)\n },\n divider: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n height: 1,\n backgroundColor:\n theme.palette.type === \"dark\" ? \"rgba(151,151,151, .15)\" : \"#D8D8D880\"\n },\n expand: {\n transform: \"rotate(180deg)\"\n },\n expandWrapper: {\n color: theme.palette.text.secondary + \"99\",\n transition: theme.transitions.create(\"transform\"),\n display: props => (props ? \"inline-flex\" : \"none\"),\n marginLeft: 'auto'\n },\n nestedMenu: {\n paddingLeft: 0\n },\n nestedMenuItem: {\n paddingLeft: 0\n }\n}));\n","import React from \"react\";\nimport { makeStyles, useTheme } from \"@material-ui/styles\";\nimport classnames from \"classnames\";\n\n// styles\nvar useStyles = makeStyles(theme => ({\n dotBase: {\n width: 5,\n height: 5,\n backgroundColor: theme.palette.text.hint,\n borderRadius: \"50%\",\n transition: theme.transitions.create(\"background-color\")\n },\n dotMedium: {\n width: 8,\n height: 8\n },\n dotLarge: {\n width: 18,\n height: 18\n }\n}));\n\nexport default function Dot({ size = \"small\", color, style }) {\n var classes = useStyles();\n var theme = useTheme();\n\n return (\n \n );\n}\n","import React from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n TextField as Input,\n Box\n} from \"@material-ui/core\";\n\n// components\nimport { Button, Typography } from \"../Wrappers\";\nimport Dot from \"../Sidebar/components/Dot\";\n\nexport default function Chat({ open, onClose }) {\n return (\n \n \n \n
Chat
\n \n \n  13\n \n \n
\n \n \n Jane Hew\n Hey! How it's going?\n \n \n Axel Pittman\n I'll definitely buy this template\n \n \n Sophia Fernandez\n What's the font-family?\n \n \n \n \n \n Send\n \n \n \n );\n}\n","import React, { useState } from 'react'\nimport {\n Box,\n Collapse,\n Divider,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n Popover,\n TextField as Input,\n Typography,\n} from '@material-ui/core'\nimport { Inbox as InboxIcon, ExpandMore as ExpandIcon } from '@material-ui/icons'\nimport { Link } from 'react-router-dom'\nimport classnames from 'classnames'\n\n// styles\nimport useStyles from './styles'\nimport useStyles2 from '../../styles'\n\n// components\nimport Dot from '../Dot'\nimport { Button, Badge } from '../../../Wrappers'\nimport Chat from '../../../Chat'\n\nexport default function SidebarLink({\n link,\n icon,\n label,\n children,\n location,\n isSidebarOpened,\n nested,\n type,\n toggleDrawer,\n click,\n ...props\n}) {\n // local\n var [isOpen, setIsOpen] = useState(false)\n // Add Section Popover state\n const [anchorEl, setAnchorEl] = React.useState(null)\n // Chat Modal state\n const [isChat, setChat] = useState(false)\n\n // Login page onClick\n function onLogin() {\n window.location.reload()\n }\n\n onLogin.clickName = 'onLogin'\n\n var classes = useStyles(isOpen)\n const classes2 = useStyles2()\n var isLinkActive = link && (location.pathname === link || location.pathname.includes(link))\n\n if (type === 'title')\n return (\n \n {label}\n \n )\n\n if (type === 'divider') return \n\n if (type === 'margin') return
\n\n // Add Section Popover\n\n const open = Boolean(anchorEl)\n const id = open ? 'add-section-popover' : undefined\n\n function addSectionClick(event) {\n setAnchorEl(event.currentTarget)\n }\n\n addSectionClick.clickName = 'addSectionClick'\n\n const addSectionClose = () => {\n setAnchorEl(null)\n }\n\n // Chat Popper\n\n function chatSetOpen() {\n setChat(true)\n }\n\n chatSetOpen.clickName = 'chatSetOpen'\n\n const chatSetClose = () => {\n setChat(false)\n }\n\n if (!children)\n return (\n <>\n {\n if (click) {\n return click(e, addSectionClick, chatSetOpen, onLogin)\n }\n return toggleDrawer(e)\n }}\n onKeyPress={toggleDrawer}\n button\n component={link && Link}\n to={link}\n className={classes.link}\n classes={{\n root: classnames(classes.link, {\n [classes.linkActive]: isLinkActive && !nested,\n [classes.linkNested]: nested,\n }),\n }}\n disableRipple\n >\n \n {nested ? : icon}\n \n \n \n \n \n \n Add section\n \n \n \n \n \n \n \n \n )\n\n return (\n <>\n {props.badge ? (\n \n \n {icon ? icon : }\n \n \n \n \n \n \n ) : (\n \n \n {icon ? icon : }\n \n \n \n \n )}\n {children && (\n \n \n {children.map(childrenLink => (\n \n ))}\n \n \n )}\n \n )\n\n // ###########################################################\n\n function toggleCollapse(e) {\n if (isSidebarOpened) {\n e.preventDefault()\n setIsOpen(!isOpen)\n }\n }\n}\n","import React, { useState, useEffect } from \"react\";\nimport { ArrowBack as ArrowBackIcon } from \"@material-ui/icons\";\nimport { Drawer, IconButton, List } from \"@material-ui/core\";\nimport { useTheme } from \"@material-ui/styles\";\nimport { withRouter } from \"react-router-dom\";\nimport classNames from \"classnames\";\n\n// styles\nimport useStyles from \"./styles\";\n\n// components\nimport SidebarLink from \"./components/SidebarLink/SidebarLink\";\n\n// context\nimport {\n useLayoutState,\n useLayoutDispatch,\n toggleSidebar\n} from \"../../context/LayoutContext\";\n\nfunction Sidebar({ location, structure }) {\n var classes = useStyles();\n var theme = useTheme();\n\n const toggleDrawer = value => event => {\n if (\n event.type === \"keydown\" &&\n (event.key === \"Tab\" || event.key === \"Shift\")\n ) {\n return;\n }\n\n if (value && !isPermanent) toggleSidebar(layoutDispatch);\n };\n\n // global\n var { isSidebarOpened } = useLayoutState();\n var layoutDispatch = useLayoutDispatch();\n\n // local\n var [isPermanent, setPermanent] = useState(true);\n\n useEffect(function() {\n window.addEventListener(\"resize\", handleWindowWidthChange);\n handleWindowWidthChange();\n return function cleanup() {\n window.removeEventListener(\"resize\", handleWindowWidthChange);\n };\n });\n\n return (\n \n
\n
\n toggleSidebar(layoutDispatch)}>\n \n \n
\n \n {structure.map(link => (\n \n ))}\n \n \n );\n\n // ##################################################################\n function handleWindowWidthChange() {\n var windowWidth = window.innerWidth;\n var breakpointWidth = theme.breakpoints.values.md;\n var isSmallScreen = windowWidth < breakpointWidth;\n\n if (isSmallScreen && isPermanent) {\n setPermanent(false);\n } else if (!isSmallScreen && !isPermanent) {\n setPermanent(true);\n }\n }\n}\n\nexport default withRouter(Sidebar);\n","import { makeStyles } from '@material-ui/styles'\n\nexport default makeStyles(theme => ({\n card: {\n minHeight: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n cardMedia: {\n margin: theme.spacing(4),\n width: '30rem',\n },\n cardMediaHidden: {\n margin: theme.spacing(4),\n width: '30rem',\n visibility: 'hidden',\n },\n media: {\n height: '140px',\n },\n}))\n","import { Card, CardActions, CardContent, CardHeader, CardMedia, Grid } from '@material-ui/core';\nimport React from 'react';\nimport { useHistory } from 'react-router-dom';\n\n// styles\nimport useStyles from './styles';\n\n// components\nimport { Button, Typography } from '../../components/Wrappers';\n\nimport newOrderImage from '../../images/new-order-dark.jpg';\nimport viewOrderImage from '../../images/view-order-dark.jpg';\n\nconst Dashboard = () => {\n const classes = useStyles();\n const history = useHistory();\n\n const handleViewOrder = () => history.push('/app/order/list?orderStatus=in-progress');\n\n const handleCreateOrder = () => history.push('/app/order/add');\n\n const CreateOrderCard = () => (\n \n \n \n \n \n Upload the 3D scan files of a patient and submit a new order to request a treatment\n \n \n \n \n \n \n );\n\n const ViewOrdersCard = () => (\n \n \n \n \n \n View your orders, check their status, access dentist links to review and approve cases as well as\n patient links\n \n \n \n \n \n \n );\n\n const CreateRefinementCard = () => (\n \n \n \n \n View a list of the complete orders and select the one one you want to refine\n \n \n \n history.push('/app/order/list?orderStatus=complete')}\n >\n Create\n \n \n \n );\n\n const EmptyCard = () => ;\n\n return (\n <>\n \n \n \n \n\n \n \n \n \n \n );\n};\n\nexport default Dashboard;\n","import { makeStyles } from \"@material-ui/styles\";\n\nexport default makeStyles(theme => ({\n widgetWrapper: {\n display: \"flex\",\n minHeight: \"100%\"\n },\n inheritHeight: {\n minHeight: \"auto\"\n },\n widgetHeader: {\n padding: theme.spacing(3),\n paddingBottom: theme.spacing(1),\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n widgetRoot: {\n boxShadow: theme.customShadows.widget\n },\n widgetBody: {\n height: props => (props.fullHeight ? \"100%\" : \"inherit\"),\n paddingBottom: theme.spacing(3),\n paddingRight: theme.spacing(3),\n paddingLeft: theme.spacing(3)\n },\n noPadding: {\n padding: 0\n },\n paper: {\n display: \"flex\",\n flexDirection: \"column\",\n flexGrow: 1,\n overflow: \"hidden\"\n },\n moreButton: {\n margin: -theme.spacing(1),\n padding: 0,\n width: 40,\n height: 40,\n color: theme.palette.text.hint,\n \"&:hover\": {\n backgroundColor: theme.palette.primary.main,\n color: \"rgba(255, 255, 255, 0.35)\"\n }\n },\n paddingTop: {\n paddingTop: theme.spacing(3)\n },\n searchIcon: {\n color: \"rgba(0, 0, 0, 0.23)\"\n }\n}));\n","import React, { useState } from \"react\";\nimport {\n Paper,\n IconButton,\n Menu,\n MenuItem,\n TextField as Input,\n InputAdornment,\n Box\n} from \"@material-ui/core\";\nimport { MoreVert as MoreIcon, Search as SearchIcon } from \"@material-ui/icons\";\nimport classnames from \"classnames\";\n\n//components\nimport { Typography } from \"../../components/Wrappers\";\n\n// styles\nimport useStyles from \"./styles\";\n\nexport default function Widget({\n children,\n title,\n subtitle,\n noBodyPadding,\n bodyClass,\n disableWidgetMenu,\n header,\n inheritHeight,\n searchField,\n className,\n style,\n ...props\n}) {\n var classes = useStyles(props);\n\n // local\n var [moreButtonRef, setMoreButtonRef] = useState(null);\n var [isMoreMenuOpen, setMoreMenuOpen] = useState(false);\n\n return (\n \n \n {!title ? (\n <>\n {header ? (\n
{header}
\n ) : null}\n \n ) : (\n
\n \n \n \n {title}\n \n \n \n {subtitle}\n \n \n \n {searchField && (\n \n \n \n )\n }}\n />\n )}\n {!disableWidgetMenu && (\n setMoreMenuOpen(true)}\n buttonRef={setMoreButtonRef}\n >\n \n \n )}\n \n
\n )}\n \n {children}\n
\n \n setMoreMenuOpen(false)}\n disableAutoFocusItem\n >\n \n Edit\n \n \n Copy\n \n \n Delete\n \n \n Print\n \n \n
\n );\n}\n","import { makeStyles } from '@material-ui/styles';\nimport tinycolor from 'tinycolor2';\n\nexport default makeStyles((theme) => ({\n // Create Order\n icon: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n '& .MuiSvgIcon-root': {\n marginRight: 5,\n },\n },\n stepCompleted: {\n root: {\n color: 'green',\n },\n },\n layoutContainer: {\n height: 200,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginTop: theme.spacing(2),\n border: '1px dashed',\n borderColor: theme.palette.primary.main,\n position: 'relative',\n },\n layoutText: {\n color: tinycolor(theme.palette.background.light).darken().toHexString(),\n },\n layoutButtonsRow: {\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n },\n layoutButton: {\n backgroundColor: theme.palette.background.light,\n width: 125,\n height: 50,\n outline: 'none',\n border: 'none',\n },\n layoutButtonActive: {\n backgroundColor: tinycolor(theme.palette.background.light).darken().toHexString(),\n },\n buttonsContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n marginTop: theme.spacing(2),\n },\n notificationCallButton: {\n color: 'white',\n marginBottom: theme.spacing(1),\n textTransform: 'none',\n },\n codeContainer: {\n display: 'flex',\n flexDirection: 'column',\n marginTop: theme.spacing(2),\n },\n codeComponent: {\n flexGrow: 1,\n },\n notificationItem: {\n marginTop: theme.spacing(2),\n margin: '0 auto',\n },\n notificationItemIcon: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(5),\n margin: '0 auto',\n },\n notificationCloseButton: {\n position: 'absolute',\n right: theme.spacing(2),\n },\n toastsContainer: {\n width: 'auto',\n marginTop: theme.spacing(6),\n right: 0,\n },\n progress: {\n visibility: 'hidden',\n },\n notification: {\n display: 'flex',\n alignItems: 'center',\n background: 'transparent',\n boxShadow: 'none',\n overflow: 'visible',\n },\n searchIcon: {\n color: 'rgba(0, 0, 0, 0.23)',\n },\n imgWrap: {\n height: 100,\n overflow: 'hidden',\n borderRadius: 8,\n boxShadow: '0 0 10px 0px #ccc',\n marginRight: 20,\n marginBottom: 20,\n maxWidth: 150,\n position: 'relative',\n },\n photoReqWrap: {\n height: 350,\n marginRight: 75,\n marginTop: 30,\n marginBottom: 30,\n position: 'relative',\n textAlign: 'center',\n },\n galleryWrap: {\n display: 'flex',\n marginBottom: theme.spacing(3),\n },\n uploadLabel: {\n backgroundColor: tinycolor(theme.palette.primary.main),\n color: '#f4f4f4',\n maxWidth: 220,\n display: 'inline-block',\n borderRadius: 8,\n textAlign: 'center',\n padding: '8px 12px',\n margin: '20px 0',\n },\n deleteImageX: {\n fontSize: 20,\n position: 'absolute',\n top: 5,\n left: 5,\n cursor: 'pointer',\n lineHeight: 0.5,\n color: 'white',\n },\n orderSubmitting: {\n textAlign: 'center',\n marginBottom: theme.spacing(5),\n },\n orderSubmitted: {\n textAlign: 'center',\n marginBottom: theme.spacing(2),\n },\n progressCentered: {\n marginBottom: theme.spacing(2),\n margin: '0 auto',\n },\n marginText: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n marginTextBottom: {\n marginBottom: theme.spacing(1),\n marginLeft: '10px',\n },\n noteText: {\n fontSize: '0.8rem',\n },\n methodCard: {\n marginBottom: theme.spacing(5),\n boxShadow: theme.customShadows.widget,\n '&:hover': {\n backgroundColor: theme.palette.background.dark,\n },\n },\n methodCardClicked: {\n marginBottom: theme.spacing(5),\n boxShadow: '0 0 1px 1px #ED3378',\n backgroundColor: theme.palette.background.dark,\n },\n treatmentPlanCard: {\n marginBottom: theme.spacing(5),\n boxShadow: theme.customShadows.widget,\n '&:hover': {\n backgroundColor: theme.palette.background.dark,\n },\n },\n treatmentPlanCardClicked: {\n marginBottom: theme.spacing(5),\n boxShadow: '0 0 1px 1px #ED3378',\n backgroundColor: theme.palette.background.dark,\n },\n boldText: {\n fontWeight: 'bold',\n },\n boldAndUnderlinedText: {\n fontWeight: 'bold',\n textDecoration: 'underline',\n color: theme.palette.secondary.main,\n },\n\n // OrderList\n card: {\n minHeight: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n progressSection: {\n marginBottom: theme.spacing(1),\n },\n progressTitle: {\n marginBottom: theme.spacing(2),\n },\n pieChartLegendWrapper: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'flex-end',\n marginRight: theme.spacing(1),\n },\n legendItemContainer: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n justifyContent: 'space-between',\n width: '100%',\n },\n fullHeightBody: {\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n alignStandaloneElement: {\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n justifyContent: 'center',\n },\n tableWidget: {\n overflowX: 'auto',\n },\n progressBar: {\n backgroundColor: theme.palette.warning.main,\n },\n performanceLegendWrapper: {\n display: 'flex',\n flexGrow: 1,\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n },\n legendElement: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(2),\n },\n legendElementText: {\n marginLeft: theme.spacing(1),\n },\n serverOverviewElement: {\n display: 'flex',\n alignItems: 'center',\n maxWidth: '100%',\n },\n serverOverviewElementText: {\n minWidth: 149,\n paddingRight: theme.spacing(2),\n },\n serverOverviewElementChartWrapper: {\n width: '100%',\n },\n mainChartBody: {\n overflowX: 'auto',\n },\n mainChartHeader: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n [theme.breakpoints.only('xs')]: {\n flexWrap: 'wrap',\n },\n },\n mainChartHeaderLabels: {\n display: 'flex',\n alignItems: 'center',\n [theme.breakpoints.only('xs')]: {\n order: 3,\n width: '100%',\n justifyContent: 'center',\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(2),\n },\n },\n mainChartHeaderLabel: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: theme.spacing(3),\n },\n mainChartSelectRoot: {\n borderColor: theme.palette.text.hint + '80 !important',\n },\n mainChartSelect: {\n padding: 10,\n paddingRight: 25,\n },\n mainChartLegentElement: {\n fontSize: '14px !important',\n marginLeft: theme.spacing(1),\n },\n table: {\n minWidth: 750,\n },\n tableWrapper: {\n overflowX: 'auto',\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n fixIconRight: {\n '& .MuiSelect-icon': {\n right: 4,\n },\n },\n actionsIcon: {\n color: '#76767B',\n },\n orderStatusChip: {\n color: theme.palette.text.primary,\n fontSize: '14px',\n backgroundColor: theme.palette.background.light,\n '&:hover': {\n backgroundColor: tinycolor(theme.palette.background.light).darken().toHexString(),\n boxShadow: '0 0 0 1px',\n color: theme.palette.primary.dark,\n },\n '&.active': {\n backgroundColor: theme.palette.primary.main,\n color: '#fff',\n fontWeight: 'bold',\n pointerEvents: 'none',\n },\n },\n\n // Order view\n\n copyTokenButton: {\n marginRight: theme.spacing(2),\n },\n\n openLinkButton: {\n // marginRight: theme.spacing(4), // for access token label\n color: theme.palette.success.contrastText,\n },\n\n copyLinkButton: {\n marginLeft: theme.spacing(2),\n },\n}));\n","import React from 'react'\nimport Stepper from '@material-ui/core/Stepper'\nimport Step from '@material-ui/core/Step'\nimport StepLabel from '@material-ui/core/StepLabel'\nimport Grid from '@material-ui/core/Grid'\n\n// styles\nimport useStyles from '../styles'\n\n// components\nimport Widget from '../../../components/Widget/Widget'\n\nconst Breadcrumb = ({ activeStep, stepsTitle }) => {\n const classes = useStyles()\n return (\n \n \n \n {stepsTitle.map(label => (\n \n {label}\n \n ))}\n \n \n \n )\n}\n\nexport default Breadcrumb\n","import React from 'react'\nimport Box from '@material-ui/core/Box'\n\n// components\nimport { Button } from '../../../components/Wrappers/Wrappers'\n\n// form helper\nimport { defaultFormStepsTitle, refinementFormStepsTitle } from '../helpers/form'\n\n// context\nimport { useUserState } from '../../../context/UserContext'\n\nconst FormFooter = ({ activeStep, isRefinement, onClickNext, onClickBack }) => {\n const userState = useUserState()\n\n const formSteps = isRefinement ? refinementFormStepsTitle : defaultFormStepsTitle\n const isFirstStep = activeStep === 0 || (!userState.isOrtho && activeStep === 1)\n const isLastStep = activeStep === formSteps.length - 1\n const isSubmitStep = activeStep === formSteps.length - 2\n\n return (\n
\n
\n \n {!isFirstStep && !isLastStep && (\n \n )}\n \n \n
\n
\n )\n}\n\nexport default FormFooter\n","import React from 'react'\nimport Card from '@material-ui/core/Card'\nimport CardContent from '@material-ui/core/CardContent'\n\n// components\nimport { Typography } from '../../../components/Wrappers/Wrappers'\n\n// styles\nimport useStyles from '../styles'\n\nconst TreatmentPlan = ({ newOrder, needTreatmentPlanClicked }) => {\n const classes = useStyles()\n\n return (\n <>\n \n \n \n I need Smile Academy to design my treatment plan (recommended)\n \n \n Smile Academy will design my patient’s treatment plan.\n \n (Including smile summary and Doctor & Patient 3D Viewer)\n \n \n\n \n \n \n I design my own treatment plan\n \n \n I have my own CAD/CAM software to design orthodontic treatment plan for clear aligners and\n choose to upload my own STL files.\n \n \n (Files needs to be compressed into 1 single ZIP file) -{' '}\n \n Design fee waived\n \n \n \n \n \n )\n}\n\nexport default TreatmentPlan\n","import React from 'react'\nimport TextField from '@material-ui/core/TextField'\n\nconst CaseAttributes = ({ newOrder, formErrors, onTextFieldChange }) => (\n <>\n \n\n \n \n)\n\nexport default CaseAttributes\n","import React, { useEffect } from 'react';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport TextField from '@material-ui/core/TextField';\n\n// form attributes\nimport { caseDesignAttributes } from '../helpers/form';\nimport { Typography } from '../../../components/Wrappers/Wrappers';\n\nconst TreatmentTypeNote = () => (\n <>\n \n Note: Treatment type change\n \n \n No additional charge if treatment type remains the same. However, an additional charge of $300 will occur if\n treatment type is upgraded from 3-3 or 5-5 to 7-7.\n \n \n);\n\nconst CaseDesign = ({ newOrder, allowFullArchTreatment, formErrors, onTextFieldChange }) => {\n useEffect(() => {\n // reset additional 7 to 7 attributes if treatment type changes\n if (!newOrder.treatmentType.match('7 to 7')) {\n newOrder.posteriorCrossbite = '';\n newOrder.anteriorPosteriorRelation = '';\n }\n }, [newOrder.treatmentType]); // eslint-disable-line\n\n return (\n <>\n {newOrder.refinement === 'Yes' && }\n\n {caseDesignAttributes(newOrder, allowFullArchTreatment).map((attr) => (\n \n \n {attr.label}\n \n\n \n {attr.items.map((item) => (\n \n {item.displayValue || item}\n \n ))}\n \n {attr.helperText && {attr.helperText}}\n \n ))}\n\n {newOrder.provideTreatmentPlan !== 'Yes' && (\n \n )}\n \n );\n};\n\nexport default CaseDesign;\n","import React from 'react';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\n\n// styles\nimport useStyles from '../styles';\n\n// components\nimport { Typography } from '../../../components/Wrappers/Wrappers';\n\n// form attributes\nimport { impressionMethod, scanMethod } from '../helpers/form';\n\nconst CaseMethod = ({ newOrder, methodClicked }) => {\n const classes = useStyles();\n\n const Scan = () => (\n \n \n \n 3D Scan\n \n\n I have an intraoral 3D scanner and want to upload my patient files\n \n \n );\n\n const Impression = () => (\n \n \n \n Traditional impression\n \n\n I have a traditional impression that I will send to Smile Academy PO Box\n\n \n Notes\n \n\n \n - PVS and silicone impressions are better than alginate\n \n \n \n );\n\n return (\n <>\n \n \n \n );\n};\n\nexport default CaseMethod;\n","import { makeStyles } from \"@material-ui/styles\";\n\nexport default makeStyles(theme => ({\n notificationContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n notificationContained: {\n borderRadius: 45,\n height: 45,\n boxShadow: theme.customShadows.widgetDark,\n },\n notificationContainedShadowless: {\n boxShadow: \"none\",\n },\n notificationIconContainer: {\n minWidth: 45,\n height: 45,\n borderRadius: 45,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 24,\n },\n notificationIconContainerContained: {\n fontSize: 18,\n color: \"#FFFFFF80\",\n },\n notificationIconContainerRounded: {\n marginRight: theme.spacing(2),\n },\n containedTypography: {\n color: \"white\",\n },\n messageContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexGrow: 1,\n },\n extraButton: {\n color: \"white\",\n \"&:hover, &:focus\": {\n background: \"transparent\",\n },\n },\n}));\n","import React from \"react\";\nimport { Button } from \"@material-ui/core\";\nimport {\n NotificationsNone as NotificationsIcon,\n ThumbUp as ThumbUpIcon,\n ShoppingCart as ShoppingCartIcon,\n LocalOffer as TicketIcon,\n BusinessCenter as DeliveredIcon,\n SmsFailed as FeedbackIcon,\n DiscFull as DiscIcon,\n Email as MessageIcon,\n Report as ReportIcon,\n Error as DefenceIcon,\n AccountBox as CustomerIcon,\n Done as ShippedIcon,\n Publish as UploadIcon\n} from \"@material-ui/icons\";\nimport { useTheme } from \"@material-ui/styles\";\nimport classnames from \"classnames\";\nimport tinycolor from \"tinycolor2\";\n\n// styles\nimport useStyles from \"./styles\";\n\n// components\nimport { Typography } from \"../Wrappers\";\n\nconst typesIcons = {\n \"e-commerce\": ,\n notification: ,\n offer: ,\n info: ,\n message: ,\n feedback: ,\n customer: ,\n shipped: ,\n delivered: ,\n defence: ,\n report: ,\n upload: ,\n disc: \n};\n\nexport default function Notification({ variant, ...props }) {\n var classes = useStyles();\n var theme = useTheme();\n\n const icon = getIconByType(props.type);\n const iconWithStyles = React.cloneElement(icon, {\n classes: {\n root: classes.notificationIcon\n },\n style: {\n color:\n variant !== \"contained\" &&\n theme.palette[props.color] &&\n theme.palette[props.color].main\n }\n });\n\n return (\n \n \n {iconWithStyles}\n \n
\n \n {props.message}\n \n {props.extraButton && props.extraButtonClick && (\n \n {props.extraButton}\n \n )}\n
\n \n );\n}\n\n// ####################################################################\nfunction getIconByType(type = \"offer\") {\n return typesIcons[type];\n}\n","import React from 'react';\nimport { LinearProgress, Box } from '@material-ui/core';\nimport { DropzoneArea } from 'material-ui-dropzone';\n\n// styles\nimport useStyles from '../styles';\n\n// images\nimport photoRequirementsImage from '../../../images/photo-requirements.png';\n\n// components\nimport { Typography } from '../../../components/Wrappers/Wrappers';\nimport Notification from '../../../components/Notification/Notification';\n\n// context\nimport { useOrderDispatch, useOrderState, actions } from '../../../context/OrderContext';\n\n// form attributes\nimport { impressionMethod } from '../helpers/form';\n\nconst AttachmentRequirements = ({ provideTreatmentPlan, isImpressionMethod }) => {\n const classes = useStyles();\n return (\n <>\n \n Please upload in \n one single zip file\n all the following files:\n \n\n {provideTreatmentPlan ? (\n \n - Upper and lower aches (STL files)\n \n ) : isImpressionMethod ? (\n <>\n \n - Patient's bite photos showing facial, left and right views\n \n - Patient’s OPG (optional but highly recommended)\n \n ) : (\n <>\n \n - Upper, lower aches & bite (STL files)\n \n \n - Bite photos showing facial, left and right views\n \n \n - Patient’s OPG (optional but highly recommended)\n \n \n )}\n\n {!provideTreatmentPlan && (\n
\n \"archive\"\n
\n )}\n \n );\n};\n\nconst FileUpload = ({ newOrder }) => {\n const classes = useStyles();\n const orderDispatch = useOrderDispatch();\n const orderState = useOrderState();\n\n const isUploadingFile = orderState.fileUploadLoading;\n const hasUploadedFile = orderState.fileUpload;\n\n const handleFiles = async (files) => {\n if (!files.length) return;\n await actions.doUploadFile(files[0], newOrder)(orderDispatch);\n };\n\n const deleteUploadedFile = () => actions.doDeleteUploadedFile()(orderDispatch);\n\n return (\n <>\n {!isUploadingFile && hasUploadedFile && (\n \n )}\n\n {(isUploadingFile || hasUploadedFile) && isUploadingFile && (\n \n \n \n Uploading file\n \n \n )}\n\n \n \n \n \n );\n};\n\nconst FileAttachment = ({ newOrder }) => {\n const provideTreatmentPlan = newOrder.provideTreatmentPlan === 'Yes';\n const isImpressionMethod = newOrder.method === impressionMethod;\n\n return (\n <>\n \n \n \n );\n};\n\nexport default FileAttachment;\n","import React from 'react'\nimport CircularProgress from '@material-ui/core/CircularProgress'\n\n// components\nimport { Typography } from '../../../components/Wrappers/Wrappers'\nimport Notification from '../../../components/Notification/Notification'\n\n// styles\nimport useStyles from '../styles'\n\n// form attributes\nimport { impressionMethod } from '../helpers/form'\n\n// context\nimport { useOrderState } from '../../../context/OrderContext'\n\nconst orderCreationInProgress = classes => (\n <>\n \n \n Your order is being created\n \n \n)\n\nconst orderCreationFailure = classes => (\n <>\n \n An error occurred trying to create your order\n \n \n Please, try again later or contact the support\n \n \n \n)\n\nconst orderCreationSuccess = (classes, newOrder) => {\n const provideTreatmentPlan = newOrder.provideTreatmentPlan === 'Yes'\n const isImpressionMethod = newOrder.method === impressionMethod\n\n const instructions = () => (\n <>\n {isImpressionMethod ? (\n <>\n \n Please send your impression moulds to:\n \n \n Smile Academy - PO Box 355, Lutwyche QLD 4030\n \n \n Once Smile Academy has scanned and uploaded your impression, a confirmation email will be sent\n to you.\n \n \n ) : (\n <>\n \n Your patient’s treatment plan will be ready in our portal within 3 working days.\n \n \n You will receive an email to let you know when it is ready for your approval or modification.\n \n \n )}\n \n )\n\n return (\n <>\n \n {provideTreatmentPlan\n ? 'Congratulations, your order has been placed and sent to production!'\n : 'Congratulations, your order has been placed!'}\n \n\n {!provideTreatmentPlan && instructions()}\n\n \n \n )\n}\n\nconst OrderConfirmation = ({ newOrder }) => {\n const classes = useStyles()\n const orderState = useOrderState()\n\n const isSaving = orderState.saveLoading\n const hasFailed = orderState.saveError\n\n return (\n <>\n {isSaving\n ? orderCreationInProgress(classes)\n : hasFailed\n ? orderCreationFailure(classes)\n : orderCreationSuccess(classes, newOrder)}\n \n )\n}\n\nexport default OrderConfirmation\n","import React, { useState, useEffect } from 'react';\nimport Grid from '@material-ui/core/Grid';\nimport Box from '@material-ui/core/Box';\nimport { useHistory } from 'react-router-dom';\nimport { toast } from 'react-toastify';\n\n// components\nimport { Typography } from '../../components/Wrappers/Wrappers';\nimport Widget from '../../components/Widget/Widget';\nimport {\n Breadcrumb,\n FormFooter,\n TreatmentPlan,\n CaseAttributes,\n CaseDesign,\n CaseMethod,\n FileAttachment,\n OrderConfirmation,\n InvoicingDelivery,\n} from './components';\n\n// context\nimport { useOrderDispatch, useOrderState, actions as orderActions } from '../../context/OrderContext';\nimport { useUserState } from '../../context/UserContext';\n\n// form helper\nimport {\n emptyOrder,\n invoicingRecipientAttributes,\n caseDesignAttributes,\n deliveryAddressAttributes,\n findMissingRequiredFields,\n formatInvoicingAndDelivery,\n defaultFormStepsTitle,\n hasMissingRequiredFields,\n sanitizeFormEntry,\n scanMethod,\n} from './helpers/form';\n\nimport { otherOption } from './components/InvoicingDelivery';\n\nconst AddOrder = () => {\n const orderDispatch = useOrderDispatch();\n const orderState = useOrderState();\n const userState = useUserState();\n const history = useHistory();\n\n const [newOrder, setNewOrder] = useState(emptyOrder());\n const [activeStep, setActiveStep] = useState(userState.isOrtho ? 0 : 1);\n const [acceptTC, setAcceptTC] = useState(false);\n const [error, setError] = useState({});\n\n const provideTreatmentPlan = newOrder.provideTreatmentPlan === 'Yes';\n const allowFullArchTreatment = userState.currentUser?.practice?.allowFullArchTreatment === 'Yes' ?? false;\n\n // ===== Hooks =====\n\n useEffect(() => {\n orderActions.doNewForm()(orderDispatch);\n if (!userState.isOrtho) setNewOrder({ ...newOrder, provideTreatmentPlan: 'No' });\n }, []); // eslint-disable-line\n\n // ===== Navigation =====\n\n const goNext = (step = 1) => setActiveStep((prevActiveStep) => prevActiveStep + step);\n\n const goBack = (step = 1) => setActiveStep((prevActiveStep) => prevActiveStep - step);\n\n const checkTreatmentPlan = () => {\n if (newOrder.provideTreatmentPlan === '') {\n toast.error('Please select an option');\n } else {\n goNext();\n }\n };\n\n const checkCaseAttributes = () => {\n const isValidPrescriberName = newOrder.prescriberName.trim().length;\n const isValidPatientName = newOrder.patientName.trim().length;\n\n if (isValidPrescriberName && isValidPatientName) return goNext();\n setError({ ...error, prescriberName: !isValidPrescriberName, patientName: !isValidPatientName });\n };\n\n const checkCaseDesign = () => {\n const caseDesignForm = caseDesignAttributes(newOrder, allowFullArchTreatment);\n const requiredFieldErrors = findMissingRequiredFields(caseDesignForm, newOrder);\n setError({ ...error, ...requiredFieldErrors });\n if (!hasMissingRequiredFields(requiredFieldErrors)) provideTreatmentPlan ? goNext(2) : goNext();\n };\n\n const checkMethod = () => {\n if (!newOrder.method) {\n toast.error('Please select an option');\n } else {\n goNext();\n }\n };\n\n const checkFileAttachment = () => {\n if (!orderState.fileUpload) {\n toast.error(\"Please upload the patient's files\");\n } else {\n goNext();\n }\n };\n\n const checkInvoicingAndDelivery = () => {\n let isValidInvoicing = true;\n if (newOrder.invoicingOption === otherOption) {\n const requiredFieldErrors = findMissingRequiredFields(invoicingRecipientAttributes, newOrder);\n isValidInvoicing = !hasMissingRequiredFields(requiredFieldErrors);\n setError({ ...error, ...requiredFieldErrors });\n }\n if (!isValidInvoicing) return;\n\n let isValidDelivery = true;\n if (newOrder.deliveryOption === otherOption) {\n const requiredFieldErrors = findMissingRequiredFields(deliveryAddressAttributes, newOrder);\n isValidDelivery = !hasMissingRequiredFields(requiredFieldErrors);\n setError({ ...error, ...requiredFieldErrors });\n }\n if (!isValidDelivery) return;\n\n if (!acceptTC) {\n toast.error('You must accept the Terms & Conditions');\n } else {\n doSubmit(newOrder, history);\n goNext();\n }\n };\n\n const checkOrderConfirmation = () => history.push('/app/dashboard');\n\n const formStepsValidation = [\n checkTreatmentPlan,\n checkCaseAttributes,\n checkCaseDesign,\n checkMethod,\n checkFileAttachment,\n checkInvoicingAndDelivery,\n checkOrderConfirmation,\n ];\n\n // ===== Handlers =====\n\n const handleTextFieldChange = (e) => {\n if (e.target.required) setError({ ...error, [e.target.name]: !e.target.value });\n setNewOrder({ ...newOrder, [e.target.name]: e.target.value });\n };\n\n /**\n * Use emptyOrder to reset the potential properties set before. We do not want to save irrelevant properties\n * Also set the method to Scan when treatment is provided\n */\n const handleNeedTreatmentPlan = (provideTreatmentPlan) => (_) => {\n setNewOrder({ ...emptyOrder(), provideTreatmentPlan, method: provideTreatmentPlan ? scanMethod : '' });\n };\n\n const handleMethodClicked = (method) => (_) => setNewOrder({ ...newOrder, method });\n\n const handleNext = async () => formStepsValidation[activeStep]();\n\n const handleBack = () => {\n const avoidMethodStep = provideTreatmentPlan && activeStep === 4;\n avoidMethodStep ? goBack(2) : goBack();\n };\n\n const doSubmit = async (formValues) => {\n const formattedForm = formatInvoicingAndDelivery(formValues, userState.currentUser);\n const sanitizedFormValues = Object.entries(formattedForm).reduce(sanitizeFormEntry, {});\n const territory = userState.currentUser?.practice?.territory;\n const data = { ...sanitizedFormValues, fileUpload: orderState.fileUpload, territory };\n await orderActions.doCreate(data)(orderDispatch);\n };\n\n const formStepsComponent = [\n ,\n ,\n ,\n ,\n ,\n setAcceptTC(clicked)}\n />,\n ,\n ];\n\n return (\n \n \n \n \n \n \n \n {defaultFormStepsTitle[activeStep]}\n \n {formStepsComponent[activeStep]}\n \n \n \n \n \n \n );\n};\n\nexport default AddOrder;\n","import React, { useState, useEffect } from 'react';\nimport Grid from '@material-ui/core/Grid';\nimport Box from '@material-ui/core/Box';\nimport { useHistory } from 'react-router-dom';\nimport { toast } from 'react-toastify';\n\n// components\nimport { Typography } from '../../components/Wrappers/Wrappers';\nimport Widget from '../../components/Widget/Widget';\nimport { Breadcrumb, FormFooter, CaseDesign, CaseMethod, FileAttachment, OrderConfirmation } from './components';\n\n// context\nimport { useOrderDispatch, useOrderState, actions as orderActions } from '../../context/OrderContext';\nimport { useUserState } from '../../context/UserContext';\n\n// form helper\nimport {\n emptyOrder,\n caseDesignAttributes,\n findMissingRequiredFields,\n refinementFormStepsTitle,\n hasMissingRequiredFields,\n scanMethod,\n} from './helpers/form';\n\n// Start refinement order from emptyOrder but init some properties from the initial order\nconst initRefinementOrder = (initialOrder) => {\n const refinementOrder = {\n ...emptyOrder(),\n refinement: 'Yes',\n method: scanMethod,\n treatmentType: initialOrder.treatmentType,\n previousOrderId: initialOrder.orderId,\n previousCaseNumber: initialOrder.caseNumber,\n deliveryOption: initialOrder.deliveryOption,\n deliveryAddress: initialOrder.deliveryAddress,\n invoicingOption: initialOrder.invoicingOption,\n invoicingRecipient: initialOrder.invoicingRecipient,\n manufacturer: initialOrder.manufacturer,\n patientName: initialOrder.patientName,\n prescriberName: initialOrder.prescriberName,\n practiceId: initialOrder.practiceId,\n provideTreatmentPlan: initialOrder.provideTreatmentPlan,\n };\n\n const propsToRemove = ['deliveryStreetAddress', 'deliverySuburb', 'deliveryPostcode', 'deliveryState'];\n propsToRemove.forEach((attr) => delete refinementOrder[attr]);\n\n return refinementOrder;\n};\n\nconst RefineOrder = () => {\n const orderDispatch = useOrderDispatch();\n const orderState = useOrderState();\n const userState = useUserState();\n const history = useHistory();\n\n const [refinementOrder, setRefinementOrder] = useState(emptyOrder());\n const [activeStep, setActiveStep] = useState(0);\n const [error, setError] = useState({});\n\n const allowFullArchTreatment = userState.currentUser?.practice?.allowFullArchTreatment === 'Yes' ?? false;\n\n // ===== Hooks =====\n\n // pre-load the refinement order with parent order\n useEffect(() => {\n if (orderState.currentOrder && refinementOrder?.orderId !== orderState.currentOrder.orderId) {\n const newRefinement = initRefinementOrder(orderState.currentOrder);\n setRefinementOrder(newRefinement);\n }\n }, [orderState.currentOrder]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // ===== Navigation =====\n\n const goNext = (step = 1) => setActiveStep((prevActiveStep) => prevActiveStep + step);\n\n const goBack = (step = 1) => setActiveStep((prevActiveStep) => prevActiveStep - step);\n\n const checkCaseDesign = () => {\n const caseDesignForm = caseDesignAttributes(refinementOrder, allowFullArchTreatment);\n const requiredFieldErrors = findMissingRequiredFields(caseDesignForm, refinementOrder);\n setError({ ...error, ...requiredFieldErrors });\n if (!hasMissingRequiredFields(requiredFieldErrors)) goNext();\n };\n\n const checkMethod = () => {\n if (!refinementOrder.method) {\n toast.error('Please select an option');\n } else {\n goNext();\n }\n };\n\n const checkFileAttachment = () => {\n if (!orderState.fileUpload) {\n toast.error(\"Please upload the patient's files\");\n } else {\n doSubmit(refinementOrder, history);\n goNext();\n }\n };\n\n const checkOrderConfirmation = () => history.push('/app/dashboard');\n\n const formStepsValidation = [checkCaseDesign, checkMethod, checkFileAttachment, checkOrderConfirmation];\n\n // ===== Handlers =====\n\n const handleTextFieldChange = (e) => {\n if (e.target.required) setError({ ...error, [e.target.name]: !e.target.value });\n setRefinementOrder({ ...refinementOrder, [e.target.name]: e.target.value });\n };\n\n const handleMethodClicked = (method) => (_) => setRefinementOrder({ ...refinementOrder, method });\n\n const handleNext = async () => formStepsValidation[activeStep]();\n\n const handleBack = () => goBack();\n\n const doSubmit = async (formValues) => {\n const data = { ...formValues, fileUpload: orderState.fileUpload };\n data.territory = userState.currentUser?.practice?.territory;\n if (data.orderId) {\n // finalize a refinement that was waiting for impression\n await orderActions.doFinalize(data.orderId, data)(orderDispatch);\n } else {\n // create a new refinement\n await orderActions.doCreate(data)(orderDispatch);\n }\n };\n\n const refinementFormStepsComponent = [\n ,\n ,\n ,\n ,\n ];\n\n return (\n \n \n \n \n \n \n \n {refinementFormStepsTitle[activeStep]}\n \n {refinementFormStepsComponent[activeStep]}\n \n \n \n \n \n \n );\n};\n\nexport default RefineOrder;\n","export const orderStatuses = {\n WAITING_FOR_IMPRESSION: 'Waiting For Impression',\n CASE_SUBMITTED: 'Case Submitted',\n CASE_SENT_FOR_DESIGN: 'Case Sent For Design',\n CASE_SENT_FOR_RUSH_DESIGN: 'Case Sent For Rush Design',\n CASE_REDESIGN: 'Case Redesign',\n CASE_ON_HOLD: 'Case On Hold',\n CASE_NEEDS_APPROVAL: 'Case Needs Approval',\n CASE_IN_PRODUCTION: 'Case In Production',\n CASE_CANCELLED: 'Case Cancelled',\n CASE_COMPLETE: 'Case Complete',\n UNKNOWN_STATUS: '',\n}\n\nexport const colorForStatus = status => {\n switch (status) {\n case orderStatuses.WAITING_FOR_IMPRESSION:\n return '#d7aae3'\n case orderStatuses.CASE_SUBMITTED:\n return '#7f1399'\n case orderStatuses.CASE_SENT_FOR_DESIGN:\n case orderStatuses.CASE_SENT_FOR_RUSH_DESIGN:\n return '#92bd04'\n case orderStatuses.CASE_NEEDS_APPROVAL:\n return '#ff7900'\n case orderStatuses.CASE_REDESIGN:\n return '#fe94ab'\n case orderStatuses.CASE_CANCELLED:\n return '#787779'\n case orderStatuses.CASE_IN_PRODUCTION:\n return '#00c58e'\n case orderStatuses.CASE_COMPLETE:\n return '#0072cf'\n case orderStatuses.UNKNOWN_STATUS:\n return 'error'\n default:\n return 'info'\n }\n}\n","import React, { useEffect, useState } from 'react';\nimport { toast } from 'react-toastify';\nimport {\n Box,\n CircularProgress,\n Grid,\n Button,\n IconButton,\n Tooltip,\n FormHelperText,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n} from '@material-ui/core';\nimport { Warning as WarningIcon } from '@material-ui/icons';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { sentenceCase } from 'sentence-case';\nimport { colorForStatus, orderStatuses } from './helpers/statuses';\n\n// styles\nimport useStyles from './styles';\n\n// components\nimport { Typography, Chip } from '../../components/Wrappers/Wrappers';\nimport Widget from '../../components/Widget/Widget';\n\n// context\nimport { useOrderDispatch, useOrderState, actions } from '../../context/OrderContext';\nimport { useUserState } from '../../context/UserContext';\n\n// helpers\nimport { scanMethod, excludedProperties } from './helpers/form';\n\nconst ViewOrder = () => {\n const classes = useStyles();\n\n const orderDispatch = useOrderDispatch();\n const orderState = useOrderState();\n const userState = useUserState();\n\n const history = useHistory();\n const location = useLocation();\n\n const [isCancelOrderModalOpen, setCancelOrderModalOpen] = useState(false);\n\n const entries = Object.entries(orderState?.currentOrder || {});\n\n // get the practiceId from the current user\n const practiceId = userState.currentUser?.practice?.practiceId;\n\n useEffect(() => {\n const orderId = new URLSearchParams(location.search).get('orderId');\n if (!orderId) {\n toast.error('Unable to find the order id');\n setTimeout(() => backToList(), 2000);\n } else if (!orderState.currentOrder || orderState.currentOrder.orderId !== orderId) {\n actions.doFind(orderId)(orderDispatch);\n }\n }, [location.search]); //eslint-disable-line\n\n useEffect(() => {\n if (!orderState.findError) return;\n setTimeout(() => backToList(), 2000);\n }, [orderState?.findError]); //eslint-disable-line\n\n const handleCancelOrder = () => setCancelOrderModalOpen(true);\n\n const handleClickCreateRefinement = () => {\n const { orderId } = orderState.currentOrder;\n history.push(`refine?practiceId=${practiceId}&orderId=${orderId}`);\n };\n\n const handleClickViewRefinement = () => {\n const { refinementOrderId } = orderState.currentOrder;\n history.push(`view?practiceId=${practiceId}&orderId=${refinementOrderId}`);\n };\n\n const handleOpenLink = (url) => (_) => window.open(url, '_blank');\n\n const handleCopyToken = (token) => (_) => navigator.clipboard.writeText(token);\n\n const backToList = () => history.goBack();\n\n const handleModalAction = (action) => () => {\n setCancelOrderModalOpen(false);\n if (action === 'Confirm') {\n const { orderId } = orderState.currentOrder;\n actions.doCancel(orderId, practiceId)(orderDispatch, history);\n }\n };\n\n const renderEntry =\n (order) =>\n ([key, value]) => {\n if (excludedProperties.includes(key)) return null;\n if (!value || !value.length) return null;\n if (key.match('orderId|previousOrderId|refinementOrderId')) return null;\n if (key === 'links') return value.map(renderCaseLink);\n\n const orderStatus = order?.orderStatus;\n\n // order cancellation and refinement\n const canCancelOrder = orderStatus === orderStatuses.CASE_NEEDS_APPROVAL;\n const canCreateRefinement = orderStatus === orderStatuses.CASE_COMPLETE && !order?.refinementOrderId;\n const orderHasRefinement = orderStatus === orderStatuses.CASE_COMPLETE && order?.refinementOrderId;\n\n return (\n \n \n \n {key.match('IPR') ? sentenceCase(key).replace('ipr', 'IPR') : sentenceCase(key)}\n \n \n \n {key === 'orderStatus' ? (\n <>\n \n {orderState.currentOrder?.orderStatus === orderStatuses.CASE_NEEDS_APPROVAL &&\n orderState.currentOrder?.treatmentInvoiced && (\n \n Case pending for over 2 months. Treatment plan only has been\n invoiced and will be deducted from total course cost when case is\n approved.\n \n }\n >\n \n \n \n \n )}\n\n {canCancelOrder && (\n <>\n \n Cancel Order\n \n \n )}\n\n {canCreateRefinement && (\n \n Create Refinement\n \n )}\n\n {orderHasRefinement && (\n \n View Refinement\n \n )}\n \n ) : key === 'method' ? (\n \n {value === scanMethod ? '3D Scan' : 'Traditional Impression'}\n \n ) : key === 'instructions' ? (\n value.split('\\n').map((item, idx) => (\n \n {item}\n \n ))\n ) : (\n {value}\n )}\n \n \n );\n };\n\n const renderCaseLink = ({ url, type, token }) => {\n const isApprovalLink = type === 'approval';\n return (\n \n \n {isApprovalLink ? (\n <>\n \n Dentist link\n \n (for case approval)\n \n ) : (\n <>\n \n Patient link\n \n (forward to patient - 3D viewer only)\n \n )}\n \n \n {isApprovalLink && (\n \n \n Click to copy token\n \n \n )}\n \n Open 3D viewer\n \n \n \n );\n };\n\n return (\n \n \n \n \n \n \n Order details\n \n \n {orderState?.findLoading ? (\n \n ) : (\n entries.map(renderEntry(orderState?.currentOrder))\n )}\n \n \n \n \n \n \n \n \n setCancelOrderModalOpen(false)}\n scroll={'body'}\n aria-labelledby=\"cancel-order-dialog-title\"\n >\n \n Cancel Order #{orderState?.currentOrder?.serialNumber}\n \n \n \n Canceling this order will permanently stop the production process. The practice will be notified\n and any design work already completed will not be processed further.\n
\n
\n This action cannot be undone.\n
\n
\n \n \n \n \n \n
\n );\n};\n\nexport default ViewOrder;\n","import React, { useEffect, useState } from 'react';\nimport {\n Box,\n CircularProgress,\n Chip as ChipBase,\n Grid,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TablePagination,\n TableRow,\n TableSortLabel,\n TextField,\n Toolbar,\n Tooltip,\n} from '@material-ui/core';\n\nimport { Search as SearchIcon, Warning as WarningIcon } from '@material-ui/icons';\nimport moment from 'moment';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport classNames from 'classnames';\n\n// styles\nimport useStyles from './styles';\n\n// components\nimport Widget from '../../components/Widget';\nimport { Chip, Typography, Avatar } from '../../components/Wrappers';\nimport PropTypes from 'prop-types';\n\n// context\nimport { useOrderDispatch, useOrderState, actions as orderActions } from '../../context/OrderContext';\n\n// helpers\nimport { stableSort, getSorting } from '../../common/helpers';\nimport { colorForStatus, orderStatuses } from './helpers/statuses';\n\n/**\n * Collect the N to N details from the treatment type\n * @param {*} treatmentType: Treatment From Canine to Canine (3 to 3)\n * @returns 3 to 3\n */\nconst getShortTreatmentType = (treatmentType) => treatmentType.match(/\\d to \\d/);\n\n/**\n * Returns orders matching the search input\n */\nconst filterItems = (orders, input) => {\n var regexp = new RegExp(input, 'gi');\n return orders.filter((o) => {\n const treatmentType = getShortTreatmentType(o.treatmentType);\n return (\n (treatmentType && treatmentType[0]?.match(regexp)) ||\n o.patientName?.match(regexp) ||\n o.prescriberName?.match(regexp) ||\n o.caseNumber?.match(regexp) ||\n o.serialNumber?.match(regexp) ||\n o.orderStatus?.match(regexp)\n );\n });\n};\n\nconst headCells = [\n { id: 'prescriberName', alignLeft: true, disablePadding: false, label: 'Prescriber', isSortable: true },\n { id: 'patientName', alignLeft: true, disablePadding: false, label: 'Patient', isSortable: true },\n { id: 'treatmentType', alignLeft: true, disablePadding: false, label: 'treatment type', isSortable: true },\n { id: 'createdAt', alignLeft: true, disablePadding: false, label: 'Date of creation', isSortable: true },\n { id: 'caseNumber', alignLeft: true, disablePadding: false, label: 'Case number', isSortable: false },\n { id: 'status', alignLeft: true, disablePadding: false, label: 'Status', isSortable: false },\n { id: 'refinement', alignLeft: true, disablePadding: false, label: 'Refinement Case', isSortable: false },\n];\n\nconst EmptyTableRow = (isLoading) => (\n \n \n {isLoading ? (\n \n ) : (\n \n No order found\n \n )}\n \n \n);\n\nconst EnhancedTableToolbar = ({ classes, onSearchInputChange, onOrderStatusChange, searchValue }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nEnhancedTableToolbar.propTypes = {\n classes: PropTypes.object.isRequired,\n onSearchInputChange: PropTypes.func.isRequired,\n onOrderStatusChange: PropTypes.func.isRequired,\n searchValue: PropTypes.object.isRequired,\n};\n\nconst EnhancedTableHead = ({ classes, order, orderBy, onRequestSort }) => {\n const createSortHandler = (property) => (event) => {\n onRequestSort(event, property);\n };\n\n return (\n \n \n {headCells.map((headCell) => (\n \n {headCell.isSortable ? (\n \n \n {headCell.label}\n \n {orderBy === headCell.id ? (\n \n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n \n ) : null}\n \n ) : (\n \n {headCell.label}\n \n )}\n \n ))}\n \n \n );\n};\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n onRequestSort: PropTypes.func.isRequired,\n order: PropTypes.oneOf(['asc', 'desc']).isRequired,\n orderBy: PropTypes.string.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst OrderList = () => {\n const classes = useStyles();\n const orderDispatch = useOrderDispatch();\n const orderState = useOrderState();\n const history = useHistory();\n const location = useLocation();\n\n // Orders table\n const [order, setOrder] = useState('desc');\n const [orderBy, setOrderBy] = useState('createdAt');\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(25);\n\n // Search feature\n const [filteredItems, setFilteredItems] = useState([]);\n\n useEffect(() => {\n if (!orderState.orders) orderActions.doFetch()(orderDispatch);\n }, []); // eslint-disable-line\n\n /**\n * Check the query string to set the order status filter\n */\n useEffect(() => {\n const queryString = new URLSearchParams(location.search);\n const orderStatus = queryString.get('orderStatus');\n const currentStatusFilter = orderState.search.orderStatus;\n if (orderStatus?.match('in-progress|complete') && orderStatus !== currentStatusFilter) {\n // the orderStatus filter must be updated\n orderActions.doResetState()(orderDispatch);\n const search = { searchInput: '', orderStatus };\n orderActions.doSearchOrders(search)(orderDispatch);\n }\n }, [location.search]); //eslint-disable-line\n\n useEffect(() => {\n setFilteredItems(orderState.orders?.items || []);\n }, [orderState.orders]); // eslint-disable-line\n\n /**\n * Fetch orders when order status changes\n * The state is reset on status change so only fetch when no order is found\n */\n useEffect(() => {\n if (orderState.search.orderStatus && !orderState.orders) {\n orderActions.doFetch({ orderStatus: orderState.search.orderStatus })(orderDispatch);\n }\n }, [orderState.search.orderStatus]); // eslint-disable-line\n\n useEffect(() => {\n const input = orderState.search.searchInput || '';\n const orders = orderState.orders?.items || [];\n if (input.length === 0) {\n setFilteredItems(orders);\n } else if (input.length > 2) {\n setFilteredItems(filterItems(orders, input));\n }\n }, [orderState.search.searchInput]); // eslint-disable-line\n\n // =================== Handlers ======================\n\n const handleRequestSort = (_, property) => {\n const isDesc = orderBy === property && order === 'desc';\n setOrder(isDesc ? 'asc' : 'desc');\n setOrderBy(property);\n };\n\n const handleChangePage = (_, newPage) => {\n setPage(newPage);\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const handleSearchInputChange = (e) => {\n const search = { ...orderState.search, searchInput: e.target.value };\n orderActions.doSearchOrders(search)(orderDispatch);\n };\n\n const handleOrderStatusFilter = (newStatus) => () => {\n orderActions.doResetState()(orderDispatch);\n const search = { searchInput: '', orderStatus: newStatus };\n orderActions.doSearchOrders(search)(orderDispatch);\n // update the query string in the url according to the orderStatus filter value\n history.replace(`list?orderStatus=${newStatus}`);\n };\n\n return (\n \n \n \n \n\n
\n \n \n \n {(orderState.fetchLoading || filteredItems?.length === 0) &&\n EmptyTableRow(orderState.fetchLoading)}\n {!orderState.fetchLoading &&\n filteredItems?.length > 0 &&\n stableSort(filteredItems, getSorting(order, orderBy))\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row, index) => (\n history.push(`view?orderId=${row.orderId}`)}\n >\n {row.prescriberName}\n \n \n {row.patientName && (\n \n {row.patientName.split(' ').map((name) => name[0])}\n \n )}\n \n {row.patientName}\n \n \n \n {getShortTreatmentType(row.treatmentType)}\n \n {row.createdAt ? moment(row.createdAt).format('DD/MM/YY') : ''}\n \n {row.caseNumber || row.serialNumber}\n \n \n {row.orderStatus === orderStatuses.CASE_NEEDS_APPROVAL &&\n row.treatmentInvoiced && (\n \n Case pending for over 2 months. Treatment plan\n only has been invoiced and will be deducted from\n total course cost when case is approved.\n \n }\n >\n \n \n \n \n )}\n \n \n {row.refinement === 'Yes' ? 'Yes' : ''}\n \n \n ))}\n \n
\n
\n \n
\n
\n
\n );\n};\n\nexport default OrderList;\n","import { makeStyles } from '@material-ui/styles';\n\nexport default makeStyles((theme) => ({\n cardMedia: {\n margin: theme.spacing(4),\n width: '30rem',\n display: 'flex',\n flexDirection: 'column',\n height: 'calc(100% - 64px)', // Accounting for the margin\n },\n cardContent: {\n flexGrow: 1, // This will push the actions to the bottom\n },\n cardMediaHidden: {\n margin: theme.spacing(4),\n width: '30rem',\n visibility: 'hidden',\n height: 'calc(100% - 64px)', // Same height calculation as cardMedia\n },\n gridRow: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'stretch', // Make items stretch to fill the container height\n },\n gridItem: {\n display: 'flex', // This will make the Card take full height of the grid item\n },\n}));\n","import { Card, CardContent, CardHeader, Grid } from '@material-ui/core';\nimport React from 'react';\n\n// styles\nimport useStyles from './styles';\n\n// images\nimport logo from '../../images/logo-large.jpg';\n\n// components\nimport { Typography } from '../../components/Wrappers';\n\nconst ContactUs = () => {\n const classes = useStyles();\n\n const PhoneAndEmailCard = () => (\n \n \n \n \n Head Office\n \n \n 0735 473 970\n \n \n From overseas: +61 735 473 970\n \n\n \n Australia\n \n \n Alan Cantero: 0423 551 145\n \n \n Aurelien Coursodon: 0449 955 107\n \n\n \n New Zealand\n \n \n David Monsellier: 0210 448 704\n \n\n \n General Email Address\n \n \n info@smile-academy.com.au\n \n \n \n );\n\n const PostalAddressCard = () => (\n \n \n \n \n Delivery address for traditional impressions:\n \n\n \n Smile Academy (Australia)\n \n \n PO Box 355\n \n \n Lutwyche, 4030, QLD\n \n \n Australia\n \n \n Smile Academy (New Zealand)\n \n \n 1D/331 Rosedale Road\n \n \n Rosedale, 0632, Auckland\n \n \n New Zealand\n \n \n \n \n );\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ContactUs;\n","import { makeStyles } from '@material-ui/styles';\n\nexport default makeStyles((theme) => ({\n cardMedia: {\n margin: theme.spacing(4),\n width: '30rem',\n display: 'flex',\n flexDirection: 'column',\n height: 'calc(100% - 64px)', // Accounting for the margin\n },\n cardContent: {\n flexGrow: 1, // This will push the actions to the bottom\n },\n cardMediaHidden: {\n margin: theme.spacing(4),\n width: '30rem',\n visibility: 'hidden',\n height: 'calc(100% - 64px)', // Same height calculation as cardMedia\n },\n gridRow: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'stretch', // Make items stretch to fill the container height\n },\n gridItem: {\n display: 'flex', // This will make the Card take full height of the grid item\n },\n}));\n","import { Card, CardActions, CardContent, CardHeader, Grid } from '@material-ui/core';\nimport React from 'react';\n\n// config\nimport config from '../../config';\n\n// styles\nimport useStyles from './styles';\n\n// components\nimport { Button, Typography } from '../../components/Wrappers';\n\nconst Download = () => {\n const classes = useStyles();\n\n const ViewPricingCard = () => (\n \n \n \n \n Click below to download Smile Academy's pricing for our clear aligners, retainers and night guards.\n Please select the pricing relevant to your location (Australia or New Zealand).\n \n \n \n \n \n New Zealand Pricing\n \n \n \n );\n\n const DownloadConsentCard = () => (\n \n \n \n \n We provide this document so you can inform your patients of potential risks associated with clear\n aligner therapy, and set their expectations appropriately. We encourage you to review the\n information on this form with your patients and sign it together\n \n \n \n \n \n \n );\n\n const DownloadMarketingCard = () => (\n \n \n \n \n Feel free to use any of Smile Academy content available on the following link. You will find\n documents such as photos and videos for your social media platforms (Facebook, Instagram, Youtube…)\n as well as posters, leaflets and more\n \n \n \n \n \n \n );\n\n const EmptyCard = () => ;\n\n return (\n <>\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Download;\n","import React from 'react';\nimport {\n Home as HomeIcon,\n QuestionAnswer as SupportIcon,\n Description as DescriptionIcon,\n FormatListBulleted as FormatListBulletedIcon,\n ArrowDownward,\n} from '@material-ui/icons';\n\nconst structure = [\n { id: 0, label: 'Dashboard', link: '/app/dashboard', icon: },\n {\n id: 1,\n label: 'New Order',\n link: '/app/order/add',\n icon: ,\n },\n {\n id: 2,\n label: 'My Orders',\n link: '/app/order/list?orderStatus=in-progress',\n icon: ,\n },\n { id: 3, type: 'divider' },\n { id: 4, type: 'title', label: 'HELP' },\n { id: 5, label: 'Contact Us', link: '/app/contact-us', icon: },\n { id: 6, label: 'Download', link: '/app/download', icon: },\n // { id: 6, label: 'FAQ', link: '', icon: },\n // { id: 7, label: 'About Us', link: '', icon: },\n];\n\nexport default structure;\n","import React from 'react'\nimport Widget from '../Widget'\nimport { Link } from 'react-router-dom'\nimport { Box, Grid, Breadcrumbs } from '@material-ui/core'\nimport { Typography } from '../Wrappers'\nimport { NavigateNext as NavigateNextIcon, CalendarToday as CalendarIcon } from '@material-ui/icons'\nimport { useLocation } from 'react-router-dom'\n\n// styles\nimport useStyles from '../Layout/styles'\n\n// components\nimport structure from '../Sidebar/SidebarStructure'\n\nconst todaysDate = () => {\n var options = { weekday: 'long', year: 'numeric', month: 'short', day: 'numeric' }\n return new Date().toLocaleDateString('en-AU', options)\n}\n\nconst BreadCrumbs = () => {\n const location = useLocation()\n const classes = useStyles()\n\n const renderBreadCrumbs = () => {\n let url = location.pathname\n let route = url\n .split('/')\n .slice(1)\n .map(route =>\n route\n .split('-')\n .map(word => word[0].toUpperCase() + word.slice(1))\n .join(' ')\n )\n const length = route.length\n return route.map((item, index) => {\n let middlewareUrl =\n '/' +\n url\n .split('/')\n .slice(1, index + 2)\n .join('/')\n\n return (\n }\n aria-label=\"breadcrumb\"\n >\n \n {length === index + 1 ? (\n item\n ) : (\n \n {item}\n \n )}\n \n \n )\n })\n }\n\n const renderStructureElt = elt => {\n if (!elt.children && window.location.hash.includes(elt.link) && elt.link) {\n return (\n \n \n {elt.label}\n \n \n )\n } else {\n return null\n }\n }\n\n return (\n \n \n {structure.map(renderStructureElt)}\n {window.location.hash.includes('/app/dashboard') ? (\n \n \n {todaysDate()}\n \n ) : (\n } aria-label=\"breadcrumb\">\n {renderBreadCrumbs()}\n \n )}\n \n \n )\n}\nexport default BreadCrumbs\n","import React, { useEffect } from 'react';\nimport { Route, Switch, Redirect, withRouter } from 'react-router-dom';\nimport classnames from 'classnames';\n\n// styles\nimport useStyles from './styles';\n\n// components\nimport Header from '../Header';\nimport Sidebar from '../Sidebar';\n\n// pages\nimport Dashboard from '../../pages/dashboard';\nimport OrderAdd from '../../pages/order/AddOrder';\nimport OrderRefine from '../../pages/order/RefineOrder';\nimport OrderView from '../../pages/order/ViewOrder';\nimport OrderList from '../../pages/order/OrderList';\nimport ContactUs from '../../pages/contact/ContactUs';\nimport Download from '../../pages/download/Download';\nimport BreadCrumbs from '../../components/BreadCrumbs';\n\n// context\nimport { useLayoutState } from '../../context/LayoutContext';\nimport { useUserState, useUserDispatch, actions } from '../../context/UserContext';\n\n//Sidebar structure\nimport structure from '../Sidebar/SidebarStructure';\n\nfunction Layout(props) {\n const classes = useStyles();\n const layoutState = useLayoutState();\n const userState = useUserState();\n const userDispatch = useUserDispatch();\n\n useEffect(() => {\n if (!userState.currentUser) {\n actions.getCurrentUser(props.history)(userDispatch);\n }\n }, []); // eslint-disable-line\n\n return (\n
\n
\n \n \n
\n \n \n \n } />\n \n \n \n \n \n \n \n
\n
\n );\n}\n\nexport default withRouter(Layout);\n","import { makeStyles } from '@material-ui/styles'\n\nexport default makeStyles(theme => ({\n container: {\n height: '100vh',\n width: '100vw',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n top: 0,\n left: 0,\n },\n logotype: {\n display: 'flex',\n marginBottom: theme.spacing(12),\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n logotypeText: {\n fontWeight: 500,\n color: 'white',\n marginLeft: theme.spacing(2),\n },\n logotypeIcon: {\n width: 300,\n },\n paperRoot: {\n boxShadow: theme.customShadows.widgetDark,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: theme.spacing(8),\n paddingBottom: theme.spacing(8),\n paddingLeft: theme.spacing(6),\n paddingRight: theme.spacing(6),\n maxWidth: 404,\n },\n textRow: {\n marginBottom: theme.spacing(10),\n textAlign: 'center',\n },\n errorCode: {\n fontSize: 148,\n fontWeight: 600,\n },\n safetyText: {\n fontWeight: 300,\n color: theme.palette.text.hint,\n },\n backButton: {\n textTransform: 'none',\n fontSize: 22,\n },\n}))\n","import React from 'react'\nimport { Grid, Paper } from '@material-ui/core'\nimport { Link } from 'react-router-dom'\nimport classnames from 'classnames'\n\n// styles\nimport useStyles from './styles'\n\n//components\nimport { Button, Typography } from '../../components/Wrappers'\n\n// logo\nimport logo from '../../images/logo-large.jpg'\n\nexport default function Error() {\n var classes = useStyles()\n\n return (\n \n \n
\n \"logo\"\n
\n \n 404\n \n \n Oops. Looks like the page you're looking for no longer exists\n \n \n But we're here to bring you back to safety\n \n \n Back to Home\n \n
\n
\n )\n}\n","import { makeStyles } from '@material-ui/styles';\n\nexport default makeStyles((theme) => ({\n container: {\n height: '100vh',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'absolute',\n top: 0,\n left: 0,\n },\n logotypeContainer: {\n backgroundColor: theme.palette.primary.main,\n width: '60%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n [theme.breakpoints.down('md')]: {\n width: '50%',\n },\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n logotypeImage: {\n width: 600,\n // marginBottom: theme.spacing(4)\n },\n logotypeText: {\n color: 'white',\n fontWeight: 500,\n fontSize: 48,\n [theme.breakpoints.down('md')]: {\n fontSize: 48,\n },\n },\n customFormContainer: {\n width: '40%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n overflow: 'auto',\n alignItems: 'center',\n [theme.breakpoints.down('md')]: {\n width: '50%',\n overflow: 'visible',\n },\n },\n formContainer: {\n width: '40%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n alignItems: 'center',\n [theme.breakpoints.down('md')]: {\n width: '50%',\n overflow: 'visible',\n },\n },\n form: {\n width: 320,\n position: 'absolute',\n top: '20%',\n [theme.breakpoints.down('md')]: {\n top: '12%',\n },\n },\n customForm: {\n width: 320,\n position: 'absolute',\n top: '30%',\n },\n tab: {\n fontWeight: 400,\n fontSize: 18,\n },\n formTitle: {\n fontWeight: 500,\n textAlign: 'center',\n marginTop: theme.spacing(4),\n },\n greeting: {\n fontWeight: 500,\n textAlign: 'center',\n marginTop: theme.spacing(4),\n },\n subGreeting: {\n fontWeight: 500,\n textAlign: 'center',\n marginTop: theme.spacing(2),\n },\n googleButton: {\n marginTop: theme.spacing(6),\n boxShadow: theme.customShadows.widget,\n backgroundColor: 'white',\n width: '100%',\n textTransform: 'none',\n },\n googleButtonCreating: {\n marginTop: 0,\n },\n googleIcon: {\n width: 30,\n marginRight: theme.spacing(2),\n },\n creatingButtonContainer: {\n marginTop: theme.spacing(2.5),\n height: 46,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n createAccountButton: {\n height: 46,\n textTransform: 'none',\n },\n formDividerContainer: {\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(4),\n display: 'flex',\n alignItems: 'center',\n },\n formDividerWord: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n },\n formDivider: {\n flexGrow: 1,\n height: 1,\n backgroundColor: theme.palette.text.hint + '40',\n },\n errorMessage: {\n textAlign: 'center',\n },\n textFieldUnderline: {\n '&:before': {\n borderBottomColor: theme.palette.primary.light,\n },\n '&:after': {\n borderBottomColor: theme.palette.primary.main,\n },\n '&:hover:before': {\n borderBottomColor: `${theme.palette.primary.light} !important`,\n },\n },\n textField: {\n borderBottomColor: theme.palette.background.light,\n },\n formButtons: {\n width: '100%',\n marginTop: theme.spacing(4),\n display: 'flex',\n // justifyContent: \"space-between\", needed when forgot password is displayed\n justifyContent: 'center',\n alignItems: 'center',\n },\n forgetButton: {\n textTransform: 'none',\n fontWeight: 400,\n },\n loginLoader: {\n marginLeft: theme.spacing(4),\n },\n copyright: {\n marginTop: theme.spacing(6),\n whiteSpace: 'nowrap',\n fontSize: '0.9rem',\n position: 'absolute',\n top: '90%',\n [theme.breakpoints.up('md')]: {\n bottom: theme.spacing(2),\n },\n },\n generalInformation: {\n textAlign: 'center',\n position: 'absolute',\n top: '84%',\n fontSize: '0.9rem',\n // hide on small devices\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n generalInformationLink: {\n '&:link': {\n color: theme.palette.quaternary.main,\n fontWeight: 'bold',\n textDecoration: 'none',\n },\n },\n youtubeLink: {\n '&:link': {\n color: theme.palette.quaternary.main,\n fontWeight: 'bold',\n },\n '&:visited': {\n color: theme.palette.quaternary.main,\n },\n },\n}));\n","import React, { useState } from 'react';\nimport { Box, Grid, CircularProgress, Fade, TextField as Input } from '@material-ui/core';\nimport { withRouter } from 'react-router-dom';\n\n// styles\nimport 'react-toastify/dist/ReactToastify.css';\nimport useStyles from './styles';\n\n// logo\nimport logo from '../../images/logo-large-dark.svg';\n\n// context\nimport { useUserState, useUserDispatch, actions } from '../../context/UserContext';\n\n//components\nimport { Button, Typography } from '../../components/Wrappers';\nimport Widget from '../../components/Widget';\nimport config from '../../config';\n\nconst getGreeting = () => {\n const d = new Date();\n if (d.getHours() >= 4 && d.getHours() <= 12) {\n return 'Good Morning';\n } else if (d.getHours() >= 13 && d.getHours() <= 16) {\n return 'Good Day';\n } else if (d.getHours() >= 17 && d.getHours() <= 23) {\n return 'Good Evening';\n } else {\n return 'Good Night';\n }\n};\n\nfunction Login(props) {\n const classes = useStyles();\n\n const userState = useUserState();\n const userDispatch = useUserDispatch();\n\n const [email, setEmail] = useState(config.isBackend ? '' : config.Auth.email);\n const [password, setPassword] = useState(config.isBackend ? '' : config.Auth.password);\n\n const isError = userState.errorMessage.length > 0;\n\n const renderLogin = () => (\n \n {!config.isBackend ? (\n \n \n This is a frontend app with no backend - use any credentials to login\n \n \n ) : null}\n \n LOGIN\n \n \n {getGreeting()}\n \n
\n
\n
\n \n \n {userState.errorMessage}\n \n \n setEmail(e.target.value)}\n margin=\"normal\"\n placeholder=\"Email Address\"\n type=\"email\"\n fullWidth\n />\n setPassword(e.target.value)}\n margin=\"normal\"\n placeholder=\"Password\"\n type=\"password\"\n fullWidth\n />\n
\n {userState.isLoading ? (\n \n ) : (\n actions.signIn(email, password, props.history)(userDispatch)}\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n >\n Login\n \n )}\n
\n \n );\n\n return (\n \n
\n \"logo\"\n
\n
\n
{renderLogin()}
\n {config.isBackend && (\n \n \n \n To create an account, please email your details to \n \n {config.contactEmailAddress}\n \n \n \n Click \n \n here\n \n to watch our portal tutorial\n \n \n \n )}\n \n © {new Date().getFullYear()} Smile Academy Pty Ltd. All rights reserved.\n \n
\n
\n );\n}\n\nexport default withRouter(Login);\n","import { makeStyles } from '@material-ui/styles'\n\nexport default makeStyles(theme => ({\n container: {\n height: '100vh',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'absolute',\n top: 0,\n left: 0,\n },\n logotypeContainer: {\n backgroundColor: theme.palette.primary.main,\n width: '60%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n [theme.breakpoints.down('md')]: {\n width: '50%',\n },\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n logotypeImage: {\n width: 600,\n marginBottom: theme.spacing(4),\n },\n logotypeText: {\n color: 'white',\n fontWeight: 500,\n fontSize: 84,\n [theme.breakpoints.down('md')]: {\n fontSize: 48,\n },\n },\n customFormContainer: {\n width: '40%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n overflow: 'auto',\n alignItems: 'center',\n [theme.breakpoints.down('md')]: {\n width: '50%',\n overflow: 'visible',\n },\n },\n formContainer: {\n width: '40%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n alignItems: 'center',\n [theme.breakpoints.down('md')]: {\n width: '50%',\n overflow: 'visible',\n },\n },\n form: {\n width: 320,\n position: 'absolute',\n top: '28%',\n [theme.breakpoints.down('md')]: {\n top: '20%',\n },\n },\n formTitle: {\n fontWeight: 500,\n textAlign: 'center',\n marginTop: theme.spacing(4),\n },\n tab: {\n fontWeight: 400,\n fontSize: 18,\n },\n greeting: {\n fontWeight: 500,\n textAlign: 'center',\n marginTop: theme.spacing(4),\n },\n subGreeting: {\n fontWeight: 500,\n textAlign: 'center',\n marginTop: theme.spacing(2),\n },\n googleButton: {\n marginTop: theme.spacing(6),\n boxShadow: theme.customShadows.widget,\n backgroundColor: 'white',\n width: '100%',\n textTransform: 'none',\n },\n googleButtonCreating: {\n marginTop: 0,\n },\n googleIcon: {\n width: 30,\n marginRight: theme.spacing(2),\n },\n creatingButtonContainer: {\n marginTop: theme.spacing(2.5),\n height: 46,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n createAccountButton: {\n height: 46,\n textTransform: 'none',\n },\n formDividerContainer: {\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(4),\n display: 'flex',\n alignItems: 'center',\n },\n formDividerWord: {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n },\n formDivider: {\n flexGrow: 1,\n height: 1,\n backgroundColor: theme.palette.text.hint + '40',\n },\n errorMessage: {\n textAlign: 'center',\n },\n textFieldUnderline: {\n '&:before': {\n borderBottomColor: theme.palette.primary.light,\n },\n '&:after': {\n borderBottomColor: theme.palette.primary.main,\n },\n '&:hover:before': {\n borderBottomColor: `${theme.palette.primary.light} !important`,\n },\n },\n textField: {\n borderBottomColor: theme.palette.background.light,\n },\n formButtons: {\n width: '100%',\n marginTop: theme.spacing(4),\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n button: {\n display: 'inline-block',\n margin: '0 auto',\n },\n forgetButton: {\n textTransform: 'none',\n fontWeight: 400,\n },\n loginLoader: {\n display: 'inline-block',\n margin: '0 auto',\n },\n copyright: {\n marginTop: theme.spacing(4),\n whiteSpace: 'nowrap',\n fontSize: '0.9rem',\n position: 'absolute',\n top: '90%',\n [theme.breakpoints.up('md')]: {\n bottom: theme.spacing(2),\n },\n },\n passwordRules: {\n marginTop: '0.6rem',\n fontSize: '0.9rem',\n fontStyle: 'italic',\n fontWeight: 400,\n },\n}))\n","import React, { useState } from 'react'\nimport { Grid, CircularProgress, Fade, TextField as Input } from '@material-ui/core'\nimport { withRouter, useHistory } from 'react-router-dom'\n\n// styles\nimport useStyles from './styles'\n\n// logo\nimport logo from '../../images/logo-large-dark.svg'\n\n// context\nimport { useUserDispatch, useUserState, actions } from '../../context/UserContext'\n\n//components\nimport { Button, Typography } from '../../components/Wrappers'\n\nfunction Reset() {\n const classes = useStyles()\n const history = useHistory()\n const userDispatch = useUserDispatch()\n const userState = useUserState()\n\n const [password, setPassword] = useState('')\n const [confirmPassword, setConfirmPassword] = useState('')\n\n const doCompletePassword = () => {\n actions.completeNewPassword(userState.currentUser, password, history)(userDispatch)\n }\n\n return (\n \n
\n \"logo\"\n
\n
\n
\n \n CHOOSE PASSWORD\n \n
\n
\n
\n 0}\n style={!userState.errorMessage.length === 0 ? { display: 'none' } : { display: 'inline-block' }}\n >\n \n {userState.errorMessage}\n \n \n setPassword(e.target.value)}\n margin=\"normal\"\n placeholder=\"Password\"\n type=\"password\"\n fullWidth\n />\n setConfirmPassword(e.target.value)}\n margin=\"normal\"\n placeholder=\"Confirm Password\"\n type=\"password\"\n fullWidth\n />\n \n Password must be at least 6 characters long, requires 1 number, 1 uppercase and 1 lowercase\n letter\n \n
\n {userState.isLoading ? (\n \n ) : (\n doCompletePassword()}\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n >\n change password\n \n )}\n
\n
\n \n © 2020 Smile Academy Pty Ltd. All rights reserved.\n \n
\n \n )\n}\n\nexport default withRouter(Reset)\n","import { makeStyles } from '@material-ui/styles'\n\nexport default makeStyles(theme => ({\n container: {\n height: '100vh',\n width: '100vw',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n top: 0,\n left: 0,\n },\n logotype: {\n display: 'flex',\n marginBottom: theme.spacing(4),\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n logotypeText: {\n fontWeight: 500,\n color: 'white',\n marginLeft: theme.spacing(2),\n },\n logotypeIcon: {\n width: 300,\n },\n paperRoot: {\n boxShadow: theme.customShadows.widgetDark,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: theme.spacing(8),\n paddingBottom: theme.spacing(8),\n paddingLeft: theme.spacing(6),\n paddingRight: theme.spacing(6),\n maxWidth: 800,\n },\n textRow: {\n marginBottom: theme.spacing(4),\n textAlign: 'center',\n },\n textField: {\n marginBottom: theme.spacing(4),\n textAlign: 'center',\n },\n submitButton: {\n textTransform: 'none',\n fontSize: 18,\n },\n}))\n","import React, { useEffect, useState } from 'react'\nimport { toast } from 'react-toastify'\nimport { useLocation } from 'react-router-dom'\nimport { Grid, Paper, TextField } from '@material-ui/core'\n\n// styles\nimport useStyles from './styles'\n\n//components\nimport { Button, Typography } from '../../components/Wrappers'\n\n// logo\nimport logo from '../../images/logo-large.jpg'\n\n// context\nimport { actions } from '../../context/OrderContext'\n\nconst TreatmentPlan = () => {\n const classes = useStyles()\n const location = useLocation()\n\n const [practiceId, setPracticeId] = useState()\n const [orderId, setOrderId] = useState()\n const [token, setToken] = useState('')\n\n useEffect(() => {\n const queryString = new URLSearchParams(location.search)\n setPracticeId(queryString.get('practiceId'))\n setOrderId(queryString.get('orderId'))\n }, [location.search]) //eslint-disable-line\n\n const handleChange = e => setToken(e.target.value)\n\n const handleDownloadTreatmentPlan = () => {\n if (!practiceId || !orderId) {\n toast.error('The URL to acess the treatment plan is invalid')\n } else {\n actions.doDownloadTreatmentFile(practiceId, orderId, token)\n }\n }\n\n return (\n \n \n
\n \"logo\"\n
\n \n Please, enter the token to access your treatment plan\n \n \n \n Download\n \n
\n
\n )\n}\n\nexport default TreatmentPlan\n","import React from 'react'\nimport { HashRouter, Route, Switch, Redirect } from 'react-router-dom'\nimport { ToastContainer, Slide } from 'react-toastify'\nimport { Close as CloseIcon } from '@material-ui/icons'\nimport useStyles from './styles'\n\n// components\nimport Layout from './Layout'\n\n// pages\nimport Error from '../pages/error'\nimport Login from '../pages/login'\nimport Reset from '../pages/reset'\nimport TreatmentPlan from '../pages/treatment-plan'\n\n// context\nimport { useUserState } from '../context/UserContext'\n\nconst App = () => {\n const classes = useStyles()\n const userState = useUserState()\n\n const isAuth = userState.isAuthenticated\n\n const CloseButton = ({ closeToast, className }) => \n\n const PrivateRoute = ({ component, ...rest }) => (\n (isAuth ? React.createElement(component, props) : )}\n />\n )\n\n const PublicRoute = ({ component, ...rest }) => (\n (isAuth ? : React.createElement(component, props))}\n />\n )\n\n return (\n <>\n }\n />\n \n \n } />\n } />\n \n \n \n \n \n \n \n \n )\n}\n\nexport default App\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 http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\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(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\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.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(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\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 .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 (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\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(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import tinycolor from 'tinycolor2';\n\nconst navy = '#1B154A';\nconst poppy = '#ED3378';\nconst pumpkin = '#F79321';\nconst coral = '#F16567';\n\nconst primary = navy;\nconst secondary = poppy;\nconst tertiary = pumpkin;\nconst quaternary = coral;\n\nconst warning = '#FFC260';\nconst success = '#3CD4A0';\nconst info = '#9013FE';\n\nconst lightenRate = 7.5;\nconst darkenRate = 15;\n\nconst defaultTheme = {\n palette: {\n primary: {\n main: primary,\n light: tinycolor(primary).lighten(lightenRate).toHexString(),\n dark: tinycolor(primary).darken(darkenRate).toHexString(),\n },\n secondary: {\n main: secondary,\n light: tinycolor(secondary).lighten(lightenRate).toHexString(),\n dark: tinycolor(secondary).darken(darkenRate).toHexString(),\n contrastText: '#ccc',\n },\n tertiary: {\n main: tertiary,\n light: tinycolor(tertiary).lighten(lightenRate).toHexString(),\n dark: tinycolor(tertiary).darken(darkenRate).toHexString(),\n },\n quaternary: {\n main: quaternary,\n light: tinycolor(quaternary).lighten(lightenRate).toHexString(),\n dark: tinycolor(quaternary).darken(darkenRate).toHexString(),\n },\n warning: {\n main: warning,\n light: tinycolor(warning).lighten(lightenRate).toHexString(),\n dark: tinycolor(warning).darken(darkenRate).toHexString(),\n },\n success: {\n main: success,\n light: tinycolor(success).lighten(lightenRate).toHexString(),\n dark: tinycolor(success).darken(darkenRate).toHexString(),\n contrastText: '#fff',\n },\n info: {\n main: info,\n light: tinycolor(info).lighten(lightenRate).toHexString(),\n dark: tinycolor(info).darken(darkenRate).toHexString(),\n },\n inherit: {\n main: 'inherit',\n light: tinycolor('inherit').lighten('inherit').toHexString(),\n dark: tinycolor('inherit').darken('inherit').toHexString(),\n },\n text: {\n primary: '#4A4A4A',\n secondary: '#6E6E6E',\n hint: '#B9B9B9',\n },\n background: {\n default: '#F6F7FF',\n light: '#F3F5FF',\n dark: '#E9EAF2',\n },\n },\n customShadows: {\n widget: '0px 3px 11px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A',\n widgetDark: '0px 3px 18px 0px #4558A3B3, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A',\n widgetWide: '0px 12px 33px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A',\n },\n};\n\nexport default defaultTheme;\n","import defaultTheme from './default';\nimport { createTheme } from '@material-ui/core';\n\nconst overrides = {\n typography: {\n h1: {\n fontSize: '3rem',\n },\n h2: {\n fontSize: '2rem',\n },\n h3: {\n fontSize: '1.64rem',\n },\n h4: {\n fontSize: '1.5rem',\n },\n h5: {\n fontSize: '1.285rem',\n },\n h6: {\n fontSize: '1.142rem',\n },\n },\n overrides: {\n MuiCard: {\n root: {\n boxShadow: '0px 3px 11px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A',\n },\n },\n MUIDataTable: {\n paper: {\n boxShadow: '0px 3px 11px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A',\n },\n },\n MuiBackdrop: {\n root: {\n backgroundColor: '#4A4A4A1A',\n },\n },\n MuiMenu: {\n paper: {\n boxShadow: '0px 3px 11px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A',\n },\n },\n MuiSelect: {\n icon: {\n color: '#B9B9B9',\n },\n },\n MuiListItem: {\n root: {\n '&$selected': {\n backgroundColor: '#F3F5FF !important',\n '&:focus': {\n backgroundColor: '#F3F5FF',\n },\n },\n },\n button: {\n '&:hover, &:focus': {\n backgroundColor: '#F3F5FF',\n },\n },\n },\n MuiTouchRipple: {\n child: {\n backgroundColor: 'white',\n },\n },\n MuiTableRow: {\n root: {\n height: 56,\n },\n },\n MuiTableCell: {\n root: {\n borderBottom: '1px solid rgba(224, 224, 224, .5)',\n padding: '14px 40px 14px 24px',\n },\n head: {\n fontSize: '0.95rem',\n },\n body: {\n fontSize: '0.95rem',\n },\n paddingCheckbox: {\n padding: '0 0 0 15px',\n },\n },\n },\n};\n\nconst appTheme = {\n default: createTheme({ ...defaultTheme, ...overrides }),\n};\n\nexport default appTheme;\n","import React from \"react\";\nimport Themes from \"../themes\";\n\nconst ThemeStateContext = React.createContext();\nconst ThemeDispatchContext = React.createContext();\n\nfunction ThemeProvider({ children }) {\n var [theme, setTheme] = React.useState(\n Themes[localStorage.getItem(\"theme\")] || Themes.default\n );\n return (\n \n \n {children}\n \n \n );\n}\n\nfunction useThemeState() {\n var context = React.useContext(ThemeStateContext);\n if (context === undefined) {\n throw new Error(\"useThemeState must be used within a ThemeProvider\");\n }\n return context;\n}\n\nfunction useThemeDispatch() {\n var context = React.useContext(ThemeDispatchContext);\n if (context === undefined) {\n throw new Error(\"useThemeDispatch must be used within a ThemeProvider\");\n }\n return context;\n}\n\nexport { ThemeProvider, useThemeState, useThemeDispatch, ThemeStateContext };\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { ThemeProvider } from \"@material-ui/styles\";\nimport App from \"./components/App\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport { LayoutProvider } from \"./context/LayoutContext\";\nimport { UserProvider } from \"./context/UserContext\";\nimport { OrderProvider } from \"./context/OrderContext\";\nimport {\n ThemeProvider as ThemeChangeProvider,\n ThemeStateContext\n} from \"./context/ThemeContext\";\nimport { CssBaseline } from \"@material-ui/core\";\nimport config from \"./config\";\nimport Amplify from \"aws-amplify\";\n\nAmplify.configure(config);\n\nReactDOM.render(\n \n \n \n \n {theme => (\n \n \n \n \n \n \n )}\n \n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"names":["makeStyles","theme","layoutContainer","height","display","flexDirection","justifyContent","alignItems","marginTop","spacing","border","borderColor","palette","primary","main","position","layoutText","color","tinycolor","background","light","darken","toHexString","layoutButtonsRow","width","layoutButton","backgroundColor","outline","layoutButtonActive","buttonsContainer","notificationCallButton","marginBottom","textTransform","codeContainer","codeComponent","flexGrow","notificationItem","notificationCloseButton","right","toastsContainer","boxShadow","overflow","paddingRight","progress","visibility","notification","root","maxWidth","overflowX","content","padding","minHeight","contentShift","transition","transitions","create","easing","sharp","duration","enteringScreen","fakeToolbar","mixins","toolbar","link","marginRight","defaultRadio","successRadio","secondaryRadio","warningRadio","infoRadio","button","customShadows","widget","widgetWide","ecommerceIcon","calendarIcon","margin","changeThemeFab","top","zIndex","borderRadius","borderTopLeftRadius","borderBottomLeftRadius","navPadding","paddingTop","paddingBottom","date","type","logotype","marginLeft","fontWeight","fontSize","whiteSpace","breakpoints","down","appBar","drawer","leavingScreen","paddingLeft","hide","grow","search","alpha","common","black","cursor","searchFocused","up","searchIcon","searchIconOpened","inputRoot","inputInput","messageContent","headerMenu","headerMenuList","headerMenuItem","headerMenuButton","headerMenuButtonCollapse","headerIcon","headerIconCollapse","profileMenu","minWidth","profileMenuUser","profileMenuItem","text","hint","profileMenuIcon","profileMenuLink","textDecoration","messageNotification","messageNotificationSide","messageNotificationBodySide","sendMessageButton","sendButtonIcon","headerRightLabel","headerButton","smileAcademyLogo","useStyles","badge","props","variant","Badge","children","colorBrightness","classes","Styled","createStyled","getColor","useTheme","styledProps","classnames","Chip","Typography","weight","size","block","uppercase","style","getFontWeight","getFontSize","component","Button","className","contained","outlined","select","Avatar","colorDefault","brightness","multiplier","defaultSize","typography","fontStyle","styles","options","withStyles","LayoutStateContext","React","LayoutDispatchContext","layoutReducer","state","action","isSidebarOpened","Error","LayoutProvider","dispatch","Provider","value","useLayoutState","context","undefined","useLayoutDispatch","toggleSidebar","mockUser","username","pool","userPoolId","clientId","signInUserSession","idToken","jwtToken","payload","sub","token_use","refreshToken","token","accessToken","authenticationFlowType","attributes","email_verified","name","email","practice","practiceId","address","allowFullArchTreatment","mockOrder","status","createdAt","orderId","prescriberName","patientName","instructions","trimLine","allowIPR","allowAttachment","upperMidline","lowerMidline","anteriorLeveling","treatmentType","links","url","mockFileUpload","signed_link","key","original_filename","mockOrdersList","count","items","serialNumber","configVariables","termsAndConditionsUrl","contactEmailAddress","youtubeVideo","consentFormUrl","marketingMaterialUrl","pricingUrlAustralia","pricingUrlNewZealand","isBackend","process","Auth","password","mandatorySignIn","region","userPoolWebClientId","API","endpoints","endpoint","custom_header","session","Authorization","i","UserStateContext","UserDispatchContext","apiName","config","isOrthoUser","data","userGroups","RegExp","test","initialData","isLoading","isAuthenticated","localStorage","getItem","isOrtho","currentUser","territory","errorMessage","userReducer","UserProvider","useUserState","useUserDispatch","actions","signIn","history","setTimeout","setItem","getCurrentUser","user","challengeName","push","console","log","signOut","removeItem","Promise","all","cognitoUser","completeNewPassword","toast","challengeParam","userAttributes","message","extractExtensionFrom","filename","exec","getUniqueFilename","order","fileExtension","uploadToFullContour","patient","paramCase","prescriber","match","refinement","previousCaseNumber","folder","provideTreatmentPlan","desc","a","b","orderBy","stableSort","array","cmp","stabilizedThis","map","el","index","sort","getSorting","deepClone","obj","clone","Object","assign","keys","forEach","Array","isArray","length","from","defaultOption","otherOption","DeliveryTextField","newOrder","formErrors","attribute","onChange","TextField","id","label","required","error","DeliveryFormControl","FormControl","InputLabel","Select","labelId","item","MenuItem","Section","title","Divider","InvoicingSection","onTextFieldChange","RadioGroup","invoicingOption","FormControlLabel","control","invoicingRecipientAttributes","attr","DeliverySection","deliveryOption","deliveryAddressAttributes","TermsAndConditions","checkboxValue","checkboxClicked","Checkbox","checked","_","href","target","rel","termsAccepted","termsClicked","impressionMethod","scanMethod","emptyOrder","arches","posteriorCrossbite","anteriorPosteriorRelation","retainersRequired","dentalMonitoring","moment","format","method","invoicingRecipient","deliveryStreetAddress","deliverySuburb","deliveryPostcode","deliveryState","defaultFormStepsTitle","refinementFormStepsTitle","designAttributes","scope","displayValue","helperText","getDesignAttributesForRefinementOrder","allAttributes","filter","includes","shift","slice","getDesignAttributesForOrder","pop","caseDesignAttributes","attributesCopy","excludedProperties","sanitizeFormEntry","formValues","hasMissingRequiredFields","errorFields","values","x","findMissingRequiredFields","formAttributes","reduce","errors","formatInvoicingAndDelivery","orderCopy","isNewOrder","deliveryAddress","OrderStateContext","OrderDispatchContext","findLoading","findError","fetchLoading","fetchError","saveLoading","saveError","currentOrder","fileUploadLoading","fileUploadError","fileUpload","orders","searchInput","orderStatus","orderReducer","OrderProvider","useOrderState","useOrderDispatch","displayError","errorMsg","response","finalMessage","doResetState","doNewForm","doFind","doCreate","body","doCancel","doUploadFile","file","res","mustUploadToFullContour","uploadLinkEndpoint","uniqueFilename","headers","uploadLink","axios","treatmentPlanFile","patientPhotos","doDeleteUploadedFile","doFetch","queryStringParameters","doDownloadTreatmentFile","window","open","doSearchOrders","Header","layoutState","layoutDispatch","userState","userDispatch","orderDispatch","useState","isSmall","setSmall","practiceName","useEffect","addEventListener","handleWindowWidthChange","removeEventListener","windowWidth","innerWidth","breakpointWidth","md","AppBar","Toolbar","IconButton","onClick","classNames","ArrowBack","Menu","src","alt","userActions","orderActions","menuButton","flexShrink","drawerOpen","drawerClose","sidebarList","mobileBackButton","only","popover","fab","noBoxShadow","buttonLabel","input","borderBottom","chat","default","linkActive","linkNested","linkIcon","secondary","linkIconActive","linkText","linkTextActive","linkTextHidden","opacity","nestedList","sectionTitle","divider","expand","transform","expandWrapper","nestedMenu","nestedMenuItem","dotBase","dotMedium","dotLarge","Dot","Chat","onClose","Dialog","fullWidth","DialogTitle","Box","DialogContent","pb","px","py","placeholder","SidebarLink","icon","location","nested","toggleDrawer","click","isOpen","setIsOpen","anchorEl","setAnchorEl","isChat","setChat","onLogin","reload","clickName","classes2","useStyles2","isLinkActive","pathname","Boolean","addSectionClick","event","currentTarget","addSectionClose","chatSetOpen","ListItem","Link","toggleCollapse","to","disableRipple","ListItemIcon","Inbox","badgeContent","badgeColor","ListItemText","Collapse","in","timeout","unmountOnExit","List","disablePadding","childrenLink","e","onKeyPress","Popover","anchorOrigin","vertical","horizontal","transformOrigin","paper","m","mt","preventDefault","withRouter","structure","isPermanent","setPermanent","Drawer","isSmallScreen","card","cardMedia","cardMediaHidden","media","useHistory","handleViewOrder","handleCreateOrder","CreateOrderCard","Card","CardHeader","CardMedia","image","newOrderImage","CardContent","CardActions","ViewOrdersCard","viewOrderImage","CreateRefinementCard","EmptyCard","Grid","container","widgetWrapper","inheritHeight","widgetHeader","widgetRoot","widgetBody","fullHeight","noPadding","moreButton","Widget","subtitle","noBodyPadding","bodyClass","disableWidgetMenu","header","searchField","moreButtonRef","setMoreButtonRef","isMoreMenuOpen","setMoreMenuOpen","paperClass","noWrap","alignSelf","ml","textField","InputProps","startAdornment","InputAdornment","Search","buttonRef","disableAutoFocusItem","stepCompleted","notificationItemIcon","imgWrap","photoReqWrap","textAlign","galleryWrap","uploadLabel","deleteImageX","left","lineHeight","orderSubmitting","orderSubmitted","progressCentered","marginText","marginTextBottom","noteText","methodCard","dark","methodCardClicked","treatmentPlanCard","treatmentPlanCardClicked","boldText","boldAndUnderlinedText","progressSection","progressTitle","pieChartLegendWrapper","legendItemContainer","fullHeightBody","alignStandaloneElement","tableWidget","progressBar","warning","performanceLegendWrapper","legendElement","legendElementText","serverOverviewElement","serverOverviewElementText","serverOverviewElementChartWrapper","mainChartBody","mainChartHeader","flexWrap","mainChartHeaderLabels","mainChartHeaderLabel","mainChartSelectRoot","mainChartSelect","mainChartLegentElement","table","tableWrapper","visuallyHidden","clip","fixIconRight","actionsIcon","orderStatusChip","pointerEvents","copyTokenButton","openLinkButton","success","contrastText","copyLinkButton","activeStep","stepsTitle","xs","Stepper","Step","StepLabel","completed","isRefinement","onClickNext","onClickBack","formSteps","isFirstStep","isLastStep","isSubmitStep","needTreatmentPlanClicked","TreatmentTypeNote","FormHelperText","multiline","minRows","methodClicked","Scan","Impression","notificationContainer","notificationContained","widgetDark","notificationContainedShadowless","notificationIconContainer","notificationIconContainerContained","notificationIconContainerRounded","containedTypography","messageContainer","extraButton","typesIcons","ShoppingCart","offer","info","ThumbUp","feedback","customer","shipped","delivered","defence","report","Report","upload","disc","Notification","getIconByType","iconWithStyles","notificationIcon","shadowless","setAlpha","toRgbString","typographyVariant","extraButtonClick","AttachmentRequirements","isImpressionMethod","photoRequirementsImage","FileUpload","orderState","isUploadingFile","hasUploadedFile","handleFiles","files","mr","acceptedFiles","filesLimit","maxFileSize","dropzoneText","showFileNames","onDelete","orderCreationInProgress","orderCreationFailure","orderCreationSuccess","isSaving","hasFailed","setNewOrder","setActiveStep","acceptTC","setAcceptTC","setError","goNext","step","prevActiveStep","goBack","formStepsValidation","isValidPrescriberName","trim","isValidPatientName","caseDesignForm","requiredFieldErrors","isValidInvoicing","isValidDelivery","doSubmit","handleTextFieldChange","handleNext","formattedForm","sanitizedFormValues","entries","formStepsComponent","clicked","refinementOrder","setRefinementOrder","newRefinement","initialOrder","previousOrderId","caseNumber","manufacturer","initRefinementOrder","refinementFormStepsComponent","orderStatuses","colorForStatus","useLocation","isCancelOrderModalOpen","setCancelOrderModalOpen","URLSearchParams","get","backToList","handleCancelOrder","handleClickCreateRefinement","handleClickViewRefinement","refinementOrderId","handleOpenLink","handleCopyToken","navigator","clipboard","writeText","handleModalAction","renderCaseLink","isApprovalLink","placement","disableFocusListener","disableTouchListener","enterDelay","direction","canCancelOrder","canCreateRefinement","orderHasRefinement","sentenceCase","replace","treatmentInvoiced","Warning","split","idx","scroll","DialogContentText","DialogActions","autoFocus","getShortTreatmentType","headCells","alignLeft","isSortable","EnhancedTableToolbar","onSearchInputChange","onOrderStatusChange","searchValue","lg","xl","gap","active","propTypes","PropTypes","EnhancedTableHead","onRequestSort","TableHead","TableRow","headCell","TableCell","align","sortDirection","TableSortLabel","property","isRequired","rowCount","setOrder","setOrderBy","page","setPage","rowsPerPage","setRowsPerPage","filteredItems","setFilteredItems","currentStatusFilter","regexp","o","filterItems","newStatus","Table","TableBody","colSpan","row","hover","tabIndex","TablePagination","rowsPerPageOptions","backIconButtonProps","nextIconButtonProps","onPageChange","newPage","onRowsPerPageChange","parseInt","cardContent","gridRow","gridItem","PhoneAndEmailCard","PostalAddressCard","logo","logotypeImage","ViewPricingCard","DownloadConsentCard","DownloadMarketingCard","Home","Description","FormatListBulleted","ArrowDownward","wrap","elt","hash","Breadcrumbs","Date","toLocaleDateString","weekday","year","month","day","separator","NavigateNext","route","word","toUpperCase","join","middlewareUrl","renderBreadCrumbs","path","Dashboard","exact","render","OrderAdd","OrderView","OrderRefine","OrderList","ContactUs","Download","logotypeText","logotypeIcon","paperRoot","textRow","errorCode","safetyText","backButton","logotypeContainer","customFormContainer","formContainer","form","customForm","tab","formTitle","greeting","subGreeting","googleButton","googleButtonCreating","googleIcon","creatingButtonContainer","createAccountButton","formDividerContainer","formDividerWord","formDivider","textFieldUnderline","borderBottomColor","formButtons","forgetButton","loginLoader","copyright","bottom","generalInformation","generalInformationLink","quaternary","youtubeLink","getGreeting","d","getHours","setEmail","setPassword","isError","Fade","underline","InputUnderline","Input","disabled","getFullYear","passwordRules","confirmPassword","setConfirmPassword","submitButton","setPracticeId","setOrderId","setToken","queryString","isAuth","CloseButton","closeToast","Close","PrivateRoute","rest","PublicRoute","autoClose","Slide","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","closeButton","Layout","Login","Reset","TreatmentPlan","hostname","tertiary","lightenRate","darkenRate","lighten","inherit","createTheme","defaultTheme","h1","h2","h3","h4","h5","h6","overrides","MuiCard","MUIDataTable","MuiBackdrop","MuiMenu","MuiSelect","MuiListItem","MuiTouchRipple","child","MuiTableRow","MuiTableCell","head","paddingCheckbox","ThemeStateContext","ThemeDispatchContext","ThemeProvider","Themes","setTheme","Amplify","ReactDOM","Consumer","CssBaseline","document","getElementById","serviceWorker","ready","then","registration","unregister"],"sourceRoot":""}