{"version":3,"sources":["images/rightclickmenu.png","components/Tasks.module.css","components/ClickSim.module.css","images sync /^/.//.*$","images/01a-hitbox.svg","images/01a.jpg","images/01b-x.jpg","images/01b.jpg","images/02a-hitbox.svg","images/02a.jpg","images/02b.jpg","images/03a.jpg","images/03b.jpg","images/04a-hitbox.svg","images/search-icon.png","images/task2hitbox.svg","images/task4hitbox.svg","scorm.js","components/UniformScale.js","components/Button1.js","components/Header.js","components/Modal.js","components/Feedback.js","components/Tasks.js","components/ClickSim.js","webpack:///./src/images/01a-hitbox.svg?a8b7","webpack:///./src/images/02a-hitbox.svg?a409","webpack:///./src/images/04a-hitbox.svg?99da","gameData.js","App.js","reportWebVitals.js","index.js","components/Button1.module.css","images/thumbs-up.png","images/refresh.png"],"names":["module","exports","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","_scorm","studentid","studentname","firstname","lastname","console","log","startTimeStamp","Date","scormProcessInitialize","scormProcessGetValue","scormProcessSetValue","initialized","sid","sname","nameparts","split","userdat","trim","reachedEnd","window","confirm","doUnload","pressedExit","processedUnload","totalMilliseconds","getTime","scormTime","convertMilliSecondsToSCORMTime","scormProcessFinish","onunload","onbeforeunload","recordTest","score","intTotalMilliseconds","blnIncludeFraction","intHours","intMinutes","intSeconds","intMilliseconds","intHundredths","strCMITimeSpan","undefined","Math","floor","zeroPad","intNum","intNumDigits","strTemp","intLen","i","length","substr","element","result","finishCalled","API","LMSGetValue","errorNumber","LMSGetLastError","SCORM_NO_ERROR","errorDescription","LMSGetErrorString","LMSGetDiagnostic","value","LMSSetValue","SCORM_FALSE","getAPI","LMSInitialize","LMSFinish","findAPI","win","parent","findAPITries","theAPI","opener","UniformScale","props","wrapper","useRef","scaled","useState","size","setSize","useLayoutEffect","updateSize","innerWidth","innerHeight","addEventListener","_","removeEventListener","useWindowSize","refresh","setRefresh","useEffect","setTimeout","level","wrapperStyle","width","maxWidth","minWidth","marginLeft","marginRight","display","overflow","scaledStyle","internalWidth","transformOrigin","current","scale","clientWidth","transform","scaledHeight","internalHeight","auto","clientHeight","matchHeight","height","className","ref","style","children","Button1","onClick","preventDefault","buttonHit","classes","main","setWidth","inner","leftArrow","arrow","left","rightArrow","right","Header","title","onBack","Modal","Congrats","show","Tasks","task","tasks","selectedTask","story","paragraph","actions","el","ClickSim","settings","completed","setCompleted","showMenu","setShowMenu","showHelp","setShowHelp","successTimer","clickTimer","helpTimer","clearTimeout","keyDownHandler","failFeedback","escapeKeyToComplete","keyCode","startSuccessTimer","prepareFail","fail","scrollTo","completeLevel","handleImageClick","leftClickBlankAreaToComplete","rightClickToComplete","openAndCloseToComplete","Hitbox","hitbox","rightClickStyle","showOverlay","dimBackgroundIfIncomplete","dimBackground","onContextMenu","target","nodeName","src","images","overlay","overlayInner","rightClickMenu","hintbox","highlight","x","top","y","_excluded","_extends","assign","arguments","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","Svg01AHitbox","_ref","svgRef","titleId","viewBox","xmlns","xmlnsXlink","xmlSpace","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","fill","fillOpacity","ForwardRef","Svg02AHitbox","imageNames","allImages","push","require","default","gameData","success","failure","Task1hitbox","Task2hitbox","getGameData","App","selectedLevel","setSelectedLevel","successFeedback","setSuccessFeedback","setFailFeedback","completedFeedback","setCompletedFeedback","allImagesLoaded","imagesLoaded","setImagesLoaded","onImageLoad","img1","Image","onload","useLoadAllImages","gameWrapper","reload","setReload","exiting","initScorm","setInitScorm","scorm","setLessonStatusComplete","handleExitModule","exitButton","document","getElementById","click","disableNextLevel","onNextLevel","Feedback","thumbsUp","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.4b64e15f.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/rightclickmenu.2c1b3a2f.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tasks\":\"Tasks_tasks__32ZHb\",\"task-title\":\"Tasks_task-title__3FOWY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"ClickSim_main__38BWP\",\"dimBackground\":\"ClickSim_dimBackground__ztVZf\",\"hitbox\":\"ClickSim_hitbox__2inhY\",\"highlight\":\"ClickSim_highlight__1YqMT\",\"blinker\":\"ClickSim_blinker__3mIEi\",\"rightClickMenu\":\"ClickSim_rightClickMenu__PfBad\",\"hintbox\":\"ClickSim_hintbox__wFjG0\",\"hintboxAfterPulse\":\"ClickSim_hintboxAfterPulse__102lO\",\"overlay\":\"ClickSim_overlay__2Hm-8\",\"showOverlay\":\"ClickSim_showOverlay__3zXEg\",\"overlayInner\":\"ClickSim_overlayInner__1pwRy\",\"backgroundPulse\":\"ClickSim_backgroundPulse__3HnPN\"};","var map = {\n\t\"./01a-hitbox.svg\": 392,\n\t\"./01a.jpg\": 393,\n\t\"./01b-x.jpg\": 394,\n\t\"./01b.jpg\": 395,\n\t\"./02a-hitbox.svg\": 396,\n\t\"./02a.jpg\": 397,\n\t\"./02b.jpg\": 398,\n\t\"./03a.jpg\": 399,\n\t\"./03b.jpg\": 400,\n\t\"./04a-hitbox.svg\": 401,\n\t\"./refresh.png\": 87,\n\t\"./rightclickmenu.png\": 113,\n\t\"./search-icon.png\": 402,\n\t\"./task2hitbox.svg\": 403,\n\t\"./task4hitbox.svg\": 404,\n\t\"./thumbs-up.png\": 68\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 391;","export default __webpack_public_path__ + \"static/media/01a-hitbox.dd354094.svg\";","export default __webpack_public_path__ + \"static/media/01a.873fce06.jpg\";","export default __webpack_public_path__ + \"static/media/01b-x.edd69211.jpg\";","export default __webpack_public_path__ + \"static/media/01b.8c07aa63.jpg\";","export default __webpack_public_path__ + \"static/media/02a-hitbox.1ad984a1.svg\";","export default __webpack_public_path__ + \"static/media/02a.c9ba7490.jpg\";","export default __webpack_public_path__ + \"static/media/02b.17344e44.jpg\";","export default __webpack_public_path__ + \"static/media/03a.b31e0aef.jpg\";","export default __webpack_public_path__ + \"static/media/03b.9348a37a.jpg\";","export default __webpack_public_path__ + \"static/media/04a-hitbox.d7600f27.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAA+CAMAAABEH1h2AAAAOVBMVEVHcEwzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0rESPAAAAEnRSTlMAwPCQQGCAEKDQ4DCwIFBw86aogwBFAAAACXBIWXMAABYlAAAWJQFJUiTwAAAB+ElEQVRIia2X63KEIAyFQW6Krra8/8N2WkdIOAm6O/1+Sg6EkAQ0IquPJ/4lDY9IYZtKY5pDAhsVvxVk9qo9w1uQntgVbIEkrXzh7rawT6Ch5LEDDgQ9ATSNGayRCKoLUGdrbYYAgO6Eq5fj2qePfArZ/0BNZp5p/DClDFjJuMU09UsbnoTzI8NidBLZ2wajx93e2O5699N0q6b63I3EB2qaVZ1VXRy3RakBsrJbUlAJ7XhY8m+KU0ANP8u9ujjYd7wuy4V89+KcItVPklk17uNyNjRKO269P06BJKTmVRDjUztZ0HbCGVWupcjJCw6pRF0uFXLPQL6DMTKQP3HeoTy/IRdCJ3xSuU6JJGitY03TqEl/tG9SJirUpkZOqZbxLGsIi+RovQewQ3NqbbL8dk+Xr9cF6yutCY0Tr/Va3tTqrHnU7F6T4mWbdlC0qd1EfYzaiLr9NLCpIS1llv0n6gkPiLxLFqnleXLJHzBKJy8l9g7Q+7V8Se6t7B0ZqX/rzB9ci6TfC7dxwa9m9cHB80bWBzBTkfXjR+Ht+iv6qSHqh0/aUtz3zfpm1x1YPHv8yfoU5QnyWaO3emMCbmGrfeyB3qTg2kPSup3aPdH/zeF/gc+P9Rr/qIfSf1P/yfJE//AHTdO//Y/J9E+uVV2fP1z87ycnHsmYH0jDXDX8eoWBAAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/task2hitbox.1b6f837b.svg\";","export default __webpack_public_path__ + \"static/media/task4hitbox.8e22f133.svg\";","// Set var to test system outside of SCORM compliant LMS\n// Only using for testing when. not in the LMS\nvar APIOFFLINE = false;\n\n// Put all vars and functions under _scorm object\n// to keep global clean.\nvar _scorm = {};\n\n_scorm.userdat = {\n studentid: null,\n studentname: null,\n firstname: null,\n lastname: null\n};\n_scorm.currentpage = null;\n_scorm.starttimestamp = null;\n_scorm.processedunload = false;\n_scorm.reachedend = false;\n\n//Constants\n_scorm.SCORM_TRUE = 'true';\n_scorm.SCORM_FALSE = 'false';\n_scorm.SCORM_NO_ERROR = '0';\n\n//Since the Unload handler will be called twice, from both the onunload\n//and onbeforeunload events, ensure that we only call LMSFinish once.\n_scorm.finishCalled = false;\n\n//Track whether or not we successfully initialized.\n_scorm.findAPITries = 0;\n_scorm.initialized = false;\n_scorm.API = null;\n\n/*\n$(function(){\n\t// Use JQuery onload function to call initialisation once all is loaded and ready\n\t// The game does not wait for this and loads according to it's own functions\n\t_scorm.initScorm();\n});*/\n\n_scorm.initScorm = function() {\n console.log('init scorm');\n //record the time that the learner started the SCO so that we can report the total time\n _scorm.startTimeStamp = new Date();\n\n if (!APIOFFLINE) {\n // If we are NOT testing\n //initialize communication with the LMS\n _scorm.scormProcessInitialize();\n //it's a best practice to set the lesson status to incomplete when\n //first launching the course (if the course is not already completed)\n var completionStatus = _scorm.scormProcessGetValue('cmi.core.lesson_status');\n if (completionStatus === 'not attempted') {\n _scorm.scormProcessSetValue('cmi.core.lesson_status', 'incomplete');\n }\n\n if (_scorm.initialized) {\n var sid = _scorm.scormProcessGetValue('cmi.core.student_id');\n var sname = _scorm.scormProcessGetValue('cmi.core.student_name');\n //_scorm.scormProcessGetValue(\"cmi.core.lesson_status\");\n //_scorm.scormProcessGetValue(\"cmi.core.entry\");\n //_scorm.scormProcessGetValue(\"cmi.core.total_time\");\n //_scorm.scormProcessGetValue(\"cmi.core.lesson_mode\");\n var nameparts = sname.split(', ');\n _scorm.userdat.studentid = sid;\n _scorm.userdat.studentname = sname;\n _scorm.userdat.firstname = nameparts[1].trim();\n _scorm.userdat.lastname = nameparts[0].trim();\n } else {\n _scorm.userdat.studentid = 'Unknown';\n _scorm.userdat.studentname = 'Unknown';\n _scorm.userdat.firstname = 'Unknown';\n _scorm.userdat.lastname = 'Unknown';\n }\n } else {\n // If APIOFFILNE set to true\n // Just set the main students vars so we can test\n _scorm.initialized = true;\n _scorm.userdat.studentid = 'gulbisander@gmail.com';\n _scorm.userdat.studentname = 'Gulbis, Andre';\n _scorm.userdat.firstname = 'Andre';\n _scorm.userdat.lastname = 'Gulbis';\n }\n\n // Tell rest of code (Leaderboard) that SCORM init has finished\n //$(\"body\").trigger(\"scorm-initcomplete\");\n};\n\n_scorm.setLessonStatusComplete = function() {\n _scorm.reachedEnd = true;\n _scorm.scormProcessSetValue('cmi.core.lesson_status', 'completed');\n};\n\n_scorm.doExit = function() {\n //note use of short-circuit AND. If the user reached the end, don't prompt.\n //just exit normally and submit the results.\n if (_scorm.reachedEnd === false && window.confirm('Would you like to save your progress to resume later?')) {\n //set exit to suspend\n _scorm.scormProcessSetValue('cmi.core.exit', 'suspend');\n } else {\n //set exit to normal\n _scorm.scormProcessSetValue('cmi.core.exit', '');\n }\n //process the unload handler to close out the session.\n //the presense of an adl.nav.request will cause the LMS to\n //take the content away from the user.\n _scorm.doUnload(true);\n};\n\n_scorm.doUnload = function(pressedExit) {\n //don't call this function twice\n if (_scorm.processedUnload === true) {\n return;\n }\n _scorm.processedUnload = true;\n //record the session time\n var endTimeStamp = new Date();\n var totalMilliseconds = endTimeStamp.getTime() - _scorm.startTimeStamp.getTime();\n var scormTime = _scorm.convertMilliSecondsToSCORMTime(totalMilliseconds, false);\n _scorm.scormProcessSetValue('cmi.core.session_time', scormTime);\n //if the user just closes the browser, we will default to saving\n //their progress data. If the user presses exit, he is prompted.\n //If the user reached the end, the exit normall to submit results.\n if (pressedExit === false && _scorm.reachedEnd === false) {\n _scorm.scormProcessSetValue('cmi.core.exit', 'suspend');\n }\n _scorm.scormProcessFinish();\n};\n\nwindow.onunload = _scorm.doUnload;\nwindow.onbeforeunload = _scorm.doUnload;\n\n//called from the assessmenttemplate.html page to record the results of a test\n//passes in score as a percentage\n_scorm.recordTest = function(score) {\n _scorm.scormProcessSetValue('cmi.core.score.raw', score);\n _scorm.scormProcessSetValue('cmi.core.score.min', '0');\n _scorm.scormProcessSetValue('cmi.core.score.max', '100');\n //if we get a test result, set the lesson status to passed/failed instead of completed\n //consider 70% to be passing\n if (score >= 70) {\n _scorm.scormProcessSetValue('cmi.core.lesson_status', 'passed');\n } else {\n _scorm.scormProcessSetValue('cmi.core.lesson_status', 'failed');\n }\n};\n\n//SCORM requires time to be formatted in a specific way\n_scorm.convertMilliSecondsToSCORMTime = function(intTotalMilliseconds, blnIncludeFraction) {\n var intHours;\n var intMinutes;\n var intSeconds;\n var intMilliseconds;\n var intHundredths;\n var strCMITimeSpan;\n if (blnIncludeFraction === null || blnIncludeFraction === undefined) {\n blnIncludeFraction = true;\n }\n //extract time parts\n intMilliseconds = intTotalMilliseconds % 1000;\n intSeconds = ((intTotalMilliseconds - intMilliseconds) / 1000) % 60;\n intMinutes = ((intTotalMilliseconds - intMilliseconds - intSeconds * 1000) / 60000) % 60;\n intHours = (intTotalMilliseconds - intMilliseconds - intSeconds * 1000 - intMinutes * 60000) / 3600000;\n /*\n\tdeal with exceptional case when content used a huge amount of time and interpreted CMITimstamp \n\tto allow a number of intMinutes and seconds greater than 60 i.e. 9999:99:99.99 instead of 9999:60:60:99\n\tnote - this case is permissable under SCORM, but will be exceptionally rare\n\t*/\n if (intHours === 10000) {\n intHours = 9999;\n intMinutes = (intTotalMilliseconds - intHours * 3600000) / 60000;\n if (intMinutes === 100) {\n intMinutes = 99;\n }\n intMinutes = Math.floor(intMinutes);\n intSeconds = (intTotalMilliseconds - intHours * 3600000 - intMinutes * 60000) / 1000;\n if (intSeconds === 100) {\n intSeconds = 99;\n }\n intSeconds = Math.floor(intSeconds);\n intMilliseconds = intTotalMilliseconds - intHours * 3600000 - intMinutes * 60000 - intSeconds * 1000;\n }\n //drop the extra precision from the milliseconds\n intHundredths = Math.floor(intMilliseconds / 10);\n //put in padding 0's and concatinate to get the proper format\n strCMITimeSpan = _scorm.zeroPad(intHours, 4) + ':' + _scorm.zeroPad(intMinutes, 2) + ':' + _scorm.zeroPad(intSeconds, 2);\n if (blnIncludeFraction) {\n strCMITimeSpan += '.' + intHundredths;\n }\n //check for case where total milliseconds is greater than max supported by strCMITimeSpan\n if (intHours > 9999) {\n strCMITimeSpan = '9999:99:99';\n if (blnIncludeFraction) {\n strCMITimeSpan += '.99';\n }\n }\n return strCMITimeSpan;\n};\n\n_scorm.zeroPad = function(intNum, intNumDigits) {\n var strTemp;\n var intLen;\n var i;\n //strTemp = new String(intNum);\n strTemp = intNum;\n intLen = strTemp.length;\n if (intLen > intNumDigits) {\n strTemp = strTemp.substr(0, intNumDigits);\n } else {\n for (i = intLen; i < intNumDigits; i++) {\n strTemp = '0' + strTemp;\n }\n }\n return strTemp;\n};\n\n_scorm.scormProcessGetValue = function(element) {\n var result;\n if (_scorm.initialized === false || _scorm.finishCalled === true) {\n return;\n }\n result = _scorm.API.LMSGetValue(element);\n console.log('SCORM, scormProcessGetValue() > result', result);\n if (result === '') {\n var errorNumber = _scorm.API.LMSGetLastError();\n if (errorNumber !== _scorm.SCORM_NO_ERROR) {\n var errorString = _scorm.API.LMSGetErrorString(errorNumber);\n var diagnostic = _scorm.API.LMSGetDiagnostic(errorNumber);\n var errorDescription = 'Number: ' + errorNumber + '\\nDescription: ' + errorString + '\\nDiagnostic: ' + diagnostic;\n console.log('Error - Could not retrieve a value from the LMS.\\n\\n' + errorDescription);\n return '';\n }\n }\n return result;\n};\n\n_scorm.scormProcessSetValue = function(element, value) {\n var result;\n if (_scorm.initialized === false || _scorm.finishCalled === true) {\n return;\n }\n result = _scorm.API.LMSSetValue(element, value);\n if (result === _scorm.SCORM_FALSE) {\n var errorNumber = _scorm.API.LMSGetLastError();\n var errorString = _scorm.API.LMSGetErrorString(errorNumber);\n var diagnostic = _scorm.API.LMSGetDiagnostic(errorNumber);\n var errorDescription = 'Number: ' + errorNumber + '\\nDescription: ' + errorString + '\\nDiagnostic: ' + diagnostic;\n console.log('Error - Could not store a value in the LMS.\\n\\nYour results may not be recorded.\\n\\n' + errorDescription);\n return;\n }\n};\n\n_scorm.scormProcessInitialize = function() {\n var result;\n _scorm.API = _scorm.getAPI();\n if (_scorm.API == null) {\n console.log('ERROR - Could not establish a connection with the LMS.\\n\\nYour results may not be recorded.');\n return;\n }\n result = _scorm.API.LMSInitialize('');\n if (result === _scorm.SCORM_FALSE) {\n var errorNumber = _scorm.API.LMSGetLastError();\n var errorString = _scorm.API.LMSGetErrorString(errorNumber);\n var diagnostic = _scorm.API.LMSGetDiagnostic(errorNumber);\n var errorDescription = 'Number: ' + errorNumber + '\\nDescription: ' + errorString + '\\nDiagnostic: ' + diagnostic;\n console.log('Error - Could not initialize communication with the LMS.\\n\\nYour results may not be recorded.\\n\\n' + errorDescription);\n return;\n }\n _scorm.initialized = true;\n};\n\n_scorm.scormProcessFinish = function() {\n var result;\n\n console.log('terminate');\n //Don't terminate if we haven't initialized or if we've already terminated\n if (_scorm.initialized === false || _scorm.finishCalled === true) {\n return;\n }\n\n result = _scorm.API.LMSFinish('');\n _scorm.finishCalled = true;\n //$(\"body\").trigger(\"scorm-finished\");\n if (result === _scorm.SCORM_FALSE) {\n var errorNumber = _scorm.API.LMSGetLastError();\n var errorString = _scorm.API.LMSGetErrorString(errorNumber);\n var diagnostic = _scorm.API.LMSGetDiagnostic(errorNumber);\n var errorDescription = 'Number: ' + errorNumber + '\\nDescription: ' + errorString + '\\nDiagnostic: ' + diagnostic;\n console.log('Error - Could not terminate communication with the LMS.\\n\\nYour results may not be recorded.\\n\\n' + errorDescription);\n return;\n }\n};\n\n_scorm.findAPI = function(win) {\n // Check to see if the window (win) contains the API\n // if the window (win) does not contain the API and\n // the window (win) has a parent window and the parent window\n // is not the same as the window (win)\n while (win.API == null && win.parent != null && win.parent !== win) {\n // increment the number of findAPITries\n _scorm.findAPITries++;\n // Note: 7 is an arbitrary number, but should be more than sufficient\n if (_scorm.findAPITries > 7) {\n console.log('Error finding API -- too deeply nested.');\n return null;\n }\n // set the variable that represents the window being\n // being searched to be the parent of the current window\n // then search for the API again\n win = win.parent;\n }\n return win.API;\n};\n\n_scorm.getAPI = function() {\n // start by looking for the API in the current window\n var theAPI = _scorm.findAPI(window);\n // if the API is null (could not be found in the current window)\n // and the current window has an opener window\n if (theAPI == null && window.opener != null && typeof window.opener != 'undefined') {\n // try to find the API in the current window’s opener\n theAPI = _scorm.findAPI(window.opener);\n }\n // if the API has not been found\n if (theAPI == null) {\n // Alert the user that the API Adapter could not be found\n console.log('Unable to find an API adapter');\n }\n return theAPI;\n};\n\nexport default _scorm;\n","import { React, useState, useEffect, useRef, useLayoutEffect } from \"react\";\n\n//posibly update with https://www.npmjs.com/package/@react-hook/resize-observer to auto get child (scaled) height\n\nfunction useWindowSize() {\n const [size, setSize] = useState([0, 0]);\n useLayoutEffect(() => {\n function updateSize() {\n setSize([window.innerWidth, window.innerHeight]);\n }\n window.addEventListener(\"resize\", updateSize);\n updateSize();\n return (_) => window.removeEventListener(\"resize\", updateSize);\n }, []);\n return size;\n}\n\nfunction UniformScale(props) {\n const wrapper = useRef(null);\n const scaled = useRef(null);\n const [width, height] = useWindowSize();\n const [refresh, setRefresh] = useState(false);\n\n useEffect(() => {\n setTimeout(() => {\n setRefresh(!refresh);\n }, 1);\n }, [props.level]);\n\n const wrapperStyle = {\n width: \"100%\",\n maxWidth: \"1200px\",\n minWidth: \"800px\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n display: \"block\",\n overflow: \"hidden\",\n // backgroundColor: \"red\",\n };\n\n const scaledStyle = {\n width: props.internalWidth,\n transformOrigin: \"0px 0px\",\n\n // verticalAlign: \"top\",\n };\n\n if (wrapper.current) {\n const wrapperWidth = wrapper.current.clientWidth;\n let scale = wrapperWidth / props.internalWidth;\n scaledStyle.transform = `scale(${scale})`;\n\n if (scaled.current) {\n //const scaledHeight = scaled.current.clientHeight; //calc real variable height. however problem if child height changes and parent doesnt re-render\n let scaledHeight = props.internalHeight;\n\n if (props.auto == true) {\n scaledHeight = scaled.current.clientHeight;\n }\n\n if (props.matchHeight) {\n scaledHeight = props.matchHeight.current.clientHeight;\n }\n\n wrapperStyle.height = scaledHeight * scale;\n }\n }\n\n return (\n \n
\n {props.children}\n
\n \n );\n}\n\nexport default UniformScale;\n","import classes from \"./Button1.module.css\";\n\nfunction Button1(props) {\n return (\n {\n e.preventDefault();\n if (props.buttonHit) {\n props.buttonHit();\n }\n }}\n className={`${classes.main} ${props.className}`}\n style={{\n width: props.setWidth || null,\n }}\n >\n
\n {props.leftArrow && (\n \n )}\n {props.children}\n {props.rightArrow && (\n \n )}\n
\n \n );\n}\nexport default Button1;\n","import \"./Header.css\";\nimport React from \"react\";\n\nimport Button1 from \"./Button1\";\n\nfunction Header(props) {\n return (\n
\n
\n

{props.title}

\n
\n \n Exit\n \n
\n
\n
\n );\n}\nexport default Header;\n","import \"./Modal.css\";\n\nfunction Modal(props) {\n return (\n
\n
{props.children}
\n
\n );\n}\nexport default Modal;\n","import { Button } from \"react-bootstrap\";\nimport \"./Congrats.css\";\nimport Modal from \"./Modal\";\n\nfunction Congrats(props) {\n return props.show ? (\n \n
{props.children}
\n
\n ) : null;\n}\nexport default Congrats;\n","import { useState } from \"react\";\nimport classes from \"./Tasks.module.css\";\n\nfunction Tasks(props) {\n let task = props.tasks[props.selectedTask];\n\n return (\n
\n {task.story.map((paragraph, i) => {\n return

{paragraph}

;\n })}\n\n
\n \n Task {props.selectedTask + 1} of {props.tasks.length}:\n {\" \"}\n {task.title}\n
\n

\n Actions:\n

\n
    \n {task.actions.map((el, i) => {\n return
  1. {el}
  2. ;\n })}\n
\n
\n );\n}\nexport default Tasks;\n","import { useState, useEffect, useRef } from \"react\";\nimport classes from \"./ClickSim.module.css\";\n\nimport rightClickMenu from \"../images/rightclickmenu.png\";\n\nfunction ClickSim(props) {\n let settings = props.settings;\n const [completed, setCompleted] = useState(false);\n const [showMenu, setShowMenu] = useState(settings.showMenu);\n const [showHelp, setShowHelp] = useState(true);\n\n const successTimer = useRef(null);\n const clickTimer = useRef(null);\n const helpTimer = useRef(null);\n\n useEffect(() => {\n return () => {\n if (successTimer.current) {\n clearTimeout(successTimer.current);\n }\n if (clickTimer.current) {\n clearTimeout(clickTimer.current);\n }\n if (helpTimer.current) {\n clearTimeout(helpTimer.current);\n }\n window.removeEventListener(\"keydown\", keyDownHandler);\n };\n }, []);\n\n useEffect(() => {\n window.addEventListener(\"keydown\", keyDownHandler);\n return () => {\n window.removeEventListener(\"keydown\", keyDownHandler);\n };\n }, [completed, props.failFeedback]);\n\n const keyDownHandler = (e) => {\n if (settings.escapeKeyToComplete && !props.failFeedback) {\n if (e.keyCode == 27) {\n setCompleted(true);\n setShowMenu(false);\n startSuccessTimer();\n } else {\n prepareFail();\n }\n }\n };\n\n const prepareFail = () => {\n if (completed == true) {\n return;\n }\n props.fail();\n };\n\n useEffect(() => {\n setCompleted(false);\n setShowMenu(props.settings.showMenu);\n setShowHelp(false);\n\n window.scrollTo(0, 0);\n if (helpTimer.current) {\n clearTimeout(helpTimer.current);\n }\n\n helpTimer.current = setTimeout(() => {\n setShowHelp(true);\n }, 12000);\n }, [props.settings]);\n\n const startSuccessTimer = () => {\n setShowHelp(false);\n if (successTimer.current) {\n clearTimeout(successTimer.current);\n }\n if (helpTimer.current) {\n clearTimeout(helpTimer.current);\n helpTimer.current = null;\n }\n successTimer.current = setTimeout(() => {\n props.completeLevel();\n }, 3000);\n };\n\n const handleImageClick = (e) => {\n if (settings.leftClickBlankAreaToComplete && !completed) {\n setCompleted(true);\n setShowMenu(false);\n startSuccessTimer();\n }\n if (settings.rightClickToComplete) {\n prepareFail();\n }\n if (settings.escapeKeyToComplete) {\n return;\n }\n if (settings.openAndCloseToComplete && !showMenu && !completed) {\n prepareFail();\n }\n\n if (settings.openAndCloseToComplete && showMenu && !completed) {\n setShowMenu(false);\n setCompleted(true);\n startSuccessTimer();\n }\n };\n\n const handleClickApp = (e) => {\n if (settings.escapeKeyToComplete) {\n prepareFail();\n }\n };\n\n const handleContextMenu = (e) => {\n e.preventDefault();\n\n console.log(e.target.nodeName);\n if (settings.rightClickToComplete) {\n if (e.target.nodeName === \"rect\") {\n if (completed) return;\n setCompleted(true);\n setShowMenu(true);\n startSuccessTimer();\n } else {\n prepareFail();\n }\n\n return;\n }\n\n if (completed) {\n return;\n }\n if (settings.rightClickToComplete) {\n setCompleted(true);\n setShowMenu(true);\n startSuccessTimer();\n }\n if (settings.leftClickBlankAreaToComplete) {\n prepareFail();\n }\n if (settings.escapeKeyToComplete) {\n prepareFail();\n }\n\n if (settings.openAndCloseToComplete && !showMenu) {\n setShowMenu(true);\n }\n if (settings.openAndCloseToComplete && showMenu) {\n prepareFail();\n }\n };\n\n const handleHitboxClick = (e) => {\n if (e.target.nodeName === \"svg\") {\n handleImageClick(e);\n return;\n }\n\n if(settings.rightClickToComplete){\n prepareFail();\n }\n\n\n if (settings.leftClickBlankAreaToComplete) {\n prepareFail();\n }\n\n if (settings.openAndCloseToComplete) {\n prepareFail();\n }\n };\n\n const handleContextMenuHitbox = (e) => {\n // if (!settings.rightClickToComplete) return;\n // if (e.target.nodeName !== \"rect\") return;\n // if (completed) return;\n // setCompleted(true);\n // setShowMenu(true);\n // startSuccessTimer();\n };\n\n let Hitbox = null;\n if (settings.hitbox) {\n Hitbox = settings.hitbox;\n }\n\n const rightClickStyle = settings.rightClickStyle || null;\n\n const showOverlay =\n settings.dimBackgroundIfIncomplete && showHelp && !completed;\n\n const dimBackground = settings.dimBackgroundIfIncomplete && !completed;\n\n return (\n //
\n \n {/* {!showMenu ? (\n \n ) : (\n \n )} */}\n\n \n\n \n {showOverlay &&
}\n
\n\n {showMenu && (\n \n )}\n\n {!completed && settings.hitbox ? (\n \n ) : null}\n\n {settings.hintbox && (\n \n )}\n \n );\n}\nexport default ClickSim;\n","var _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction Svg01AHitbox(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 2120 1301\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n xmlSpace: \"preserve\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinejoin: \"round\",\n strokeMiterlimit: 2\n },\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"rect\", {\n x: 574,\n y: 264,\n width: 1524,\n height: 1037,\n style: {\n fill: \"rgb(221,35,35)\",\n fillOpacity: 0.29\n }\n }));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(Svg01AHitbox);\nexport default __webpack_public_path__ + \"static/media/01a-hitbox.dd354094.svg\";\nexport { ForwardRef as ReactComponent };","var _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction Svg02AHitbox(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 2121 1301\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n xmlSpace: \"preserve\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinejoin: \"round\",\n strokeMiterlimit: 2\n },\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(66.7263,0,0,125.914,-48053.9,-41778)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 732.086,\n y: 334.455,\n width: 7.914,\n height: 5.545,\n style: {\n fill: \"rgb(252,55,44)\",\n fillOpacity: 0.51\n }\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(Svg02AHitbox);\nexport default __webpack_public_path__ + \"static/media/02a-hitbox.1ad984a1.svg\";\nexport { ForwardRef as ReactComponent };","var _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction Svg04AHitbox(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"100%\",\n height: \"100%\",\n viewBox: \"0 0 2121 1301\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n xmlSpace: \"preserve\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinejoin: \"round\",\n strokeMiterlimit: 2\n },\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer1\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(0.251515,0,0,0.182895,-136.109,171.096)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 732,\n y: 333,\n width: 660,\n height: 760,\n style: {\n fill: \"rgb(233,43,43)\",\n fillOpacity: 0.48\n }\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(66.7263,0,0,125.914,-48053.9,-41778)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 732.086,\n y: 334.455,\n width: 7.914,\n height: 5.545,\n style: {\n fill: \"rgb(252,55,44)\",\n fillOpacity: 0.51\n }\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(0.495455,0,0,0.114474,-148.673,233.88)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 732,\n y: 333,\n width: 660,\n height: 760,\n style: {\n fill: \"rgb(233,43,43)\",\n fillOpacity: 0.48\n }\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(0.722727,0,0,0.0644737,62.9636,264.53)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 732,\n y: 333,\n width: 660,\n height: 760,\n style: {\n fill: \"rgb(233,43,43)\",\n fillOpacity: 0.48\n }\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(0.287879,0,0,0.106579,1675.27,237.509)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 732,\n y: 333,\n width: 660,\n height: 760,\n style: {\n fill: \"rgb(233,43,43)\",\n fillOpacity: 0.48\n }\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(1.12424,0,0,0.803947,556.055,134.286)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 732,\n y: 333,\n width: 660,\n height: 760,\n style: {\n fill: \"rgb(233,43,43)\",\n fillOpacity: 0.48\n }\n })), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"matrix(0.640909,0,0,0.0736842,-386.145,429.463)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 732,\n y: 333,\n width: 660,\n height: 760,\n style: {\n fill: \"rgb(233,43,43)\",\n fillOpacity: 0.48\n }\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(Svg04AHitbox);\nexport default __webpack_public_path__ + \"static/media/04a-hitbox.d7600f27.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as Task1hitbox } from \"./images/01a-hitbox.svg\";\nimport { ReactComponent as Task2hitbox } from \"./images/02a-hitbox.svg\";\nimport { ReactComponent as Task4hitbox } from \"./images/04a-hitbox.svg\";\n\nconst getGameData = () => {\n let imageNames = [\n \"01a.jpg\",\n \"01b.jpg\",\n \"02a.jpg\",\n \"02b.jpg\",\n \"03a.jpg\",\n \"03b.jpg\",\n ];\n let allImages = [];\n for (var i = 0; i < imageNames.length; i++) {\n allImages.push(require(`./images/${imageNames[i]}`).default);\n }\n allImages.push(require(`./images/refresh.png`).default);\n allImages.push(require(`./images/thumbs-up.png`).default);\n\n let gameData = {\n title: \"Try / Get out of a right-click menu\",\n\n tasks: [\n {\n story: [\n \"On this page, you can find out about opening and closing a right-click menu. Let’s start with opening one.\",\n ],\n title: Open a right-click menu,\n actions: [\n \n Use your mouse to move the cursor (the arrow on the screen) on\n top of the email shown below.\n ,\n \n Right click anywhere on this email to open the\n right-click menu.\n ,\n ],\n success: [\n \"Nice work!\",\n \"You opened the right-click menu.\",\n \n Click Next Task below to continue.\n ,\n ],\n failure: [\n \"Good try!\",\n \"That was a good attempt, but you didn’t right-click on the email.\",\n \n Click Try Again below to have another go.\n ,\n ],\n images: [allImages[0], allImages[1]],\n hitbox: Task1hitbox,\n rightClickToComplete: true,\n\n showMenu: false,\n hintbox: { x: 259, y: 119, width: 692, height: 470 },\n },\n {\n story: [\n \"On this page, you can practise getting out of a right-click menu on a web page.\",\n \"Below is an ABC web page with the right-click menu already open.\",\n ],\n title: (\n \n Get out of a right-click menu with a{\" \"}\n left click\n \n ),\n actions: [\n \n Use your mouse to move the cursor (the arrow on the screen) on\n top of any part of the ABC web page below that is{\" \"}\n outside of the right-click menu.\n ,\n \n Left click once on this space to close the menu.\n ,\n ],\n success: [\n \"Excellent!\",\n \"You closed the right-click menu by left clicking once on the web page, away from the menu.\",\n \n Click Next Task below to continue.\n ,\n ],\n failure: [\n \"Good try!\",\n \"But the right-click menu is still open.\",\n \n Click Try Again below to have another go.\n ,\n ],\n dimBackgroundIfIncomplete: true,\n rightClickStyle: { left: 340, top: 128 },\n images: [allImages[3], allImages[3]],\n hitbox: Task2hitbox,\n leftClickBlankAreaToComplete: true,\n showMenu: true,\n },\n {\n story: [\n \"On this page, you can practise getting out of a right-click menu using another method: the ESC key.\",\n \"Below is an ABC web page with the right-click menu already open.\",\n ],\n title: (\n \n Get out of a right-click menu with the{\" \"}\n ESC key\n \n ),\n actions: [\n \n Press the ESC key on your keyboard to get out of the\n right-click menu.\n ,\n ],\n success: [\n \"Fantastic!\",\n \n You got out of the right-click menu by pressing the{\" \"}\n ESC key on your keyboard.\n ,\n \n Click Next Task below to continue.\n ,\n ],\n failure: [\n \"Good try!\",\n \"That was close but wasn’t quite right.\",\n \n Click Try Again below to have another go.\n ,\n ],\n rightClickStyle: { left: 340, top: 128 },\n images: [allImages[3], allImages[3]],\n escapeKeyToComplete: true,\n showMenu: true,\n },\n {\n story: [\n \"On this page, let’s practise opening and getting out of a right-click menu.\",\n ],\n title: Open a right-click menu and then get out of it,\n actions: [\n \"Use your mouse to move the cursor (the arrow on the screen) on top of the Medicare web page below.\",\n \n Right-click anywhere on the Medicare web page to open\n the right-click menu.\n ,\n \n After the right-click menu is open, left click{\" \"}\n somewhere else on the Medicare web page to get out of it.\n Remember, click once on a spot that is outside of the\n right-click menu, but still on the Medicare web page.\n ,\n ],\n success: [\n \"Great job!\",\n \"You opened a right-click menu on a web page and got out of it.\",\n \n Click Back to Activity Menu below to complete\n this activity.\n ,\n ],\n failure: [\n \"Good effort!\",\n \"But you didn’t open and get out of the right-click menu. Why don’t you have another attempt?\",\n \n Click Try Again below to have another go.\n ,\n ],\n rightClickStyle: { left: 340, top: 128 },\n images: [allImages[4], allImages[5]],\n hitbox: Task2hitbox, //removed Task4hitbox that blocked user from clicking certain page elements\n openAndCloseToComplete: true,\n },\n ],\n };\n return { gameData, allImages };\n};\n\nconst { gameData, allImages } = getGameData();\n\nexport { gameData, allImages };\n","import \"./App.css\";\nimport scorm from \"./scorm.js\";\n\nimport { useState, useLayoutEffect, useEffect, useRef } from \"react\";\n\nimport UniformScale from \"./components/UniformScale\";\nimport Header from \"./components/Header\";\n\nimport Feedback from \"./components/Feedback\";\n\nimport Tasks from \"./components/Tasks\";\nimport ClickSim from \"./components/ClickSim\";\n\nimport { gameData, allImages } from \"./gameData\";\n\nimport Button1 from \"./components/Button1\";\n\nimport thumbsUp from \"./images/thumbs-up.png\";\nimport refresh from \"./images/refresh.png\";\n\nlet pages = [Tasks];\n\nfunction useLoadAllImages() {\n const [imagesLoaded, setImagesLoaded] = useState(false);\n useLayoutEffect(() => {\n let imagesLoaded = 0;\n function onImageLoad() {\n imagesLoaded++;\n if (imagesLoaded >= allImages.length) {\n setImagesLoaded(true);\n }\n }\n for (var i = 0; i < allImages.length; i++) {\n let img1 = new Image();\n img1.onload = onImageLoad;\n img1.src = allImages[i];\n }\n }, []);\n return imagesLoaded;\n}\n\nfunction App() {\n const [showInstructions, setShowInstructions] = useState(false);\n const [levelCompleted, setLevelCompleted] = useState(false);\n\n const [selectedLevel, setSelectedLevel] = useState(0);\n const [successFeedback, setSuccessFeedback] = useState(false);\n const [failFeedback, setFailFeedback] = useState(false);\n const [completedFeedback, setCompletedFeedback] = useState(false);\n const allImagesLoaded = useLoadAllImages();\n\n const gameWrapper = useRef(null);\n\n let [reload, setReload] = useState(false);\n const exiting = useRef(false);\n\n const [initScorm, setInitScorm] = useState(false);\n\n useEffect(() => {\n if (initScorm) return;\n scorm.initScorm();\n setInitScorm(true);\n scorm.scormProcessSetValue(\"cmi.core.score.raw\", \"100\");\n scorm.setLessonStatusComplete();\n }, [initScorm]);\n\n useLayoutEffect(() => {\n setReload(false);\n }, [reload]);\n\n const onCompleteLevel = () => {\n if (selectedLevel >= gameData.tasks.length - 1) {\n setCompletedFeedback(true);\n } else {\n setSuccessFeedback(true);\n }\n };\n\n const handleExitModule = () => {\n if (exiting.current) return;\n exiting.current = true;\n const exitButton = document.getElementById(\"exitButton\");\n setTimeout(() => {\n if (!exitButton) return;\n exitButton.click();\n }, 50);\n };\n\n const onFail = () => {\n setFailFeedback(true);\n };\n\n const closeFeedback = () => {\n setFailFeedback(false);\n setSuccessFeedback(false);\n };\n const onNextQuestion = () => {\n setSuccessFeedback(false);\n\n if (selectedLevel < gameData.tasks.length - 1) {\n setSelectedLevel((level) => {\n return level + 1;\n });\n }\n };\n\n if (!allImagesLoaded) {\n return <>;\n }\n\n let task = gameData.tasks[selectedLevel];\n\n let Component = pages[0];\n\n return (\n
\n \n
\n = gameData.length - 1}\n onNextLevel={() => {\n setSelectedLevel(selectedLevel + 1);\n }}\n onBack={handleExitModule}\n />\n\n \n\n \n\n \n
\n \n
\n

{task.success[0]}

\n

{task.success[1]}

\n

{task.success[2]}

\n
\n
\n
\n \n Activity Menu\n \n \n Next Task\n \n
\n
\n\n \n
\n \n
\n

{task.failure[0]}

\n

{task.failure[1]}

\n

{task.failure[2]}

\n
\n
\n
\n \n Try Again\n \n
\n
\n\n \n
\n \n
\n

{task.success[0]}

\n

{task.success[1]}

\n

{task.success[2]}

\n
\n
\n
\n \n Back to Activity Menu\n \n
\n
\n
\n \n
\n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import \"bootstrap/dist/css/bootstrap.min.css\";\nimport \"react-app-polyfill/ie11\";\nimport \"react-app-polyfill/stable\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Button1_main__23ieg\",\"inner\":\"Button1_inner__Cl-l0\",\"arrow\":\"Button1_arrow__3Edxb\",\"right\":\"Button1_right__35x4h\",\"left\":\"Button1_left__GYXXj\",\"up\":\"Button1_up__2mLq7\",\"down\":\"Button1_down__2HORS\"};","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAABiCAYAAADDVoQ2AAAD6UlEQVR42u2dy3HbMBCG1UEmB1u8uQSXkBJSQkpICSxBcMaXnDSTyJdcWIJKSAkqISU4AE3YFIXHYgGQBPhjBhd7RhY/7mLf8G6HhTVev+5+PL40T1/U/vP55ycQYaxTI9qXRrzqfdqLf4AZuN6k8APiO8xGnEEnQhrHG3QAEiABsvSlrKt2W5QLA5BMiMpVmVjbdgmQp/unr+PvIj/3cmqeH0pRy7MJwO9GfJsTpNKE6QstyoWyAQiBGQvSBlFvznEzv0Q6HoAKM8Yh748WqcKu76A+v2iLGwZTHKchok+SeiO3F39df7uoUHMKgQuzNxbyxajte3gKxNCzugiYSjLmMHJFQ6Q+3FxGrmiIXnWTP5/DyFHO1qJhqvMvt5GrBuKV6t2L79pw5Iou+r+hJVO+vOogYmHVs1AAi0rBiaPDdToCaIy7VHsRTKvddHMss7S4Bx/EKhzsD5/t+cGfYQlL6g4q/UreRId++K6tPi5u9l506veLvBiK+l3D9EunLXUWE2LSUmoL5Sk5D0yRyhC1poKkZKEm3/NSPMhQKaeApGSEFi2uhagLRWWU6oc+MOWMXLVEaieZbGykynISDilcoN7QeEofORMpAY6z2fUJrWmHSjj1BY1gdkaLPdpF1HGcDyqlIFita/EjE5+3Zw7I4iUotWPPg4hmqqnv2LFAJi5TVBCj86SRami2cjZe2CCXcFNWCrHlQlQb+cidznjzIeJ8jIippxlyqDQjwwNHPFEEU2RvY9YkR0DyYK7Gq6KWqaecDXKrk199CBhvXNhN/dVIYkqImzQ0OSBuLuOTyrBYjE0HiKm2lHRftpu6h1p3q9oBVxN2qvMrO8TMe9FkyODedCUDJHf4UgpVtr2MUVkQpslXjUmeUoZ81NlSE0Rji03KiML2pmLziuvdI01MJY2ughNAAiQ9Aw+QiY4wgOQZ1ZteToDkREyGhliApEjfECq6QkSADALaZulk2KpqA2TODDxAskBeADJXFh4gARIga9g4I9P4lAeATOBHGqMbgKRHNggRY+Psvei8ZViADIDqKsMCZKK+S4CcMWnxdufsewvHZfPuj0nFfSCntQlK+RbZH2rB3wMfIANaiDcdIkp/Mky1LQer78qY+iWSUfwytRH77oCoGaR1UJRktfsBIt155r9Io1aQzmlb+JE039E7AAWQbtfPW88GyMRDUACZ6IxEo2kC1yf5uIYle6xcqKqd8Zt5QGYjPuVu22omGtYw59jfYFo40FUNjA4XIh3LHFxa4ZzjcLHboRiga79wZLiatY2542fxaa8VD30eVjMtZqtlF3nDgPIMrv4hxjwb1ybOuP4DujB0snAz4m8AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAABiCAYAAADDVoQ2AAADtElEQVR42u1cy3HUQBB1BhQHvLoRAiEQAiEQAiE4BGSKCydVwe6Fi0JwCITgEBSCmR6NwLVo19Oanp5u8V7VHFy1tldP/e+evrkBAAAAAAAAAAAAAAAAAAAAquLn62+vwEIhvr/58u546KfdS8qpu39/7Ry7r29LSTx1/RP9rV2QRoScbvtP4aGG06H/NT9c/jl2/WMg5TP9jRxVpf/3l8Tw++F3XZNHD0AkcInLIPbhR9d/XCM1Svr5ywo/uyOQHrAGeauEBqmbX9ZsAlZJTMeN05ltmg6BF6T07prZoBdsX4WDqrUikHEGu1IYjP9zo275kLbYlETyog4IfH4oJDIV/zlR5X9P0CA76rwhDjSj3od+NOKZQ0At8VDzyxjI01484aFJ8qVtsHsSIzG39x+48dySSsZ4UYTUhukixWAlYUdJzryeO5fFm80qKFvTOAkCJUlsli4mD/3Y0jueFyAkjnq6GNMubu4b7KBoqa1ClCD5HfNKXw0D3lokqqeL5GU5X066KFAzc1JLF9nSWDFjIDWMpApLp5QjFIsZNbOF6PwSscUlu9rpYvyymV6SPteyYEpSlWLcgUtsdQHgBN+q3i835p1Le+NLwlC9u5hriyjgtl61j4H8nLs/qKaLHCdjTRoZ7ZA/LYlq6WKuWputNjN9QbVCb27s6LpPrBSET+ZLUR5E3U1x1Loh3ou3bgpG/DiALYGSWbMKM4gEkbsgMrUpRkodVQYE9krkuRNNId4wT81VKKX9L0SuZWlz2VAoNk4TtbsLf6gmoCoge40jszVNqgjD6V87S3tH9bTXxdhHpfqBaKU/u6jrpPqTbR+lq+W5LVAv9cjcJp54/yb3DXpQb041q0pHMbuDaNx7c8ZtqgTmvDlIm1LJaSlXm07jqLdVW8kad6k5KMBptlvz4LmJhcqAA3dC10prljvPqSIEzC80tb7Dwh0DVBu34YVC8kOm7PSWOa2mWsXizki2uDy5ab5ce468ZIZcQ23StZHJxRURjhc8f+u17GaKE0d31+hyi75rdpMCfEnpjGN7G4dMTVyhK7n5tRC6VUKTibkrmtINGmJmi4DEXcSF1DkXvrxhJTanpGbHLZFYquYtNweY3WdReDcR6xeckelnRkn0sqXgMb9R5UpMZ2K/BRWb3S+VSxeJpoYk7mu4S3OFzbKJaterDaMzqnS7NQbmSvm8KRuaexvr5Y0ElN0oXMZ0YUtpIwDZ02sbVpYTPmdq6REAAAAAAAAAAAAAAAAAADn4DfPgCtkPV63sAAAAAElFTkSuQmCC\""],"sourceRoot":""}