{"version":3,"file":"react/js/main-31743c5a.d1017e0c7e84d63ff344.js","mappings":"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","sources":["webpack:///./src/components/ImageCropperModal.tsx","webpack:///./src/components/LoadingDialog.tsx","webpack:///./src/components/MarkdownRenderer.tsx","webpack:///./src/components/MaskedInput.tsx","webpack:///./src/components/ResponsiveImage.tsx","webpack:///./src/components/TextWithLineBreaks.tsx","webpack:///./src/components/UserAvatar.tsx","webpack:///./src/components/UserProfileImage.tsx","webpack:///./src/components/NotificationCard.tsx","webpack:///./src/components/notifications/ErrorCard.tsx","webpack:///./src/components/styled/StyledCardComponents/StyledAspectRatioBox.tsx","webpack:///./src/components/styled/StyledCardComponents/Types/CardImageProps.tsx","webpack:///./src/components/styled/StyledCardComponents/Types/CardTypes.tsx","webpack:///./src/components/styled/StyledCardComponents/SubComponents/StyledCardImageBox.tsx","webpack:///./src/components/styled/StyledCardComponents/StyledImageComponentWithHover.tsx","webpack:///./src/components/styled/StyledCardComponents/Types/EffectTypes.tsx","webpack:///./src/components/styled/StyledCardComponents/StyledPaperComponent.tsx","webpack:///./src/components/styled/StyledCardComponents/SubComponents/StyledCardContent.tsx","webpack:///./src/components/styled/StyledCardComponents/SubComponents/StyledCardHeader.tsx","webpack:///./src/components/styled/StyledCardComponents/SubComponents/StyledCardPaper.tsx","webpack:///./src/components/styled/StyledCardComponents/Types/HeaderTypes.tsx","webpack:///./src/components/styled/imageCarousel/ImageCarousel.tsx","webpack:///./src/hooks/useFetch.tsx","webpack:///./src/hooks/useLoadingDialog.tsx","webpack:///./src/initialisation/WarnOverrides.tsx","webpack:///./src/index.tsx","webpack:///./src/initialisation/AppInit.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\r\nimport\r\n{\r\n Button, Dialog, DialogActions, DialogContent, DialogTitle,\r\n Box, Typography, Slider, TextField,\r\n Theme,\r\n useTheme\r\n} from '@mui/material';\r\nimport Cropper, { Area } from 'react-easy-crop';\r\nimport CancelIcon from '@mui/icons-material/Cancel';\r\nimport SaveIcon from '@mui/icons-material/Save';\r\nimport RotateLeftIcon from '@mui/icons-material/RotateLeft';\r\n\r\nexport interface ICropperState\r\n{\r\n crop: { x: number, y: number };\r\n zoom: number;\r\n rotation: number;\r\n croppedAreaPixels: Area | null;\r\n}\r\n\r\nexport interface IImageCropperModalProps\r\n{\r\n open: boolean;\r\n base64Image: string;\r\n imageType: 'Banner' | 'Thumbnail';\r\n onClose: () => void;\r\n onSave: (croppedImage: string) => void;\r\n}\r\n\r\nconst ImageCropperModal: React.FC = ({\r\n open, base64Image, imageType, onClose, onSave\r\n}) =>\r\n{\r\n const theme: Theme = useTheme();\r\n const [ cropperState, setCropperState ] = useState({\r\n crop: { x: 0, y: 0 },\r\n zoom: 1,\r\n rotation: 0,\r\n croppedAreaPixels: null\r\n });\r\n const [ uploadedImage, setUploadedImage ] = useState(null);\r\n\r\n useEffect(() =>\r\n {\r\n setCropperState({\r\n crop: { x: 0, y: 0 },\r\n zoom: 1,\r\n rotation: 0,\r\n croppedAreaPixels: null\r\n });\r\n }, [ open ]);\r\n\r\n const handleCropChange = useCallback((newCrop: { x: number, y: number }) =>\r\n {\r\n setCropperState(prevState => ({ ...prevState, crop: newCrop }));\r\n }, []);\r\n\r\n const handleZoomChange = useCallback((newZoom: number) =>\r\n {\r\n setCropperState(prevState => ({ ...prevState, zoom: newZoom }));\r\n }, []);\r\n\r\n const handleRotationChange = useCallback((newRotation: number) =>\r\n {\r\n setCropperState(prevState => ({ ...prevState, rotation: newRotation }));\r\n }, []);\r\n\r\n const handleCropComplete = useCallback((croppedArea: Area, croppedAreaPixels: Area) =>\r\n {\r\n setCropperState(prevState => ({ ...prevState, croppedAreaPixels }));\r\n }, []);\r\n\r\n const handleReset = () =>\r\n {\r\n setCropperState({\r\n crop: { x: 0, y: 0 },\r\n zoom: 1,\r\n rotation: 0,\r\n croppedAreaPixels: null\r\n });\r\n setUploadedImage(null);\r\n };\r\n\r\n const handleImageUpload = (e: React.ChangeEvent) =>\r\n {\r\n const file = e.target.files?.[ 0 ];\r\n if (file)\r\n {\r\n const reader = new FileReader();\r\n reader.onload = () =>\r\n {\r\n const base64Image = reader.result as string;\r\n setUploadedImage(base64Image);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) =>\r\n {\r\n e.preventDefault();\r\n const file = e.dataTransfer.files[ 0 ];\r\n if (file)\r\n {\r\n const reader = new FileReader();\r\n reader.onload = () =>\r\n {\r\n const base64Image = reader.result as string;\r\n setUploadedImage(base64Image);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) =>\r\n {\r\n e.preventDefault();\r\n };\r\n\r\n const getCroppedImg = (imageSrc: string, pixelCrop: Area, rotation: number, callback: (croppedImage: string | null) => void): void =>\r\n {\r\n const image = new Image();\r\n image.src = imageSrc;\r\n\r\n image.onload = () =>\r\n {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n {\r\n callback(null);\r\n return;\r\n }\r\n\r\n const radians = rotation * Math.PI / 180;\r\n const rotatedWidth = Math.abs(image.width * Math.cos(radians)) + Math.abs(image.height * Math.sin(radians));\r\n const rotatedHeight = Math.abs(image.width * Math.sin(radians)) + Math.abs(image.height * Math.cos(radians));\r\n\r\n canvas.width = rotatedWidth;\r\n canvas.height = rotatedHeight;\r\n\r\n ctx.translate(rotatedWidth / 2, rotatedHeight / 2);\r\n ctx.rotate(radians);\r\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\r\n\r\n const croppedCanvas = document.createElement('canvas');\r\n const croppedCtx = croppedCanvas.getContext('2d');\r\n if (!croppedCtx)\r\n {\r\n callback(null);\r\n return;\r\n }\r\n\r\n croppedCanvas.width = pixelCrop.width;\r\n croppedCanvas.height = pixelCrop.height;\r\n\r\n croppedCtx.drawImage(\r\n canvas,\r\n pixelCrop.x, pixelCrop.y, pixelCrop.width, pixelCrop.height,\r\n 0, 0, pixelCrop.width, pixelCrop.height\r\n );\r\n\r\n callback(croppedCanvas.toDataURL('image/png'));\r\n };\r\n\r\n image.onerror = () =>\r\n {\r\n callback(null);\r\n };\r\n };\r\n\r\n const handleCropSave = () =>\r\n {\r\n if (cropperState.croppedAreaPixels)\r\n {\r\n getCroppedImg(uploadedImage || `data:image/png;base64,${base64Image}`, cropperState.croppedAreaPixels, cropperState.rotation, (croppedImage) =>\r\n {\r\n if (croppedImage)\r\n {\r\n onSave(croppedImage);\r\n }\r\n });\r\n }\r\n };\r\n\r\n const handleWheelRequest = (e: WheelEvent): boolean =>\r\n {\r\n if (e.shiftKey)\r\n {\r\n e.preventDefault();\r\n\r\n setCropperState(prevState => ({ ...prevState, rotation: prevState.rotation + e.deltaY / 10 }));\r\n\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n return (\r\n \r\n theme.palette.secondary.main,\r\n color: (theme) => theme.palette.secondary.contrastText, fontWeight: 'bold', width: '100%'\r\n } }>\r\n Edit { imageType } Image\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Zoom\r\n handleZoomChange(value as number) }\r\n />\r\n \r\n \r\n Rotation\r\n handleRotationChange(value as number) }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n How to interact with the image:\r\n \r\n - Use the mouse wheel to zoom in and out.
\r\n - Hold the shift key and use the mouse wheel to rotate the image.
\r\n - Drag the image to adjust the cropping area.
\r\n - Drag & drop an image or use the upload button to load a new image.\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ImageCropperModal;\r\n","import * as React from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport Button from '@mui/material/Button';\r\nimport styled from '@mui/material/styles/styled';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport { DialogContent } from '@mui/material';\r\nimport { useEffect, useState } from 'react';\r\nimport LoadingControlSlice from '../stores/slices/LoadingControlSlice';\r\nimport { ServiceStoreState } from '../stores/ServiceStore';\r\nimport { isNullOrUndefinedOrEmpty } from '../utilities/Utils';\r\n\r\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\r\n '& .MuiDialog-paper': {\r\n borderRadius: theme.spacing(2), // Adjust the border-radius as needed\r\n },\r\n}));\r\n\r\nconst LoadingDialog: React.FC<{}> = () => {\r\n const displayState = useSelector(\r\n (state: ServiceStoreState) => state.loading,\r\n );\r\n const [isDisplayed, setIsDisplayed] =\r\n useState(displayState.isVisible);\r\n const [dialogMessage, setDialogMessage] = useState<\r\n string | null\r\n >(null);\r\n\r\n useEffect(() => {\r\n setDialogMessage(\r\n !isNullOrUndefinedOrEmpty(\r\n displayState.message,\r\n )\r\n ? displayState.message\r\n : 'Loading, Please wait...',\r\n );\r\n setIsDisplayed(displayState.isVisible);\r\n }, [displayState]);\r\n\r\n const CenteredDialogContent = styled(DialogContent)({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n });\r\n\r\n return (\r\n \r\n {dialogMessage}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default LoadingDialog;\r\n","import React, {useEffect, useState} from 'react';\r\nimport {CircularProgress, Box, Typography, Theme, useTheme} from '@mui/material';\r\n\r\nimport ReactMarkdown from 'react-markdown';\r\nimport MuiMarkdown from 'mui-markdown';\r\nimport remarkGfm from 'remark-gfm';\r\n\r\ninterface MarkdownRendererProps\r\n{\r\n markdown?: string;\r\n url?: string;\r\n}\r\n\r\nconst MarkdownRenderer: React.FC = ({markdown, url}) =>\r\n{\r\n const theme: Theme = useTheme();\r\n\r\n const [content, setContent] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState(null);\r\n\r\n useEffect(() =>\r\n {\r\n if (url)\r\n {\r\n setLoading(true);\r\n fetch(url)\r\n .then((response) =>\r\n {\r\n if (!response.ok)\r\n {\r\n throw new Error('Network response was not ok');\r\n }\r\n return response.text();\r\n })\r\n .then((data) =>\r\n {\r\n setContent(data);\r\n setLoading(false);\r\n })\r\n .catch((error) =>\r\n {\r\n setError('Failed to fetch markdown content.');\r\n setLoading(false);\r\n });\r\n } else\r\n {\r\n setContent(markdown || '');\r\n }\r\n }, [url, markdown]);\r\n\r\n if (loading)\r\n {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n if (error)\r\n {\r\n return (\r\n \r\n

{error}

\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n\r\n \r\n\r\n {content}\r\n\r\n \r\n\r\n \r\n );\r\n};\r\n\r\nexport default MarkdownRenderer;\r\n","import * as React from 'react';\r\nimport { useState, useEffect, Fragment, forwardRef } from 'react';\r\nimport { IMaskInput } from 'react-imask';\r\n\r\n\r\nexport interface ITextFieldMaskedInputProps\r\n{\r\n name: string;\r\n mask: string;\r\n definitions: { [ key: string ]: RegExp };\r\n\r\n onChange: (event: { target: { name: string; value: string } }) => void;\r\n}\r\n\r\nconst TextFieldMaskedInput = React.forwardRef((props, ref) =>\r\n{\r\n const { onChange, ...other } = props;\r\n\r\n return (\r\n onChange({ target: { name: props.name, value } }) }\r\n overwrite\r\n />\r\n );\r\n});\r\n\r\nexport default TextFieldMaskedInput;","import * as React from 'react';\r\nimport {useState, useEffect, useRef} from 'react';\r\nimport {Box, CircularProgress, LinearProgress} from '@mui/material';\r\nimport {notNullOrUndefined} from '../utilities/Utils';\r\nimport {getImageFullUrl} from '../utilities/imageUtils';\r\n\r\ninterface IResponsiveImageProps\r\n{\r\n src?: string;\r\n width: number;\r\n height: number;\r\n alt?: string;\r\n reloadDelay?: number; // Delay in milliseconds\r\n}\r\n\r\nconst ResponsiveImage: React.FC = (props: IResponsiveImageProps = {\r\n src: '',\r\n width: 1,\r\n height: 1,\r\n alt: 'Image',\r\n reloadDelay: 1000\r\n}) =>\r\n{\r\n const timeoutRef = useRef(null);\r\n\r\n //const [src, setSrc] = useState('');\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [loadedOnce, setLoadedOnce] = useState(false);\r\n const [progress, setProgress] = useState(0);\r\n\r\n const [imgSrc, setImgSrc] = useState('');\r\n\r\n useEffect(() =>\r\n {\r\n if (notNullOrUndefined(props.src))\r\n {\r\n setImgSrc(getImageFullUrl(props.src!, props.width, props.height));\r\n }\r\n\r\n }, [props.src, props.width, props.height]);\r\n\r\n useEffect(() =>\r\n {\r\n if (timeoutRef.current)\r\n {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = window.setTimeout(() =>\r\n {\r\n setIsLoading(true);\r\n setProgress(0);\r\n\r\n }, props.reloadDelay);\r\n\r\n return () =>\r\n {\r\n if (timeoutRef.current)\r\n {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n };\r\n\r\n }, [imgSrc, props.reloadDelay]);\r\n\r\n useEffect(() =>\r\n {\r\n if (isLoading && loadedOnce)\r\n {\r\n const interval = setInterval(updateProgress, 200);\r\n\r\n return () => clearInterval(interval);\r\n }\r\n }, [isLoading, loadedOnce]);\r\n\r\n const handleImageLoad = () =>\r\n {\r\n setIsLoading(false);\r\n\r\n if (!loadedOnce)\r\n {\r\n setLoadedOnce(true);\r\n }\r\n };\r\n\r\n const updateProgress = () =>\r\n {\r\n setProgress((prevProgress) => (prevProgress >= 100 ? 100 : prevProgress + 10));\r\n };\r\n\r\n return (\r\n \r\n\r\n {(isLoading && !loadedOnce) && (\r\n \r\n\r\n \r\n\r\n \r\n )}\r\n\r\n \r\n\r\n {(isLoading && loadedOnce) && (\r\n \r\n\r\n \r\n\r\n \r\n )}\r\n\r\n \r\n );\r\n};\r\n\r\nexport default ResponsiveImage;\r\n","import React from 'react';\r\nimport { Typography } from '@mui/material';\r\n\r\ninterface TextWithLineBreaksProps\r\n{\r\n text: string | null | undefined;\r\n}\r\n\r\nconst TextWithLineBreaks: React.FC = ({ text }) =>\r\n{\r\n if (!text)\r\n {\r\n return null;\r\n }\r\n\r\n const lines = text.split('\\n').map((line, index) => (\r\n \r\n { line.split('\\t').map((segment, subIndex) => (\r\n \r\n { segment }\r\n { subIndex < line.split('\\t').length - 1 && '\\u00A0\\u00A0\\u00A0\\u00A0' } {/* 4 non-breaking spaces */ }\r\n \r\n )) }\r\n
\r\n
\r\n ));\r\n\r\n return { lines };\r\n};\r\n\r\nexport default TextWithLineBreaks;\r\n","import * as React from 'react';\r\nimport { Fragment, useEffect, useState } from 'react';\r\n\r\nimport { Avatar, Theme, useTheme } from '@mui/material';\r\n\r\nimport { getAvatar } from '../theming/AvatarUtilities';\r\nimport { IAuthUser } from '../types/authenticationTypes';\r\nimport { notNullOrUndefined } from '../utilities/Utils';\r\n\r\nexport interface IUserAvatarProps {\r\n isLoggedIn: boolean;\r\n user: IAuthUser | null;\r\n size?:\r\n | 'default'\r\n | 'small'\r\n | 'medium'\r\n | 'large'\r\n | 'headerBar';\r\n}\r\n\r\nconst UserAvatar: React.FC = (\r\n props: IUserAvatarProps = {\r\n isLoggedIn: false,\r\n user: null,\r\n size: 'default',\r\n },\r\n) => {\r\n const theme: Theme = useTheme();\r\n\r\n const [avatarParts, setAvatarParts] = useState<\r\n string[]\r\n >(['U']);\r\n\r\n useEffect(() => {\r\n const result: string[] = [];\r\n\r\n if (\r\n notNullOrUndefined(props?.user?.firstName)\r\n ) {\r\n result.push(props!.user!.firstName!);\r\n }\r\n\r\n if (notNullOrUndefined(props?.user?.lastName)) {\r\n result.push(props!.user!.lastName!);\r\n }\r\n\r\n setAvatarParts(result);\r\n }, [props]);\r\n\r\n if (!props.isLoggedIn) {\r\n return ;\r\n }\r\n\r\n return ;\r\n};\r\n\r\nexport default UserAvatar;\r\n","export type UserProfileImageType =\r\n | 'Anonymous'\r\n | 'Businessman'\r\n | 'Captain'\r\n | 'Chief'\r\n | 'Devil'\r\n | 'Doctor'\r\n | 'Employee'\r\n | 'Engineer'\r\n | 'General'\r\n | 'Guest'\r\n | 'Judge'\r\n | 'King'\r\n | 'Knight'\r\n | 'Manager'\r\n | 'Pensioner'\r\n | 'Policeman'\r\n | 'Professor'\r\n | 'Programmer'\r\n | 'Queen'\r\n | 'Security'\r\n | 'Soldier'\r\n | 'Supervisor'\r\n | 'Superman'\r\n | 'Teacher'\r\n | 'Wizard'\r\n | 'Woman';\r\n\r\nexport type UserProfileImageSize =\r\n | '64x64'\r\n | '128x128'\r\n | '256x256';\r\n\r\nexport type UserProfileImageDisplay =\r\n | 'BlackAndWhite'\r\n | 'FullColour';\r\n\r\nimport {Box} from '@mui/material';\r\nimport * as React from 'react';\r\nimport {useState, useEffect, Fragment} from 'react';\r\nimport {getFullUrl} from '../providers/ConfigurationProvider';\r\n\r\nexport interface IUserProfileImageProps\r\n{\r\n type: UserProfileImageType;\r\n size: UserProfileImageSize;\r\n mode: UserProfileImageDisplay;\r\n}\r\n\r\nconst UserProfileImage: React.FC = (\r\n props: IUserProfileImageProps = {\r\n type: 'Employee',\r\n size: '128x128',\r\n mode: 'FullColour',\r\n },\r\n) =>\r\n{\r\n const [userProfileType, setUserProfileType] =\r\n useState(props.type);\r\n const [userProfileSize, setUserProfileSize] =\r\n useState(props.size);\r\n const [displayMode, setDisplayMode] =\r\n useState(props.mode);\r\n\r\n const [currPixelSize, setCurrPixelSize] =\r\n useState(256);\r\n\r\n const [currImgURL, setCurrImgURL] = useState<\r\n string | null\r\n >(null);\r\n\r\n useEffect(() =>\r\n {\r\n setUserProfileSize(props.size);\r\n setUserProfileType(props.type);\r\n setDisplayMode(props.mode);\r\n }, [props]);\r\n\r\n useEffect(() =>\r\n {\r\n setUserProfileSize(props.size);\r\n setUserProfileType(props.type);\r\n\r\n switch (props.size)\r\n {\r\n case '64x64':\r\n setCurrPixelSize(64);\r\n break;\r\n\r\n case '128x128':\r\n setCurrPixelSize(128);\r\n break;\r\n\r\n case '256x256':\r\n setCurrPixelSize(256);\r\n break;\r\n }\r\n\r\n const fullUrl = getFullUrl(`/images/userProfileImages/${userProfileSize}/${userProfileType.toLowerCase()}-${userProfileSize}.png`);\r\n\r\n setCurrImgURL(fullUrl);\r\n\r\n }, [userProfileType, userProfileSize]);\r\n\r\n const grayscaleStyle =\r\n displayMode === 'BlackAndWhite'\r\n ? {filter: 'grayscale(100%)'}\r\n : {};\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default UserProfileImage;\r\n","import React from 'react';\r\nimport {\r\n Icon,\r\n Grid,\r\n Typography,\r\n Box,\r\n SvgIconProps,\r\n useTheme,\r\n Theme,\r\n} from '@mui/material';\r\n\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\r\nimport { isNullOrUndefined } from '../utilities/Utils';\r\nimport { getContrastingColor } from '@uiw/react-color';\r\nimport { IconMaterialUiOrFontAwesome } from '../types/graphicsTypes';\r\n\r\n// Define props interface\r\ninterface IInfoGridProps {\r\n icon: IconMaterialUiOrFontAwesome;\r\n title: string;\r\n description: string;\r\n variant?: 'success' | 'info' | 'warning' | 'error';\r\n}\r\n\r\nconst NotificationCard: React.FC = (\r\n props: IInfoGridProps = {\r\n icon: AccountCircleIcon,\r\n title: '',\r\n description: '',\r\n },\r\n) => {\r\n const theme: Theme = useTheme();\r\n\r\n const getBackgroundColor = () => {\r\n switch (props.variant) {\r\n case 'success':\r\n return theme.palette.success.main;\r\n\r\n case 'info':\r\n return theme.palette.info.main;\r\n\r\n case 'warning':\r\n return theme.palette.warning.main;\r\n\r\n case 'error':\r\n return theme.palette.error.main;\r\n }\r\n\r\n return theme.palette.grey[300];\r\n };\r\n\r\n const getContrastColor = () => {\r\n return getContrastingColor(\r\n getBackgroundColor(),\r\n );\r\n };\r\n\r\n const GetIcon = (\r\n icon:\r\n | React.ComponentType\r\n | IconDefinition,\r\n ) => {\r\n if ('iconName' in icon) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n const IconComponent = icon;\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n {GetIcon(props.icon)}\r\n \r\n\r\n \r\n \r\n \r\n {props.title}\r\n \r\n \r\n\r\n \r\n \r\n {props.description}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NotificationCard;\r\n","import * as React from 'react';\r\nimport { useState, useEffect, Fragment } from 'react';\r\n\r\nimport ErrorIcon from '@mui/icons-material/Error';\r\n\r\nimport {\r\n Box,\r\n Button,\r\n Container,\r\n Paper,\r\n Theme,\r\n Typography,\r\n useTheme,\r\n} from '@mui/material';\r\nimport NotificationCard from '../NotificationCard';\r\nimport {\r\n IHttpResponseStatus,\r\n httpStatusCodes,\r\n} from '../../types/httpTypes';\r\n\r\nexport interface IErrorCardProps {\r\n errorCode: number;\r\n showContactAdminButton: boolean;\r\n children?: React.JSX.Element | React.JSX.Element[];\r\n}\r\n\r\nconst ErrorCard: React.FC = (\r\n props: IErrorCardProps = {\r\n errorCode: 200,\r\n showContactAdminButton: true,\r\n },\r\n) => {\r\n const defaultStatus: IHttpResponseStatus =\r\n httpStatusCodes.find(\r\n (status) => status.code === 472,\r\n )!;\r\n\r\n const [httpStatus, setHttpStatus] =\r\n useState(defaultStatus);\r\n\r\n useEffect(() => {\r\n const status = getStatusFromCode(\r\n props.errorCode,\r\n );\r\n\r\n if (status) {\r\n setHttpStatus(status);\r\n }\r\n }, [props.errorCode]);\r\n\r\n const getStatusFromCode = (\r\n code: number,\r\n ): IHttpResponseStatus | null => {\r\n const result = httpStatusCodes.find(\r\n (status) => status.code === code,\r\n );\r\n\r\n if (result) {\r\n return result;\r\n }\r\n\r\n return defaultStatus;\r\n };\r\n\r\n const renderBottomSection = (\r\n showSection: boolean,\r\n ) => {\r\n if (showSection) {\r\n return (\r\n \r\n \r\n {props.children}\r\n\r\n \r\n \r\n If you think\r\n this is an\r\n error,\r\n contact the\r\n administrator\r\n by clicking\r\n the button\r\n below.\r\n \r\n \r\n \r\n\r\n \r\n \r\n Contact\r\n Administrator\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {\r\n httpStatus.description\r\n }\r\n \r\n \r\n\r\n {renderBottomSection(\r\n props.showContactAdminButton,\r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ErrorCard;\r\n","import * as React from 'react';\r\nimport {useRef, useState, useEffect, Fragment, ReactNode} from 'react';\r\nimport {Box, Theme, SxProps} from '@mui/material';\r\n\r\nexport interface IStyledAspectRatioBoxProps\r\n{\r\n ratio?: number;\r\n sx?: SxProps;\r\n\r\n children: (dimensions: {width: number; height: number;}) => ReactNode;\r\n}\r\n\r\nconst StyledAspectRatioBox: React.FC = (props) =>\r\n{\r\n const {children, ratio = 16 / 9, sx} = props;\r\n\r\n const containerRef = useRef(null);\r\n const [dimensions, setDimensions] = useState({width: 0, height: 0});\r\n\r\n useEffect(() =>\r\n {\r\n const handleResize = () =>\r\n {\r\n if (containerRef.current)\r\n {\r\n const width = containerRef.current.offsetWidth;\r\n const height = width / ratio;\r\n\r\n const resWidth = Math.ceil(width);\r\n const resHeight = Math.ceil(height);\r\n\r\n setDimensions({width: resWidth, height: resHeight});\r\n }\r\n };\r\n\r\n handleResize(); // Initial size calculation\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => window.removeEventListener('resize', handleResize);\r\n\r\n }, [ratio]);\r\n\r\n return (\r\n \r\n \r\n\r\n {children(dimensions)}\r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport default StyledAspectRatioBox;\r\n","import {CardDisplayTextSize, CardFilledType} from \"./CardTypes\";\r\nimport {EffectType} from \"./EffectTypes\";\r\nimport {HeaderTextSize, HeaderTextWeight} from \"./HeaderTypes\";\r\nimport {ImageDimensions} from \"./ImageTypes\";\r\n\r\nexport interface ICardImageProps\r\n{\r\n headerTitle?: string;\r\n headerBackgroundColor?: string;\r\n headerTextColor?: string;\r\n headerSize?: HeaderTextSize;\r\n headerWeight?: HeaderTextWeight;\r\n fillSize?: CardFilledType;\r\n contentBackgroundColor?: string;\r\n borderRadius?: string | 'none';\r\n elevation?: number;\r\n imageUrlBase: string;\r\n navLink?: string;\r\n aspectRatio?: number;\r\n effect?: EffectType;\r\n effectDuration?: number;\r\n effectDelay?: number;\r\n displayName?: string;\r\n displayNameSize?: CardDisplayTextSize;\r\n textColor?: string;\r\n onImageLoad?: (url: string, loaded: boolean, dimensions?: ImageDimensions) => void;\r\n}\r\n\r\nexport interface IStyledImageComponentWithHoverProps extends ICardImageProps\r\n{\r\n hoverEffect?: boolean;\r\n}\r\n\r\nexport const DefaultCardImageProps: ICardImageProps = {\r\n headerSize: 'large',\r\n fillSize: 'none',\r\n headerWeight: 'bold',\r\n borderRadius: '4px',\r\n elevation: 5,\r\n imageUrlBase: '',\r\n aspectRatio: 1.5,\r\n effect: 'none',\r\n effectDuration: 0.5,\r\n effectDelay: 0.1,\r\n};\r\n\r\nexport const DefaultStyledImageComponentWithHoverProps: IStyledImageComponentWithHoverProps = {\r\n ...DefaultCardImageProps,\r\n hoverEffect: true,\r\n};","export type CardFilledType = 'width' | 'height' | 'both' | 'none';\r\n\r\nexport type CardDisplayTextSize = 'small' | 'medium' | 'large' | 'extra-large' | 'xx-large';\r\n\r\nexport const getCardDisplayTextSize = (size?: CardDisplayTextSize): string =>\r\n{\r\n switch (size)\r\n {\r\n case 'small':\r\n return '0.75rem'; // Small font size\r\n case 'medium':\r\n return '1rem'; // Medium font size\r\n case 'large':\r\n return '1.25rem'; // Large font size\r\n case 'extra-large':\r\n return '1.5rem'; // Extra-large font size\r\n case 'xx-large':\r\n return '1.75rem'; // Extra-large font size\r\n }\r\n\r\n return '1rem'; // Large font size\r\n};\r\n\r\nexport const getCardDisplayTextLineSize = (size?: CardDisplayTextSize): string =>\r\n{\r\n switch (size)\r\n {\r\n case 'small':\r\n return '0.85rem';\r\n case 'medium':\r\n return '1.1rem';\r\n case 'large':\r\n return '1.35rem';\r\n case 'extra-large':\r\n return '1.6rem';\r\n case 'xx-large':\r\n return '1.85rem';\r\n }\r\n\r\n return '1.1rem';\r\n};","import * as React from 'react';\r\nimport { Box, Typography, styled, useTheme } from '@mui/material';\r\nimport { useState, useEffect, Fragment } from 'react';\r\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline'; // Import MUI icon\r\nimport { ImageDimensions } from '../Types/ImageTypes';\r\nimport { CardDisplayTextSize, getCardDisplayTextLineSize, getCardDisplayTextSize } from '../Types/CardTypes';\r\n\r\nexport interface IStyledCardImageBoxProps\r\n{\r\n imageUrl: string;\r\n displayName?: string;\r\n displayNameSize?: CardDisplayTextSize;\r\n textColor?: string;\r\n hoverEffect?: boolean;\r\n dimensions: { width: number; height: number; };\r\n onClick?: () => void;\r\n onImageLoad?: (url: string, loaded: boolean, dimensions?: ImageDimensions) => void;\r\n}\r\n\r\nconst ImageBox = styled(Box)(({ theme }) => ({\r\n position: 'relative',\r\n overflow: 'hidden',\r\n '& .image-container': {\r\n width: '100%',\r\n height: '100%',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n },\r\n '& .color-image-container': {\r\n overflow: 'hidden',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n clipPath: 'inset(0 0 100% 0)',\r\n transition: 'clip-path 0.5s ease',\r\n },\r\n '&:hover .color-image-container': {\r\n clipPath: 'inset(0 0 0 0)',\r\n },\r\n '& .grayscale-image': {\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover',\r\n filter: 'grayscale(100%) brightness(50%)',\r\n },\r\n '& .color-image': {\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover',\r\n },\r\n '& .display-name': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n textAlign: 'center',\r\n padding: '8px',\r\n wordWrap: 'break-word',\r\n transition: 'all 0.4s ease-in-out',\r\n },\r\n '&:hover .display-name': {\r\n textShadow: '2px 4px 3px rgba(0, 0, 0, 0.7)',\r\n WebkitTextStroke: '1px rgba(0, 0, 0, 0.35)',\r\n },\r\n}));\r\n\r\nconst StyledCardImageBox: React.FC = ({\r\n imageUrl,\r\n displayName,\r\n displayNameSize,\r\n textColor,\r\n hoverEffect = true,\r\n dimensions,\r\n onClick,\r\n onImageLoad,\r\n}) =>\r\n{\r\n const theme = useTheme();\r\n\r\n const [ isLoaded, setIsLoaded ] = useState(false);\r\n const [ hasError, setHasError ] = useState(false); // State to track image load error\r\n const [ currentDimensions, setCurrentDimensions ] = useState({ width: 0, height: 0 });\r\n\r\n useEffect(() =>\r\n {\r\n if (onImageLoad)\r\n {\r\n onImageLoad(imageUrl, isLoaded, currentDimensions);\r\n }\r\n }, [ isLoaded, onImageLoad, currentDimensions ]);\r\n\r\n const handleImageLoad = (event: React.SyntheticEvent) =>\r\n {\r\n setIsLoaded(true);\r\n setHasError(false);\r\n\r\n const { naturalWidth, naturalHeight } = event.currentTarget;\r\n\r\n if (naturalWidth && naturalHeight && naturalWidth !== currentDimensions.width && naturalHeight !== currentDimensions.height)\r\n {\r\n setCurrentDimensions({ width: naturalWidth, height: naturalHeight });\r\n }\r\n };\r\n\r\n const handleImageError = () =>\r\n {\r\n setIsLoaded(false);\r\n setHasError(true);\r\n };\r\n\r\n return (\r\n \r\n { imageUrl && !hasError ? (\r\n \r\n { hoverEffect ? (\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n
\r\n \r\n
\r\n ) }\r\n
\r\n ) : (\r\n \r\n \r\n \r\n ) }\r\n\r\n { displayName && (\r\n \r\n { displayName }\r\n \r\n ) }\r\n \r\n );\r\n};\r\n\r\nexport default StyledCardImageBox;\r\n","import * as React from 'react';\r\nimport { Fragment, useEffect, useState, useRef } from 'react';\r\nimport { Typography, useTheme } from '@mui/material';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { appendQueryParams } from '../../../utilities/UrlUtils';\r\nimport { getHeaderTextSize, getHeaderTextWeight } from './Types/HeaderTypes';\r\nimport { StyledCardHeader } from './SubComponents/StyledCardHeader';\r\nimport { StyledCardPaper } from './SubComponents/StyledCardPaper';\r\nimport { StyledCardContent } from './SubComponents/StyledCardContent';\r\nimport { DefaultStyledImageComponentWithHoverProps, IStyledImageComponentWithHoverProps } from './Types/CardImageProps';\r\nimport { notNullOrUndefined } from '../../../utilities/Utils';\r\n\r\nimport StyledCardImageBox from './SubComponents/StyledCardImageBox';\r\n\r\nconst StyledImageComponentWithHover: React.FC = (props: IStyledImageComponentWithHoverProps = DefaultStyledImageComponentWithHoverProps) =>\r\n{\r\n const theme = useTheme();\r\n const navigate = useNavigate();\r\n const contentRef = useRef(null);\r\n const [ imageUrl, setImageUrl ] = useState('');\r\n const [ dimensions, setDimensions ] = useState<{ width: number; height: number; }>({ width: 0, height: 0 });\r\n\r\n const [ headerForeColor, setHeaderForeColor ] = useState(props.headerTextColor || theme.palette.primary.contrastText);\r\n const [ headerBackColor, setHeaderBackColor ] = useState(props.headerBackgroundColor || theme.palette.primary.dark);\r\n\r\n const [ borderRadius, setBorderRadius ] = useState(props.borderRadius || '4px');\r\n\r\n useEffect(() =>\r\n {\r\n setBorderRadius(props.borderRadius || '4px');\r\n }, [ props.borderRadius ]);\r\n\r\n useEffect(() =>\r\n {\r\n let bckColor = theme.palette.primary.main;\r\n let txtColor = theme.palette.primary.contrastText;\r\n\r\n if (props.headerBackgroundColor)\r\n {\r\n bckColor = props.headerBackgroundColor;\r\n }\r\n\r\n if (props.headerTextColor)\r\n {\r\n txtColor = props.headerTextColor;\r\n } else\r\n {\r\n txtColor = theme.palette.getContrastText(bckColor);\r\n }\r\n\r\n setHeaderForeColor(txtColor);\r\n setHeaderBackColor(bckColor);\r\n }, [ props.headerBackgroundColor, props.headerTextColor, theme.palette ]);\r\n\r\n useEffect(() =>\r\n {\r\n const updateDimensions = () =>\r\n {\r\n if (contentRef.current)\r\n {\r\n const width = contentRef.current.offsetWidth;\r\n const height = (props.aspectRatio && notNullOrUndefined(props.aspectRatio)\r\n ? width / props.aspectRatio\r\n : width / 1);\r\n\r\n setDimensions({ width, height });\r\n setImageUrl(appendQueryParams(props.imageUrlBase, { width: Math.round(width), height: Math.round(height) }));\r\n }\r\n };\r\n\r\n updateDimensions();\r\n\r\n window.addEventListener('resize', updateDimensions);\r\n\r\n return () =>\r\n {\r\n window.removeEventListener('resize', updateDimensions);\r\n };\r\n }, [ props.imageUrlBase, props.aspectRatio ]);\r\n\r\n const handleClick = () =>\r\n {\r\n if (props.navLink)\r\n {\r\n navigate(props.navLink, { replace: false });\r\n }\r\n };\r\n\r\n const modifiedProps = {\r\n ...props,\r\n hoverEffect: props.hoverEffect !== undefined ? props.hoverEffect : DefaultStyledImageComponentWithHoverProps.hoverEffect,\r\n borderRadius: borderRadius,\r\n };\r\n\r\n return (\r\n \r\n \r\n\r\n { modifiedProps.headerSize !== 'none' && (\r\n \r\n \r\n { modifiedProps.headerTitle }\r\n \r\n \r\n ) }\r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StyledImageComponentWithHover;\r\n","import {motion} from \"framer-motion\";\r\n\r\nexport interface EffectProperties\r\n{\r\n initial: object;\r\n animate: object;\r\n transition: object;\r\n}\r\n\r\nexport interface CustomEffect extends EffectProperties { }\r\n\r\nexport type EffectType = 'fade' | 'scale' | 'slideLeft' | 'slideRight' | 'slideUp' | 'slideDown' | 'rotate' | 'none' | CustomEffect;\r\n\r\nconst getPredefinedEffects = (loaded: boolean, effectDuration: number, effectDelay: number): {[key: string]: EffectProperties;} => ({\r\n fade: {\r\n initial: {opacity: 0},\r\n animate: {opacity: loaded ? 1 : 0},\r\n transition: {duration: effectDuration, delay: effectDelay, ease: 'easeInOut'},\r\n },\r\n scale: {\r\n initial: {scale: 0},\r\n animate: {scale: loaded ? 1 : 0},\r\n transition: {duration: effectDuration, delay: effectDelay, ease: 'easeInOut'},\r\n },\r\n slideLeft: {\r\n initial: {opacity: 0, x: '-75%'},\r\n animate: {opacity: 1, x: '0%'},\r\n transition: {duration: effectDuration, delay: effectDelay, ease: 'easeInOut'}\r\n },\r\n slideRight: {\r\n initial: {opacity: 0, x: '75%'},\r\n animate: {opacity: 1, x: '0%'},\r\n transition: {duration: effectDuration, delay: effectDelay, ease: 'easeInOut'}\r\n },\r\n slideUp: {\r\n initial: {opacity: 0, y: '75%'},\r\n animate: {opacity: 1, y: '0%'},\r\n transition: {duration: effectDuration, delay: effectDelay, ease: 'easeInOut'}\r\n },\r\n slideDown: {\r\n initial: {opacity: 0, y: '-75%'},\r\n animate: {opacity: 1, y: '0%'},\r\n transition: {duration: effectDuration, delay: effectDelay, ease: 'easeInOut'}\r\n },\r\n rotate: {\r\n initial: {rotate: -180, opacity: 0, scale: 0},\r\n animate: {rotate: loaded ? 0 : -180, opacity: loaded ? 1 : 0, scale: loaded ? 1 : 0},\r\n transition: {duration: effectDuration, delay: effectDelay, ease: 'easeInOut'},\r\n },\r\n});\r\n\r\nexport const getStyledCardContentEffect = (\r\n effect: EffectType | undefined,\r\n loaded: boolean,\r\n effectDuration: number,\r\n effectDelay: number,\r\n children?: React.ReactNode,\r\n getBackgroundStyle?: () => React.CSSProperties // Making the parameter optional\r\n) =>\r\n{\r\n const predefinedEffects = getPredefinedEffects(loaded, effectDuration, effectDelay);\r\n\r\n const backgroundStyle = getBackgroundStyle ? getBackgroundStyle() : {};\r\n\r\n if (typeof effect === 'string')\r\n {\r\n if (typeof effect === 'string' && effect !== 'none' && predefinedEffects[effect])\r\n {\r\n const {initial, animate, transition} = predefinedEffects[effect];\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n\r\n return
{children}
;\r\n }\r\n\r\n if (typeof effect === 'object' && effect !== null)\r\n {\r\n const {initial, animate, transition} = effect as CustomEffect;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n\r\n return
;\r\n};\r\n","import * as React from 'react';\r\nimport { PaperProps, Typography, useTheme } from '@mui/material';\r\nimport { notNullOrUndefined } from '../../../utilities/Utils';\r\nimport { EffectType, getStyledCardContentEffect } from './Types/EffectTypes';\r\nimport { HeaderTextSize, HeaderTextWeight, getHeaderTextSize, getHeaderTextWeight } from './Types/HeaderTypes';\r\nimport { StyledCardHeader } from './SubComponents/StyledCardHeader';\r\nimport { StyledCardPaper } from './SubComponents/StyledCardPaper';\r\nimport { StyledCardContent } from './SubComponents/StyledCardContent';\r\nimport { CardFilledType } from './Types/CardTypes';\r\nimport { getContrastText } from '../../../theming/ThemeUtilities';\r\n\r\nexport interface IStyledPaperComponentProps extends Omit \r\n{\r\n children?: React.ReactNode;\r\n headerTitle?: string;\r\n headerBackgroundColor?: string;\r\n headerTextColor?: string;\r\n headerSize?: HeaderTextSize;\r\n headerWeight?: HeaderTextWeight;\r\n fillSize?: CardFilledType;\r\n contentColor?: string;\r\n contentBackgroundColor?: string;\r\n borderRadius?: string | 'none';\r\n effect?: EffectType;\r\n effectDuration?: number; // New prop for effect duration\r\n effectDelay?: number; // New prop for effect delay\r\n}\r\n\r\nconst StyledPaperComponent: React.FC = (props: IStyledPaperComponentProps) =>\r\n{\r\n const theme = useTheme();\r\n\r\n const {\r\n headerTitle = '',\r\n headerBackgroundColor,\r\n headerTextColor,\r\n headerSize = 'none',\r\n fillSize = 'none',\r\n headerWeight = 'bold',\r\n children,\r\n contentColor = getContrastText(theme.palette.background.paper),\r\n contentBackgroundColor = theme.palette.background.paper,\r\n borderRadius = '4px',\r\n effect = 'none', // Default effect\r\n effectDuration = 0.5, // Default effect duration,\r\n effectDelay = 0.1, // Default effect delay\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n\r\n \r\n { headerSize !== 'none' && (\r\n \r\n \r\n { headerTitle }\r\n \r\n \r\n ) }\r\n \r\n { effect !== 'none'\r\n ? getStyledCardContentEffect(effect, true, effectDuration, effectDelay, children)\r\n : children }\r\n \r\n \r\n\r\n );\r\n};\r\n\r\nexport default StyledPaperComponent;\r\n","import {Box, styled} from \"@mui/material\";\r\n\r\nexport const StyledCardContent = styled(Box, {\r\n shouldForwardProp: (prop) =>\r\n prop !== 'contentColor' &&\r\n prop !== 'contentBackgroundColor' &&\r\n prop !== 'headerSize' &&\r\n prop !== 'borderRadius'\r\n})<{\r\n contentColor?: string;\r\n contentBackgroundColor?: string;\r\n headerSize?: 'small' | 'medium' | 'large' | 'extra-large' | 'none';\r\n borderRadius?: string | 'none';\r\n}>(({theme, contentColor, contentBackgroundColor, headerSize, borderRadius}) =>\r\n{\r\n const canUseRadii = borderRadius && borderRadius !== 'none';\r\n\r\n return {\r\n flexGrow: 1,\r\n color: contentColor || theme.palette.text.primary,\r\n backgroundColor: contentBackgroundColor || theme.palette.background.paper,\r\n overflow: 'hidden',\r\n ...(canUseRadii && borderRadius && {\r\n borderBottomLeftRadius: borderRadius,\r\n borderBottomRightRadius: borderRadius,\r\n ...(canUseRadii && headerSize === 'none' && {\r\n borderTopLeftRadius: borderRadius,\r\n borderTopRightRadius: borderRadius,\r\n }),\r\n }),\r\n };\r\n});\r\n","import styled from \"@emotion/styled\";\r\nimport {getHeaderTextWeight} from \"../Types/HeaderTypes\";\r\nimport {Box, Theme} from \"@mui/material\";\r\n\r\nexport const StyledCardHeader = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== 'backgroundColor' && prop !== 'textColor' && prop !== 'size' && prop !== 'weight' && prop !== 'hasChildren',\r\n})<{\r\n backgroundColor?: string;\r\n textColor?: string;\r\n size?: 'small' | 'medium' | 'large' | 'extra-large' | 'none';\r\n weight?: 'normal' | 'semi-bold' | 'bold';\r\n hasChildren?: boolean;\r\n}>(({theme, backgroundColor, textColor, size, weight, hasChildren}) =>\r\n{\r\n const componentTheme = theme as Theme;\r\n let padding;\r\n\r\n switch (size)\r\n {\r\n case 'small':\r\n padding = '6px 8px 0 8px';\r\n break;\r\n\r\n case 'medium':\r\n padding = '8px 16px 0 16px';\r\n break;\r\n\r\n case 'large':\r\n default:\r\n padding = '10px 16px 0 16px';\r\n break;\r\n }\r\n\r\n let result = {\r\n color: textColor || componentTheme.palette.primary.contrastText,\r\n backgroundColor: backgroundColor || componentTheme.palette.primary.dark,\r\n width: '100%',\r\n margin: 0,\r\n padding: padding,\r\n fontWeight: getHeaderTextWeight(weight),\r\n ...(hasChildren && {\r\n borderTopLeftRadius: '4px',\r\n borderTopRightRadius: '4px',\r\n }),\r\n ...(!hasChildren && {\r\n borderRadius: '4px',\r\n })\r\n };\r\n\r\n return result;\r\n});","import styled from \"@emotion/styled\";\r\nimport {Paper} from \"@mui/material\";\r\nimport {CardFilledType} from \"../Types/CardTypes\";\r\nimport {HeaderTextSize, HeaderTextWeight} from \"../Types/HeaderTypes\";\r\n\r\nexport interface StyledCardPaperProps\r\n{\r\n elevation?: number;\r\n fillSize?: CardFilledType;\r\n headerTitle?: string;\r\n headerBackgroundColor?: string;\r\n headerTextColor?: string;\r\n headerSize?: HeaderTextSize;\r\n headerWeight?: HeaderTextWeight;\r\n borderRadius?: string | 'none';\r\n}\r\n\r\nexport const StyledCardPaper = styled(Paper, {\r\n shouldForwardProp: (prop) => !['borderRadius', 'elevation', 'fillSize', 'headerTitle', 'headerBackgroundColor', 'headerTextColor', 'headerSize', 'headerWeight'].includes(prop as string),\r\n})(({theme, fillSize, borderRadius}) =>\r\n{\r\n let width = 'auto';\r\n let height = 'auto';\r\n\r\n if (fillSize === 'width' || fillSize === 'both')\r\n {\r\n width = '100%';\r\n }\r\n\r\n if (fillSize === 'height' || fillSize === 'both')\r\n {\r\n height = '100%';\r\n }\r\n\r\n return {\r\n padding: 0,\r\n position: 'relative',\r\n borderRadius: borderRadius,\r\n width: width,\r\n height: height,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'hidden',\r\n };\r\n});","export type HeaderTextSize = 'small' | 'medium' | 'large' | 'extra-large' | 'none';\r\nexport type HeaderTextWeight = 'normal' | 'semi-bold' | 'bold';\r\n\r\nexport const getHeaderTextSize = (size?: HeaderTextSize): string =>\r\n{\r\n switch (size)\r\n {\r\n case 'small':\r\n return '0.7rem'; // Small font size\r\n case 'medium':\r\n return '0.9rem'; // Medium font size\r\n case 'large':\r\n return '1.1rem'; // Large font size\r\n case 'extra-large':\r\n return '1.35rem'; // Extra-large font size\r\n }\r\n\r\n return '1.1rem'; // Large font size\r\n};\r\n\r\nexport const getHeaderTextWeight = (weight?: HeaderTextWeight): string =>\r\n{\r\n switch (weight)\r\n {\r\n case 'normal':\r\n return 'normal'; // Normal font weight\r\n\r\n case 'semi-bold':\r\n return '600'; // Semi-bold font weight\r\n\r\n case 'bold':\r\n default:\r\n return 'bold'; // Bold font weight\r\n }\r\n};","import * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\n\r\nimport { useTheme, Typography, Box, Link } from '@mui/material';\r\n\r\n//import { Carousel } from 'react-responsive-carousel';\r\nimport { Swiper, SwiperSlide, } from 'swiper/react';\r\nimport { Pagination, Navigation, Autoplay } from 'swiper/modules';\r\n\r\nimport { nanoid } from 'nanoid/non-secure';\r\nimport { StyledCardPaper } from '../StyledCardComponents/SubComponents/StyledCardPaper';\r\nimport { CardFilledType } from '../StyledCardComponents/Types/CardTypes';\r\nimport { HeaderTextSize, HeaderTextWeight, getHeaderTextSize, getHeaderTextWeight } from '../StyledCardComponents/Types/HeaderTypes';\r\nimport { notNullOrUndefined, notNullOrUndefinedOrEmpty } from '../../../utilities/Utils';\r\nimport { StyledCardHeader } from '../StyledCardComponents/SubComponents/StyledCardHeader';\r\nimport { StyledCardContent } from '../StyledCardComponents/SubComponents/StyledCardContent';\r\n\r\n//import 'react-responsive-carousel/lib/styles/carousel.min.css';\r\n\r\nimport 'swiper/css';\r\nimport 'swiper/css/pagination';\r\nimport 'swiper/css/navigation';\r\nimport './ImageCarouselStyles.css';\r\nimport { colorToRgba } from '../../../theming/ThemeUtilities';\r\n\r\nexport interface IImage\r\n{\r\n url: string;\r\n name?: string;\r\n title?: string;\r\n data?: any;\r\n}\r\n\r\ninterface IImageCarouselProps\r\n{\r\n images: IImage[];\r\n fillSize?: CardFilledType;\r\n elevation?: number;\r\n headerTitle?: string;\r\n headerBackgroundColor?: string;\r\n headerTextColor?: string;\r\n headerSize?: HeaderTextSize;\r\n headerWeight?: HeaderTextWeight;\r\n autoDelay?: 'none' | number;\r\n contentBackgroundColor?: string;\r\n\r\n onClick?: (image: IImage) => void;\r\n}\r\n\r\nconst ImageCarousel: React.FC = (props: IImageCarouselProps) =>\r\n{\r\n const theme = useTheme();\r\n\r\n const {\r\n images = [],\r\n fillSize = 'both',\r\n elevation = 5,\r\n headerTitle = '',\r\n headerBackgroundColor,\r\n headerTextColor,\r\n headerSize = 'large',\r\n headerWeight = 'bold',\r\n autoDelay = 3,\r\n contentBackgroundColor,\r\n } = props;\r\n\r\n const [ headerForeColor, setHeaderForeColor ] = useState(headerTextColor || theme.palette.primary.contrastText);\r\n const [ headerBackColor, setHeaderBackColor ] = useState(headerBackgroundColor || theme.palette.primary.dark);\r\n\r\n useEffect(() =>\r\n {\r\n let bckColor = theme.palette.primary.main;\r\n let txtColor = theme.palette.primary.contrastText;\r\n\r\n if (notNullOrUndefined(headerBackgroundColor))\r\n {\r\n bckColor = headerBackgroundColor!;\r\n }\r\n\r\n if (notNullOrUndefined(headerTextColor))\r\n {\r\n txtColor = headerTextColor!;\r\n } else\r\n {\r\n txtColor = theme.palette.getContrastText(bckColor);\r\n }\r\n\r\n setHeaderForeColor(txtColor);\r\n setHeaderBackColor(bckColor);\r\n }, [ headerBackgroundColor, headerTextColor ]);\r\n\r\n const linkClicked = (evt: React.MouseEvent, image: IImage) =>\r\n {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n\r\n if (props.onClick)\r\n {\r\n props.onClick(image);\r\n }\r\n }\r\n\r\n const getCarouselItems = (imageDefinitions: IImage[]): React.ReactChild[] =>\r\n {\r\n if (imageDefinitions && imageDefinitions.length > 0)\r\n {\r\n return imageDefinitions.map((imageDefinition: IImage) => getCarouselItem(imageDefinition));\r\n }\r\n\r\n return [];\r\n }\r\n\r\n const getFontSizeByNameLength = (name?: string): string =>\r\n {\r\n if (!name || (name.length >= 0 && name.length <= 20))\r\n {\r\n return '2rem';\r\n }\r\n\r\n if (name.length > 20 && name.length <= 60)\r\n {\r\n return '1.5rem';\r\n }\r\n\r\n return '1rem';\r\n };\r\n\r\n const getWrapByNameLength = (name?: string): boolean =>\r\n {\r\n if (!name || (name.length >= 0 && name.length <= 24))\r\n {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const getCarouselItem = (imageDefinition: IImage) =>\r\n {\r\n return (\r\n \r\n\r\n \r\n\r\n \r\n\r\n { linkClicked(evt, imageDefinition) } }\r\n sx={ {\r\n textDecoration: 'none',\r\n color: `${theme.palette.primary.contrastText}`,\r\n textAlign: 'center',\r\n backgroundColor: colorToRgba(theme.palette.primary.dark, 0.5),\r\n padding: '8px 16px',\r\n borderRadius: '8px',\r\n '&:hover': {\r\n textDecoration: 'none',\r\n color: theme.palette.secondary.contrastText,\r\n backgroundColor: colorToRgba(theme.palette.secondary.dark, 0.75),\r\n },\r\n } }>\r\n\r\n \r\n\r\n { imageDefinition.name }\r\n \r\n\r\n { imageDefinition.title }\r\n \r\n\r\n \r\n\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n\r\n { headerSize !== 'none' && notNullOrUndefinedOrEmpty(headerTitle) && (\r\n \r\n \r\n { headerTitle }\r\n \r\n \r\n ) }\r\n\r\n \r\n\r\n \r\n\r\n { getCarouselItems(images) }\r\n\r\n \r\n\r\n \r\n\r\n \r\n );\r\n};\r\n\r\nexport default ImageCarousel;\r\n","import React, { useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\n\r\nimport { useDispatch } from 'react-redux';\r\nimport { isGeneratorObject } from 'util/types';\r\nimport useLoadingDialog from './useLoadingDialog';\r\n\r\nexport interface IFetchProps {\r\n name: string;\r\n endpoint: string;\r\n cacheTimeout?: number;\r\n manualTrigger?: boolean;\r\n beforeCallback?: Function | null;\r\n successCallback?: Function | null;\r\n failureCallback?: Function | null;\r\n completedCallback?: Function | null;\r\n loadingMessage?: string | null;\r\n}\r\n\r\nexport interface IFetchState {\r\n reponseData?: any | null;\r\n loading?: boolean;\r\n loaded?: boolean;\r\n error?: any | null;\r\n hasError?: boolean;\r\n}\r\n\r\nexport const useFetch = (\r\n props: IFetchProps = {\r\n name: '',\r\n endpoint: '',\r\n cacheTimeout: 60,\r\n manualTrigger: false,\r\n beforeCallback: null,\r\n successCallback: null,\r\n failureCallback: null,\r\n completedCallback: null,\r\n loadingMessage: null,\r\n },\r\n) => {\r\n //const dispatch = useDispatch()\r\n const { show, showWithMessage, hide } =\r\n useLoadingDialog();\r\n\r\n const [fetchState, setFetchState] =\r\n useState({\r\n reponseData: null,\r\n loading: false,\r\n loaded: false,\r\n error: null,\r\n hasError: false,\r\n });\r\n\r\n const ExecuteLoading = (\r\n loadingProps: IFetchProps,\r\n ) => {\r\n if (fetchState.loading && !fetchState.loaded) {\r\n return;\r\n }\r\n\r\n setFetchState({\r\n loading: true,\r\n loaded: false,\r\n hasError: false,\r\n error: null,\r\n reponseData: null,\r\n });\r\n\r\n if (\r\n window.fetchLoading[loadingProps.name] &&\r\n window.fetchLoading[loadingProps.name] ===\r\n true\r\n ) {\r\n return;\r\n }\r\n\r\n if (!window.fetchLoading[loadingProps.name]) {\r\n window.fetchLoading[loadingProps.name] =\r\n true;\r\n }\r\n\r\n if (loadingProps.beforeCallback) {\r\n loadingProps.beforeCallback();\r\n }\r\n\r\n if (loadingProps.loadingMessage) {\r\n showWithMessage(\r\n loadingProps.loadingMessage,\r\n );\r\n }\r\n else {\r\n show();\r\n }\r\n\r\n // const client = axios.create({\r\n // cache: {\r\n // maxAge: (((!loadingProps.cacheTimeout) || (loadingProps.cacheTimeout)) <= 0 ? 1 : loadingProps.cacheTimeout! * (60000))\r\n // }\r\n // })\r\n\r\n const client = axios.create();\r\n\r\n client.get(loadingProps.endpoint)\r\n .then((response) => {\r\n console.log(response.data);\r\n console.log(response.status);\r\n\r\n if (response.status === 200) {\r\n // done sucesssfully\r\n setFetchState({\r\n hasError: false,\r\n reponseData:\r\n response.data,\r\n });\r\n\r\n if (\r\n loadingProps.successCallback\r\n ) {\r\n loadingProps.successCallback(\r\n response.data,\r\n );\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n console.log(\r\n error.response.data,\r\n );\r\n console.log(\r\n error.response.status,\r\n );\r\n console.log(\r\n error.response.headers,\r\n );\r\n }\r\n else if (error.request) {\r\n console.log(error.request);\r\n }\r\n else {\r\n console.log(\r\n 'Error',\r\n error.message,\r\n );\r\n }\r\n\r\n console.log(error.config);\r\n\r\n // done with error\r\n setFetchState({\r\n hasError: true,\r\n error: error,\r\n });\r\n\r\n if (loadingProps.failureCallback) {\r\n loadingProps.failureCallback(\r\n error,\r\n );\r\n }\r\n })\r\n .finally(() => {\r\n setFetchState({\r\n loading: false,\r\n loaded: true,\r\n });\r\n\r\n if (\r\n loadingProps.completedCallback\r\n ) {\r\n loadingProps.completedCallback();\r\n }\r\n\r\n if (\r\n window.fetchLoading[\r\n loadingProps.name\r\n ]\r\n ) {\r\n window.fetchLoading[\r\n loadingProps.name\r\n ] = false;\r\n }\r\n\r\n hide();\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (!props.manualTrigger) {\r\n trigger();\r\n }\r\n }, []);\r\n\r\n const trigger = () => {\r\n ExecuteLoading(props);\r\n };\r\n\r\n return { fetchState, trigger };\r\n};\r\n","import { useState, useEffect, useCallback } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { ServiceStoreState } from '../stores/ServiceStore';\r\nimport {\r\n hideDialog,\r\n showDialog,\r\n} from '../stores/slices/LoadingControlSlice';\r\n\r\ninterface LoadingDialogState {\r\n isVisible: boolean;\r\n\r\n show: () => void;\r\n showWithMessage: (displayMessage: string) => void;\r\n hide: () => void;\r\n}\r\n\r\nconst useLoadingDialog = (): LoadingDialogState => {\r\n const loadingDialogState = useSelector(\r\n (state: ServiceStoreState) => state.loading,\r\n );\r\n const [isVisible, setIsVisible] =\r\n useState(false);\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n setIsVisible(loadingDialogState.isVisible);\r\n }, [loadingDialogState]);\r\n\r\n const show = useCallback((): void => {\r\n dispatch(showDialog(null));\r\n }, []);\r\n\r\n const showWithMessage = useCallback(\r\n (displayMessage: string): void => {\r\n dispatch(showDialog(displayMessage));\r\n },\r\n [],\r\n );\r\n\r\n const hide = useCallback((): void => {\r\n dispatch(hideDialog());\r\n }, []);\r\n\r\n return { show, showWithMessage, hide, isVisible };\r\n};\r\n\r\nexport default useLoadingDialog;\r\n","const __warningOverrides: string[] = [\r\n 'textarea element was provided to Autocomplete where input was expected',\r\n];\r\n\r\nexport const ApplyCosonleWarnOverrides = () => {\r\n // Save the original console.warn function\r\n const originalWarn = console.warn;\r\n\r\n // Override console.warn\r\n console.warn = (...args) => {\r\n // If there is a match, do no continue\r\n if (hasMatch(args)) {\r\n return;\r\n }\r\n\r\n // For all other warnings, call the original console.warn function\r\n originalWarn.apply(console, args);\r\n };\r\n};\r\n\r\nconst hasMatch = (...data: any[]): boolean => {\r\n if (data && data.length > 0) {\r\n for (const item of data) {\r\n const warnMsg = item\r\n .toString()\r\n .toLowerCase();\r\n\r\n for (const message of __warningOverrides) {\r\n const currMsg =\r\n message.toLowerCase();\r\n\r\n if (warnMsg.includes(currMsg)) {\r\n return true; // Match found, return true immediately.\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom/client';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport AppInit from './initialisation/AppInit';\r\n\r\nconst appInit = new AppInit();\r\n\r\nappInit.Run();\r\n\r\nconst root = ReactDOM.createRoot(\r\n document.getElementById('app-root') as HTMLElement,\r\n);\r\n\r\nwindow.fetchLoading = {};\r\n\r\nwindow.fetchLoading['fetchLoaders'] = true;\r\n\r\nroot.render(\r\n \r\n \r\n ,\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n","import { ApplyCosonleWarnOverrides } from './WarnOverrides';\r\n\r\nclass AppInit {\r\n public Run(): void {\r\n ApplyCosonleWarnOverrides();\r\n }\r\n}\r\n\r\nexport default AppInit;\r\n"],"names":["open","base64Image","imageType","onClose","onSave","theme","cropperState","setCropperState","useState","crop","x","y","zoom","rotation","croppedAreaPixels","uploadedImage","setUploadedImage","useEffect","handleCropChange","useCallback","newCrop","prevState","handleZoomChange","newZoom","handleRotationChange","newRotation","handleCropComplete","croppedArea","maxWidth","fullWidth","PaperProps","sx","margin","padding","width","overflow","borderRadius","scroll","backgroundColor","palette","secondary","main","color","contrastText","fontWeight","marginTop","position","height","background","grey","onDrop","e","preventDefault","file","dataTransfer","files","reader","FileReader","onload","result","readAsDataURL","onDragOver","image","aspect","onCropChange","onZoomChange","onCropComplete","onWheelRequest","shiftKey","deltaY","mt","display","justifyContent","flex","mr","variant","value","min","max","step","onChange","ml","type","inputProps","accept","target","onClick","startIcon","imageSrc","pixelCrop","callback","Image","src","canvas","document","createElement","ctx","getContext","radians","Math","PI","rotatedWidth","abs","cos","sin","rotatedHeight","translate","rotate","drawImage","croppedCanvas","croppedCtx","toDataURL","onerror","getCroppedImg","croppedImage","StyledDialog","spacing","displayState","state","loading","isDisplayed","setIsDisplayed","isVisible","dialogMessage","setDialogMessage","message","CenteredDialogContent","alignItems","markdown","url","content","setContent","setLoading","error","setError","fetch","then","response","ok","Error","text","data","catch","component","commonColors","Blue","H800","dark","remarkPlugins","props","ref","other","mask","definitions","inputRef","onAccept","name","overwrite","alt","reloadDelay","timeoutRef","useRef","isLoading","setIsLoading","loadedOnce","setLoadedOnce","progress","setProgress","imgSrc","setImgSrc","current","clearTimeout","window","setTimeout","interval","setInterval","updateProgress","clearInterval","prevProgress","top","left","transform","onLoad","objectFit","bottom","lines","split","map","line","index","segment","subIndex","length","isLoggedIn","user","size","avatarParts","setAvatarParts","firstName","push","lastName","A","Fragment","mode","userProfileType","setUserProfileType","userProfileSize","setUserProfileSize","displayMode","setDisplayMode","currPixelSize","setCurrPixelSize","currImgURL","setCurrImgURL","fullUrl","toLowerCase","grayscaleStyle","filter","icon","AccountCircle","title","description","useTheme","getBackgroundColor","success","info","warning","Box","shape","p","style","minWidth","flexGrow","verticalAlign","alignSelf","IconComponent","fontSize","GetIcon","flexDirection","marginLeft","Typography","lineHeight","fontFamily","errorCode","showContactAdminButton","defaultStatus","find","status","code","httpStatus","setHttpStatus","getStatusFromCode","Container","alignContent","textAlign","Paper","square","elevation","flag","toUpperCase","marginBottom","showSection","children","Button","rel","href","ratio","containerRef","dimensions","setDimensions","handleResize","offsetWidth","resWidth","ceil","resHeight","addEventListener","removeEventListener","paddingTop","DefaultStyledImageComponentWithHoverProps","headerSize","fillSize","headerWeight","imageUrlBase","aspectRatio","effect","effectDuration","effectDelay","hoverEffect","getCardDisplayTextSize","getCardDisplayTextLineSize","ImageBox","styled","clipPath","transition","wordWrap","textShadow","WebkitTextStroke","imageUrl","displayName","displayNameSize","textColor","onImageLoad","isLoaded","setIsLoaded","hasError","setHasError","currentDimensions","setCurrentDimensions","handleImageLoad","event","naturalWidth","naturalHeight","currentTarget","handleImageError","cursor","className","onError","ErrorOutline","primary","navigate","contentRef","setImageUrl","headerForeColor","setHeaderForeColor","headerTextColor","headerBackColor","setHeaderBackColor","headerBackgroundColor","setBorderRadius","bckColor","txtColor","getContrastText","updateDimensions","round","modifiedProps","undefined","StyledCardPaper","StyledCardHeader","weight","hasChildren","gutterBottom","headerTitle","StyledCardContent","contentBackgroundColor","navLink","replace","getStyledCardContentEffect","loaded","getBackgroundStyle","predefinedEffects","fade","initial","opacity","animate","duration","delay","ease","scale","slideLeft","slideRight","slideUp","slideDown","getPredefinedEffects","backgroundStyle","motion","div","contentColor","paper","rest","shouldForwardProp","prop","canUseRadii","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","componentTheme","includes","getHeaderTextSize","getHeaderTextWeight","images","autoDelay","getFontSizeByNameLength","getCarouselItem","imageDefinition","maxHeight","zIndex","textOverflow","evt","stopPropagation","linkClicked","textDecoration","align","noWrap","mb","slidesPerView","pagination","clickable","loop","autoplay","disableOnInteraction","navigation","modules","imageDefinitions","useFetch","endpoint","cacheTimeout","manualTrigger","beforeCallback","successCallback","failureCallback","completedCallback","loadingMessage","show","showWithMessage","hide","fetchState","setFetchState","reponseData","trigger","loadingProps","fetchLoading","create","get","request","finally","ExecuteLoading","loadingDialogState","setIsVisible","dispatch","displayMessage","__warningOverrides","hasMatch","item","warnMsg","toString","currMsg","Run","originalWarn","console","warn","args","apply","ApplyCosonleWarnOverrides","root","getElementById","render","App","reportWebVitals"],"sourceRoot":""}