{"version":3,"sources":["components/LoadingMessageBox.tsx","components/LoadingWrapper.tsx","hooks/useSnackbar.tsx","components/TopBar.tsx","assets/images/undraw_authentication_fsn5.svg","components/Form/CodeAccessField/CodeNumberInput/CodeNumberInput.tsx","components/Form/CodeAccessField/CodeAccessField.tsx","features/home/pages/Login.tsx"],"names":["useStyles","makeStyles","theme","loadingContainer","marginTop","spacing","marginBottom","LoadingMessageBox","titre","message","styles","wait","className","Typography","variant","LinearProgress","LoadingWrapper","actionName","children","mode","useSelector","selectUiLoader","loading","error","displayError","useSnackbar","dispatch","useAppDispatch","DisabledChildren","isValidElement","cloneElement","disabled","clearUiError","useCallback","clearError","useEffect","useNotistackSnackbar","enqueueSnackbar","closeSnackbar","action","key","size","onClick","displayMessage","anchorOrigin","vertical","horizontal","preventDuplicate","autoHideDuration","displaySuccess","displayInfo","displayWarning","createStyles","topbar","backgroundColor","color","palette","common","white","toolbar","minHeight","justifyContent","marginRight","TopBar","classes","position","withStyles","codeInput","margin","maxWidth","codeInputWrapper","textAlign","withTheme","properties","value","onChange","TextField","autoComplete","autoCorrect","autoCapitalize","type","placeholder","event","newValue","target","toUpperCase","length","CodeAccessField","useField","name","field","meta","helpers","handleChange","newValues","setValue","style","Grid","container","item","xs","slice","Login","t","useTranslation","search","useLocation","React","useState","verificationMessage","setVerificationMessage","loginSchema","yup","shape","codeAccess","of","min","max","required","handleLogin","a","loginWithCode","result","fulfilled","match","history","push","payload","campagne","token","code","URLSearchParams","get","split","map","c","padStart","Container","display","alignItems","height","Button","component","Link","to","Paper","Box","my","p","src","secureLoginSvg","width","alt","gutterBottom","initialValues","validationSchema","onSubmit","values","join","typePrefix","fullWidth"],"mappings":"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","file":"static/js/12.51d7b973.chunk.js","sourcesContent":["import { LinearProgress, makeStyles, Typography } from '@material-ui/core';\nimport Delay from 'react-delay';\n\ninterface Properties {\n titre?: string;\n message?: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n loadingContainer: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n }\n}));\n\nconst LoadingMessageBox: React.FC = ({ titre, message }) => {\n const styles = useStyles();\n return (\n <>\n \n
\n\n {titre && {titre}}\n {message && {message}}\n \n
\n
\n \n );\n};\n\nexport default LoadingMessageBox;","import { clearError, selectUiLoader } from \"features/ui/slice\";\nimport useSnackbar from 'hooks/useSnackbar';\nimport { cloneElement, isValidElement, PropsWithChildren, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useAppDispatch } from \"store\";\nimport LoadingMessageBox from \"./LoadingMessageBox\";\n\ninterface LoadingWrapperProperties {\n actionName: string,\n mode?: 'disable' | 'hide'\n}\n\n\n\nfunction LoadingWrapper({ actionName, children, mode = 'hide' }: PropsWithChildren) {\n\n const { loading, error } = useSelector(selectUiLoader(actionName));\n const { displayError } = useSnackbar();\n\n const dispatch = useAppDispatch();\n\n const DisabledChildren = () => {\n\n if (isValidElement(children)) {\n return cloneElement(children, { disabled: true });\n }\n return null;\n\n\n }\n\n const clearUiError = useCallback(\n () => {\n dispatch(clearError(actionName));\n },\n [dispatch, actionName],\n )\n\n\n useEffect(() => {\n if (error) {\n displayError(error);\n clearUiError();\n }\n\n }, [error, displayError, clearUiError])\n\n return (\n <>\n {loading && }\n {loading && mode === 'disable' && }\n {!loading && children}\n \n );\n}\n\nexport default LoadingWrapper;","import { useCallback } from 'react'\nimport { useSnackbar as useNotistackSnackbar, VariantType } from 'notistack';\nimport { Button } from '@material-ui/core';\n\nconst useSnackbar = () => {\n const { enqueueSnackbar, closeSnackbar } = useNotistackSnackbar();\n\n const action = useCallback((key: string | number) => (\n <>\n \n \n ), [closeSnackbar]);\n\n const displayMessage = useCallback(\n (message: string, variant: VariantType) => {\n enqueueSnackbar(message, {\n variant,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'center',\n },\n preventDuplicate: true,\n autoHideDuration: 2500,\n action\n })\n },\n [enqueueSnackbar, action],\n )\n\n const displaySuccess = useCallback((message: string) => {\n displayMessage(message, 'success')\n }, [displayMessage]);\n const displayError = useCallback((message: string) => {\n displayMessage(message, 'error')\n }, [displayMessage]);\n const displayInfo = useCallback((message: string) => {\n displayMessage(message, 'info')\n }, [displayMessage]);\n const displayWarning = useCallback((message: string) => {\n displayMessage(message, 'warning')\n }, [displayMessage]);\n\n\n\n return { displayInfo, displayError, displayWarning, displaySuccess };\n}\n\nexport default useSnackbar;\n","import { AppBar, makeStyles, createStyles, Theme, Toolbar } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n topbar: {\n backgroundColor: '#232323',// theme.palette.primary.dark, //theme.palette.common.black,\n color: theme.palette.common.white,\n },\n toolbar: {\n minHeight: '30px',\n justifyContent: 'flex-end',\n marginRight: theme.spacing(1),\n },\n })\n);\n\nconst TopBar: React.FC = ({ children }) => {\n const classes = useStyles();\n\n return (\n \n \n {children}\n \n \n );\n};\n\nexport default TopBar;\n","export default __webpack_public_path__ + \"static/media/undraw_authentication_fsn5.53727fe7.svg\";","import { ChangeEvent } from 'react'\nimport { withStyles, WithStyles, TextField, Theme, createStyles } from '@material-ui/core'\n\n\nconst styles = (theme: Theme) =>\n createStyles({\n codeInput: {\n margin: theme.spacing(1),\n maxWidth: '80px',\n\n },\n codeInputWrapper: {\n textAlign: 'center',\n }\n });\n\ninterface CodeNumberInputProperties {\n value: string,\n onChange: (newValue: string) => void\n}\n\nconst CodeNumberInput: React.FC> = (properties) => {\n const { classes, value, onChange } = properties\n\n const handleChange = (event: ChangeEvent) => {\n const newValue = event.target.value?.toUpperCase();\n\n if (newValue.length <= 4) {\n onChange(newValue)\n }\n }\n\n return (\n
\n \n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(CodeNumberInput)\n","\nimport { useField } from 'formik';\nimport { Grid } from '@material-ui/core';\nimport CodeNumberInput from './CodeNumberInput/CodeNumberInput';\n\n\n\ninterface CodeAccessFieldProperties {\n name: string;\n}\n\nconst CodeAccessField: React.FC = (properties) => {\n const [field, meta, helpers] = useField(properties.name);\n\n const handleChange = (newValues: string[]) => {\n helpers.setValue(newValues);\n }\n\n\n return (\n
\n\n \n \n handleChange([newValue, ...field.value.slice(1)])} />\n \n \n handleChange([...field.value.slice(0, 1), newValue, ...field.value.slice(2)])} />\n \n \n handleChange([...field.value.slice(0, 2), newValue, ...field.value.slice(3)])} />\n \n \n handleChange([...field.value.slice(0, 3), newValue])} />\n \n \n {meta.error}\n\n\n
\n )\n}\n\nexport default CodeAccessField;\n","import React, {FunctionComponent} from 'react';\nimport {Box, Button, Container, Paper, Typography} from '@material-ui/core';\nimport {Form, Formik} from 'formik';\nimport {useTranslation} from 'react-i18next';\nimport {history} from 'index';\nimport * as yup from 'yup';\nimport {Link} from \"react-router-dom\";\nimport {useLocation} from \"react-router\";\n\nimport secureLoginSvg from 'assets/images/undraw_authentication_fsn5.svg';\nimport CodeAccessField from 'components/Form/CodeAccessField/CodeAccessField';\nimport LoadingWrapper from 'components/LoadingWrapper';\nimport {useAppDispatch} from 'store';\nimport {loginWithCode} from '../actions';\nimport TopBar from \"../../../components/TopBar\";\n\n\nconst Login: FunctionComponent = () => {\n const { t } = useTranslation();\n const dispatch = useAppDispatch();\n const {search} = useLocation();\n const [verificationMessage, setVerificationMessage] = React.useState('');\n\n const loginSchema = yup.object().shape({\n codeAccess: yup.array().of(yup.string()).min(4).max(4).required(t('validation:requis')),\n });\n\n\n const handleLogin = async (codeAccess: string) => {\n \n setVerificationMessage('Vérification de votre code, un instant svp...');\n const result = await dispatch(loginWithCode({ codeAccess }));\n if (loginWithCode.fulfilled.match(result)) {\n history.push(`/${result.payload.campagne}/secure?token=${result.payload.token}`);\n\n }\n setVerificationMessage('');\n }\n let codeAccess = ['','','',''];\n \n const parameters = new URLSearchParams(search);\n const code = parameters.get('code');\n if (code){\n codeAccess = code.split('-').map((c) => c.padStart(4, '0'));\n }\n\n return (\n \n \n \n \n \n \n \"\"\n Votez.com\n \n {t('campagne:loginHeaderMessage')}\n \n\n handleLogin(values.codeAccess.join(''))}\n >\n {() => (\n
\n \n {verificationMessage && {verificationMessage}}\n \n\n\n \n {t('campagne:loginButton')}\n \n \n \n )}\n \n
\n
\n
\n );\n};\n\nexport default Login;\n"],"sourceRoot":""}