{"version":3,"sources":["images/YouTube_Logo.png","images/Logo SGB Escape.png","images/Logo-SGB-Orange.png","images/logo1.png","images/logo2.png","images/logo3.png","images/IDEX_france2030_couleur.jpg","images/Logo_ido-data_Couleurs_2020_WEB.png","images/Download-logo.png","images/Youtube-QRCode.png","images/Logo SGB Escape Blanc.png","images/Grenoble_INP_-_Logo_blanc_RVB.png","images/IDO-BLANC.png","images/logo5.png","constants/dataBaseFormat.js","redux/store.js","redux/reducers.js","aws-exports.js","constants/auth.js","components/NavBar.jsx","graphql/mutations.js","constants/helpers.js","constants/api.js","graphql/queries.js","components/FileSelectAndPreview.jsx","components/YoutubeView.jsx","components/InventoryItem.jsx","components/Inventory.jsx","components/Question.jsx","components/Questions.jsx","constants/functions.js","constants/formFunctions.js","components/ImageFromS3.jsx","pages/QRCodes.jsx","components/FormHeader.jsx","components/GameEntries.jsx","components/UniversePreview/SmartPhone.jsx","components/UniversePreview/functions.js","components/UniversePreview/IntroductionPreviewMedia.js","components/UniversePreview/IntroductionPreview.jsx","components/UniversePreview/UniverseTimer.jsx","components/UniversePreview/UniverseTopRow.jsx","components/UniversePreview/UniverseAnswers.jsx","components/UniversePreview/GamePreview.jsx","components/UniversePreview/UniverseWithGamePreview.jsx","pages/GameForm.jsx","pages/Games.jsx","components/TabPanel.jsx","pages/UniverseForm.jsx","pages/Universes.jsx","pages/Home.jsx","pages/SignInScreen.jsx","pages/Loading.jsx","components/AppContainer.jsx","App.js","serviceWorker.js","index.js"],"names":["module","exports","emptyQuestion","image","type","title","s3key","audio","video","url","assetType","text","correctAnswer","answers","emptyAnswer","hint","value","description","getGameFormInitialValues","game","console","log","initialValues","inventory","questions","formTitle","formDescription","hasError","formType","inputProps","maxLength","author","institution","masterCode","onChange","e","target","match","toUpperCase","timer","min","max","lives","penalityTimer","penalityCounter","penalityLife","gameUniverseId","Object","entries","forEach","key","universe","id","i","length","push","answer","appReducer","combineReducers","universeForm","state","introText","rows","introImage","multiple","accept","introVideo","introAudio","mainBackground","timerBackground","rightAnswerBackground","wrongAnswerBackground","lifeBackground","action","data","userId","userEmail","universes","games","newState","gameIndex","findIndex","initialState","store","createStore","awsmobile","signIn","username","password","Promise","resolve","reject","Auth","user","currentAuthenticatedUser","dispatch","attributes","sub","email","signOut","a","signUp","resendConfirmationCode","resendSignUp","CustomTab","withStyles","theme","root","display","flexDirection","justifyContent","height","color","background","selected","props","Tab","connect","handleNavChange","selectedNav","AppBar","position","style","alignItems","padding","src","logo","objectFit","maxHeight","flex","Tabs","defaultValue","indicatorColor","textColor","centered","label","href","rel","paddingRight","marginTop","marginBottom","YouTubeLogo","width","alt","Button","onClick","startIcon","createGameFromLambda","QRCode","require","encodeToQRCode","toDataURL","JSON","stringify","errorCorrectionLevel","margin","scale","err","dataURL","stack","error","alphabeticalSort","arr","getter","order","sort","b","localeCompare","fetchUniverses","API","graphql","graphqlOperation","queryResult","listUniverses","items","deleteUniverse","input","fetchGames","listGames","item","createdAt","deleteGame","useStyles","makeStyles","overlay","top","bottom","left","right","backgroundColor","zIndex","border","borderRadius","boxSizing","fileWarning","fontWeight","fontSize","FileSelectAndPreview","onFileChoosen","file","index","formKey","isOwner","classes","useState","setUrl","currentType","useRef","useEffect","current","startsWith","URL","createObjectURL","Storage","get","then","catch","className","fileSize","files","size","required","Typography","controls","YoutubeView","youtubeVideo","frameBorder","allow","allowFullScreen","marginLeft","spacing","row","column","inputLabel","InventoryItem","inventoryLength","handleArrayChange","deleteInventoryItem","moveItem","variant","textDecoration","Select","MenuItem","TextField","name","Inventory","addInventoryItem","Paper","map","question","questionsLength","handleAnswerChange","addAnswer","deleteAnswer","deleteQuestion","disabled","htmlFor","FormControlLabel","control","Checkbox","checked","IconButton","aria-label","Questions","addQuestion","toBase64","reader","FileReader","readAsDataURL","onload","result","onerror","submitUpdateGame","updatedGame","formatInventory","formatQuestions","sentGame","res","statusCode","parseInt","split","slice","success","submitGame","formValues","createType","submitUniverse","newUniverse","introType","keys","File","update","newQuestions","newInventory","getUpdatedValues","gameFormValues","updatedValues","initialField","updatedField","areGameQuestionsUpdated","j","answerKey","isInventoryUpdated","ImageFromS3","s3Key","imgStyle","flexGrow","divider","ComponentToPrint","gameB64","this","setState","styles","textAlign","imgContainer","Grid","container","direction","xs","CircularProgress","Component","onBack","setEmail","emailSubmitted","setEmailSubmitted","componentRef","trigger","content","Divider","ref","el","FormHeader","loadingText","loadingResult","goBack","setQrPageOpened","setPreviewPageOpened","updateButton","select","minWidth","formEntries","register","errors","filter","fieldKey","fieldValue","smartphone","borderTopWidth","borderBottomWidth","transform","SmartPhone","children","backgroundUrl","backgroundImage","backgroundRepeat","backgroundSize","getUniverseImagesValues","images","IntroductionPreviewMedia","videoURL","marginRight","overflow","backgroundPosition","IntroductionPreview","setImages","getUrl","imageKey","imgUrl","s","UniverseTimer","UniverseTopRow","UniverseAnswers","wrongBackground","rightBackground","GamePreview","find","u","setLoadingText","setLoadingResult","qrPageOpened","previewPageOpened","setFormValues","window","document","getElementById","scrollTo","createdBy","useForm","handleSubmit","reset","getValues","createGame","values","parseNumberValues","setTimeout","updateGame","updatedGameFields","questionsUpdated","inventoryUpdated","Number","onSubmit","subKey","lastKey","formValue","undefined","destIndex","x","y","swapArrElements","splice","questionIndex","answerIndex","arrows","asc","desc","table","sortedGames","setSortedGames","setContent","openedGame","setOpenedGame","setSort","handleSort","onDetailsClick","whiteSpace","TableContainer","component","Table","TableHead","TableRow","TableCell","align","cursor","TableBody","Date","toLocaleDateString","TabPanel","p","other","role","hidden","aria-labelledby","Box","showPreview","setShowPreview","universeFormEntries","getUniverseFormInitialValues","preventDefault","handleChange","openedUniverse","setOpenedUniverse","alignSelf","textTransform","open","main","header","setSelectedNav","event","newValue","paddingTop","paddingBottom","footerLogos","inpLogo","idexLogo","comueLogo","araLogo","idoLogo","progress","info","loadingErrorContainer","minHeight","idoDataLogo","formContainer","form","submit","iconsContainer","setPassword","codeInput","setCodeInput","code","setCode","message","setInfo","forgotPasswordForm","setForgotPasswordForm","forgotPasswordConfirm","setForgotPasswordConfirm","loading","setLoading","handleSignIn","handleSignUp","replace","sgbLogo","elevation","noValidate","autoComplete","fullWidth","confirmSignUp","new_password","forgotPasswordSubmit","forgotPassword","paddingLeft","DownloadLogo","YouTubeQRCode","objectPosition","logoItem","Loading","Amplify","configure","awsconfig","createMuiTheme","typography","fontFamily","fontWeightLight","fontWeightRegular","fontWeightMedium","App","CssBaseline","Boolean","location","hostname","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.b47c7a48.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Logo-SGB-Orange.7188a341.png\";","module.exports = __webpack_public_path__ + \"static/media/logo1.04f54bb0.png\";","module.exports = __webpack_public_path__ + \"static/media/logo2.d6f88f6c.png\";","module.exports = __webpack_public_path__ + \"static/media/logo3.6371db3d.png\";","module.exports = __webpack_public_path__ + \"static/media/IDEX_france2030_couleur.f5bd5e11.jpg\";","module.exports = __webpack_public_path__ + \"static/media/Logo_ido-data_Couleurs_2020_WEB.da66fd47.png\";","module.exports = __webpack_public_path__ + \"static/media/Download-logo.7bae41a4.png\";","module.exports = __webpack_public_path__ + \"static/media/Youtube-QRCode.4de973fc.png\";","module.exports = __webpack_public_path__ + \"static/media/Logo SGB Escape Blanc.21e51e84.png\";","module.exports = __webpack_public_path__ + \"static/media/Grenoble_INP_-_Logo_blanc_RVB.5e17a883.png\";","module.exports = __webpack_public_path__ + \"static/media/IDO-BLANC.c671e734.png\";","module.exports = __webpack_public_path__ + \"static/media/logo5.d30124a5.png\";","export const emptyGame = () => ({\n title: {\n formTitle: \"Title\",\n formDescription: \"\",\n value: \"\",\n hasError: false,\n formType: \"text\",\n inputProps: { maxLength: 200 },\n },\n author: {\n formTitle: \"Author\",\n formDescription: \"\",\n value: \"\",\n hasError: false,\n formType: \"text\",\n inputProps: { maxLength: 50 },\n },\n institution: {\n formTitle: \"Institution\",\n formDescription: \"\",\n value: \"\",\n hasError: false,\n formType: \"text\",\n inputProps: { maxLength: 50 },\n },\n masterCode: {\n formTitle: \"Master Code: enables admin mode when entered during game\",\n formDescription: \"\",\n value: \"\",\n hasError: false,\n formType: \"text\",\n inputProps: {\n maxLength: 3,\n onChange: (e) => {\n const { value } = e.target;\n const regex = /[^A-Za-z0-9]+/;\n if (value.match(regex)) return;\n return value.toUpperCase();\n },\n },\n },\n timer: {\n formTitle: \"Time limit (in minutes)\",\n formDescription: \"\",\n value: 60,\n hasError: false,\n formType: \"number\",\n inputProps: { min: 10, max: 999 },\n },\n lives: {\n formTitle: \"Starting lives: game is over when it reaches 0\",\n formDescription: \"\",\n value: 6,\n hasError: false,\n formType: \"number\",\n inputProps: { min: 1, max: 9999 },\n },\n penalityTimer: {\n formTitle:\n \"Penality timer (in seconds): game timer will lose this value if a wrong answer is entered during game\",\n formDescription: \"\",\n value: 180,\n hasError: false,\n formType: \"number\",\n inputProps: { min: 0, max: 9999 },\n },\n penalityCounter: {\n formTitle:\n \"Penality counter: penality life will apply every X (penality counter) wrong answers\",\n formDescription: \"\",\n value: 2,\n hasError: false,\n formType: \"number\",\n inputProps: { min: 0, max: 9999 },\n },\n penalityLife: {\n formTitle: \"Penality life: lives lost when penality counter is reached\",\n formDescription: \"\",\n value: 1,\n hasError: false,\n formType: \"number\",\n inputProps: { min: 0, max: 9999 },\n },\n gameUniverseId: {\n formTitle: \"Mission\",\n formDescription: \"\",\n value: \"b4d76a9c-6e97-41ec-92e2-4fed9b821fbe\",\n hasError: false,\n formType: \"select\",\n },\n});\n\nexport const emptyUniverse = () => ({\n author: {\n formTitle: \"Author name\",\n formDescription: \"\",\n value: \"\",\n hasError: false,\n formType: \"text\",\n inputProps: { maxLength: 50 },\n },\n title: {\n formTitle: \"Title\",\n formDescription: \"\",\n value: \"\",\n hasError: false,\n formType: \"text\",\n inputProps: { maxLength: 50 },\n },\n introText: {\n formTitle: \"Introduction text\",\n formDescription:\n \"This will be displayed during mission introduction (660 characters max)\",\n value: \"\",\n hasError: false,\n formType: \"textarea\",\n inputProps: { maxLength: 660, rows: 5 },\n },\n introImage: {\n formTitle: \"Introduction image\",\n formDescription: \"\",\n value: \"\",\n hasError: false,\n formType: \"file\",\n inputProps: { multiple: false, accept: \"image/png, image/jpeg\" },\n },\n introVideo: {\n formTitle: \"Introduction video\",\n formDescription:\n \"Only YouTube is supported, please insert video ID only (example: 2ZyevrQYCcw)\",\n value: \"\",\n hasError: false,\n formType: \"text\",\n inputProps: { maxLength: 255 },\n },\n introAudio: {\n formTitle: \"Introduction audio\",\n formDescription: \"\",\n value: \"\",\n hasError: false,\n formType: \"file\",\n inputProps: { multiple: false, accept: \".mp3\" },\n },\n mainBackground: {\n formTitle: \"Main background\",\n formDescription: \"\",\n value: \"\",\n hasError: false,\n formType: \"file\",\n inputProps: { multiple: false, accept: \"image/png, image/jpeg\" },\n },\n timerBackground: {\n formTitle: \"Timer background\",\n formDescription: \"For a good result, pick a square and transparent PNG\",\n value: \"\",\n hasError: false,\n formType: \"file\",\n inputProps: { multiple: false, accept: \"image/png, image/jpeg\" },\n },\n rightAnswerBackground: {\n formTitle: \"Right answer background\",\n formDescription: \"For a good result, pick a square and transparent PNG\",\n value: \"\",\n hasError: false,\n formType: \"file\",\n inputProps: { multiple: false, accept: \"image/png, image/jpeg\" },\n },\n wrongAnswerBackground: {\n formTitle: \"Wrong answer background\",\n formDescription: \"For a good result, pick a square and transparent PNG\",\n value: \"\",\n hasError: false,\n formType: \"file\",\n inputProps: { multiple: false, accept: \"image/png, image/jpeg\" },\n },\n lifeBackground: {\n formTitle: \"Life background\",\n formDescription: \"For a good result, pick a square and transparent PNG\",\n value: \"\",\n hasError: false,\n formType: \"file\",\n inputProps: { multiple: false, accept: \"image/png, image/jpeg\" },\n },\n});\n\nexport const emptyQuestion = () => ({\n image: {\n type: \"image\",\n title: \"\",\n s3key: \"\",\n },\n audio: {\n type: \"audio\",\n title: \"\",\n s3key: \"\",\n },\n video: {\n type: \"video\",\n title: \"\",\n url: \"\",\n },\n assetType: \"none\",\n type: \"question\",\n text: \"\",\n correctAnswer: 0,\n answers: [emptyAnswer()],\n hint: false,\n});\n\nconst emptyAnswer = () => ({ value: \"\", description: \"\" });\n\nexport const emptyInventoryItem = () => ({\n type: \"image\",\n title: \"\",\n s3key: \"\",\n url: \"\",\n});\n\n// Game details/update\nexport const getGameFormInitialValues = (game) => {\n console.log({game})\n const initialValues = {\n inventory: [],\n questions: [],\n };\n if (!game) return { ...initialValues, ...emptyGame() };\n\n const gameFormEntries = Object.entries({ ...emptyGame() });\n\n gameFormEntries.forEach(([key, value]) => {\n initialValues[key] = value;\n initialValues[key].value = game[key];\n if (key === \"gameUniverseId\") initialValues[key].value = game.universe.id;\n });\n for (let i = 0; i < game.inventory.length; i++) {\n initialValues.inventory.push(emptyInventoryItem());\n for (const [key, value] of Object.entries(game.inventory[i])) {\n initialValues.inventory[i][key] = value;\n }\n }\n for (let i = 0; i < game.questions.length; i++) {\n initialValues.questions.push(emptyQuestion());\n for (const [key, value] of Object.entries(game.questions[i])) {\n if (key === \"answers\") {\n initialValues.questions[i].answers = [];\n game.questions[i].answers.forEach((answer) => {\n initialValues.questions[i].answers.push({ ...answer });\n });\n } else {\n // console.log({ question: initialValues.questions[i], value, key });\n if (value) initialValues.questions[i][key] = value;\n }\n }\n // check assetType\n if (initialValues.questions[i].video.url !== \"\")\n initialValues.questions[i].assetType = \"video\";\n else if (initialValues.questions[i].audio.s3key !== \"\")\n initialValues.questions[i].assetType = \"audio\";\n else if (initialValues.questions[i].image.s3key !== \"\")\n initialValues.questions[i].assetType = \"image\";\n else initialValues.questions[i].assetType = \"none\";\n }\n\n return { ...initialValues };\n};\n\nexport const getUniverseFormInitialValues = (universe) => {\n if (!universe) return { introType: \"image\", ...emptyUniverse() };\n\n const initialValues = {};\n const universeFormEntries = Object.entries(emptyUniverse());\n\n console.log({ universe, universeFormEntries });\n universeFormEntries.forEach(([key, value]) => {\n initialValues[key] = value;\n if (value.formType === \"file\") {\n if (universe[key] && universe[key].s3key) {\n initialValues[key].value = universe[key].s3key;\n } else {\n delete initialValues[key];\n }\n } else initialValues[key].value = universe[key];\n });\n\n // // check introType\n console.log({ initialValues });\n if (initialValues.introVideo && initialValues.introVideo.value === null)\n delete initialValues.introVideo;\n\n if (initialValues.introVideo) initialValues.introType = \"video\";\n else if (initialValues.introImage) initialValues.introType = \"image\";\n else if (initialValues.introAudio) initialValues.introType = \"audio\";\n else initialValues.introType = \"text\";\n\n return { ...initialValues };\n};\n","import { combineReducers, createStore } from \"redux\";\nimport {\n userIdReducer,\n userEmailReducer,\n universeFormReducer,\n universesReducer,\n gamesReducer,\n} from \"./reducers\";\n\nconst appReducer = combineReducers({\n universeForm: universeFormReducer,\n userId: userIdReducer,\n userEmail: userEmailReducer,\n universes: universesReducer,\n games: gamesReducer,\n});\n\nconst rootReducer = (state, action) => {\n if (action.type === \"USER_LOGOUT\") {\n state = initialState;\n }\n\n return appReducer(state, action);\n};\n\nconst initialState = {};\n\nconst store = createStore(rootReducer, initialState);\n\nexport default store;\n","import { emptyUniverse } from \"../constants/dataBaseFormat\";\n\nexport const userIdReducer = (state = null, action) => {\n if (action.type === \"SET_USER_ID\") {\n return action.data;\n }\n return state;\n};\n\nexport const userEmailReducer = (state = null, action) => {\n if (action.type === \"SET_USER_EMAIL\") {\n return action.data;\n }\n return state;\n};\n\nexport const universeFormReducer = (state = emptyUniverse(), action) => {\n if (action.type === \"SET_UNIVERSE\") {\n return action.data;\n }\n if (action.type === \"RESET_UNIVERSE\") {\n return emptyUniverse();\n }\n return state;\n};\n\nexport const universesReducer = (state = [], action) => {\n if (action.type === \"SET_UNIVERSES\") {\n return action.data;\n }\n return state;\n};\n\nexport const gamesReducer = (state = [], action) => {\n if (action.type === \"SET_GAMES\") {\n return action.data;\n }\n if (action.type === \"UPDATE_GAMES_CACHE\") {\n const { id } = action.data;\n const newState = [...state];\n const gameIndex = newState.findIndex((game) => game.id === id);\n if (gameIndex === -1) return state;\n\n for (const [key, value] of Object.entries(action.data)) {\n if (key === \"id\") continue;\n newState[gameIndex][key] = value;\n }\n return newState;\n }\n return state;\n};\n","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"eu-west-1\",\n \"aws_appsync_graphqlEndpoint\": \"https://w4ptg2h5fzc6xfdeufyelet5ei.appsync-api.eu-west-1.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"eu-west-1\",\n \"aws_appsync_authenticationType\": \"AWS_IAM\",\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"AdminQueries\",\n \"endpoint\": \"https://u09nsty886.execute-api.eu-west-1.amazonaws.com/inp\",\n \"region\": \"eu-west-1\"\n }\n ],\n \"aws_cognito_identity_pool_id\": \"eu-west-1:ee84d39f-2ccd-4b23-8f70-e5a9102900ff\",\n \"aws_cognito_region\": \"eu-west-1\",\n \"aws_user_pools_id\": \"eu-west-1_SgzI4GVv8\",\n \"aws_user_pools_web_client_id\": \"4p5bi5uqh7308lg12kvvv1pcnj\",\n \"oauth\": {},\n \"aws_cognito_username_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_social_providers\": [],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_mfa_configuration\": \"OPTIONAL\",\n \"aws_cognito_mfa_types\": [\n \"SMS\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": 8,\n \"passwordPolicyCharacters\": []\n },\n \"aws_cognito_verification_mechanisms\": [\n \"EMAIL\"\n ],\n \"aws_user_files_s3_bucket\": \"sgb-escape-assetsbackend-inp\",\n \"aws_user_files_s3_bucket_region\": \"eu-west-1\",\n \"aws_content_delivery_bucket\": \"sgb-escape-backend-20221108101334-hostingbucket-inp\",\n \"aws_content_delivery_bucket_region\": \"eu-west-1\",\n \"aws_content_delivery_url\": \"https://dmd0fteqr1gra.cloudfront.net\"\n};\n\n\nexport default awsmobile;\n","import { Auth } from \"aws-amplify\";\nimport store from \"../redux/store\";\n\nexport const signIn = (username, password) =>\n new Promise(async (resolve, reject) => {\n try {\n let user;\n if (username && password) user = await Auth.signIn(username, password);\n else user = await Auth.currentAuthenticatedUser();\n if (user) {\n store.dispatch({\n type: \"SET_USER_ID\",\n data: user.attributes.sub,\n });\n store.dispatch({\n type: \"SET_USER_EMAIL\",\n data: user.attributes.email,\n });\n }\n resolve(user);\n } catch (error) {\n console.log(\"error during sign in:\", error);\n reject(error);\n }\n });\n\nexport const signOut = async () => {\n await Auth.signOut();\n store.dispatch({ type: \"USER_LOGOUT\" });\n};\n\nexport const signUp = async (username, password) =>\n new Promise(async (resolve, reject) => {\n try {\n const user = await Auth.signUp({\n username,\n password,\n // attributes: {\n // email, // optional\n // phone_number, // optional - E.164 number convention\n // // other custom attributes\n // },\n });\n console.log({ user });\n resolve(user);\n } catch (error) {\n console.log(\"error signing up:\", error);\n reject(error);\n }\n });\n\nexport const confirmSignUp = (username, code) =>\n new Promise(async (resolve, reject) => {\n try {\n await Auth.confirmSignUp(username, code);\n resolve(true);\n } catch (error) {\n console.log(\"error confirming sign up\", error);\n reject(error);\n }\n });\n\nexport const resendConfirmationCode = async (username) => {\n try {\n await Auth.resendSignUp(username);\n console.log(\"code resent successfully\");\n } catch (err) {\n console.log(\"error resending code: \", err);\n }\n};\n\nexport const forgotPassword = (username) =>\n new Promise((resolve, reject) => {\n Auth.forgotPassword(username)\n .then((data) => {\n console.log(data);\n resolve(data);\n })\n .catch((err) => {\n console.log(err);\n reject(err);\n });\n });\n\n// Collect confirmation code and new password, then\nexport const forgotPasswordSubmit = (username, code, new_password) =>\n new Promise((resolve, reject) => {\n Auth.forgotPasswordSubmit(username, code, new_password)\n .then((data) => {\n console.log(data);\n resolve(data);\n })\n .catch((err) => {\n console.log(err);\n reject(err);\n });\n });\n","import React from \"react\";\nimport ExitToAppIcon from \"@material-ui/icons/ExitToApp\";\n// import { makeStyles } from \"@material-ui/core/styles\";\nimport Tabs from \"@material-ui/core/Tabs\";\nimport Tab from \"@material-ui/core/Tab\";\nimport { AppBar, Button } from \"@material-ui/core\";\nimport { connect } from \"react-redux\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { signOut } from \"../constants/auth\";\nimport logo from \"../images/Logo SGB Escape.png\";\nimport YouTubeLogo from \"../images/YouTube_Logo.png\";\n\nconst CustomTab = withStyles((theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n height: \"100%\",\n \"&$selected\": {\n color: \"white\",\n background: \"rgb(44,84,160)\",\n },\n },\n selected: {},\n}))((props) => );\n\nconst NavBar = ({ handleNavChange, selectedNav, userEmail }) => {\n // const classes = useStyles();\n\n return (\n // \n \n \n
\n \n \n {/* */}\n \n {/* */}\n \n
\n \n \n \n Disconnect}\n // style={{ alignSelf: \"center\" }}\n >\n {userEmail}\n \n \n // \n );\n};\n\nconst mapStateToProps = ({ userEmail }) => ({ userEmail });\n\nexport default connect(mapStateToProps)(NavBar);\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const createGameFromLambda = /* GraphQL */ `\n mutation CreateGameFromLambda($data: String) {\n createGameFromLambda(data: $data)\n }\n`;\nexport const createGame = /* GraphQL */ `\n mutation CreateGame(\n $input: CreateGameInput!\n $condition: ModelGameConditionInput\n ) {\n createGame(input: $input, condition: $condition) {\n id\n gameUniverseId\n createdAt\n createdBy\n title\n author\n institution\n description\n masterCode\n timer\n lives\n introAudioUrl\n introVideoUrl\n introText\n penalityTimer\n penalityCounter\n penalityLife\n inventory {\n type\n title\n url\n s3key\n }\n questions {\n index\n type\n question\n answers {\n description\n value\n }\n hint\n qrCode\n text\n correctAnswer\n image {\n type\n title\n url\n s3key\n }\n video {\n type\n title\n url\n s3key\n }\n audio {\n type\n title\n url\n s3key\n }\n assetType\n }\n universe {\n id\n author\n createdAt\n createdBy\n title\n introImage {\n type\n title\n url\n s3key\n }\n introAudio {\n type\n title\n url\n s3key\n }\n introVideo {\n type\n title\n url\n s3key\n }\n introText\n mainBackground {\n type\n title\n url\n s3key\n color\n }\n timerBackground {\n type\n title\n url\n s3key\n color\n }\n rightAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n wrongAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n lifeBackground {\n type\n title\n url\n s3key\n color\n }\n updatedAt\n }\n updatedAt\n qrCode\n }\n }\n`;\nexport const updateGame = /* GraphQL */ `\n mutation UpdateGame(\n $input: UpdateGameInput!\n $condition: ModelGameConditionInput\n ) {\n updateGame(input: $input, condition: $condition) {\n id\n gameUniverseId\n createdAt\n createdBy\n title\n author\n institution\n description\n masterCode\n timer\n lives\n introAudioUrl\n introVideoUrl\n introText\n penalityTimer\n penalityCounter\n penalityLife\n inventory {\n type\n title\n url\n s3key\n }\n questions {\n index\n type\n question\n answers {\n description\n value\n }\n hint\n qrCode\n text\n correctAnswer\n image {\n type\n title\n url\n s3key\n }\n video {\n type\n title\n url\n s3key\n }\n audio {\n type\n title\n url\n s3key\n }\n assetType\n }\n universe {\n id\n author\n createdAt\n createdBy\n title\n introImage {\n type\n title\n url\n s3key\n }\n introAudio {\n type\n title\n url\n s3key\n }\n introVideo {\n type\n title\n url\n s3key\n }\n introText\n mainBackground {\n type\n title\n url\n s3key\n color\n }\n timerBackground {\n type\n title\n url\n s3key\n color\n }\n rightAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n wrongAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n lifeBackground {\n type\n title\n url\n s3key\n color\n }\n updatedAt\n }\n updatedAt\n qrCode\n }\n }\n`;\nexport const deleteGame = /* GraphQL */ `\n mutation DeleteGame(\n $input: DeleteGameInput!\n $condition: ModelGameConditionInput\n ) {\n deleteGame(input: $input, condition: $condition) {\n id\n gameUniverseId\n createdAt\n createdBy\n title\n author\n institution\n description\n masterCode\n timer\n lives\n introAudioUrl\n introVideoUrl\n introText\n penalityTimer\n penalityCounter\n penalityLife\n inventory {\n type\n title\n url\n s3key\n }\n questions {\n index\n type\n question\n answers {\n description\n value\n }\n hint\n qrCode\n text\n correctAnswer\n image {\n type\n title\n url\n s3key\n }\n video {\n type\n title\n url\n s3key\n }\n audio {\n type\n title\n url\n s3key\n }\n assetType\n }\n universe {\n id\n author\n createdAt\n createdBy\n title\n introImage {\n type\n title\n url\n s3key\n }\n introAudio {\n type\n title\n url\n s3key\n }\n introVideo {\n type\n title\n url\n s3key\n }\n introText\n mainBackground {\n type\n title\n url\n s3key\n color\n }\n timerBackground {\n type\n title\n url\n s3key\n color\n }\n rightAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n wrongAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n lifeBackground {\n type\n title\n url\n s3key\n color\n }\n updatedAt\n }\n updatedAt\n qrCode\n }\n }\n`;\nexport const createUniverse = /* GraphQL */ `\n mutation CreateUniverse(\n $input: CreateUniverseInput!\n $condition: ModelUniverseConditionInput\n ) {\n createUniverse(input: $input, condition: $condition) {\n id\n author\n createdAt\n createdBy\n title\n introImage {\n type\n title\n url\n s3key\n }\n introAudio {\n type\n title\n url\n s3key\n }\n introVideo {\n type\n title\n url\n s3key\n }\n introText\n mainBackground {\n type\n title\n url\n s3key\n color\n }\n timerBackground {\n type\n title\n url\n s3key\n color\n }\n rightAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n wrongAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n lifeBackground {\n type\n title\n url\n s3key\n color\n }\n updatedAt\n }\n }\n`;\nexport const updateUniverse = /* GraphQL */ `\n mutation UpdateUniverse(\n $input: UpdateUniverseInput!\n $condition: ModelUniverseConditionInput\n ) {\n updateUniverse(input: $input, condition: $condition) {\n id\n author\n createdAt\n createdBy\n title\n introImage {\n type\n title\n url\n s3key\n }\n introAudio {\n type\n title\n url\n s3key\n }\n introVideo {\n type\n title\n url\n s3key\n }\n introText\n mainBackground {\n type\n title\n url\n s3key\n color\n }\n timerBackground {\n type\n title\n url\n s3key\n color\n }\n rightAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n wrongAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n lifeBackground {\n type\n title\n url\n s3key\n color\n }\n updatedAt\n }\n }\n`;\nexport const deleteUniverse = /* GraphQL */ `\n mutation DeleteUniverse(\n $input: DeleteUniverseInput!\n $condition: ModelUniverseConditionInput\n ) {\n deleteUniverse(input: $input, condition: $condition) {\n id\n author\n createdAt\n createdBy\n title\n introImage {\n type\n title\n url\n s3key\n }\n introAudio {\n type\n title\n url\n s3key\n }\n introVideo {\n type\n title\n url\n s3key\n }\n introText\n mainBackground {\n type\n title\n url\n s3key\n color\n }\n timerBackground {\n type\n title\n url\n s3key\n color\n }\n rightAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n wrongAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n lifeBackground {\n type\n title\n url\n s3key\n color\n }\n updatedAt\n }\n }\n`;\n","const QRCode = require(\"qrcode\");\n\nexport const encodeToQRCode = (id, email) =>\n new Promise((resolve, reject) => {\n QRCode.toDataURL(\n JSON.stringify({ id, email }),\n { errorCorrectionLevel: \"Q\", margin: 4, scale: 4 },\n (err, dataURL) => {\n if (err) {\n console.log(err, err.stack);\n reject({ error: \"Could not get DataURL\" });\n } else {\n resolve(dataURL);\n }\n }\n );\n });\n\n export const alphabeticalSort = (arr, getter, order = 'asc') =>\n arr.sort(\n order === 'desc'\n ? (a, b) => getter(b).localeCompare(getter(a))\n : (a, b) => getter(a).localeCompare(getter(b))\n );","import { graphqlOperation, API } from \"aws-amplify\";\nimport store from \"../redux/store\";\nimport { listUniverses } from \"../graphql/queries\";\nimport * as mutations from \"../graphql/mutations\";\nimport { alphabeticalSort } from \"./helpers\";\n\nconst listGames = /* GraphQL */ `\n query ListGames(\n $filter: ModelGameFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listGames(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n gameUniverseId\n createdAt\n createdBy\n title\n author\n institution\n description\n masterCode\n timer\n lives\n introAudioUrl\n introVideoUrl\n introText\n penalityTimer\n penalityCounter\n penalityLife\n inventory {\n type\n title\n url\n s3key\n }\n questions {\n index\n type\n question\n hint\n qrCode\n text\n correctAnswer\n assetType\n answers {\n description\n value\n }\n image {\n type\n title\n url\n s3key\n }\n video {\n type\n title\n url\n s3key\n }\n audio {\n type\n title\n url\n s3key\n }\n }\n universe {\n id\n author\n createdAt\n createdBy\n title\n introText\n updatedAt\n }\n updatedAt\n qrCode\n }\n nextToken\n }\n }\n`;\n\nexport const fetchUniverses = async () => {\n try {\n const queryResult = await API.graphql(graphqlOperation(listUniverses));\n console.log({ queryResult });\n store.dispatch({\n type: \"SET_UNIVERSES\",\n data: queryResult.data.listUniverses.items,\n });\n } catch (error) {\n console.log({ error });\n }\n};\n\nexport const deleteUniverse = async (id) => {\n try {\n await API.graphql(\n graphqlOperation(mutations.deleteUniverse, { input: { id } })\n );\n fetchUniverses();\n } catch (error) {\n console.log({ error });\n }\n};\n\nexport const fetchGames = async () => {\n try {\n const queryResult = await API.graphql(graphqlOperation(listGames));\n alphabeticalSort(\n queryResult.data.listGames.items,\n (item) => item.createdAt,\n \"desc\"\n );\n store.dispatch({\n type: \"SET_GAMES\",\n data: queryResult.data.listGames.items,\n });\n } catch (error) {\n console.log({ error });\n }\n};\n\nexport const deleteGame = async (id) => {\n try {\n await API.graphql(\n graphqlOperation(mutations.deleteGame, { input: { id } })\n );\n fetchGames();\n } catch (error) {\n console.log({ error });\n }\n};\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const getGame = /* GraphQL */ `\n query GetGame($id: ID!) {\n getGame(id: $id) {\n id\n gameUniverseId\n createdAt\n createdBy\n title\n author\n institution\n description\n masterCode\n timer\n lives\n introAudioUrl\n introVideoUrl\n introText\n penalityTimer\n penalityCounter\n penalityLife\n inventory {\n type\n title\n url\n s3key\n }\n questions {\n index\n type\n question\n answers {\n description\n value\n }\n hint\n qrCode\n text\n correctAnswer\n image {\n type\n title\n url\n s3key\n }\n video {\n type\n title\n url\n s3key\n }\n audio {\n type\n title\n url\n s3key\n }\n assetType\n }\n universe {\n id\n author\n createdAt\n createdBy\n title\n introImage {\n type\n title\n url\n s3key\n }\n introAudio {\n type\n title\n url\n s3key\n }\n introVideo {\n type\n title\n url\n s3key\n }\n introText\n mainBackground {\n type\n title\n url\n s3key\n color\n }\n timerBackground {\n type\n title\n url\n s3key\n color\n }\n rightAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n wrongAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n lifeBackground {\n type\n title\n url\n s3key\n color\n }\n updatedAt\n }\n updatedAt\n qrCode\n }\n }\n`;\nexport const listGames = /* GraphQL */ `\n query ListGames(\n $filter: ModelGameFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listGames(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n gameUniverseId\n createdAt\n createdBy\n title\n author\n institution\n description\n masterCode\n timer\n lives\n introAudioUrl\n introVideoUrl\n introText\n penalityTimer\n penalityCounter\n penalityLife\n inventory {\n type\n title\n url\n s3key\n }\n questions {\n index\n type\n question\n hint\n qrCode\n text\n correctAnswer\n assetType\n }\n universe {\n id\n author\n createdAt\n createdBy\n title\n introText\n updatedAt\n }\n updatedAt\n qrCode\n }\n nextToken\n }\n }\n`;\nexport const getUniverse = /* GraphQL */ `\n query GetUniverse($id: ID!) {\n getUniverse(id: $id) {\n id\n author\n createdAt\n createdBy\n title\n introImage {\n type\n title\n url\n s3key\n }\n introAudio {\n type\n title\n url\n s3key\n }\n introVideo {\n type\n title\n url\n s3key\n }\n introText\n mainBackground {\n type\n title\n url\n s3key\n color\n }\n timerBackground {\n type\n title\n url\n s3key\n color\n }\n rightAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n wrongAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n lifeBackground {\n type\n title\n url\n s3key\n color\n }\n updatedAt\n }\n }\n`;\nexport const listUniverses = /* GraphQL */ `\n query ListUniverses(\n $filter: ModelUniverseFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUniverses(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n author\n createdAt\n createdBy\n title\n introImage {\n type\n title\n url\n s3key\n }\n introAudio {\n type\n title\n url\n s3key\n }\n introVideo {\n type\n title\n url\n s3key\n }\n introText\n mainBackground {\n type\n title\n url\n s3key\n color\n }\n timerBackground {\n type\n title\n url\n s3key\n color\n }\n rightAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n wrongAnswerBackground {\n type\n title\n url\n s3key\n color\n }\n lifeBackground {\n type\n title\n url\n s3key\n color\n }\n updatedAt\n }\n nextToken\n }\n }\n`;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { makeStyles, Typography } from \"@material-ui/core\";\nimport { Storage } from \"aws-amplify\";\n\nconst useStyles = makeStyles(() => ({\n overlay: {\n width: \"100vw\",\n height: \"100vh\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n position: \"fixed\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"rgba(0,0,0,0.8)\",\n zIndex: 2,\n },\n input: {\n width: \"100%\",\n padding: \"12px 20px\",\n margin: \"8px 0\",\n display: \"inline-block\",\n border: \"1px solid #ccc\",\n borderRadius: 4,\n boxSizing: \"border-box\",\n },\n fileWarning: {\n fontWeight: 300,\n fontSize: 12,\n marginBottom: 10,\n },\n}));\n\nconst FileSelectAndPreview = ({\n onFileChoosen,\n file,\n type,\n index,\n formKey,\n isOwner,\n}) => {\n const classes = useStyles();\n const [url, setUrl] = useState(null);\n\n const currentType = useRef(type);\n\n useEffect(() => {\n try {\n if (currentType.current !== type) {\n currentType.current = type;\n setUrl(null);\n }\n if (file) {\n if (typeof file === \"string\" && file.startsWith(\"data:\")) setUrl(file);\n else if (typeof file === \"string\" && !file.startsWith(\"data:\")) {\n Storage.get(file)\n .then((data) => setUrl(data))\n .catch((err) => console.log({ err }));\n } else setUrl(URL.createObjectURL(file));\n }\n } catch (error) {\n setUrl(null);\n }\n }, [file, type]);\n\n const onChange = (e) => {\n try {\n const fileSize = e.target.files[0].size / 1024 / 1024;\n if (type === \"image\" && fileSize > 1) return;\n if (type === \"audio\" && fileSize > 3) return;\n } catch (error) {\n return;\n }\n // for universe\n if (typeof index !== \"number\") {\n onFileChoosen(e.target.files[0], formKey, \"value\");\n } else {\n // for game\n onFileChoosen(\n e.target.files[0],\n formKey,\n index,\n formKey === \"inventory\" ? \"s3key\" : type,\n formKey !== \"inventory\" ? \"s3key\" : null\n );\n }\n };\n\n return (\n
\n {isOwner && (\n <>\n \n {type === \"image\" ? (\n \n Accepted formats: PNG and JPEG. 1 Mo maximum. Try to make it as\n small as possible.\n \n ) : (\n \n Accept format: MP3 only. 3 Mo maximum.\n \n )}\n \n )}\n {url && type === \"image\" && (\n \"\"\n )}\n {url && type === \"audio\" && (\n \n )}\n
\n );\n};\n\nexport default FileSelectAndPreview;\n","import React from \"react\";\n\nconst YoutubeView = ({ id, style = {} }) => {\n console.log({ youtubeVideo: id });\n return (\n \n );\n};\n\nexport default YoutubeView;\n","import React from \"react\";\nimport {\n Button,\n Select,\n MenuItem,\n Typography,\n TextField,\n makeStyles,\n} from \"@material-ui/core\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport ArrowUpwardIcon from \"@material-ui/icons/ArrowUpward\";\nimport ArrowDownwardIcon from \"@material-ui/icons/ArrowDownward\";\nimport FileSelectAndPreview from \"./FileSelectAndPreview\";\nimport YoutubeView from \"./YoutubeView\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: 20,\n marginLeft: 30,\n \"& .MuiTextField-root\": {\n margin: theme.spacing(1),\n width: \"25ch\",\n },\n },\n row: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n marginTop: 10,\n },\n column: {\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: 10,\n },\n inputLabel: { width: \"10ch\" },\n margin: {\n margin: theme.spacing(1),\n },\n}));\n\nconst InventoryItem = ({\n index,\n item,\n inventoryLength,\n handleArrayChange,\n onFileChoosen,\n deleteInventoryItem,\n moveItem,\n isOwner,\n}) => {\n const classes = useStyles();\n\n return (\n
\n \n Document n°{index + 1}\n \n\n
\n Asset type\n handleArrayChange(e, \"inventory\", index, \"type\")}\n >\n Image\n Video\n Audio\n {/* Text */}\n \n
\n
\n Title\n handleArrayChange(e, \"inventory\", index, \"title\")}\n error={item.url === null}\n // helperText={hasError && error}\n />\n
\n
\n {(item.type === \"image\" || item.type === \"audio\") && (\n \n )}\n {item.type === \"video\" && (\n
\n
\n Youtube ID\n \n handleArrayChange(e, \"inventory\", index, \"url\")\n }\n maxLength={200}\n required\n />\n
\n \n \n Example: Copy the bold part of your YouTube link (after = to the\n end ): https://www.youtube.com/watch?v=2ZyevrQYCcw\n \n 2ZyevrQYCcw\n \n {item.url && }\n
\n )}\n
\n\n deleteInventoryItem(index)}\n variant=\"contained\"\n color=\"secondary\"\n className={classes.margin}\n startIcon={Delete document}\n >\n Delete document\n \n {index !== 0 && (\n moveItem(\"inventory\", index, -1)}\n variant=\"contained\"\n color=\"primary\"\n className={classes.margin}\n startIcon={Move up}\n >\n Move up\n \n )}\n {index < inventoryLength - 1 && (\n moveItem(\"inventory\", index, 1)}\n variant=\"contained\"\n color=\"primary\"\n className={classes.margin}\n startIcon={Move down}\n >\n Move down\n \n )}\n
\n );\n};\n\nexport default InventoryItem;\n","import React from \"react\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport { Typography, Button, Paper } from \"@material-ui/core\";\nimport InventoryItem from \"./InventoryItem\";\n\nconst Inventory = ({\n inventory,\n addInventoryItem,\n deleteInventoryItem,\n handleArrayChange,\n moveItem,\n onFileChoosen,\n isOwner,\n}) => {\n return (\n <>\n Inventory\n \n {inventory.map((item, i) => (\n \n ))}\n Add inventory item}\n >\n Add inventory item\n \n \n \n );\n};\n\nexport default Inventory;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n Button,\n Select,\n MenuItem,\n Typography,\n FormControlLabel,\n Checkbox,\n makeStyles,\n IconButton,\n} from \"@material-ui/core\";\nimport ArrowUpwardIcon from \"@material-ui/icons/ArrowUpward\";\nimport ArrowDownwardIcon from \"@material-ui/icons/ArrowDownward\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport FileSelectAndPreview from \"./FileSelectAndPreview\";\nimport YoutubeView from \"./YoutubeView\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: 20,\n marginLeft: 30,\n \"& .MuiTextField-root\": {\n margin: theme.spacing(1),\n width: \"50ch\",\n },\n },\n margin: {\n margin: theme.spacing(1),\n },\n row: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n marginTop: 10,\n },\n inputLabel: { width: \"15ch\" },\n input: {\n width: \"100%\",\n padding: \"12px 20px\",\n margin: \"8px 0\",\n display: \"inline-block\",\n border: \"1px solid #ccc\",\n borderRadius: 4,\n boxSizing: \"border-box\",\n },\n}));\n\nconst Question = ({\n index,\n question,\n questionsLength,\n moveItem,\n handleArrayChange,\n handleAnswerChange,\n addAnswer,\n deleteAnswer,\n deleteQuestion,\n onFileChoosen,\n isOwner,\n}) => {\n const classes = useStyles();\n\n return (\n
\n \n QR Code n°{index + 1}\n \n\n
\n Type\n handleArrayChange(e, \"questions\", index, \"type\")}\n disabled={!isOwner}\n >\n Question\n QCM\n Clue\n \n
\n\n
\n Asset type\n \n handleArrayChange(e, \"questions\", index, \"assetType\")\n }\n disabled={!isOwner}\n >\n None\n Image\n Audio\n Video\n \n
\n\n
\n {(question.assetType === \"image\" || question.assetType === \"audio\") && (\n \n )}\n {question.assetType === \"video\" && (\n
\n
\n Youtube ID\n \n handleArrayChange(e, \"questions\", index, \"video\", \"url\")\n }\n maxLength={200}\n required\n />\n
\n \n \n Example: Copy the bold part of your YouTube link (after = to the\n end ): https://www.youtube.com/watch?v=2ZyevrQYCcw\n \n 2ZyevrQYCcw\n \n {question.video.url && }\n
\n )}\n
\n\n \n handleArrayChange(e, \"questions\", index, \"text\")}\n maxLength={255}\n required\n disabled={!isOwner}\n />\n\n {question.type !== \"clue\" && (\n \n )}\n {question.type !== \"clue\" &&\n question.answers.map((answer, i) => (\n
\n \n handleAnswerChange(e, index, i, \"value\")}\n maxLength={1}\n required\n disabled={!isOwner}\n />\n {question.type === \"qcm\" && (\n <>\n \n \n handleAnswerChange(e, index, i, \"description\")\n }\n maxLength={50}\n required\n disabled={!isOwner}\n />\n \n )}\n \n handleArrayChange(i, \"questions\", index, \"correctAnswer\")\n }\n color=\"primary\"\n disabled={!isOwner}\n />\n }\n label=\"Correct answer\"\n />\n {isOwner && question.type === \"qcm\" && question.answers.length > 1 && (\n deleteAnswer(index, i)}\n >\n \n \n )}\n
\n ))}\n {isOwner && question.type === \"qcm\" && question.answers.length < 4 && (\n addAnswer(index)}\n startIcon={Add answer}\n >\n Add answer\n \n )}\n
\n\n handleArrayChange(e, \"questions\", index, \"hint\")}\n color=\"primary\"\n disabled={!isOwner}\n />\n }\n label=\"Has hint: indicates the players if their inventory item(s) can help them resolve the question\"\n />\n {isOwner && (\n
\n deleteQuestion(index)}\n variant=\"contained\"\n color=\"secondary\"\n className={classes.margin}\n startIcon={Delete question}\n >\n Delete question\n \n {index !== 0 && (\n moveItem(\"questions\", index, -1)}\n variant=\"contained\"\n color=\"primary\"\n className={classes.margin}\n startIcon={Move up}\n >\n Move up\n \n )}\n {index < questionsLength - 1 && (\n moveItem(\"questions\", index, 1)}\n variant=\"contained\"\n color=\"primary\"\n className={classes.margin}\n startIcon={Move down}\n >\n Move down\n \n )}\n
\n )}\n
\n );\n};\n\nconst mapStateToProps = ({ questions }) => ({ questions });\n\nexport default connect(mapStateToProps)(Question);\n","import React from \"react\";\nimport { Typography, Button, Paper } from \"@material-ui/core\";\nimport AddIcon from \"@material-ui/icons/Add\";\n\nimport Question from \"./Question\";\n\nconst Questions = ({\n questions,\n addQuestion,\n addAnswer,\n moveItem,\n handleArrayChange,\n handleAnswerChange,\n onFileChoosen,\n deleteAnswer,\n deleteQuestion,\n isOwner,\n}) => {\n return (\n <>\n Questions\n \n {questions.map((question, i) => (\n \n ))}\n {isOwner && (\n Add question}\n >\n Add question\n \n )}\n \n \n );\n};\n\nexport default Questions;\n","import { createGameFromLambda } from \"../graphql/mutations\";\nimport { graphqlOperation, API } from \"aws-amplify\";\nimport { fetchGames } from \"./api\";\n// import { checkErrors } from \"./formValidation\";\n\n// const isQuestionValid = (obj) => {\n// // description: {\n// // type: \"image\",\n// // title: \"\",\n// // url: \"\",\n// // },\n// // type: \"question\",\n// // question: \"\",\n// // correctAnswer: 0,\n// // answers: [\"\"],\n// // hint: false,\n// try {\n// const { question, correctAnswer, answers, type, description } = obj;\n// if (question.length === 0) return false;\n// for (const answer of answers) {\n// if (answer.length === 0) return false;\n// }\n// if (description.url === \"\") return false;\n// return true;\n// } catch (error) {\n// return false;\n// }\n// };\n\n// const isItemValid = (obj) => {\n// const { type, title, url } = obj;\n// if (title === \"\") return false;\n// if (url === \"\") return false;\n// return true;\n// };\n\n// export const isFormValid = () => {\n// try {\n// const currentState = store.getState();\n// const { form, inventory, questions } = currentState;\n// for (const [formKey, formValue] of Object.entries(form)) {\n// if (checkErrors(formKey, formValue.value) !== \"\") return false;\n// }\n// for (const item of inventory) {\n// if (!isItemValid(item)) return false;\n// }\n// for (const question of questions) {\n// if (!isQuestionValid(question)) return false;\n// }\n// return true;\n// } catch (error) {\n// console.log({ error });\n// return false;\n// }\n// };\n\n// const fileToBase64 = (file) =>\n// new Promise((resolve, reject) => {\n// const reader = new FileReader();\n// reader.readAsBinaryString(file);\n\n// reader.onload = () => {\n// resolve(btoa(reader.result));\n// };\n// reader.onerror = (err) => {\n// console.log(\"error during encoding: \", { err });\n// reject(null);\n// };\n// });\n\nconst toBase64 = (file) =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(error);\n });\n\nexport const submitUpdateGame = async (game) => {\n try {\n const updatedGame = {\n ...game,\n };\n if (updatedGame.inventory)\n updatedGame.inventory = await formatInventory(updatedGame.inventory);\n if (updatedGame.questions)\n updatedGame.questions = await formatQuestions(\n updatedGame.questions,\n true\n );\n\n console.log({ sentGame: game });\n const res = await API.graphql(\n graphqlOperation(createGameFromLambda, {\n data: JSON.stringify(updatedGame),\n })\n );\n console.log({ res });\n const statusCode = parseInt(\n res.data.createGameFromLambda.split(\"statusCode=\")[1].slice(0, 3)\n );\n const success = statusCode === 200;\n\n return success;\n } catch (error) {\n console.log({ error });\n return false;\n }\n};\n\nexport const submitGame = async (formValues) => {\n console.log({ formValues });\n try {\n const game = {\n createType: \"game\",\n ...formValues,\n inventory: await formatInventory(formValues.inventory),\n questions: await formatQuestions(formValues.questions),\n };\n console.log({ sentGame: game });\n const res = await API.graphql(\n graphqlOperation(createGameFromLambda, {\n data: JSON.stringify(game),\n })\n );\n console.log({ res });\n const statusCode = parseInt(\n res.data.createGameFromLambda.split(\"statusCode=\")[1].slice(0, 3)\n );\n const success = statusCode === 200;\n\n return success;\n } catch (error) {\n console.log({ error });\n return false;\n }\n};\n\nexport const submitUniverse = async (universe) => {\n try {\n console.log(\"submitUniverse\");\n const newUniverse = { ...universe };\n if (newUniverse.introType === \"image\") {\n newUniverse.introVideo = null;\n newUniverse.introAudio = null;\n }\n if (newUniverse.introType === \"video\") {\n newUniverse.introImage = null;\n newUniverse.introAudio = null;\n }\n if (newUniverse.introType === \"audio\") {\n newUniverse.introImage = null;\n newUniverse.introVideo = null;\n }\n delete newUniverse.introType;\n for (const key of Object.keys(newUniverse)) {\n if (newUniverse[key] && newUniverse[key].formType === \"file\") {\n console.log(newUniverse[key]);\n if (newUniverse[key].value instanceof File) {\n newUniverse[key] = await toBase64(newUniverse[key].value);\n console.log(newUniverse[key]);\n }\n } else if (newUniverse[key] && key === \"introVideo\") {\n newUniverse.introVideo = { url: newUniverse.introVideo.url || newUniverse.introVideo.value.url };\n } else if (newUniverse[key] && key !== \"id\") {\n newUniverse[key] = newUniverse[key].value;\n }\n }\n console.log({ newUniverse });\n\n const res = await API.graphql(\n graphqlOperation(createGameFromLambda, {\n data: JSON.stringify({ ...newUniverse, createType: \"universe\" }),\n })\n );\n console.log({ res });\n const statusCode = parseInt(\n res.data.createGameFromLambda.split(\"statusCode=\")[1].slice(0, 3)\n );\n console.log({ statusCode });\n const success = statusCode === 200;\n\n return success;\n } catch (error) {\n console.log({ error });\n return false;\n }\n};\n\n// export const submitUniverse = async (formValues) => {\n// try {\n// console.log(\"submitUniverse\");\n// const currentState = store.getState();\n// const { universeForm } = currentState;\n// console.log({ universeForm });\n// const newUniverse = {\n// createType: \"universe\",\n// };\n// for (const key of Object.keys(formValues)) {\n// if (universeForm[key].formType === \"file\") {\n// console.log(formValues[key]);\n// newUniverse[key] = await toBase64(formValues[key][0]);\n// console.log(newUniverse[key]);\n// } else {\n// newUniverse[key] = formValues[key];\n// }\n// }\n// console.log({ newUniverse });\n\n// const res = await API.graphql(\n// graphqlOperation(createGameFromLambda, {\n// data: JSON.stringify(newUniverse),\n// })\n// );\n// console.log({ res });\n// const statusCode = parseInt(\n// res.data.createGameFromLambda.split(\"statusCode=\")[1].slice(0, 3)\n// );\n// console.log({ statusCode });\n// const success = statusCode === 200;\n// if (success) store.dispatch({ type: \"RESET_GAME\" });\n\n// return success;\n// } catch (error) {\n// console.log({ error });\n// return false;\n// }\n// };\n\n// const formatForm = (form) => {\n// const formattedForm = {};\n// for (const [formKey, formValue] of Object.entries(form)) {\n// formattedForm[formKey] = formValue.value;\n// }\n// return formattedForm;\n// };\n\nconst formatQuestions = async (questions, update) => {\n const newQuestions = [];\n for (let i = 0; i < questions.length; i++) {\n newQuestions.push({ ...questions[i] });\n const { assetType, video, image, audio } = newQuestions[i];\n\n newQuestions[i].index = i;\n\n if ((image && image.s3key === \"\") || assetType !== \"image\")\n delete newQuestions[i].image;\n if ((audio && audio.s3key === \"\") || assetType !== \"audio\")\n delete newQuestions[i].audio;\n if ((video && video.url === \"\") || assetType !== \"video\")\n delete newQuestions[i].video;\n\n console.log({ assetType, i, newQuestions, video, image, audio });\n\n if (\n (assetType === \"image\" || assetType === \"audio\") &&\n typeof newQuestions[i][assetType].s3key !== \"string\"\n ) {\n newQuestions[i][assetType].s3key = await toBase64(\n newQuestions[i][assetType].s3key\n );\n }\n\n if (!update) delete newQuestions[i].assetType;\n }\n return newQuestions;\n};\n\nconst formatInventory = async (inventory) => {\n console.log({ inventory });\n const newInventory = [];\n for (let i = 0; i < inventory.length; i++) {\n newInventory.push({ ...inventory[i] });\n const { type, s3key } = newInventory[i];\n if ((type === \"image\" || type === \"audio\") && typeof s3key !== \"string\") {\n newInventory[i].s3key = await toBase64(s3key);\n }\n }\n return newInventory;\n};\n","export const swapArrElements = (arr, x, y) => {\n var b = arr[x];\n arr[x] = arr[y];\n arr[y] = b;\n return arr;\n};\n\n// compares origin game with updated gameForm\n// returns updated values only\nexport const getUpdatedValues = (game, gameFormValues) => {\n const updatedValues = {};\n Object.keys(gameFormValues).forEach((key) => {\n if (game[key] !== gameFormValues[key]) {\n if (key === \"gameUniverseId\") {\n if (game.universe.id !== gameFormValues.gameUniverseId)\n updatedValues[key] = gameFormValues.gameUniverseId;\n } else {\n console.log(\"field changed: \", key);\n console.log({\n initialField: game[key],\n updatedField: gameFormValues[key],\n });\n updatedValues[key] = gameFormValues[key];\n }\n }\n });\n return updatedValues;\n};\n\nexport const areGameQuestionsUpdated = (game, questions) => {\n console.log({ game, questions });\n if (game.questions.length !== questions.length) return true;\n for (let i = 0; i < questions.length; i++) {\n for (const key of Object.keys(questions[i])) {\n if (key === \"answers\") {\n if (game.questions[i].answers.length !== questions[i].answers.length)\n return true;\n for (let j = 0; j < questions[i].answers.length; j++) {\n for (const answerKey of Object.keys(questions[i].answers[j])) {\n // console.log({\n // game: game.questions[i].answers[j][answerKey],\n // form: questions[i].answers[j][answerKey],\n // });\n if (\n game.questions[i].answers[j][answerKey] !==\n questions[i].answers[j][answerKey]\n ) {\n // console.log({ answerKey });\n return true;\n }\n }\n }\n } else if (key === \"assetType\") {\n const assetType = questions[i].assetType;\n if (game.questions[i][assetType] !== questions[i][assetType])\n return true;\n if (\n assetType !== \"none\" &&\n game.questions[i][assetType].s3key &&\n questions[i][assetType].s3key &&\n game.questions[i][assetType].s3key !== questions[i][assetType].s3key\n )\n return true;\n if (\n assetType !== \"none\" &&\n game.questions[i][assetType].url &&\n questions[i][assetType].url &&\n game.questions[i][assetType].url !== questions[i][assetType].url\n ) {\n return true;\n }\n } else {\n if (\n game.questions[i][key] &&\n game.questions[i][key] !== questions[i][key]\n ) {\n console.log({ key });\n return true;\n }\n }\n }\n }\n return false;\n};\n\nexport const isInventoryUpdated = (game, inventory) => {\n if (game.inventory.length !== inventory.length) return true;\n for (let i = 0; i < inventory.length; i++) {\n for (const key of Object.keys(inventory[i])) {\n if (game.inventory[i][key] !== inventory[i][key]) {\n console.log({ key });\n return true;\n }\n }\n }\n return false;\n};\n","import React, { useState, useEffect } from \"react\";\nimport { Storage } from \"aws-amplify\";\n\nconst ImageFromS3 = ({ s3Key, imgStyle }) => {\n const [url, setUrl] = useState(null);\n useEffect(() => {\n Storage.get(s3Key)\n .then((data) => setUrl(data))\n .catch((err) => {\n console.log(\"failed :\", s3Key);\n console.log({ err });\n return null;\n });\n }, [s3Key]);\n\n return (\n \"\"\n );\n};\n\nexport default ImageFromS3;\n","import React, { useRef, useState } from \"react\";\nimport {\n Typography,\n Grid,\n makeStyles,\n Button,\n Divider,\n CircularProgress,\n} from \"@material-ui/core\";\nimport ImageFromS3 from \"../components/ImageFromS3\";\nimport ReactToPrint from \"react-to-print\";\nimport { Component } from \"react\";\nimport { encodeToQRCode } from \"../constants/helpers\";\nimport { connect } from \"react-redux\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n },\n divider: {\n marginBottom: 30,\n },\n margin: {\n margin: 5,\n },\n row: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n marginTop: 30,\n marginBottom: 30,\n },\n inputLabel: { width: \"10ch\" },\n}));\n\nconst QRCodes = ({ game, onBack, userEmail }) => {\n const [email, setEmail] = useState(userEmail);\n const [emailSubmitted, setEmailSubmitted] = useState(false);\n const classes = useStyles();\n const componentRef = useRef(null);\n\n const handleSubmit = () => {\n // TODO: email validation ?\n setEmailSubmitted(true);\n };\n return (\n
\n \n Back\n \n {!emailSubmitted ? (\n
\n \n Please enter your email: game results will be sent to it.\n \n \n We won't store it anywhere, it will only be stored in the QR Code.\n \n You can leave it blank.\n
\n Email\n setEmail(e.target.value)}\n />\n
\n \n Submit\n \n
\n ) : (\n <>\n (\n \n Print QR codes\n \n )}\n content={() => componentRef.current}\n />\n \n (componentRef.current = el)}\n game={game}\n email={email}\n />\n \n )}\n
\n );\n};\n\nclass ComponentToPrint extends Component {\n constructor(props) {\n super(props);\n this.state = {\n gameB64: null,\n };\n }\n\n async componentDidMount() {\n const { game, email } = this.props;\n encodeToQRCode(game.id, email)\n .then((gameB64) => this.setState({ gameB64 }))\n .catch(console.log);\n }\n\n render() {\n const { game } = this.props;\n const { gameB64 } = this.state;\n const styles = {\n text: {\n textAlign: \"center\",\n },\n imgContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n // width: 100,\n // height: 100,\n },\n };\n return (\n \n \n \n Game\n \n
\n {gameB64 ? (\n \n ) : (\n \n )}\n
\n
\n\n {game.questions.map((question, i) => (\n \n \n Q{i + 1}\n \n
\n \n
\n
\n ))}\n
\n );\n }\n}\n\nconst mapStateToProps = ({ userEmail }) => ({ userEmail });\n\nexport default connect(mapStateToProps)(QRCodes);\n","import React from \"react\";\nimport { deleteGame } from \"../constants/api\";\nimport {\n Button,\n Typography,\n CircularProgress,\n makeStyles,\n} from \"@material-ui/core\";\nimport CropFreeIcon from \"@material-ui/icons/CropFree\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport ArrowBackIcon from \"@material-ui/icons/ArrowBack\";\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\n\nconst useStyles = makeStyles(() => ({\n overlay: {\n width: \"100vw\",\n height: \"100vh\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n position: \"fixed\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"rgba(0,0,0,0.8)\",\n zIndex: 2,\n },\n margin: {\n margin: 5,\n },\n}));\n\nconst FormHeader = ({\n loadingText,\n loadingResult,\n game,\n goBack,\n setQrPageOpened,\n setPreviewPageOpened,\n isOwner,\n}) => {\n const classes = useStyles();\n return (\n <>\n {loadingText && !loadingResult && (\n
\n \n {loadingText}\n \n \n
\n )}\n {loadingResult && (\n
\n \n {loadingResult}\n \n
\n )}\n\n <>\n Back}\n style={{background: \"white\" }}\n >\n Back\n \n {game && (\n setQrPageOpened(true)}\n startIcon={ QR codes}\n >\n QR codes\n \n )}\n \n\n setPreviewPageOpened(true)}\n startIcon={Preview game with mission}\n >\n Preview game with mission\n \n {game && isOwner && (\n {\n deleteGame(game.id);\n goBack();\n }}\n variant=\"contained\"\n color=\"secondary\"\n className={classes.margin}\n startIcon={Delete game}\n >\n Delete game\n \n )}\n \n );\n};\n\nexport default FormHeader;\n","import React, { Fragment } from \"react\";\nimport { makeStyles, Paper, Typography } from \"@material-ui/core\";\nimport { connect } from \"react-redux\";\n\nconst useStyles = makeStyles(() => ({\n input: {\n width: \"100%\",\n padding: \"12px 20px\",\n margin: \"8px 0\",\n display: \"inline-block\",\n border: \"1px solid #ccc\",\n borderRadius: 4,\n boxSizing: \"border-box\",\n },\n row: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"space-around\",\n },\n updateButton: { margin: 10 },\n select: {\n minWidth: \"20ch\",\n margin: \"10px 10px 10px 0\",\n },\n title: { marginTop: 30, marginBottom: 10 },\n}));\n\nconst GameEntries = ({ formEntries, register, isOwner, universes, errors }) => {\n const classes = useStyles();\n return (\n <>\n \n Game information\n \n \n {formEntries\n .filter(\n ([fieldKey]) => fieldKey !== \"inventory\" && fieldKey !== \"questions\"\n )\n .map(([fieldKey, fieldValue], i) => (\n \n \n
\n {fieldValue.formType === \"textarea\" && (\n \n )}\n {(fieldValue.formType === \"text\" ||\n fieldValue.formType === \"number\" ||\n fieldValue.formType === \"file\") && (\n \n )}\n {fieldValue.formType === \"select\" && (\n <>\n
\n \n {universes.map((universe) => (\n \n ))}\n \n \n )}\n
\n {errors[fieldKey] && (\n Required\n )}\n
\n
\n ))}\n
\n \n );\n};\n\nconst mapStateToProps = ({ universes }) => ({ universes });\n\nexport default connect(mapStateToProps)(GameEntries);\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles(() => ({\n /* The device with borders */\n smartphone: {\n position: \"relative\",\n width: \"360px\",\n height: \"640px\",\n margin: \"auto\",\n border: \"16px black solid\",\n borderTopWidth: \"60px\",\n borderBottomWidth: \"60px\",\n borderRadius: \"36px\",\n /* The horizontal line on the top of the device */\n \"&::before\": {\n content: '\"\"',\n display: \"block\",\n width: \"60px\",\n height: \"5px\",\n position: \"absolute\",\n top: \"-30px\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n background: \"#333\",\n borderRadius: \"10px\",\n } /* The circle on the bottom of the device */,\n \"&::after\": {\n content: '\"\"',\n display: \"block\",\n width: \"35px\",\n height: \"35px\",\n position: \"absolute\",\n left: \"50%\",\n bottom: \"-65px\",\n transform: \"translate(-50%, -50%)\",\n background: \"#333\",\n borderRadius: \"50%\",\n },\n },\n /* The screen (or content) of the device */\n}));\n\nconst SmartPhone = ({ children, backgroundUrl }) => {\n const classes = useStyles();\n return (\n
\n \n {children}\n
\n
\n );\n};\n\nexport default SmartPhone;\n","export const getUniverseImagesValues = (universe, formValues) => {\n const images = {};\n if (universe)\n for (const key of Object.keys(universe)) {\n if (universe[key] && universe[key].s3key)\n images[key] = { s3key: universe[key].s3key, url: null };\n }\n else\n for (const key of Object.keys(formValues)) {\n if (\n formValues[key] &&\n formValues[key].formType === \"file\" &&\n formValues[key].value !== \"\"\n )\n images[key] = {\n s3key: null,\n url: URL.createObjectURL(formValues[key].value),\n };\n }\n return images;\n};\n","import React from \"react\";\nimport YoutubeView from \"../YoutubeView\";\n\nexport default function IntroductionPreviewMedia({ formValues }) {\n const videoURL =\n formValues?.introVideo?.url || formValues.introVideo?.value?.url;\n return (\n \n {videoURL ? (\n \n ) : (\n \n )}\n
\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Storage } from \"aws-amplify\";\nimport SmartPhone from \"./SmartPhone\";\nimport { getUniverseImagesValues } from \"./functions\";\nimport IntroductionPreviewMedia from \"./IntroductionPreviewMedia\";\n\nconst IntroductionPreview = ({ universe, formValues, game }) => {\n // const classes = useStyles();\n const [images, setImages] = useState(\n getUniverseImagesValues(universe, formValues)\n );\n\n useEffect(() => {\n if (universe)\n Object.entries(images).forEach(([key, value]) => {\n if (!images[key].url) getUrl(key, value.s3key);\n });\n }, [universe, images]);\n\n useEffect(() => {\n if (!universe) setImages(getUniverseImagesValues(null, formValues));\n }, [universe, formValues]);\n\n const getUrl = (imageKey, s3key) => {\n Storage.get(s3key)\n .then((imgUrl) =>\n setImages((s) => ({\n ...s,\n [imageKey]: { ...s[imageKey], url: imgUrl },\n }))\n )\n .catch((err) => console.log({ err }));\n };\n\n console.log({ images, universe });\n\n return (\n \n \n \n {game ? game.title : \"Game title\"}\n \n \n Author: {game ? game.author : \"Game author\"}\n \n \n {/* {universe?.introVideo?.url ? (\n \n \n \n ) : (\n \n )} */}\n \n {universe ? universe.introText : formValues.introText.value}\n \n \n Accept mission\n \n \n \n );\n};\n\nexport default IntroductionPreview;\n","import React from \"react\";\n\nconst UniverseTimer = ({ backgroundUrl }) => (\n \n \n 60:00\n \n \n);\n\nexport default UniverseTimer;\n","import React from \"react\";\nimport SettingsIcon from \"@material-ui/icons/Settings\";\n\nconst UniverseTopRow = ({ lifeBackground }) => (\n \n \n Settings\n \n \n \n 6/6\n \n \n);\n\nexport default UniverseTopRow;\n","import React from \"react\";\n\nconst UniverseAnswers = ({ wrongBackground, rightBackground }) => (\n \n \n A\n \n \n -\n \n \n);\n\nexport default UniverseAnswers;\n","import React, { useState, useEffect } from \"react\";\n// import { makeStyles } from \"@material-ui/core\";\nimport { Storage } from \"aws-amplify\";\nimport SmartPhone from \"./SmartPhone\";\nimport UniverseTimer from \"./UniverseTimer\";\nimport UniverseTopRow from \"./UniverseTopRow\";\nimport UniverseAnswers from \"./UniverseAnswers\";\nimport { getUniverseImagesValues } from \"./functions\";\n\n// const useStyles = makeStyles(() => ({}));\n\nconst GamePreview = ({ universe, formValues }) => {\n // const classes = useStyles();\n const [images, setImages] = useState(\n getUniverseImagesValues(universe, formValues)\n );\n\n useEffect(() => {\n if (universe)\n Object.entries(images).forEach(([key, value]) => {\n if (!images[key].url) getUrl(key, value.s3key);\n });\n }, [universe, images]);\n\n useEffect(() => {\n if (!universe) setImages(getUniverseImagesValues(null, formValues));\n }, [universe, formValues]);\n\n const getUrl = (imageKey, s3key) => {\n Storage.get(s3key)\n .then((imgUrl) =>\n setImages((s) => ({\n ...s,\n [imageKey]: { ...s[imageKey], url: imgUrl },\n }))\n )\n .catch((err) => console.log({ err }));\n };\n\n return (\n \n \n \n \n \n );\n};\n\nexport default GamePreview;\n","import React from \"react\";\nimport { Button, makeStyles, Typography } from \"@material-ui/core\";\nimport ArrowBackIcon from \"@material-ui/icons/ArrowBack\";\nimport IntroductionPreview from \"./IntroductionPreview\";\nimport GamePreview from \"./GamePreview\";\nimport { connect } from \"react-redux\";\n\nconst useStyles = makeStyles(() => ({\n overlay: {\n width: \"100vw\",\n height: \"100vh\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n position: \"fixed\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"rgba(0,0,0,0.8)\",\n zIndex: 2,\n },\n margin: {\n margin: 5,\n },\n}));\n\nconst UniverseWithGamePreview = ({ game, goBack, universes }) => {\n const classes = useStyles();\n\n const getUniverse = (id) => universes.find((u) => u.id === id);\n\n console.log({ game, universes });\n const universe =\n game && game.universe ? game.universe : getUniverse(game.gameUniverseId);\n\n return (\n
\n Back}\n style={{backgroundColor: \"white\"}}\n >\n Back\n \n {!game && !universe ? null : (\n <>\n Introduction preview\n \n In game preview\n \n \n )}\n
\n );\n};\n\nconst mapStateToProps = ({ universes }) => ({ universes });\n\nexport default connect(mapStateToProps)(UniverseWithGamePreview);\n","import React, { useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { connect } from \"react-redux\";\nimport { Button, Divider } from \"@material-ui/core\";\nimport CloudUploadIcon from \"@material-ui/icons/CloudUpload\";\nimport Inventory from \"../components/Inventory\";\nimport Questions from \"../components/Questions\";\nimport { submitGame, submitUpdateGame } from \"../constants/functions\";\nimport {\n getGameFormInitialValues,\n emptyInventoryItem,\n emptyQuestion,\n} from \"../constants/dataBaseFormat\";\nimport {\n swapArrElements,\n getUpdatedValues,\n areGameQuestionsUpdated,\n isInventoryUpdated,\n} from \"../constants/formFunctions\";\nimport QRCodes from \"./QRCodes\";\nimport FormHeader from \"../components/FormHeader\";\nimport GameEntries from \"../components/GameEntries\";\nimport UniverseWithGamePreview from \"../components/UniversePreview/UniverseWithGamePreview\";\nimport { fetchGames, fetchUniverses } from \"../constants/api\";\n\nconst GameForm = ({ userId, dispatch, game, goBack }) => {\n const [loadingText, setLoadingText] = useState(null);\n const [loadingResult, setLoadingResult] = useState(null);\n const [qrPageOpened, setQrPageOpened] = useState(false);\n const [previewPageOpened, setPreviewPageOpened] = useState(false);\n // const [errors, setErrors] = useState({});\n const [formValues, setFormValues] = useState(getGameFormInitialValues(game));\n\n useEffect(() => {\n console.log(\"scroll to top\");\n window.document.getElementById(\"simple-tabpanel-0\").scrollTo(0, 0);\n }, []);\n\n const isOwner =\n !game ||\n userId === game.createdBy ||\n userId === \"706e89ab-2aa8-4315-b59f-c0e6a3043438\";\n\n const { handleSubmit, register, errors, reset, getValues } = useForm();\n\n const createGame = async (values) => {\n setLoadingText(\"Creating game...\");\n for (const key of Object.keys(values)) {\n if (formValues[key] && formValues[key].formType === \"number\") {\n values[key] = parseInt(values[key]);\n }\n }\n const gameFormValues = parseNumberValues(values);\n console.log({ gameFormValues });\n const uploadSuccess = await submitGame({\n ...gameFormValues,\n inventory: formValues.inventory,\n questions: formValues.questions,\n });\n if (uploadSuccess) {\n setLoadingResult(\"Game successfully created !\");\n reset();\n setFormValues(getGameFormInitialValues());\n fetchUniverses();\n fetchGames();\n goBack();\n } else setLoadingResult(\"An error occurred during game creation.\");\n setTimeout(() => {\n setLoadingText(null);\n setLoadingResult(null);\n }, 2000);\n };\n\n const updateGame = async (values) => {\n // const updatedValue = gameFormValues[fieldKey];\n const gameFormValues = parseNumberValues(values);\n const updatedGameFields = getUpdatedValues(game, gameFormValues);\n const questionsUpdated = areGameQuestionsUpdated(\n game,\n formValues.questions\n );\n if (questionsUpdated) updatedGameFields.questions = formValues.questions;\n const inventoryUpdated = isInventoryUpdated(game, formValues.inventory);\n if (inventoryUpdated) updatedGameFields.inventory = formValues.inventory;\n console.log({ questionsUpdated, inventoryUpdated });\n\n console.log({ gameFormValues, updatedGameFields });\n if (!Object.keys(updatedGameFields).length) {\n setLoadingResult(\"No changes detected, update cancelled\");\n setTimeout(() => {\n setLoadingResult(null);\n }, 2000);\n return;\n }\n setLoadingText(\"Updating game...\");\n const uploadSuccess = await submitUpdateGame({\n id: game.id,\n ...updatedGameFields,\n });\n if (uploadSuccess) {\n setLoadingResult(\"Game successfully updated !\");\n fetchGames();\n goBack();\n } else setLoadingResult(\"An error occurred during game update.\");\n setTimeout(() => {\n setLoadingText(null);\n setLoadingResult(null);\n }, 1000);\n };\n\n // react-hook-form returns string for input type=\"number\"...\n // => converts form back to number values\n const parseNumberValues = (values) => {\n for (const key of Object.keys(values)) {\n if (formValues[key] && formValues[key].formType === \"number\") {\n values[key] = Number(values[key]);\n }\n }\n return values;\n };\n\n const onSubmit = async (values) => {\n if (!formValues.questions.length) {\n setLoadingResult(\"No question entered, at least one is required.\");\n setTimeout(() => {\n setLoadingResult(null);\n }, 2000);\n return;\n }\n if (!game) {\n createGame(values);\n } else {\n updateGame(values);\n }\n };\n\n const addInventoryItem = () => {\n setFormValues((s) => ({\n ...s,\n inventory: [...s.inventory, emptyInventoryItem()],\n }));\n };\n\n const deleteInventoryItem = (index) => {\n setFormValues((s) => {\n s.inventory.splice(index, 1);\n return {\n ...s,\n inventory: s.inventory,\n };\n });\n };\n\n const handleArrayChange = (e, key, index, subKey, lastKey) => {\n if (subKey === \"correctAnswer\") {\n setFormValues((s) => {\n s[key][index].correctAnswer = e;\n return { ...s };\n });\n return;\n }\n const { value, checked } = e.target;\n const formValue = subKey === \"hint\" ? checked : value;\n console.log({ e, key, index, subKey, lastKey, formValue });\n setFormValues((s) => {\n if (lastKey) s[key][index][subKey][lastKey] = formValue;\n else s[key][index][subKey] = formValue;\n if (key === \"questions\" && subKey === \"type\") {\n if (formValue === \"clue\") s.questions[index].answers = [];\n else s.questions[index].answers = [emptyQuestion()];\n s.questions[index].correctAnswer = 0;\n }\n return { ...s };\n });\n };\n\n const handleAnswerChange = (e, questionIndex, answerIndex, key) => {\n console.log({ e, questionIndex, answerIndex, key });\n const { value } = e.target;\n let formValue = value;\n if (key === \"value\") {\n const regex = /[^A-Za-z0-9]+/;\n if (formValue.match(regex)) return;\n formValue = value.toUpperCase();\n }\n setFormValues((s) => {\n s.questions[questionIndex].answers[answerIndex][key] = formValue;\n return { ...s };\n });\n };\n\n const deleteAnswer = (questionIndex, index) => {\n setFormValues((s) => {\n s.questions[questionIndex].answers.splice(index, 1);\n return { ...s };\n });\n };\n\n const onFileChoosen = (file, key, index, subKey, lastKey) => {\n console.log({ file, key, index, subKey, lastKey });\n setFormValues((s) => {\n if (lastKey)\n s[key][index][subKey][lastKey] = file === undefined ? \"\" : file;\n else s[key][index][subKey] = file === undefined ? \"\" : file;\n return { ...s };\n });\n };\n\n const addQuestion = () => {\n setFormValues((s) => ({\n ...s,\n questions: [...s.questions, emptyQuestion()],\n }));\n };\n\n const addAnswer = (questionIndex) => {\n setFormValues((s) => {\n s.questions[questionIndex].answers.push({ value: \"\", description: \"\" });\n return { ...s };\n });\n };\n\n const deleteQuestion = (index) => {\n setFormValues((s) => {\n s.questions.splice(index, 1);\n return { ...s };\n });\n };\n\n const moveItem = (key, index, destIndex) => {\n setFormValues((s) => {\n s[key] = swapArrElements(s[key], index, index + destIndex);\n return { ...s };\n });\n };\n\n const formEntries = Object.entries(formValues);\n\n console.log({ game, formValues });\n\n if (game && qrPageOpened)\n return setQrPageOpened(false)} />;\n\n return (\n <>\n {previewPageOpened && (\n setPreviewPageOpened(false)}\n />\n )}\n \n \n \n \n \n \n \n \n\n
\n {!game && isOwner && (\n Create game}\n style={{\n marginLeft: 50,\n marginRight: 50,\n padding: 20,\n marginBottom: 10,\n fontSize: 16,\n }}\n >\n Create game\n \n )}\n {game && isOwner && (\n Update game}\n style={{\n marginLeft: 50,\n marginRight: 50,\n padding: 20,\n marginBottom: 10,\n fontSize: 16,\n }}\n >\n Update game\n \n )}\n \n
\n \n );\n};\n\nconst mapStateToProps = ({ userId }) => ({ userId });\n\nexport default connect(mapStateToProps)(GameForm);\n","import React, { useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport { Button, Typography } from \"@material-ui/core\";\n// import GameDetails from \"./GameDetails\";\n// import GamePage from \"./GamePage\";\nimport { connect } from \"react-redux\";\nimport { fetchGames } from \"../constants/api\";\nimport GameForm from \"./GameForm\";\nimport DetailsIcon from \"@material-ui/icons/Details\";\nimport { alphabeticalSort } from \"../constants/helpers\";\n\nconst arrows = {\n asc: \" ▲\",\n desc: \" ▼\",\n};\n\nconst useStyles = makeStyles({\n table: {\n minWidth: 650,\n },\n title: {\n // textAlign: \"center\",\n marginBottom: 30,\n },\n});\n\nconst Games = ({ userId, games }) => {\n const classes = useStyles();\n\n const [sortedGames, setSortedGames] = useState(games);\n\n const [content, setContent] = useState(\"view\");\n const [openedGame, setOpenedGame] = useState(null);\n\n const [sort, setSort] = useState({\n key: \"createdAt\",\n direction: \"desc\",\n });\n\n const handleSort = (key) => () => {\n let direction = \"asc\";\n if (sort.key === key && sort.direction === \"asc\") {\n direction = \"desc\";\n }\n setSort({ key, direction });\n };\n\n useEffect(() => {\n setSortedGames(\n alphabeticalSort([...games], (item) => item[sort.key], sort.direction)\n );\n }, [games, sort]);\n\n const onDetailsClick = (game) => {\n setOpenedGame(game);\n };\n\n useEffect(() => {\n fetchGames();\n }, []);\n\n if (content === \"create\")\n return setContent(\"view\")} />;\n\n return (\n
\n {openedGame ? (\n onDetailsClick(null)} />\n ) : (\n <>\n \n GAMES LIST\n \n \n \n {`Smartgames builder recommends a default mission (Hostage scenario).\\nCreate your enigmas & challenges by clicking on \"CREATE NEW GAME\"`}\n \n setContent(\"create\")}\n >\n Create new game\n \n \n \n \n \n \n \n {`Title${\n sort.key === \"title\" ? arrows[sort.direction] : \"\"\n }`}\n \n \n {`Author${\n sort.key === \"author\" ? arrows[sort.direction] : \"\"\n }`}\n \n \n {`Institution${\n sort.key === \"institution\" ? arrows[sort.direction] : \"\"\n }`}\n \n \n {`Created at${\n sort.key === \"createdAt\" ? arrows[sort.direction] : \"\"\n }`}\n \n \n \n \n \n {sortedGames.map((game) => (\n \n {game.title}\n {game.author}\n {game.institution}\n \n {new Date(game.createdAt).toLocaleDateString(\"en-GB\")}\n \n \n onDetailsClick(game)}\n startIcon={Details}\n >\n Details\n \n \n {/* \n {\n deleteGame(game.id);\n fetchGames();\n }}\n variant=\"contained\"\n color=\"secondary\"\n className={classes.margin}\n startIcon={Delete game}\n >\n Delete game\n \n */}\n \n ))}\n \n
\n
\n \n )}\n
\n );\n};\n\nconst mapStateToProps = ({ userId, games }) => ({ userId, games });\n\nexport default connect(mapStateToProps)(Games);\n","import React from \"react\";\nimport { Box } from \"@material-ui/core\";\n\nconst TabPanel = ({ children, value, index, p = 3, ...other }) => (\n
\n \n \n \n \n Title\n Author\n Created at\n \n \n \n \n {universes.map((universe) => (\n \n {universe.title}\n {universe.author}\n \n {new Date(universe.createdAt).toLocaleDateString(\"en-GB\")}\n \n \n onDetailsClick(universe)}\n startIcon={Details}\n >\n Details\n \n \n {/* \n {\n deleteUniverse(universe.id);\n fetchUniverses();\n }}\n variant=\"contained\"\n color=\"secondary\"\n className={classes.margin}\n startIcon={Delete universe}\n >\n Delete universe\n \n */}\n \n ))}\n \n
\n
\n \n )}\n \n );\n};\n\nconst mapStateToProps = ({ universes }) => ({ universes });\n\nexport default connect(mapStateToProps)(Universes);\n","import React, { useState, useEffect } from \"react\";\nimport NavBar from \"../components/NavBar\";\nimport Games from \"./Games\";\nimport { makeStyles } from \"@material-ui/core\";\nimport TabPanel from \"../components/TabPanel\";\n// import GameForm from \"./GameForm\";\n// import GamePage from \"./GamePage\";\nimport { Auth } from \"aws-amplify\";\nimport { connect } from \"react-redux\";\nimport Universes from \"./Universes\";\nimport { fetchUniverses, fetchGames } from \"../constants/api\";\n// import UniverseForm from \"./UniverseForm\";\nimport logo from \"../images/Logo-SGB-Orange.png\";\n\nconst useStyles = makeStyles({\n main: {\n display: \"flex\",\n flex: 1,\n overflow: \"hidden\",\n flexDirection: \"column\",\n background: \"rgb(238,238,243)\",\n },\n header: {\n display: \"flex\",\n alignItems: 'center'\n },\n});\n\nconst Home = ({ dispatch }) => {\n const classes = useStyles();\n const [selectedNav, setSelectedNav] = useState(0);\n\n const handleNavChange = (event, newValue) => {\n setSelectedNav(newValue);\n };\n\n useEffect(() => {\n Auth.currentAuthenticatedUser().then((user) => {\n console.log({ user });\n if (\n user &&\n user.attributes &&\n user.attributes.sub &&\n user.attributes.email\n ) {\n // console.log({ user });\n dispatch({ type: \"SET_USER_ID\", data: user.attributes.sub });\n dispatch({ type: \"SET_USER_EMAIL\", data: user.attributes.email });\n }\n });\n fetchUniverses();\n fetchGames();\n }, [dispatch]);\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 \n
\n \n );\n};\n\nexport default connect()(Home);\n","import React, { useState } from \"react\";\nimport { connect } from \"react-redux\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Button from \"@material-ui/core/Button\";\nimport Paper from \"@material-ui/core/Paper\";\n\nimport inpLogo from \"../images/logo1.png\";\nimport idexLogo from \"../images/logo2.png\"\nimport comueLogo from \"../images/logo3.png\";\nimport araLogo from \"../images/IDEX_france2030_couleur.jpg\"\nimport Logo2030 from \"../images/logo5.png\";\nimport idoLogo from \"../images/Logo_ido-data_Couleurs_2020_WEB.png\";\nimport DownloadLogo from \"../images/Download-logo.png\";\nimport YouTubeLogo from \"../images/YouTube_Logo.png\";\nimport YouTubeQRCode from \"../images/Youtube-QRCode.png\";\n\nimport sgbLogo from \"../images/Logo SGB Escape Blanc.png\";\n\nimport {\n signIn,\n signUp,\n resendConfirmationCode,\n confirmSignUp,\n forgotPassword,\n forgotPasswordSubmit,\n} from \"../constants/auth\";\n\nconst footerLogos = [inpLogo, idexLogo, comueLogo, araLogo, idoLogo];\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"100vw\",\n height: \"100vh\",\n backgroundColor: \"rgb(53,97,168)\",\n textAlign: \"center\",\n overflow: \"hidden\",\n },\n progress: {\n // margin: theme.spacing(2),\n padding: 0,\n // width: 40,\n // height: 40,\n // color: \"blue\",\n },\n error: {\n color: \"red\",\n fontSize: \"0.9em\",\n },\n info: {\n color: \"green\",\n fontSize: \"0.9em\",\n },\n loadingErrorContainer: {\n minHeight: \"5em\",\n },\n logo: {\n // padding: \"10%\",\n objectFit: \"contain\",\n width: \"100%\",\n height: \"100%\",\n // width: \"30%\",\n },\n idoDataLogo: {\n margin: 10,\n width: \"20%\",\n },\n formContainer: {\n // marginTop: -50,\n padding: 30,\n marginBottom: 30,\n // paddingTop: 30,\n // paddingLeft: 30,\n // paddingRight: 30,\n },\n form: {\n width: \"100%\", // Fix IE 11 issue.\n // marginTop: theme.spacing(1),\n display: \"flex\",\n flexDirection: \"column\",\n \"& > *\": {\n // margin: theme.spacing(1),\n width: \"40ch\",\n },\n },\n submit: {\n margin: theme.spacing(1, 0, 1),\n },\n iconsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n // input: {\n // color: \"white\",\n // borderBottomColor: \"white\",\n // borderColor: \"white\",\n // \"& label.Mui-focused\": {\n // color: \"white\",\n // },\n // \"& .MuiInput-underline:after\": {\n // borderBottomColor: \"white\",\n // },\n // \"& .MuiOutlinedInput-root\": {\n // \"& fieldset\": {\n // borderColor: \"white\",\n // },\n // \"&:hover fieldset\": {\n // borderColor: \"white\",\n // },\n // \"&.Mui-focused fieldset\": {\n // borderColor: \"white\",\n // },\n // },\n // },\n}));\n\nconst SignInScreen = () => {\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [codeInput, setCodeInput] = useState(false);\n const [code, setCode] = useState(\"\");\n const [info, setInfo] = useState({ type: \"error\", message: \"\" });\n const [forgotPasswordForm, setForgotPasswordForm] = useState(false);\n const [forgotPasswordConfirm, setForgotPasswordConfirm] = useState(false);\n\n const [loading, setLoading] = useState(false);\n const classes = useStyles();\n\n const handleSignIn = async (e) => {\n e.preventDefault();\n setLoading(true);\n const user = await signIn(email, password).catch((error) => {\n if (error.name === \"UserNotConfirmedException\") {\n console.log(error.message);\n setInfo({ type: \"error\", message: error.message });\n setCodeInput(true);\n } else {\n setInfo({ type: \"error\", message: \"Invalid credentials\" });\n }\n setLoading(false);\n });\n console.log({ user });\n };\n\n const handleSignUp = async () => {\n if (password.length < 8) {\n setInfo({\n type: \"error\",\n message:\n \"Password should be at least 8 characters long, it should contain at least one number, one uppercase character and one lowercase character.\",\n });\n return;\n }\n setLoading(true);\n const user = await signUp(email, password).catch((err) => {\n setInfo({\n type: \"error\",\n message: err.message.replace(\"Username\", \"Email\"),\n });\n setLoading(false);\n return;\n });\n console.log({ user });\n if (user) {\n setInfo({\n type: \"info\",\n message: \"A confirmation code was sent to your email.\",\n });\n setCodeInput(true);\n setLoading(false);\n }\n };\n\n const handleResendConfirmationCode = () => {\n setLoading(true);\n resendConfirmationCode(email)\n .then(() => {\n setInfo({\n type: \"info\",\n message: \"A confirmation code was sent to your email.\",\n });\n setLoading(false);\n })\n .catch((error) => {\n setInfo({\n type: \"error\",\n message: error.message,\n });\n setLoading(false);\n });\n };\n\n const handleConfirmSignUp = () => {\n setLoading(true);\n confirmSignUp(email, code)\n .then(() => {\n setInfo({\n type: \"info\",\n message: \"Account successfully confirmed! You can now login.\",\n });\n setLoading(false);\n setCodeInput(false);\n setCode(\"\");\n })\n .catch((error) => {\n setInfo({\n type: \"error\",\n message: error.message,\n });\n setLoading(false);\n });\n };\n\n const toggleForgotPassword = () => {\n setForgotPasswordForm(!forgotPasswordForm);\n setForgotPasswordConfirm(false);\n setInfo({ type: \"error\", message: \"\" });\n };\n\n const handleForgotPassword = () => {\n setLoading(true);\n forgotPassword(email)\n .then((data) => {\n console.log({ data });\n setInfo({\n type: \"info\",\n message: \"A verification code was sent to your email\",\n });\n setLoading(false);\n setForgotPasswordConfirm(true);\n })\n .catch((error) => {\n setInfo({\n type: \"error\",\n message: error.message,\n });\n setLoading(false);\n });\n };\n\n const handleForgotPasswordConfirm = () => {\n setLoading(true);\n forgotPasswordSubmit(email, code, password)\n .then((data) => {\n console.log({ data });\n setInfo({\n type: \"info\",\n message:\n \"Password successfully changed ! Go back to login and login with your new password.\",\n });\n setLoading(false);\n })\n .catch((error) => {\n setInfo({\n type: \"error\",\n message: error.message,\n });\n setLoading(false);\n });\n };\n\n return (\n
\n
\n \"Grenoble\n
\n {/*
\n \"Grenoble\n \"Ido-Data\"\n
*/}\n \n \n setEmail(e.target.value)}\n className={classes.input}\n />\n {(!forgotPasswordForm || forgotPasswordConfirm) && (\n setPassword(e.target.value)}\n />\n )}\n {(codeInput || forgotPasswordConfirm) && (\n setCode(e.target.value)}\n />\n )}\n
\n {loading ? (\n \n ) : (\n \n {info.message && !loading ? info.message : \"\"}\n

\n )}\n
\n {codeInput && (\n <>\n \n Confirm sign up\n \n \n Resend confirmation code\n \n \n )}\n {!codeInput && (\n <>\n {!forgotPasswordForm ? (\n <>\n \n Sign in\n \n \n Create account\n \n \n ) : (\n \n {forgotPasswordConfirm ? \"Change password\" : \"Send code\"}\n \n )}\n \n {forgotPasswordForm ? \"Back to sign in\" : \"Forgot Password ?\"}\n \n \n )}\n \n
\n \n \n \"Télécharger\"\n \n \n \n \n \n
\n
\n \n {footerLogos.map((logoItem, index) => (\n \n \"Grenoble\n
\n ))}\n \n {/* \n \n \n Mentions légales\n \n \n \n \n Donnéées personnelles\n \n \n */}\n \n \n );\n};\n\nexport default connect()(SignInScreen);\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport logo from \"../images/Grenoble_INP_-_Logo_blanc_RVB.png\";\nimport idoDataLogo from \"../images/IDO-BLANC.png\";\n\nconst useStyles = makeStyles((theme) => ({\n progress: {\n margin: theme.spacing(2),\n color: \"white\",\n },\n logo: {\n width: \"50%\",\n },\n idoDataLogo: {\n width: \"20%\",\n },\n error: {\n color: \"white\",\n fontSize: \"1.3em\",\n },\n}));\n\nfunction Loading() {\n const classes = useStyles();\n return (\n \n \"Grenoble\n \"Ido-Data\"\n \n \n );\n}\n\nexport default Loading;\n","import React, { useEffect, useState } from \"react\";\nimport Home from \"../pages/Home\";\nimport SignInScreen from \"../pages/SignInScreen\";\nimport Loading from \"../pages/Loading\";\nimport { connect } from \"react-redux\";\nimport { signIn } from \"../constants/auth\";\n\nconst AppContainer = ({ userId }) => {\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n signIn()\n .then(() => {\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n }, []);\n\n if (userId) return ;\n if (loading) return ;\n return ;\n};\n\nconst mapStateToProps = ({ userId }) => ({\n userId,\n});\n\nexport default connect(mapStateToProps)(AppContainer);\n","import React from \"react\";\nimport { Provider } from \"react-redux\";\nimport store from \"./redux/store\";\n// import Amplify, { Auth, Storage, API, graphqlOperation } from \"aws-amplify\";\nimport Amplify from \"aws-amplify\";\nimport {\n CssBaseline,\n MuiThemeProvider,\n createMuiTheme,\n} from \"@material-ui/core\";\nimport awsconfig from \"./aws-exports\";\nimport AppContainer from \"./components/AppContainer\";\n// import { listGames, getGame } from \"./graphql/queries\";\n// import { createGameFromLambda, deleteGame } from \"./graphql/mutations\";\nAmplify.configure(awsconfig);\n// Amplify.configure({\n// ...awsconfig,\n// graphql_headers: () => {},\n// API: {\n// graphql_endpoint: \"\",\n// graphql_headers: () => {},\n// endpoints: [\n// {\n// name: \"notes\",\n// endpoint: awsconfig.aws_appsync_graphqlEndpoint,\n// region: \"eu-west-1\",\n// },\n// ],\n// },\n// });\n// Storage.configure({\n// bucket: awsconfig.aws_user_files_s3_bucket,\n// region: awsconfig.aws_appsync_region,\n// identityPoolId: awsconfig.aws_cognito_identity_pool_id,\n// });\n\nconst theme = createMuiTheme({\n typography: {\n fontFamily: '\"Poppins\", \"Arial\", sans-serif',\n fontSize: 12,\n fontWeightLight: 500,\n fontWeightRegular: 600,\n fontWeightMedium: 700,\n },\n // palette: {\n // primary: {\n // main: 'rgb(239,239,244)',\n // },\n // secondary: {\n // main: '#ffffff',\n // },\n // tertiary: {\n // main: dialColor,\n // },\n // },\n});\n\n// const testQuery = async () => {\n// // const queryResult = await API.graphql(graphqlOperation(listGames));\n// // console.log({ queryResult });\n// const queryResult2 = await API.graphql(\n// graphqlOperation(getGame, { id: \"6f526bc8-2ee2-45fa-a0d8-ff988e37445c\" })\n// );\n// console.log({ queryResult2 });\n// };\n\n// const testMutation = async () => {\n// const mutationResult = await API.graphql(\n// graphqlOperation(deleteGame, {\n// input: JSON.stringify({ test: \"test\" }),\n// })\n// );\n// console.log({ mutationResult });\n// };\n\n// const App = () => {\n// testQuery();\n// testMutation();\n// return
coucou
;\n// };\n\nconst App = () => (\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 https://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.0/8 are 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 https://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 https://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 headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\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\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\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: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}