{"version":3,"sources":["components/NavMenu.js","components/Layout.js","components/Home.js","components/survey/CheckboxQuestion.js","components/survey/ViewSurvey.js","components/survey/MatchResultItem.js","components/call/CallWindow.js","components/survey/ViewMatches.js","components/survey/SliderQuestion.js","components/survey/SuggestionQuestion.js","components/survey/ProfileEditModal.js","components/survey/ProfileBar.js","components/survey/CompleteSurvey.js","components/survey/NewSurveyResponse.js","components/markdown/TreeLink.js","components/collaborate/CommentViewer.js","components/vimeo/VimeoPlayer.js","components/auth/GuestLoginModal.js","components/collaborate/LanguageSelect.js","components/translate/CorrectTranslationModal.js","components/branding/WCDHeader.js","components/collaborate/renderTreeSearchOption.js","components/collaborate/TreeSearch.js","components/vimeo/YouTubePlayer.js","components/quiz/QuestionPlayer.js","components/collaborate/SharedTree.js","components/collaborate/GuestRoom.js","components/admin/ChangeModeModal.js","components/admin/TwilioInfo.js","components/admin/Admin.js","components/admin/SuggestionTable.js","components/survey/ExternalCallInfoModal.js","components/survey/ExternalCallJoinModal.js","components/survey/CallRoomItem.js","components/recorder/RecorderLinkButtonAndModal.js","components/survey/MatcherRoom.js","components/recorder/PersonalRecorder.js","components/quiz/QuestionRow.js","components/quiz/RoundEditor.js","components/teams/TeamsConfig.js","App.js","registerServiceWorker.js","index.js","components/survey/CallRoomItem.module.css","components/survey/MatcherRoom.module.css","components/survey/ExternalCallInfoModal.module.css","components/branding/WCDHeader.module.css","components/survey/ProfileBar.module.css","components/recorder/PersonalRecorder.module.css","components/survey/ExternalCallJoinModal.module.css"],"names":["NavMenu","props","toggleNavbar","bind","state","collapsed","this","setState","Navbar","className","light","Container","NavbarBrand","tag","Link","to","NavbarToggler","onClick","Collapse","isOpen","navbar","NavItem","NavLink","Component","displayName","name","Layout","children","Home","loading","renderSurveyList","createSurveyResponse","populateSurveyList","createdSurveyResponse","contents","surveys","map","survey","data-surveyid","id","event","a","preventDefault","requestOptions","method","headers","body","JSON","stringify","target","getAttribute","fetch","response","json","surveyResponse","data","testUsers","CheckboxQuestion","handleChange","newValue","checked","onValueChange","question","questionText","forceUpdate","mode","type","onChange","ViewSurvey","newQuestion","addQuestion","renderSurveyData","populateSurveyData","message","questions","onSubmit","for","value","placeholder","push","console","log","match","params","MatchResultItem","useState","pictureError","src","profilePicture","includes","user","currentCall","reason","e","pairId","openCallWindow","CallWindow","onHangUp","onExitCallWindow","feedback","feedbackType","innerText","callframeurl","allow","ViewMatches","renderMatchData","populateMatchData","setInterval","matches","sort","b","score","hashedMatches","call","callwindow","hashedData","forEach","element","SliderQuestion","currentValue","default","showText","slideStop","max","tooltip","SuggestionQuestion","handleNewSuggestion","handleDelete","onDelete","class","autoFocus","focus","maxLength","length","data-parent","icon","faPlus","faTrashAlt","ProfileEditModal","myProfile","_setMyProfile","myProfileRef","useRef","handleSaveProfile","onClose","handleAutoSave","autosave","form","nickname","aria-describedby","newProfile","current","currentTarget","onBlur","summary","wantsToTalk","fullContents","inline","data-dismiss","aria-label","aria-hidden","Modal","cx","classNames","styles","ProfileBar","profileEditModalVisible","setProfileEditModalVisible","noColumns","clickable","onError","myProfileNickname","username","myProfileSummary","noSummary","profile","setMyProfile","CompleteSurvey","handleCloseProfileEditModal","creatingNew","newItemContent","renderResponseData","handleInputChange","handleNewItemInputChange","showNewSuggestionEditor","handleDeleteQuestion","submitSurveyResponse","renderQuestions","populateMyProfile","populateResponseData","then","questionResponses","find","q","toString","deleteQuestionText","dataset","qr","filter","parent","Math","random","slice","toUpperCase","parentQuestion","elements","childElements","key","data-question","faTrash","childSuggestions","r","newItemMaxLength","faPaperPlane","responseToSubmit","Object","assign","redirectToResults","error","ok","status","surveyData","newResponses","NewSurveyResponse","TreeLink","href","charAt","handleLinkToQuestion","decodeURI","substr","replace","CommentViewer","setComments","newComment","setNewComment","useEffect","comments","handleLike","hubConnection","invoke","comment","like","roomId","c","thisTranslation","some","char","content","language","translations","tr","thisUser","likes","data-comment","data-like","faSolidThumbsUp","faRegularThumbsUp","author","rank","data-tip","displayAsMarkdown","allowedElements","components","node","linkTarget","unwrapDisallowed","translatedText","canAddComments","docId","location","VimeoPlayer","playerRef","player","muted","setMuted","options","Player","on","getMuted","m","catch","ref","url","GuestLoginModal","show","showModal","setShowModal","email","setEmail","setDisplayName","agree","setAgree","isValidEmail","test","allowClose","afterToken","window","reload","disabled","langName","lang","l","LanguageSelect","setValue","onChanges","SelectSearch","search","filterOptions","fuzzySearch","CorrectTranslationModal","translation","setTranslation","close","saveAndClose","item","bypassLengthLimit","WCDHeader","parallax","caption","parallaxHeader","renderTreeSearchOption","option","snapshot","subtext","translated","upvotes","downvotes","TreeSearch","fuse","Fuse","items","keys","threshold","renderOption","YouTubePlayer","frameBorder","allowFullScreen","title","QuestionPlayer","questionResponse","setQuestionResponse","sent","setSent","needsUpdate","prev","container","questionContainer","image","answerContainer","answer","onKeyUp","revealAnswer","answers","trim","toLowerCase","faCheck","color","faTimes","join","mcqOptions","o","SharedTree","handleNewItem","handleRenameChange","handleRenameQuestion","handleSelectItem","handleSelectEditModeItem","handleDeleteItem","handleModifyItem","handleViewComments","handleVote","handleCutItem","handlePasteItem","handleUpdateViewRoot","handleSliderChange","handleSlideStop","createConnection","populateUserData","switchModes","getQuestionAncestors","ensureSubscribed","handleRankUser","handleRefreshUser","handleUserVisible","handleAllocateRooms","handlePullToHub","handleRoomOpenStatus","handleVideoClipStatus","handleChangeTreeMode","handleVideoClipClose","handleRedirectAll","handleTwistyClick","handleOpenTranslateModal","handleCloseTranslateModal","URLSearchParams","eventUrl","get","treeOnly","branding","allowDark","microsoftTeams","context","loginHint","newItemUnder","editModeItem","newItemType","viewingComments","newCommentContent","editModeRename","cutting","userList","redirect","userListOpen","videoClipOpen","callEndpoint","errors","showGuestModal","onGuestModalLogin","viewRootOverride","openTranslationModal","searchSuggestionsOnly","treeOnlyParam","populateRoomData","ReactTooltip","rebuild","HubConnectionBuilder","withUrl","withAutomaticReconnect","configureLogging","LogLevel","Information","build","start","err","addError","header","allocateMeIfRequired","onreconnected","receivedQuestion","oldQuestionText","newQuestionText","room","prevState","viewTreeUser","treeMode","populateQuizQuestion","assignedMods","visibleUsers","viewRoot","userOverride","redirectOverride","top","setTimeout","document","videoClip","updatedQuestion","activeQuizQuestion","onAssignment","HubConnectionState","Connected","group","readOnlyMode","newItem","sortPriority","min","style","height","scrollHeight","replaceAll","showOverride","thisQuestionText","open","twistedOpen","linkHighlight","openers","nextQuestion","getElementById","scrollIntoView","_dataset","enableTwisties","nodetype","isMod","readOnly","myComment","startsWith","vote","modifyItem","above","aboveSortPri","nextSortPri","below","belowSortPri","deleteItem","root","questionTextOverride","renderParent","typeOrder","typeOrderScore","indexOf","created","amendment","diff","Diff","textDiff","main","cleanupSemantic","dangerouslySetInnerHTML","__html","prettyHtml","thisqr","itemComments","data-open","faChevronCircleRight","transform","rotate","visibility","originalText","faLanguage","data-nodetype","faMinus","faExchangeAlt","data-vote","rotation","faCommentDots","data-root","faBullseye","faLevelUpAlt","flip","faExclamationCircle","faCheckCircle","faLayerGroup","faCut","faClipboard","faLevelDownAlt","data-above","faCaretUp","data-below","faCaretDown","onSlideStop","roomID","onInput","populateCommentData","cb","autoplay","userID","intro","introText","vimeo","modTools","data-mode","disableRankingMode","assignmentSurvey","data-username","data-show","faVideoSlash","faVideo","faPlay","faSortDown","u","lastRoom","data-user","faRedo","data-rank","faChessKing","faChessPawn","toSearchOption","treeSearchOptions","localeCompare","aScore","position","overflow","left","enableSearch","faSearch","enableTranslations","Alert","youTube","width","right","border","encodeURIComponent","effect","GuestRoom","setUsername","joining","setJoining","history","useHistory","useParams","ChangeModeModal","setRoom","FormGroup","Label","treeList","FormText","aria-described-by","Input","TwilioInfo","participants","setParticipants","twilioRoom","sid","p","identity","Admin","rooms","setRooms","twilioRooms","setTwilioRooms","setSurveys","editingRoom","setEditingRoom","loadSurveys","loadRooms","loadTwilioRooms","credentials","res","handleDupeSurvey","s","newSurvey","handleMakeRoom","data-survey","faRedoAlt","Badge","faPencilAlt","faQuestion","topic","uniqueName","testAssignedUsers","thisRoom","handleRemoveAssignedMod","handleNewAssignedMod","FormData","changedRoom","change","applyRoomChange","SuggestionsTable","surveyId","suggestions","setSuggestions","ExternalCallInfoModal","linkError","setLinkError","useExternalVideo","stepLine","externalCallLink","URL","meetingInfo","serviceName","ExternalCallJoinModal","creatorInfo","callRoom","creator","externalLink","data-call","CallRoomItem","filteredParticipants","currentParticipants","thisMeetingInfo","ownerProfile","isMyRoom","userProfileIfExist","matchItem","matchAvatar","matchTextContent","nameAndRole","matchName","matchSubLine","wantsToTalkLine","matchReasonLine","otherUsersLine","matchIsInOtherCall","existingInviteWithUser","isCurrentlyInCall","leaveCall","enableRealTimeButtons","isExternal","isInvite","isCurrentlyInAnyCall","joinCall","createWithUser","currentlyOngoingCall","invitees","uninviteFromCall","inviteToCall","RecorderLinkButtonAndModal","faDropbox","faAt","MatcherRoom","setMatches","setCallRoom","calls","setCalls","hub","setHub","showTree","setShowTree","showExternalModal","setShowExternalModal","lastHubState","populateInviteData","off","updatedRoom","cr","newCallRoom","parentRoom","i","profiles","meetingSystems","faUserFriends","parsedUrl","ms","hostname","listContainer","listContainerHalfSize","showTreeFrame","showTreeHeader","hideTreeButton","faUsers","help","faQuestionCircle","invite","lastSeen","Date","getTime","toISOString","inACall","userOtherCall","callContainer","PersonalRecorder","setShowGuestModal","infoContainer","QuestionRow","newMcqOption","setNewMcqOption","newAnswer","setNewAnswer","setQuestion","changed","newType","ans","handleInorrectMCQ","handleCorrectMCQ","handleRemoveMcqOption","handleRemoveAnswer","Button","currentlyActive","RoundEditor","setQuestions","setQuestionResponses","qu","result","activeQuestion","size","faStop","TeamsConfig","setContext","notifySuccess","registerOnSaveHandler","saveEvent","setSettings","entityID","contentUrl","origin","suggestedTabName","websiteUrl","setValidityState","Cookies","App","exact","path","component","SuggestionTable","Boolean","baseUrl","getElementsByTagName","rootElement","ReactDOM","render","basename","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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UACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,OAET,CACEpD,KAAM,uBACNoD,MAAO,SAET,CACEpD,KAAM,wBACNoD,MAAO,SAET,CACEpD,KAAM,WACNoD,MAAO,MAET,CACEpD,KAAM,WACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,YACNoD,MAAO,MAET,CACEpD,KAAM,WACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,WACNoD,MAAO,MAET,CACEpD,KAAM,WACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,WACNoD,MAAO,MAET,CACEpD,KAAM,iBACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,WACNoD,MAAO,OAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,OAET,CACEpD,KAAM,YACNoD,MAAO,MAET,CACEpD,KAAM,YACNoD,MAAO,MAET,CACEpD,KAAM,OACNoD,MAAO,MAET,CACEpD,KAAM,aACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,WACNoD,MAAO,MAET,CACEpD,KAAM,WACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,cACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,MACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,aACNoD,MAAO,MAET,CACEpD,KAAM,gBACNoD,MAAO,MAET,CACEpD,KAAM,aACNoD,MAAO,MAET,CACEpD,KAAM,WACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,YACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,YACNoD,MAAO,MAET,CACEpD,KAAM,oBACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,YACNoD,MAAO,MAET,CACEpD,KAAM,oBACNoD,MAAO,MAET,CACEpD,KAAM,eACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,gCACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,WACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,eACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,sBACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,YACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,YACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,UACNoD,MAAO,MAET,CACEpD,KAAM,qBACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,QACNoD,MAAO,MAET,CACEpD,KAAM,SACNoD,MAAO,M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","file":"static/js/main.41109038.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport './NavMenu.css';\n\nexport class NavMenu extends Component {\n static displayName = NavMenu.name;\n\n constructor (props) {\n super(props);\n\n this.toggleNavbar = this.toggleNavbar.bind(this);\n this.state = {\n collapsed: true\n };\n }\n\n toggleNavbar () {\n this.setState({\n collapsed: !this.state.collapsed\n });\n }\n\n render () {\n return (\n
\n \n \n NetworkingSurvey\n \n \n
    \n \n Home\n \n
\n
\n
\n
\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport { Container } from 'reactstrap';\nimport { NavMenu } from './NavMenu';\n\nexport class Layout extends Component {\n static displayName = Layout.name;\n\n render () {\n return (\n
\n {/* */}\n \n {this.props.children}\n \n
\n );\n }\n}\n","import React, { Component } from 'react';\n\nimport { Link, Redirect } from 'react-router-dom';\n\nexport class Home extends Component {\n static displayName = Home.name;\n static testUsers = ['Andy', 'Bob', 'Charlie', 'Doris', 'Edwina', 'Frances']\n\n constructor(props) {\n super(props);\n this.state = { loading: true};\n this.renderSurveyList = this.renderSurveyList.bind(this);\n this.createSurveyResponse = this.createSurveyResponse.bind(this);\n }\n\n componentDidMount() {\n this.populateSurveyList();\n }\n\n render () {\n if (this.state.createdSurveyResponse) {\n return \n }\n\n let contents = this.state.loading\n ?

Loading Networking Survey...

\n : this.renderSurveyList(this.state.surveys);\n\n return (\n
\n {contents}\n
\n );\n }\n\n renderSurveyList(surveys) {\n let questionitems = [];\n return (\n
\n

Event surveys for matching

\n This page is for development, when implemented into the andeye platform the user will be entered into the correct survey by default.\n
\n {surveys.map(survey => {survey.event})}\n
\n
\n );\n }\n\n async createSurveyResponse(event) {\n event.preventDefault();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\"survey\": event.target.getAttribute('data-surveyid')})\n }\n const response = await fetch('/api/surveyresponse', requestOptions);\n const surveyResponse = await response.json();\n this.setState({createdSurveyResponse: surveyResponse.id});\n \n }\n\n async populateSurveyList() {\n const response = await fetch('api/survey/');\n const data = await response.json();\n this.setState({ surveys: data, loading: false });\n }\n}\n","import React, { Component } from 'react';\n\nexport class CheckboxQuestion extends Component {\n static displayName = CheckboxQuestion.name;\n\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(event) {\n let newValue = event.target.checked\n this.props.onValueChange(this.props.question.questionText, newValue);\n this.forceUpdate();\n }\n\n render() {\n\n if (this.props.mode == \"view\") {\n return (\n

\n {this.props.question.questionText}\n

\n );\n }\n else {\n let checked = null;\n if (this.props.question.response) {\n checked = true;\n }\n return (\n
\n \n \n
\n )\n }\n }\n\n\n}","import React, { Component } from 'react';\nimport { Link, Redirect } from 'react-router-dom';\nimport { CheckboxQuestion } from './CheckboxQuestion';\n\nexport class ViewSurvey extends Component {\n static displayName = ViewSurvey.name;\n\n constructor(props) {\n super(props);\n this.state = { loading: true, newQuestion: ''};\n this.handleChange = this.handleChange.bind(this);\n this.addQuestion = this.addQuestion.bind(this);\n this.renderSurveyData = this.renderSurveyData.bind(this);\n this.createSurveyResponse = this.createSurveyResponse.bind(this);\n }\n\n componentDidMount() {\n this.populateSurveyData();\n }\n\n renderSurveyData(survey) {\n let questionitems = [];\n return (\n
\n

Survey for event: /{survey.event}

\n

Landing message: {survey.message}

\n

Questions

\n
\n {survey.questions.map(question => )}\n
\n
\n
\n \n \n
\n \n
\n
\n Complete this survey (dev)\n
\n );\n }\n\n async createSurveyResponse(event) {\n event.preventDefault();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\"survey\": this.state.survey.id})\n }\n const response = await fetch('/api/surveyresponse', requestOptions);\n const surveyResponse = await response.json();\n this.setState({createdSurveyResponse: surveyResponse.id});\n \n }\n\n\n handleChange(event) {\n this.setState({newQuestion: event.target.value});\n }\n\n async addQuestion(event) {\n event.preventDefault();\n this.state.survey.questions.push({\n questionText: this.state.newQuestion,\n type: \"checkbox\"\n })\n const requestOptions = {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(this.state.survey)\n }\n console.log(this.state.survey);\n const response = await fetch('/api/survey/' + this.props.match.params.id, requestOptions);\n this.setState({newQuestion: ''});\n this.populateSurveyData();\n }\n\n render() {\n\n if (this.state.createdSurveyResponse) {\n return \n }\n\n let contents = this.state.loading\n ?

Loading Networking Survey...

\n : this.renderSurveyData(this.state.survey);\n\n return (\n
\n {contents}\n
\n );\n }\n\n async populateSurveyData() {\n const response = await fetch('api/survey/' + this.props.match.params.id);\n const data = await response.json();\n this.setState({ survey: data, loading: false });\n }\n}\n","import React, { useState, useEffect, useRef } from 'react';\n\nfunction MatchResultItem(props) {\n\n const [pictureError, setPictureError] = useState(false);\n\n const onCallClick = (e) => {\n console.log(props.match.pairId);\n props.openCallWindow(props.match);\n }\n\n\n return (\n
\n \n {props.match.user} \n {/* ({props.match.score}) */}\n {props.match.currentCall && \n wants you to join a call\n }\n \n {props.match.reason}\n Call\n
\n )\n\n\n\n}\n\nexport default MatchResultItem","import React, { Component } from 'react';\n\nexport class CallWindow extends Component {\n static displayName = CallWindow.name;\n\n constructor(props) {\n super(props);\n this.state = {\n ...this.props\n };\n \n\n this.onHangUp = this.onHangUp.bind(this);\n this.onExitCallWindow = this.onExitCallWindow.bind(this);\n }\n\n onHangUp(event) {\n this.setState({feedback: 'awaiting'})\n }\n\n onExitCallWindow(event) {\n\n event.preventDefault();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n event: \"Sample event\", // TODO fix reference\n feedbackType: event.target.innerText,\n reason: this.state.match.reason,\n })\n }\n console.log(this.state.response);\n fetch('/api/feedback', requestOptions);\n \n this.state.onHangUp();\n }\n\n render() {\n let contents =
This call is invalid
\n if (this.state.feedback) {\n contents = (\n
\n

How did you find this interaction? Your anonymous feedback helps tailor future interactions.

\n

\n Positive\n Negative\n

\n
\n )\n }\n else if (this.state.match) {\n let callframeurl = \"https://calls.joel.pm/room/\" + this.state.match.pairId;\n contents = (\n
\n
\n \n
\n

Press the settings cog to change your webcam/mic settings. Hang Up

\n\n
\n )\n }\n\n return contents;\n }\n}","import React, { Component } from 'react';\nimport { Link, Redirect } from 'react-router-dom';\nimport { CheckboxQuestion } from './CheckboxQuestion';\nimport MatchResultItem from './MatchResultItem';\nimport { CallWindow } from '../call/CallWindow';\n\nexport class ViewMatches extends Component {\n static displayName = ViewMatches.name;\n\n constructor(props) {\n super(props);\n this.state = { loading: true};\n this.renderMatchData = this.renderMatchData.bind(this);\n this.populateMatchData = this.populateMatchData.bind(this);\n this.openCallWindow = this.openCallWindow.bind(this);\n this.onHangUp = this.onHangUp.bind(this);\n }\n\n componentDidMount() {\n this.populateMatchData();\n setInterval(this.populateMatchData, 2000);\n }\n\n renderMatchData(matches) {\n matches.sort((a,b) => {\n // If one is a current call, bump it up\n if (a.currentCall) return -1;\n if (b.currentCall) return 1;\n // Else, if one has a higher score, bump it up\n if (a.score < b.score) return 1;\n if (b.score < a.score) return -1;\n // Else, keep the sort consistent by sorting by hash\n return a.pairId < b.pairId && 1 || -1;\n });\n return (\n
\n

\n Users online, ranked by your shared Interests\n Refresh this list\n

\n
\n {matches.map(match => )}\n
\n
\n );\n }\n\n openCallWindow(match) {\n const requestOptions = {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n id: this.props.match.params.id,\n currentCall: match.user\n })\n }\n console.log(this.state.response);\n fetch('/api/surveyresponse/' + this.props.match.params.id, requestOptions);\n this.setState({call: match});\n }\n\n onHangUp(pairId) {\n const requestOptions = {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n id: this.props.match.params.id,\n currentCall: null\n })\n }\n console.log(this.state.response);\n fetch('/api/surveyresponse/' + this.props.match.params.id, requestOptions);\n this.setState({call: null});\n }\n\n render() {\n\n let contents = this.state.loading\n ?

Loading Matches...

\n : this.renderMatchData(this.state.matches);\n let callwindow = this.state.call\n ? \n : null;\n return (\n
\n {contents}\n {callwindow}\n
\n );\n }\n\n async populateMatchData() {\n const response = await fetch('api/matchresult/' + this.props.match.params.id);\n const data = await response.json();\n let hashedData = {};\n data.forEach(element => {\n hashedData[element.pairId] = element;\n });\n console.log(data);\n console.log(hashedData);\n this.setState({ matches: data, hashedMatches: hashedData, loading: false });\n }\n}\n","import React, { Component } from 'react';\nimport ReactBootstrapSlider from 'react-bootstrap-slider';\n\nexport class SliderQuestion extends Component {\n static displayName = SliderQuestion.name;\n\n constructor(props) {\n super(props);\n this.state = {\n ...this.props,\n currentValue: props.question.response || this.props.default || 0\n };\n this.handleChange = this.handleChange.bind(this);\n \n //Workaround\n if (this.state.currentValue == 0) {\n this.state.onValueChange(this.props.question.questionText, this.state.currentValue);\n }\n }\n\n handleChange(event) {\n this.setState({currentValue: event.target.value}, () => {\n this.state.onValueChange(this.props.question.questionText, this.state.currentValue);\n });\n //this.forceUpdate();\n }\n\n render() {\n\n if (this.props.mode == \"view\") {\n return (\n

\n {this.props.question.questionText}\n

\n );\n }\n else {\n \n return (\n
\n {this.state.showText?\n \n :null}\n \n \n
\n \n )\n }\n }\n\n\n}","import React, { Component } from 'react';\nimport { faTrashAlt } from \"@fortawesome/free-regular-svg-icons\";\nimport { faPlus } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nexport class SuggestionQuestion extends Component {\n static displayName = SuggestionQuestion.name;\n\n constructor(props) {\n super(props);\n this.state = {\n ...this.props,\n currentValue: props.question.response || \"\"\n };\n this.handleChange = this.handleChange.bind(this);\n this.handleNewSuggestion = this.handleNewSuggestion.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n \n //Workaround\n if (this.state.currentValue == 0) {\n this.state.onValueChange(this.props.question.questionText, this.state.currentValue);\n }\n }\n\n handleChange(event) {\n this.setState({currentValue: event.target.value}, () => {\n this.state.onValueChange(this.props.question.questionText, this.state.currentValue);\n });\n \n //this.forceUpdate();\n }\n\n handleDelete(event) {\n // This is a bit of a workaround currently as the array in which these elements is presented is causing a React state leak.\n this.state.onDelete(this.state.question.questionText);\n // this.setState({currentValue: \"DELETED\"}, () => {\n // this.state.onValueChange(this.props.question.questionText, this.state.currentValue);\n // });\n }\n\n handleNewSuggestion(event) {\n this.state.handleNewSuggestion(event);\n }\n\n render() {\n if (this.state.currentValue == \"DELETED\") {\n return null;\n }\n if (this.state.mode == \"view\") {\n return (\n
\n Suggestion: {this.state.question.response}\n
\n )\n }\n return (\n
\n
\n
\n Suggestion\n
\n\n \n {this.state.currentValue.length?\n \n \n \n :null}\n \n \n \n
\n \n {this.state.currentValue.length == this.state.maxLength?\n Maximum text length reached\n : null}\n
\n \n )\n }\n\n\n}","import React, { useState, useEffect, useRef } from 'react';\nimport { Modal } from 'reactstrap';\n\nfunction ProfileEditModal(props) {\n\n const [myProfile, _setMyProfile] = useState(props.myProfile);\n const myProfileRef = useRef(props.myProfile);\n\n const handleNicknameChange = (e) => {\n let newProfile = {...myProfileRef.current, nickname: e.currentTarget.value}\n myProfileRef.current = newProfile;\n _setMyProfile(newProfile);\n }\n\n const handleSummaryChange = (e) => {\n let newProfile = {...myProfileRef.current, summary: e.currentTarget.value}\n myProfileRef.current = newProfile;\n _setMyProfile(newProfile);\n }\n\n const handleWantsToTalkChange = (e) => {\n let newProfile = {...myProfileRef.current, wantsToTalk: e.currentTarget.value}\n myProfileRef.current = newProfile;\n _setMyProfile(newProfile);\n }\n\n const handleSaveProfile = (e) => {\n console.log(myProfile);\n props.onClose(myProfile);\n }\n\n const handleAutoSave = (e) => {\n if (props.autosave) handleSaveProfile(e);\n }\n\n const form = <>\n
\n \n \n \n Enter your name as you'd like it to be seen by others.\n \n
\n
\n \n \n \n Please enter your job title and company.\n \n
\n
\n \n \n \n Tell everyone what you'd like to discuss during day 3 networking.\n \n
\n ;\n\n const fullContents = <>\n
\n
Edit Profile
\n {!props.inline && }\n
\n
\n {form}\n
\n {!(props.autosave && props.inline) &&
\n {!props.autosave && }\n {!props.inline && }\n
}\n ;\n\n if (myProfile) {\n if (props.inline){\n return
{fullContents}
;\n } else {\n return {fullContents}\n }\n } else return null;\n}\n\nexport default ProfileEditModal;","import React, { useState, useEffect, useRef } from 'react';\nimport { useParams } from 'react-router';\n\nimport {\n HubConnectionBuilder,\n LogLevel,\n HubConnectionState\n} from '@microsoft/signalr';\nimport styles from './ProfileBar.module.css';\nimport classNames from 'classnames/bind';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faFileSignature, faQuestionCircle, faUsers } from '@fortawesome/free-solid-svg-icons';\nimport { Modal } from 'reactstrap';\nimport ProfileEditModal from './ProfileEditModal';\nlet cx = classNames.bind(styles);\n\nfunction ProfileBar(props) {\n\n const [profileEditModalVisible, setProfileEditModalVisible] = useState(false);\n\n const handleCloseProfileEditModal = (profile) => {\n setProfileEditModalVisible(false);\n if (profile) {\n props.setMyProfile(profile);\n fetch(`/api/user`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(profile)\n })\n }\n }\n\n return (props.myProfile &&\n <>\n
{if (props.clickable) setProfileEditModalVisible(true)}}>\n {e.target.onError=null; e.target.src = process.env.PUBLIC_URL + '/guest.png'}} />\n {props.myProfile.nickname || props.myProfile.username}\n {props.myProfile.summary ? props.myProfile.summary : Enter your role}\n
\n \n {profileEditModalVisible &&\n \n }\n \n \n );\n\n}\n\nexport default ProfileBar;","import React, { Component } from 'react';\nimport { Link, Redirect } from 'react-router-dom';\nimport { CheckboxQuestion } from './CheckboxQuestion';\nimport { SliderQuestion } from './SliderQuestion';\nimport { SuggestionQuestion } from './SuggestionQuestion';\n\nimport { faPlus, faPaperPlane, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { HubConnection } from \"@microsoft/signalr\";\nimport ProfileBar from './ProfileBar';\nimport ProfileEditModal from './ProfileEditModal';\n\nexport class CompleteSurvey extends Component {\n static displayName = CompleteSurvey.name;\n\n constructor(props) {\n super(props);\n this.state = { loading: true, creatingNew: null, newItemContent: ''};\n this.renderResponseData = this.renderResponseData.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleNewItemInputChange = this.handleNewItemInputChange.bind(this);\n this.handleNewSuggestion = this.handleNewSuggestion.bind(this);\n this.showNewSuggestionEditor = this.showNewSuggestionEditor.bind(this);\n this.handleDeleteQuestion = this.handleDeleteQuestion.bind(this);\n this.submitSurveyResponse = this.submitSurveyResponse.bind(this);\n this.renderQuestions = this.renderQuestions.bind(this);\n this.handleCloseProfileEditModal = this.handleCloseProfileEditModal.bind(this);\n }\n\n componentDidMount() {\n console.log(\"mounted\");\n this.populateMyProfile();\n this.populateResponseData();\n }\n\n populateMyProfile() {\n fetch(`/api/user`)\n .then(response => response.json())\n .then(myProfile => this.setState({myProfile}))\n }\n\n handleInputChange(questionText, value) {\n this.state.response.questionResponses.find(q => q.questionText == questionText).response = value.toString();\n this.forceUpdate();\n }\n\n handleNewItemInputChange(event) {\n this.setState({\n newItemContent: event.target.value\n });\n }\n\n // Note this is currently not being used due to a React state sibling leak issue yet unresolved. A workaround is implemented.\n handleDeleteQuestion(event) {\n let response = this.state.response;\n let deleteQuestionText = event.currentTarget.dataset.question\n response.questionResponses.find(qr => qr.questionText == deleteQuestionText).type = \"deleted\";\n response.questionResponses.filter(qr => qr.parent == deleteQuestionText).forEach(qr => {qr.type = \"deleted\"} )\n \n this.setState({ response });\n this.forceUpdate();\n }\n\n handleNewSuggestion(event) {\n event.preventDefault();\n console.log(event.currentTarget);\n let newQuestion = \"Suggestion_\" + Math.random().toString(16).slice(2,8).toUpperCase()\n this.state.response.questionResponses.push({\n parent: this.state.creatingNew,\n questionText: newQuestion,\n response: this.state.newItemContent,\n type: \"suggestion\"\n });\n this.setState({\n creatingNew: null,\n newItemContent: \"\"\n });\n this.forceUpdate();\n }\n showNewSuggestionEditor(event) {\n event.preventDefault();\n console.log(event.currentTarget.dataset.parent)\n this.setState({creatingNew: event.currentTarget.dataset.parent})\n }\n\n handleCloseProfileEditModal = (myProfile) => {\n if (myProfile) {\n this.setState({myProfile});\n fetch(`/api/user`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(myProfile)\n })\n }\n }\n\n renderResponseData(response) {\n return (\n
\n
\n
\n

Water Climate Discussion interests

\n
\n {this.state?.myProfile &&\n this.setState({myProfile})}\n />\n }\n
\n
\n
\n {this.state?.myProfile &&\n \n }\n
\n
\n

\n Please use the sliders below to show your interest in discussing the\n listed topics. This information will be used to match you to similar\n participants during the conference networking.\n

\n

\n Turning up some of the sliders may reveal additional sub-categories.\n If something isn't listed which you think should be, use the '+'\n button after increasing a slider, and add a suggested sub-category.\n You can add as many of these as you'd like, including adding\n suggestions under those which you have already created.\n

\n

\n When you are finished, press Submit, and your inputs and suggestions\n will be stored.\n

\n
\n
\n
\n {this.renderQuestions(null)}\n \n
\n
\n );\n }\n\n renderQuestions(parentQuestion) {\n let elements = [];\n if (parentQuestion == \"Suggestion_1BE117\") console.log(\"RENDERING Suggestion_1BE117\");\n // Find each question at this level (or all root question if this is the top level)\n this.state.response.questionResponses.filter(qr => (qr.parent == parentQuestion)).map(qr => {\n let childElements = this.renderQuestions(qr.questionText);\n if (qr.type == 'slider') {\n // Create the slider for this question\n elements.push(
\n \n {qr.response > 8 ? \n \n \n \n : null}\n \n
);\n \n } else if (qr.type == 'suggestion') {\n elements.push(
\n \n \n \n \n {!childElements?\n \n \n \n :null}\n
)\n } else if (qr.type == 'deleted') {\n elements.push(null);\n }\n // Run this algorithm recursively to get the sliders for sub-categories\n let childSuggestions = this.state.response.questionResponses.filter(r => (r.parent == qr.questionText && r.type == 'suggestion' && r.response != \"DELETED\"))\n if (childElements && (qr.type != \"slider\" || qr.response > 8 || childSuggestions.length)) {\n elements.push(childElements);\n }\n else {\n elements.push(null);\n }\n });\n if (this.state.creatingNew && this.state.creatingNew == parentQuestion) {\n elements.push(
\n
\n
\n\n \n\n
\n \n
\n
\n {this.state.newItemContent.length == this.state.newItemMaxLength?\n Maximum text length reached\n : null}\n
\n
);\n }\n\n // Create a suggestion button for the root node\n // if (!parentQuestion) {\n // elements.push(

Suggest another topic

)\n // }\n if (elements.filter(e => (e != null)).length) {\n return
{elements}
;\n } else { return null; }\n }\n\n async submitSurveyResponse(event){\n event.preventDefault();\n let responseToSubmit = Object.assign({}, this.state.response);\n responseToSubmit.questionResponses = responseToSubmit.questionResponses.filter((qr) => (qr.type != \"deleted\"));\n const requestOptions = {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(responseToSubmit)\n }\n console.log(responseToSubmit);\n const response = await fetch('/api/surveyresponse/' + this.state.response.id, requestOptions);\n \n this.setState({redirectToResults: true});\n }\n\n render() {\n if (this.state.redirectToResults) {\n // Temporary change to the matcher\n return (
\n

Your results and suggestions have been saved. You can return to this page at any time to view or update your response.

\n
);\n // return \n }\n let contents = this.state.loading\n ?\n
\n

Loading Networking Survey. This should only take a moment...

\n {this.state.error?\n

{this.state.error}

\n :null}\n\n
\n : this.renderResponseData(this.state.response);\n\n return (\n
\n {contents}\n
\n );\n }\n\n async populateResponseData() {\n \n const response = await fetch('api/surveyresponse/' + this.props.match.params.id);\n if (!response.ok) {\n let message = There was an unexpected error. Please refresh, try again later or contact andeye at info@andeye.com for assistance\n if (response.status == 401) {\n message = We couldn't find your login credentials. Go to the registration page, ensure you are logged in, and return to this event.\n }\n this.setState({error: message})\n }\n const data = await response.json();\n const surveyResponse = await fetch('api/survey/' + data.survey);\n const surveyData = await surveyResponse.json();\n\n let newResponses = {};\n if (!data.questionResponses) {\n newResponses = surveyData.questions.map(question => {\n return {\n questionText: question.questionText,\n type: question.type,\n response: \"0\",\n parent: question.parent\n }\n })\n } else {\n newResponses = surveyData.questions.map(question => {\n return {\n questionText: question.questionText,\n type: question.type,\n response: data.questionResponses.find(qr => qr.questionText == question.questionText)?.response || \"0\",\n parent: question.parent\n }\n })\n }\n data.questionResponses = newResponses;\n\n console.log(data);\n this.setState({ response: data, survey: surveyData, loading: false });\n }\n}\n","import React, { Component } from 'react';\n\nimport { Link, Redirect } from 'react-router-dom';\n\nexport class NewSurveyResponse extends Component {\n static displayName = NewSurveyResponse.name;\n\n constructor(props) {\n super(props);\n this.state = { loading: true};\n this.createSurveyResponse = this.createSurveyResponse.bind(this);\n }\n\n componentDidMount() {\n this.createSurveyResponse();\n }\n\n render () {\n if (this.state.createdSurveyResponse) {\n return \n }\n\n let contents =

Creating new survey response...

;\n\n return (\n
\n {contents}\n {this.state.error?\n

{this.state.error}

\n :null}\n
\n );\n }\n\n\n\n async createSurveyResponse() {\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\"survey\": this.props.match.params.id})\n }\n const response = await fetch('/api/surveyresponse', requestOptions);\n if (!response.ok) {\n let message = There was an unexpected error. Please refresh, try again later or contact andeye at info@andeye.com for assistance\n if (response.status == 401) {\n message = We couldn't find your login credentials. Go to the registration page, ensure you are logged in, and return to this event.\n }\n this.setState({error: message})\n }\n else {\n const surveyResponse = await response.json();\n this.setState({createdSurveyResponse: surveyResponse.id});\n }\n \n }\n}\n","import React from 'react';\n\nexport default function TreeLink(props) {\n\n console.log(props);\n if (props.href.charAt(0) === '#') {\n return {e.preventDefault(); props.handleLinkToQuestion(decodeURI(props.href.substr(1)).replace('_',' '))}}>{props.children}\n }\n return (\n \n )\n}","import React, { useState, useEffect } from 'react';\nimport { faPaperPlane, faThumbsUp as faSolidThumbsUp, faTrashAlt }\n from \"@fortawesome/free-solid-svg-icons\";\n import { faThumbsUp as faRegularThumbsUp }\n from \"@fortawesome/free-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport ReactMarkdown from 'react-markdown';\nimport TreeLink from '../markdown/TreeLink';\n\nfunction CommentViewer(props) {\n\n const [comments, setComments] = useState([]);\n const [newComment, setNewComment] = useState(\"\");\n const handleLinkToQuestion = props.handleLinkToQuestion;\n\n useEffect(() => {\n\n setComments(props.comments);\n \n },[props.comments]);\n\n const handleInputChange = (e) => {\n e.preventDefault();\n setNewComment(e.target.value);\n }\n\n const handleNewItem = (e) => {\n e.preventDefault();\n props.hubConnection && props.hubConnection.\n invoke('newComment', props.docId, {\n location: props.location,\n content: newComment\n });\n setNewComment(\"\")\n }\n\n const handleLike = (e) => {\n e.preventDefault();\n props.hubConnection && props.hubConnection.\n invoke('likeComment', e.currentTarget.dataset.comment, e.currentTarget.dataset.like)\n }\n\n const handleDelete = (e) => {\n e.preventDefault();\n props.hubConnection && props.hubConnection.\n invoke('deleteComment', props.roomId, e.currentTarget.dataset.comment)\n }\n\n return (\n
\n {props.comments.length?\n

{props.comments.length} comment{props.comments.length != 1? 's' : null} on this item

\n :null}\n {props.comments.map(c => {\n let thisTranslation = (!['[','*','_'].some(char => c.content.includes(char)) && props.language && props.language != 'en' && c.translations?.find(tr => tr.language == props.language)) || null;\n return
\n {!!props.thisUser && \n {c.likes?.length? {c.likes?.length} : null }\n \n \n \n {c.author == props.thisUser.username || props.thisUser.rank == \"mod\"?\n \n \n \n : null}\n }\n

{c.author}

\n {\n c.displayAsMarkdown && ['[','*','_'].some(char => c.content.includes(char))?\n }}\n linkTarget=\"_blank\"\n unwrapDisallowed={true}\n >\n {c.content}\n \n :\n (thisTranslation?.translatedText || c.content)\n }

\n
}\n )}\n {props.canAddComments &&
\n
\n
\n \n
\n \n
\n
\n
\n
}\n \n
\n )\n}\n\nexport default CommentViewer; ","import React, { useEffect, useRef, useState } from 'react';\nimport Player from '@vimeo/player';\nfunction VimeoPlayer(props) {\n \n const playerRef = useRef(null)\n const player = useRef(null);\n const [muted, setMuted] = useState(true);\n \n useEffect(() => {\n const options = {...props.options};\n player.current = new Player(playerRef.current, options);\n player.current.on('playing', (data) => {\n player.current.getMuted().then(function(m) {\n setMuted(m); \n }).catch(function(error) {\n console.log(error)\n });\n })\n }, [])\n\n return
\n
\n\n {props.options?.url.includes(\"event\") && muted && }\n
\n\n}\n\nexport default VimeoPlayer;","import React, { useState, useEffect, useRef } from 'react';\nimport { Modal } from 'reactstrap';\n//import styles from './RecorderLinkButtonAndModal.module.css';\n//import classNames from 'classnames/bind';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faDropbox } from '@fortawesome/free-brands-svg-icons';\nimport { faAt, faVideo } from '@fortawesome/free-solid-svg-icons';\n\n//let cx = classNames.bind(styles);\n\nexport default function GuestLoginModal(props) {\n \n const [showModal, setShowModal] = useState(props.show || null);\n const [email, setEmail] = useState(null);\n const [displayName, setDisplayName] = useState(null);\n const [agree, setAgree] = useState(false);\n\n const isValidEmail = (test) => {\n return !!test && test.includes('@');\n }\n\n const getToken = () => {\n fetch(`/api/user/guestkey`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({email: email, username: displayName})\n })\n .then(() => {\n if (props.afterToken) {\n setShowModal(false);\n props.afterToken();\n } else {\n fetch(`/api/user`)\n .then(() => {\n window.location.reload();\n })\n }\n })\n }\n\n const fullContents = <>\n
\n
Access as a guest
\n {props.allowClose && }\n
\n
\n
\n \n Continue as guest\n \n {props.allowClose &&\n props.onClose && props.onClose()}\n >\n Close\n \n }\n \n
\n;\n\n return (\n {fullContents}\n )\n}","import React, { useState, useEffect, useRef } from 'react';\nimport SelectSearch, { fuzzySearch } from 'react-select-search';\n\nconst options = [\n {\n name: \"English\",\n value: \"en\"\n },\n {\n name: \"Afrikaans\",\n value: \"af\"\n },\n {\n name: \"Albanian\",\n value: \"sq\"\n },\n {\n name: \"Amharic\",\n value: \"am\"\n },\n {\n name: \"Arabic\",\n value: \"ar\"\n },\n {\n name: \"Armenian\",\n value: \"hy\"\n },\n {\n name: \"Azerbaijani\",\n value: \"az\"\n },\n {\n name: \"Basque\",\n value: \"eu\"\n },\n {\n name: \"Belarusian\",\n value: \"be\"\n },\n {\n name: \"Bengali\",\n value: \"bn\"\n },\n {\n name: \"Bosnian\",\n value: \"bs\"\n },\n {\n name: \"Bulgarian\",\n value: \"bg\"\n },\n {\n name: \"Catalan\",\n value: \"ca\"\n },\n {\n name: \"Cebuano\",\n value: \"ceb\"\n },\n {\n name: \"Chinese (Simplified)\",\n value: \"zh-CN\"\n },\n {\n name: \"Chinese (Traditional)\",\n value: \"zh-TW\"\n },\n {\n name: \"Corsican\",\n value: \"co\"\n },\n {\n name: \"Croatian\",\n value: \"hr\"\n },\n {\n name: \"Czech\",\n value: \"cs\"\n },\n {\n name: \"Danish\",\n value: \"da\"\n },\n {\n name: \"Dutch\",\n value: \"nl\"\n },\n {\n name: \"Esperanto\",\n value: \"eo\"\n },\n {\n name: \"Estonian\",\n value: \"et\"\n },\n {\n name: \"Finnish\",\n value: \"fi\"\n },\n {\n name: \"French\",\n value: \"fr\"\n },\n {\n name: \"Frisian\",\n value: \"fy\"\n },\n {\n name: \"Galician\",\n value: \"gl\"\n },\n {\n name: \"Georgian\",\n value: \"ka\"\n },\n {\n name: \"German\",\n value: \"de\"\n },\n {\n name: \"Greek\",\n value: \"el\"\n },\n {\n name: \"Gujarati\",\n value: \"gu\"\n },\n {\n name: \"Haitian Creole\",\n value: \"ht\"\n },\n {\n name: \"Hausa\",\n value: \"ha\"\n },\n {\n name: \"Hawaiian\",\n value: \"haw\"\n },\n {\n name: \"Hebrew\",\n value: \"he\"\n },\n {\n name: \"Hindi\",\n value: \"hi\"\n },\n {\n name: \"Hmong\",\n value: \"hmn\"\n },\n {\n name: \"Hungarian\",\n value: \"hu\"\n },\n {\n name: \"Icelandic\",\n value: \"is\"\n },\n {\n name: \"Igbo\",\n value: \"ig\"\n },\n {\n name: \"Indonesian\",\n value: \"id\"\n },\n {\n name: \"Irish\",\n value: \"ga\"\n },\n {\n name: \"Italian\",\n value: \"it\"\n },\n {\n name: \"Japanese\",\n value: \"ja\"\n },\n {\n name: \"Javanese\",\n value: \"jv\"\n },\n {\n name: \"Kannada\",\n value: \"kn\"\n },\n {\n name: \"Kazakh\",\n value: \"kk\"\n },\n {\n name: \"Khmer\",\n value: \"km\"\n },\n {\n name: \"Kinyarwanda\",\n value: \"rw\"\n },\n {\n name: \"Korean\",\n value: \"ko\"\n },\n {\n name: \"Kurdish\",\n value: \"ku\"\n },\n {\n name: \"Kyrgyz\",\n value: \"ky\"\n },\n {\n name: \"Lao\",\n value: \"lo\"\n },\n {\n name: \"Latvian\",\n value: \"lv\"\n },\n {\n name: \"Lithuanian\",\n value: \"lt\"\n },\n {\n name: \"Luxembourgish\",\n value: \"lb\"\n },\n {\n name: \"Macedonian\",\n value: \"mk\"\n },\n {\n name: \"Malagasy\",\n value: \"mg\"\n },\n {\n name: \"Malay\",\n value: \"ms\"\n },\n {\n name: \"Malayalam\",\n value: \"ml\"\n },\n {\n name: \"Maltese\",\n value: \"mt\"\n },\n {\n name: \"Maori\",\n value: \"mi\"\n },\n {\n name: \"Marathi\",\n value: \"mr\"\n },\n {\n name: \"Mongolian\",\n value: \"mn\"\n },\n {\n name: \"Myanmar (Burmese)\",\n value: \"my\"\n },\n {\n name: \"Nepali\",\n value: \"ne\"\n },\n {\n name: \"Norwegian\",\n value: \"no\"\n },\n {\n name: \"Nyanja (Chichewa)\",\n value: \"ny\"\n },\n {\n name: \"Odia (Oriya)\",\n value: \"or\"\n },\n {\n name: \"Pashto\",\n value: \"ps\"\n },\n {\n name: \"Persian\",\n value: \"fa\"\n },\n {\n name: \"Polish\",\n value: \"pl\"\n },\n {\n name: \"Portuguese (Portugal, Brazil)\",\n value: \"pt\"\n },\n {\n name: \"Punjabi\",\n value: \"pa\"\n },\n {\n name: \"Romanian\",\n value: \"ro\"\n },\n {\n name: \"Russian\",\n value: \"ru\"\n },\n {\n name: \"Samoan\",\n value: \"sm\"\n },\n {\n name: \"Scots Gaelic\",\n value: \"gd\"\n },\n {\n name: \"Serbian\",\n value: \"sr\"\n },\n {\n name: \"Sesotho\",\n value: \"st\"\n },\n {\n name: \"Shona\",\n value: \"sn\"\n },\n {\n name: \"Sindhi\",\n value: \"sd\"\n },\n {\n name: \"Sinhala (Sinhalese)\",\n value: \"si\"\n },\n {\n name: \"Slovak\",\n value: \"sk\"\n },\n {\n name: \"Slovenian\",\n value: \"sl\"\n },\n {\n name: \"Somali\",\n value: \"so\"\n },\n {\n name: \"Spanish\",\n value: \"es\"\n },\n {\n name: \"Sundanese\",\n value: \"su\"\n },\n {\n name: \"Swahili\",\n value: \"sw\"\n },\n {\n name: \"Swedish\",\n value: \"sv\"\n },\n {\n name: \"Tagalog (Filipino)\",\n value: \"tl\"\n },\n {\n name: \"Tajik\",\n value: \"tg\"\n },\n {\n name: \"Tamil\",\n value: \"ta\"\n },\n {\n name: \"Tatar\",\n value: \"tt\"\n },\n {\n name: \"Telugu\",\n value: \"te\"\n },\n {\n name: \"Thai\",\n value: \"th\"\n },\n {\n name: \"Turkish\",\n value: \"tr\"\n },\n {\n name: \"Turkmen\",\n value: \"tk\"\n },\n {\n name: \"Ukrainian\",\n value: \"uk\"\n },\n {\n name: \"Urdu\",\n value: \"ur\"\n },\n {\n name: \"Uyghur\",\n value: \"ug\"\n },\n {\n name: \"Uzbek\",\n value: \"uz\"\n },\n {\n name: \"Vietnamese\",\n value: \"vi\"\n },\n {\n name: \"Welsh\",\n value: \"cy\"\n },\n {\n name: \"Xhosa\",\n value: \"xh\"\n },\n {\n name: \"Yiddish\",\n value: \"yi\"\n },\n {\n name: \"Yoruba\",\n value: \"yo\"\n },\n {\n name: \"Zulu\",\n value: \"zu\"\n }\n]\n\nexport function langName(lang) {\n return options.find(l => l.value == lang)?.name || null;\n}\n\nexport default function LanguageSelect(props) {\n\n const [value, setValue] = useState(null);\n\n useEffect(() => {\n value && props.onChanges(value);\n }, [value])\n\n return (\n \n )\n}","import React, { useState, useEffect, useRef } from 'react';\nimport { FormText, Modal } from 'reactstrap';\nimport {langName} from '../collaborate/LanguageSelect'\n\nexport default function CorrectTranslationModal(props) {\n \n const [translation, setTranslation] = useState(props.translation.translatedText);\n\n const save = (e) => {\n if (translation == props.translation.translatedText){\n props.saveAndClose();\n } else {\n props.saveAndClose(translation);\n }\n }\n const close = (e) => {\n props.saveAndClose();\n }\n\n const fullContents = <>\n
\n
Correct This Translation
\n \n
\n
\n

{langName(props.item.language || 'en')}: {props.item.questionText}

\n
\n \n setTranslation(e.target.value)}\n />\n
\n
\n
\n \n Save\n \n \n Cancel\n \n
\n;\n\n return (\n {fullContents}\n )\n}","import React, { useState, useEffect, useRef } from 'react';\nimport styles from './WCDHeader.module.css';\nimport classNames from 'classnames/bind';\n\nlet cx = classNames.bind(styles);\n\nexport default function WCDHeader(props) {\n\n return (\n
\n
\n

Water Climate Discussion

\n
\n
\n )\n}","import React from 'react';\nimport cx from 'classnames';\n\nexport default function renderTreeSearchOption(props, option, snapshot, className) {\n\n if (!option.value) return null;\n\n let subtext = \"\";\n option.question.parent && !option.translated && (subtext += `Under: ${option.question.parent} `);\n\n return \n}","import React, { useState, useEffect, useRef } from 'react';\nimport SelectSearch, { fuzzySearch } from 'react-select-search';\nimport renderTreeSearchOption from './renderTreeSearchOption';\nimport Fuse from 'fuse.js';\n\nexport default function TreeSearch(props) {\n\n const [value, setValue] = useState(null);\n\n useEffect(() => {\n value && props.onChanges(value);\n setValue(null);\n }, [value])\n\n return (\n {\n return (value) => {\n if (!value.length) {\n return options;\n }\n return options.map(option => {\n if (!option.type) return option;\n const fuse = new Fuse(option.items, {\n keys: [\"name\", \"value\"],\n threshold: 0.3\n });\n return {\n ...option,\n items: fuse.search(value)\n };\n })\n };\n }}\n renderOption={renderTreeSearchOption}\n />\n )\n}","import React, { useEffect, useRef, useState } from 'react';\nfunction YouTubePlayer(props) {\n \n const playerRef = useRef(null)\n const player = useRef(null);\n const [muted, setMuted] = useState(true);\n\n return (\n
\n \n
\n )\n}\n\nexport default YouTubePlayer;","import React, { useState, useEffect } from 'react';\nimport { useParams } from 'react-router';\nimport styles from './QuestionPlayer.css'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheck, faPaperPlane, faTimes } from '@fortawesome/free-solid-svg-icons';\n\nfunction QuestionPlayer(props) {\n\n // the \"Response\" we will deliver to the server and the admin\n // Initially set with the questionID and the username but nothing else\n const [questionResponse, setQuestionResponse] = useState({question: props.question.id, username: props.username});\n // Whether we've yet sent an answer. Used only to display confirmation messages\n const [sent, setSent] = useState(false);\n\n\n // Current method of sending responses using a POST request\n useEffect(() => {\n console.log(questionResponse);\n if (questionResponse.needsUpdate) {\n fetch(`/api/quizquestion/${props.question.id}/response`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(questionResponse)\n })\n .then(() =>\n {setQuestionResponse(prev=> ({...prev, needsUpdate: false}));\n setSent(true)}\n )\n }\n },[questionResponse]);\n\n\n\n // \"questionResponse?\" ensures that the initial response has been set up.\n return (questionResponse?\n
\n
\n {/* Main question text */}\n

{props.question.questionText}

\n {/* Images not currently supported on this app, can be skipped */}\n {props.question.image &&\n \n }\n
\n {/* The various ways to respons to the question */}\n
\n {/* If a text question */}\n {props.question.type == \"text\" &&\n <>\n {/* Essentially a text box with a send button. */}\n
\n {setSent(false); let answer = e.target.value; setQuestionResponse({...questionResponse, answer})}}\n // Set needsUpdate if the enter key is pressed, meaning this answer will get sent by the useEffect\n onKeyUp={e => {if (e.key !== \"Enter\") return; setQuestionResponse({...questionResponse, needsUpdate: true}); e.preventDefault();}}\n placeholder=\"Enter your answer\"\n // If revealAnswer is set, then this input is greyed out\n disabled={props.revealAnswer}\n />\n
\n setQuestionResponse({...questionResponse, needsUpdate: true})}\n >\n \n \n
\n
\n {/* If revealAnswer is set */}\n {props.revealAnswer ?\n \n {/* If, with whitespace trimmed and set to lowercase, this answer matches one of the correct answers sent back, show a tick, else show a cross */}\n {questionResponse.answer && props.question.answers.map(a => a.trim().toLowerCase()).includes(questionResponse.answer.trim().toLowerCase())?\n <> Correct\n :\n <> Incorrect.\n {/* If wrong, show all the right answer options, comma separated (say 'answers' instead of 'answer' if there are multiple) */}\n Correct answer{props.question.answers.length > 1 && 's'}: {props.question.answers.join(', ')}\n \n }\n \n :\n // Add this message below the textbox if the current answer has been submitted\n sent && questionResponse.answer && Answer submitted. You may still change your answer\n }\n \n \n }\n {/* if a Multi-choice question */}\n {props.question.type == \"mcq\" &&\n
\n {/* Map each possible answer to a button */}\n {props.question.mcqOptions.map(o => {\n return (\n setQuestionResponse({...questionResponse, answer: o, needsUpdate: true})}\n >\n {o} {props.revealAnswer && props.question?.answers?.includes(o) &&\n // Add a tick if the answer is revealed and this is the right one.\n \n }\n \n )\n })}\n
\n }\n
\n
\n // Potentially never hit: If no questionresponse is set, show loading text.\n :

Loading...

);\n\n}\n\nexport default QuestionPlayer;","import React, { Component, useContext } from 'react';\n\n\nimport {\n HubConnectionBuilder,\n LogLevel,\n HubConnectionState\n} from '@microsoft/signalr';\n\nimport cx from 'classnames'\nimport ReactMarkdown from 'react-markdown';\n\nimport { faPaperPlane, faPlus, faCheckCircle, faExclamationCircle,\n faLayerGroup, faCut, faPaste, faChessPawn, faChessKing,\n faBullseye, faLevelUpAlt, faRedo, faCommentDots,\n faVideoSlash, faMicrophoneSlash, faVideo, faSortDown, faMinus, faExchangeAlt, faExternalLinkSquareAlt, faThumbsUp as faSolidThumbsUp, faPlay, faChevronRight, faChevronCircleRight, faLanguage, faSearch, faLevelDownAlt, faClipboard, faCaretDown, faCaretUp }\n from \"@fortawesome/free-solid-svg-icons\";\nimport { faTrashAlt, faThumbsUp as faRegularThumbsUp } from \"@fortawesome/free-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { ConsoleLogger } from '@microsoft/signalr/dist/esm/Utils';\nimport { SliderQuestion } from '../survey/SliderQuestion';\nimport CommentViewer from './CommentViewer';\nimport { Redirect } from 'react-router';\nimport Diff from 'text-diff';\nimport SelectSearch, { fuzzySearch } from 'react-select-search';\nimport './TreeSearch.css';\nimport VimeoPlayer from '../vimeo/VimeoPlayer';\nimport ReactTooltip from 'react-tooltip';\nimport GuestLoginModal from '../auth/GuestLoginModal';\nimport CorrectTranslationModal from '../translate/CorrectTranslationModal';\nimport WCDHeader from '../branding/WCDHeader';\nimport TreeLink from '../markdown/TreeLink';\nimport TreeSearch from './TreeSearch';\nimport LanguageSelect, { langName } from './LanguageSelect';\nimport { Alert } from 'reactstrap';\nimport YouTubePlayer from '../vimeo/YouTubePlayer';\nimport * as microsoftTeams from \"@microsoft/teams-js\";\nimport QuestionPlayer from '../quiz/QuestionPlayer';\n\n\nexport class SharedTree extends Component {\n static displayName = SharedTree.name;\n\n constructor(props) {\n super(props);\n this.handleNewItem = this.handleNewItem.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleRenameChange = this.handleRenameChange.bind(this);\n this.handleRenameQuestion = this.handleRenameQuestion.bind(this);\n this.handleSelectItem = this.handleSelectItem.bind(this);\n this.handleSelectEditModeItem = this.handleSelectEditModeItem.bind(this);\n this.handleDeleteItem = this.handleDeleteItem.bind(this);\n this.handleModifyItem = this.handleModifyItem.bind(this);\n this.handleViewComments = this.handleViewComments.bind(this);\n this.handleVote = this.handleVote.bind(this);\n this.handleCutItem = this.handleCutItem.bind(this);\n this.handlePasteItem = this.handlePasteItem.bind(this);\n this.handleUpdateViewRoot = this.handleUpdateViewRoot.bind(this);\n this.handleSliderChange = this.handleSliderChange.bind(this);\n this.handleSlideStop = this.handleSlideStop.bind(this);\n this.createConnection = this.createConnection.bind(this);\n this.renderQuestions = this.renderQuestions.bind(this);\n this.populateSurveyData = this.populateSurveyData.bind(this);\n this.populateResponseData = this.populateResponseData.bind(this);\n this.populateUserData = this.populateUserData.bind(this);\n this.switchModes = this.switchModes.bind(this);\n this.getQuestionAncestors = this.getQuestionAncestors.bind(this);\n this.ensureSubscribed = this.ensureSubscribed.bind(this);\n this.handleRankUser = this.handleRankUser.bind(this);\n this.handleRefreshUser = this.handleRefreshUser.bind(this);\n this.handleUserVisible = this.handleUserVisible.bind(this);\n this.handleAllocateRooms = this.handleAllocateRooms.bind(this);\n this.handlePullToHub = this.handlePullToHub.bind(this);\n this.handleRoomOpenStatus = this.handleRoomOpenStatus.bind(this);\n this.handleVideoClipStatus = this.handleVideoClipStatus.bind(this);\n this.handleChangeTreeMode = this.handleChangeTreeMode.bind(this);\n this.handleVideoClipClose = this.handleVideoClipClose.bind(this);\n this.handleRedirectAll = this.handleRedirectAll.bind(this);\n this.handleTwistyClick = this.handleTwistyClick.bind(this);\n this.handleLinkToQuestion = this.handleLinkToQuestion.bind(this);\n this.handleOpenTranslateModal = this.handleOpenTranslateModal.bind(this);\n this.handleCloseTranslateModal = this.handleCloseTranslateModal.bind(this);\n }\n\n componentDidMount() {\n console.log(\"mounted\");\n const params = new URLSearchParams(window.location.search);\n const eventUrl = params.get('event')\n const treeOnly = params.get('tree-only')\n const branding = params.get('branding')\n const allowDark = params.get('dark')\n microsoftTeams.initialize();\n microsoftTeams.getContext(context => {\n if (context) {\n fetch(`/api/user/teamskey`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({email: context.loginHint, username: context.loginHint})\n })\n .then((response) => {\n if (response.ok) {\n window.location.reload();\n }\n })\n }\n })\n this.setState({\n newItemUnder: -1,\n editModeItem: -1,\n newItemContent: \"\",\n newItemType: null,\n newItemMaxLength: 50,\n viewingComments: null,\n newCommentContent: \"\",\n editModeRename: \"\",\n cutting: null,\n userList: [],\n redirect: null,\n userListOpen: false,\n videoClipOpen: false,\n callEndpoint: \"https://interactive.andeye.com:9443\",\n eventUrl,\n errors: [],\n showGuestModal: false,\n onGuestModalLogin: null,\n branding,\n language:null,\n viewRootOverride: false,\n openTranslationModal: null,\n searchSuggestionsOnly: false,\n allowDark,\n treeOnlyParam: (treeOnly != null)}, () => {\n this.populateUserData(this.createConnection);\n this.populateRoomData();\n \n });\n }\n\n componentDidUpdate() {\n \n ReactTooltip.rebuild();\n }\n\n\n createConnection() {\n const hubConnection = new HubConnectionBuilder()\n .withUrl('/controlHub')\n .withAutomaticReconnect([0, 3000, 5000, 10000, 15000, 30000])\n .configureLogging(LogLevel.Information)\n .build();\n this.setState({hubConnection: hubConnection}, () => {\n this.state.hubConnection\n .start()\n .then(() => {\n console.log(\"Connected to SignalR\");\n if (this.state.eventUrl) {\n this.state?.user && this.state.hubConnection.\n invoke('eventArrival', this.state.eventUrl)\n .catch(err => this.addError({type: \"warning\", header: \"Real-time connection\", message: `There was an error while arriving in this room.`}));\n }\n this.forceUpdate();\n console.log(\"ALLOCATE\");\n this.allocateMeIfRequired();\n })\n .catch(err => this.addError({type: \"warning\", header: \"Real-time connection\", message: \"We encountered a problem establishing a real-time connection to the server\"}));\n this.state.hubConnection.onreconnected(() => {\n this.populateRoomData();\n })\n this.state.hubConnection.on('newQuestion', (id, receivedQuestion) => {\n if (id == this.state?.survey?.id) {\n const survey = this.state.survey;\n survey.questions.push(receivedQuestion)\n this.setState({ survey });\n }\n });\n this.state.hubConnection.on('deleteQuestion', (id, receivedQuestion) => {\n if (id == this.state?.survey?.id) {\n const survey = this.state.survey;\n survey.questions = survey.questions.filter(q => q.questionText !== receivedQuestion.questionText);\n this.setState({ survey });\n }\n });\n this.state.hubConnection.on('modifyQuestion', (id, receivedQuestion) => {\n if (id == this.state?.survey?.id) {\n const survey = this.state.survey;\n survey.questions = survey.questions.filter(q => q.questionText !== receivedQuestion.questionText);\n survey.questions.push(receivedQuestion);\n this.setState({ survey });\n }\n });\n this.state.hubConnection.on('renameQuestion', (id, oldQuestionText, newQuestionText) => {\n if (id == this.state?.survey?.id) {\n const survey = this.state.survey;\n survey.questions = this.state.survey.questions.map(q => {\n if (q.questionText == oldQuestionText){\n return {...q, questionText: newQuestionText, translations: null}\n } else if (q.parent == oldQuestionText) {\n return {...q, parent: newQuestionText}\n } else {\n return q;\n }\n });\n const comments = this.state.comments.map(c => {\n if (c.location == oldQuestionText){\n return {...c, location: newQuestionText}\n } else {\n return c;\n }\n })\n this.setState({ survey, comments });\n }\n });\n this.state.hubConnection.on('changeStatus', (id, status) => {\n if (id == this.state?.room?.id) {\n const room = this.state.room;\n room.status = status;\n this.setState({ room }, () => {\n if (this.state.room.status == \"ranking\") {\n this.populateResponseData();\n }\n });\n }\n });\n this.state.hubConnection.on('changeOpenStatus', (id, isOpen) => {\n if (id == this.state?.room?.id) {\n const room = this.state.room;\n room.isOpen = isOpen;\n this.setState({ room }, () => {\n console.log(this.state.room)\n });\n }\n });\n this.state.hubConnection.on('modifyRoom', (id, room) => {\n if (id == this.state?.room?.id) {\n this.setState(prevState => ({ room, viewTreeUser: (room.treeMode == 'show' && true) || (room.treeMode == 'hide' && false) || prevState.viewTreeUser, revealAnswer: false }), () => {\n this.populateQuizQuestion();\n });\n }\n });\n this.state.hubConnection.on('changeVideoOpenStatus', (id, isOpen) => {\n if (id == this.state?.room?.id) {\n this.setState({ videoClipOpen: isOpen });\n }\n });\n this.state.hubConnection.on('changeTreeMode', (id, mode) => {\n if (id == this.state?.room?.id) {\n this.setState({ room: {...this.state.room, treeMode: mode} });\n }\n });\n this.state.hubConnection.on('updateAssignedMods', (roomId, assignedMods) => {\n if (roomId == this.state?.room?.id) {\n const room = this.state.room;\n room.assignedMods = assignedMods;\n this.setState({ room });\n }\n });\n this.state.hubConnection.on('updateViewList', (roomId, visibleUsers) => {\n if (roomId == this.state?.room?.id) {\n const room = this.state.room;\n room.visibleUsers = visibleUsers;\n this.setState({ room });\n }\n });\n this.state.hubConnection.on('changeViewRoot', (id, viewRoot) => {\n if (id == this.state?.room?.id) {\n const room = this.state.room;\n room.viewRoot = viewRoot;\n this.setState({ room }, () => this.forceUpdate());\n }\n });\n this.state.hubConnection.on('moveRoom', (roomId, userOverride) => {\n if (userOverride && this.state.user?.redirectOverride) {\n window.top.location = this.state.user.redirectOverride;\n }\n else {\n let redirect = `/sharedtree/${roomId}`\n // if (window.top.location != window.self.location) {\n window.top.location = redirect;\n // }\n // this.setState({ redirect });\n }\n });\n this.state.hubConnection.on('redirectTo', (roomId, url) => {\n if (roomId == this.state?.room?.id) {\n setTimeout(() => {\n window.top.location = url;\n }, Math.random()*20000);\n }\n });\n this.state.hubConnection.on('userList', (userList) => {\n this.setState({ userList });\n console.log(userList);\n });\n this.state.hubConnection.on('userUpdate', (user) => {\n this.setState({ user });\n if (user.rank == \"mod\") {\n this.state.hubConnection\n .invoke(\"confirmInModGroup\");\n }\n });\n this.state.hubConnection.on('refreshPage', () => {\n window.location.reload();\n });\n this.state.hubConnection.on('surveyUpdate', (id, survey) => {\n if (id == this.state?.room?.id) {\n this.setState({ survey });\n }\n });\n this.state.hubConnection.on('newComment', (docId, comment) => {\n if (docId == this.state?.survey?.id) {\n let comments = this.state.comments;\n comments.push(comment);\n this.setState({comments});\n }\n });\n this.state.hubConnection.on('updateComment', (comment) => {\n if (comment.document == this.state?.survey?.id) {\n // Grab the comment list and update the existing one\n let comments = this.state.comments.map((c) => {\n return (c.id == comment.id\n ? comment\n : c)\n });\n this.setState({comments});\n }\n });\n this.state.hubConnection.on('deleteComment', (id) => {\n console.log(this.state.comments);\n let comments = this.state.comments;\n comments = comments.filter(c => c.id !== id);\n console.log(comments)\n this.setState({ comments }, () => console.log(this.state.comments));\n });\n this.state.hubConnection.on('videoClip', (id, status) => {\n if (id == this.state?.room?.id) {\n this.setState({ videoClip: status == true });\n }\n });\n this.state.hubConnection.on('updateQuizQuestion', (updatedQuestion) => {\n if (this.state?.activeQuizQuestion?.id == updatedQuestion.id) {\n this.setState({activeQuizQuestion: updatedQuestion});\n }\n });\n this.state.hubConnection.on('revealAnswer', (roomId) => {\n if (roomId == this.state?.room?.id) {\n this.setState({revealAnswer: true});\n }\n });\n });\n } \n\n allocateMeIfRequired() {\n if (this.state?.room?.status == \"hub\" && this.state.room.onAssignment && this.state.hubConnection?.state == HubConnectionState.Connected) {\n this.state?.user && this.state.hubConnection.invoke(\"allocateMe\", this.state.room.event);\n } \n }\n\n clearErrors() {\n this.setState({errors: []});\n }\n\n addError(e) {\n this.setState({errors: [...this.state.errors, e]})\n }\n\n ensureSubscribed(group) {\n this.state.hubConnection.invoke('subscribe', group);\n }\n\n readOnly() {\n return this.state?.room?.readOnlyMode == true || !this.state?.user\n }\n\n treeMode() {\n if (this.state?.treeOnlyParam) return 'treeOnly';\n return this.state?.room?.treeMode || 'show';\n }\n\n isMod() {\n return (this.state?.user?.rank == \"mod\" || this.state?.room?.assignedMods?.includes(this.state?.user?.username));\n }\n\n\n handleNewItem(event) {\n event.preventDefault();\n console.log(this.state.newItemUnder);\n console.log(this.state.newItemContent);\n if (!this.state.newItemContent) return false;\n if (this.state.newItemUnder == -1) return false;\n if (this.state.survey.questions.filter(q => q.questionText == this.state.newItemContent).length) return false;\n const newItem = {\n parent: this.state.newItemUnder,\n questionText: `${this.state.newItemContent}`,\n type: this.state.newItemType || this.state.room.status,\n language: this.state?.language || 'en',\n sortPriority: (Math.min(...this.state.survey.questions.filter(q=>q.parent == this.state.newItemUnder)?.map(q=>q.sortPriority), 0) - 1e6)\n }\n this.setState({newItemUnder: -1, newItemContent: \"\", newItemType: null});\n this.state.hubConnection\n .invoke('newQuestion', this.state.survey.id, newItem)\n .catch(err => console.error(err));\n }\n\n handleInputChange(event) {\n this.setState({newItemContent: event.target.value});\n }\n handleRenameChange(event) {\n event.currentTarget.style.height = \"\";event.currentTarget.style.height = (event.currentTarget.scrollHeight+3) + \"px\"\n this.setState({editModeRename: event.target.value.replaceAll('\\n',' ')});\n }\n \n switchModes(event) {\n event.preventDefault();\n this.state.hubConnection\n .invoke('changeStatus', this.state.room.id, event.currentTarget.dataset.mode)\n }\n\n handleTwistyClick(e, showOverride, questionText) {\n const survey = this.state.survey;\n const thisQuestionText = questionText || e?.currentTarget.dataset.question;\n const open = showOverride || e.currentTarget.dataset.open == \"true\";\n survey.questions = survey.questions.map(q => {\n if (q.questionText == thisQuestionText) {\n return {...q, twistedOpen: open}\n } else {\n return q;\n }\n });\n this.setState({ survey, linkHighlight: null });\n }\n\n handleLinkToQuestion(questionText) {\n let openers = [];\n let nextQuestion = questionText;\n while (nextQuestion != null) {\n openers.push(nextQuestion);\n nextQuestion = this.state?.survey?.questions?.find(q => q.questionText == nextQuestion)?.parent;\n }\n const survey = this.state.survey;\n console.log(openers)\n survey.questions = survey.questions.map(q => {\n if (openers.includes(q.questionText)) {\n \n console.log(q.questionText);\n return {...q, twistedOpen: true}\n } else {\n return q;\n }\n });\n console.log(survey);\n console.log(questionText);\n let viewRootOverride = (this.state.room?.viewRoot && !openers.includes(this.state.room.viewRoot))\n this.setState({survey, linkHighlight: questionText, viewRootOverride}, () => {\n setTimeout(() => {\n document.getElementById('linked').scrollIntoView(true);\n }, 100);\n })\n \n }\n\n handleSelectItem(event, _dataset) {\n const dataset = event?.currentTarget?.dataset || _dataset;\n console.log(dataset);\n if (!this.state?.user) {\n this.setState({\n showGuestModal: true,\n onGuestModalLogin: () => {\n this.handleSelectItem(null, dataset);\n }\n });\n return;\n }\n if (dataset.question === this.state.newItemUnder) {\n this.setState({\n newItemUnder: -1,\n newItemContent: \"\",\n editModeItem: null,\n cutting: null,\n viewingComments: null,\n newCommentContent: \"\",\n });\n } else {\n this.state.room?.enableTwisties && this.handleTwistyClick(null, true, dataset.question);\n let newItemContent = \"\";\n if (dataset.nodetype == 'amendment') {\n newItemContent = dataset.question;\n }\n this.setState({\n newItemUnder: dataset.question || null,\n newItemContent,\n editModeItem: null,\n newItemType: this.state.room.status == \"document\"? dataset.nodetype : null,\n cutting: null,\n viewingComments: null,\n newCommentContent: \"\",\n });\n }\n }\n\n handleSelectEditModeItem(event) {\n var question = this.state.survey.questions.find(q => q.questionText == event.currentTarget.dataset.question);\n console.log(question);\n\n if (this.isMod() || (question.author != null && question.author == this.state.user?.username && (!this.readOnly() || question.type=='suggestion')))\n this.setState({\n editModeItem: event.currentTarget.dataset.question || null,\n newItemUnder: -1,\n cutting: null,\n viewingComments: null,\n newCommentContent: \"\",\n editModeRename: question.questionText\n });\n }\n\n handleCutItem(event) {\n this.setState({\n cutting: event.currentTarget.dataset.question,\n viewingComments: null,\n newCommentContent: \"\",\n });\n }\n\n handleViewComments(event) {\n if (event.currentTarget.dataset.question === this.state.viewingComments) {\n this.setState({\n newItemUnder: -1,\n newItemContent: \"\",\n editModeItem: null,\n cutting: null,\n viewingComments: null,\n newCommentContent: \"\",\n });\n } else {\n this.setState({\n newItemUnder: -1,\n editModeItem: null,\n cutting: null,\n viewingComments: event.currentTarget.dataset.question\n });\n }\n }\n\n handleVote(e) {\n const myComment = this.state.comments.find(c =>\n c.author == this.state.user.username && c.location == e.currentTarget.dataset.question && c.content.startsWith('_'));\n e.preventDefault();\n if (myComment) {\n this.state.hubConnection\n .invoke('deleteComment', this.state.room?.id, myComment.id)\n }\n if (!myComment || myComment.content !== e.currentTarget.dataset.vote) {\n this.state.hubConnection\n .invoke('newComment', this.state.survey.id, {\n location: e.currentTarget.dataset.question,\n content: e.currentTarget.dataset.vote\n });\n }\n\n }\n\n handlePasteItem(event) {\n event.preventDefault();\n const modifyItem = {\n questionText: this.state.cutting\n };\n modifyItem.parent = event.currentTarget.dataset.parent || null;\n if (event.currentTarget.dataset.above) {\n console.log(\"pasting above\");\n let aboveSortPri = this.state.survey.questions.find(q => q.questionText == event.currentTarget.dataset.above).sortPriority;\n let nextSortPri = Math.min(...this.state.survey.questions.filter(q=>q.parent == modifyItem.parent && q.sortPriority > aboveSortPri)?.map(q=>q.sortPriority), aboveSortPri + 1e6);\n \n console.log(aboveSortPri);\n \n console.log(nextSortPri);\n modifyItem.sortPriority = (aboveSortPri+nextSortPri)/2;\n } else if (event.currentTarget.dataset.below) {\n let belowSortPri = this.state.survey.questions.find(q => q.questionText == event.currentTarget.dataset.below).sortPriority;\n let nextSortPri = Math.max(...this.state.survey.questions.filter(q=>q.parent == modifyItem.parent && q.sortPriority < belowSortPri)?.map(q=>q.sortPriority), belowSortPri - 1e6);\n modifyItem.sortPriority = (belowSortPri+nextSortPri)/2;\n } else {\n modifyItem.sortPriority = (Math.min(...this.state.survey.questions.filter(q=>q.parent == modifyItem.parent)?.map(q=>q.sortPriority), 0) - 1e6)\n }\n console.log(modifyItem);\n this.state.hubConnection\n .invoke('modifyQuestion', this.state.survey.id, this.state.room?.id, modifyItem);\n this.setState({\n cutting: null\n })\n if(this.state.editModeRename == this.state.editModeItem) {\n this.setState({\n editModeItem: null\n })\n }\n }\n\n handleDeleteItem(event) {\n event.preventDefault();\n const deleteItem = {\n questionText: event.currentTarget.dataset.question\n };\n\n this.state.hubConnection\n .invoke('deleteQuestion', this.state.survey.id, this.state.room?.id, deleteItem);\n }\n\n getQuestionAncestors(questionText) {\n let question = this.state.survey.questions\n ?.find(q => q.questionText == questionText);\n if (!question.parent) return [];\n return [...this.getQuestionAncestors(question.parent), question.parent];\n }\n\n handleModifyItem(event) {\n event.preventDefault();\n const modifyItem = {\n questionText: event.currentTarget.dataset.question,\n parent: \"UNCHANGED\"\n };\n if (event.currentTarget.dataset.nodetype) {\n modifyItem.type = event.currentTarget.dataset.nodetype;\n }\n \n\n this.state.hubConnection\n .invoke('modifyQuestion', this.state.survey.id, this.state.room?.id, modifyItem);\n }\n\n handleRankUser(event) {\n event.preventDefault();\n this.state.hubConnection\n .invoke('rankUser', event.currentTarget.dataset.user, event.currentTarget.dataset.rank);\n }\n\n handleRefreshUser(event) {\n event.preventDefault();\n this.state.hubConnection\n .invoke('refreshUser', event.currentTarget.dataset.user);\n }\n\n handleUserVisible(event) {\n event.preventDefault();\n console.log(event.currentTarget.dataset.user);\n console.log(event.currentTarget.dataset.show);\n this.state.hubConnection\n .invoke('userVisible',\n this.state.room.id,\n event.currentTarget.dataset.user,\n event.currentTarget.dataset.show === \"true\");\n }\n\n handleUpdateViewRoot(event) {\n event.preventDefault();\n this.setState({viewRootOverride: false});\n this.state.hubConnection\n .invoke('changeViewRoot', this.state.room.id, event.currentTarget.dataset.root)\n }\n handleRenameQuestion(event) {\n event.preventDefault();\n\n\n if (this.state.editModeRename && this.state.editModeRename.length\n && !(this.state.editModeRename != this.state.editModeItem && this.state.survey.questions?.find(q => q.questionText == this.state.editModeRename))) {\n this.state.hubConnection\n .invoke('renameQuestion', this.state.survey.id, this.state.editModeItem, this.state.editModeRename);\n this.setState({\n newItemUnder: -1,\n newItemContent: \"\",\n editModeItem: null,\n cutting: null,\n viewingComments: null,\n newCommentContent: \"\",\n });\n }\n\n }\n \n handleAllocateRooms(event) {\n event.preventDefault();\n this.state.hubConnection\n .invoke('allocateToGroups', this.state.room.event);\n }\n\n handlePullToHub(event) {\n event.preventDefault();\n this.state.hubConnection\n .invoke('returnToHub', this.state.room.event);\n }\n \n handleSliderChange(questionText, value) {\n let response = this.state.response;\n response.questionResponses.find(q => q.questionText == questionText).response = value.toString();\n this.setState({ response }, async () => {\n const fetchResponse = await fetch(`/api/surveyresponse/${response.id}`, {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(response)\n })\n })\n \n this.forceUpdate();\n }\n \n handleSlideStop(questionText, value) {\n console.log(`${questionText}: ${value}`);\n }\n\n handleRoomOpenStatus(event) {\n console.log(event.currentTarget.dataset.open);\n this.state.hubConnection\n .invoke('changeOpenStatus', this.state.room.id, (event.currentTarget.dataset.open == 'true'))\n }\n\n handleVideoClipStatus(event) {\n console.log(event.currentTarget.dataset.open);\n this.state.hubConnection\n .invoke('changeVideoOpenStatus', this.state.room.id, (event.currentTarget.dataset.open == 'true'))\n }\n\n handleVideoClipClose(event) {\n this.setState({ videoClipOpen: false });\n }\n\n handleChangeTreeMode(event) {\n this.state.hubConnection\n .invoke('changeTreeMode', this.state.room.id, (event.currentTarget.dataset.mode))\n }\n\n handleRedirectAll(event) {\n console.log(event.currentTarget.dataset.open);\n this.state.hubConnection\n .invoke('RedirectAll', this.state.room.id, '/matcher/61099db59a86841439a48c58')\n }\n\n handleOpenTranslateModal(event, questionTextOverride) {\n let questionText = questionTextOverride || event.currentTarget.dataset.question;\n if (!this.state?.user) {\n this.setState({\n showGuestModal: true,\n onGuestModalLogin: () => {\n this.handleOpenTranslateModal(null, questionText);\n }\n });\n return;\n }\n this.setState({openTranslationModal: this.state?.survey?.questions?.find(q => q.questionText == questionText)});\n }\n\n handleCloseTranslateModal(translatedText) {\n if (translatedText) {\n const translation = {\n translatedText,\n language: (this.state.language || 'en')\n };\n this.state.hubConnection\n .invoke('newTranslation', this.state?.survey?.id, this.state.openTranslationModal.questionText, translation);\n // this.setState(prevState => ({\n // ...prevState,\n // openTranslationModal: null,\n // survey: {\n // ...prevState.survey,\n // questions: prevState.survey.questions.map(q => {\n // if (q.questionText == prevState.openTranslationModal){\n // return ({\n // ...q,\n // translations: q.translations.map(tr => {\n // if (tr.language == prevState.language) {\n // return ({\n // ...tr,\n // translatedText: translatedText\n // })\n // } else {\n // return tr;\n // }\n // })\n // })\n // } else {\n // return q;\n // }\n // })\n // }\n // }));\n }\n // else {\n // this.setState({openTranslationModal: null})\n // }\n this.setState({openTranslationModal: null})\n }\n\n // reSortItems() {\n\n // let votes = ((b.upvotes?.length || 0) - (b.downvotes?.length || 0)) - ((a.upvotes?.length || 0) - (a.downvotes?.length || 0))\n // if (votes != 0) return votes;\n // }\n\n renderQuestions(parentQuestion, renderParent) {\n let elements = [];\n if (!this.state.survey) return null;\n this.state.survey.questions\n .filter(q => (renderParent? q.questionText == parentQuestion : q.parent == parentQuestion))\n .map(q => {\n if (['document','vanilla'].includes(this.state.room.status) || q.type=='suggestion') {\n \n q.upvotes = this.state.comments?.filter(c => (c.location == q.questionText && c.content == '_upvote'));\n q.downvotes = this.state.comments?.filter(c => (c.location == q.questionText && c.content == '_downvote'));\n }\n return q\n })\n .sort((a,b) => {\n if (this.state.room.status == 'document') {\n const typeOrder = ['document', 'amendment','solution','issue','suggestion'];\n const typeOrderScore = typeOrder.indexOf(a.type) - typeOrder.indexOf(b.type);\n if (typeOrderScore != 0) return typeOrderScore;\n }\n\n // Sort by score\n if (b.sortPriority > a.sortPriority) return 1;\n if (b.sortPriority < a.sortPriority) return -1;\n \n if (b.created < a.created) return 1;\n if (b.created > a.created) return -1;\n\n return b.questionText < a.questionText ? 1 : -1\n })\n .map(q => {\n let amendment = null;\n if (q.type === 'amendment' && q.parent) {\n const diff = new Diff();\n const textDiff = diff.main(q.parent, q.questionText);\n diff.cleanupSemantic(textDiff);\n amendment = ;\n console.log(amendment);\n }\n let qr = this.state.response?.questionResponses?\n this.state.response.questionResponses.find(thisqr => thisqr.questionText == q.questionText)\n :null;\n // Checks before rendering this item, currently disabled as suggestions were the only thing filtered out and now they're visible.\n if (true /* q.type != 'suggestion' || q.author == this.state?.user?.username || this.isMod() */) {\n let childElements = this.renderQuestions(q.questionText);\n let itemComments = this.state.comments?.filter(c => (c.location == q.questionText && !c.content.startsWith('_')));\n // If the user wants a translation, and there is one, put it here, else null\n let thisTranslation = ((this.state?.language || 'en') != (q.language || 'en') && q.translations?.find(tr => tr.language == (this.state?.language || 'en'))) || null;\n elements.push(
\n {this.state.editModeItem == q.questionText && \n
\n
\n
\n\n {this.state.newItemMaxLength && this.state.newItemMaxLength < 100 &&\n \n ||\n \n }\n
\n \n
\n
\n {this.state.newItemContent.length == this.state.newItemMaxLength?\n Maximum text length reached. \n : null}\n {this.state.editModeRename != this.state.editModeItem && this.state.survey.questions.find(q => q.questionText == this.state.editModeRename)?\n This is a duplicate of an existing item. \n : null}\n {this.state.editModeRename == \"\" ?\n Please enter some content to make a change, or press delete below. \n : null}\n
\n
\n ||\n <>\n {this.state.room.enableTwisties &&\n \n \n \n }\n \n {amendment ||\n (q.displayAsMarkdown && ['[','*','_'].some(char => q.questionText.includes(char))? // Temp fix to prevent \n }}\n linkTarget=\"_blank\"\n unwrapDisallowed={true}\n >\n {q.questionText}\n \n \n :\n (thisTranslation?.translatedText || q.questionText)\n )\n }\n {\n //Condition for displaying authorship\n (this.state?.room?.status == 'document' && ['issue', 'solution'].includes(q.type) && \n {' — '}{q.author}\n )\n\n }\n \n \n }\n
\n {/* \"Add\" button for if issue/solution/vanilla mode is picked and we're not in read-only, or suggestion mode is picked*/}\n {\n (\n (\n (\n ['issue', 'solution', 'vanilla'].includes(this.state.room.status)\n &&\n (!this.readOnly() || this.isMod())\n )\n ||\n (this.state.room.status == 'suggestion')\n )\n &&\n (!this.state.room.enableTwisties || q.twistedOpen || !childElements)\n )\n ?\n \n \n \n\n :null}\n\n {thisTranslation?\n \n \n \n :null}\n\n {/* \"Add\" button for pros in document mode if not read-only */}\n {(this.state.room.status == 'document' && q.type == 'document' && (!this.readOnly() || this.isMod()))?\n \n \n \n :null}\n\n {/* \"Add\" button for cons in document mode */}\n {(this.state.room.status == 'document' && q.type == 'document' && (!this.readOnly() || this.isMod()))?\n \n \n \n :null}\n \n {(this.state.room.status == 'document' && ['document', 'amendment'].includes(q.type) && (!this.readOnly() || this.isMod()))?\n \n \n \n :null}\n\n {((this.state.room.status == 'document' && ['document', 'amendment', 'issue', 'solution'].includes(q.type))\n ||\n (this.state.room.status == 'suggestion' && q.type == 'suggestion')\n ||\n (this.state.room.status == 'vanilla')) &&\n this.state.user &&\n this.state?.hubConnection?.state == \"Connected\" &&\n <>\n \n c.author == this.state.user.username) && faSolidThumbsUp || faRegularThumbsUp} color=\"#888\"/>\n {q.upvotes?.length? {q.upvotes.length} : null}\n \n \n c.author == this.state.user.username) && faSolidThumbsUp || faRegularThumbsUp} color=\"#888\"/>\n {q.downvotes?.length? {q.downvotes.length} : null}\n \n \n }\n \n {!['document', 'vanilla'].includes(this.state.room.status) && (!this.readOnly() || itemComments?.length || this.isMod() || (q.author && q.author == this.state?.user?.username)) &&\n \n \n {itemComments?.length? {itemComments.length} : null}\n \n }\n\n {(q.questionText != this.state.room.viewRoot && this.isMod())?\n \n \n \n : null}\n \n {(((q.questionText == this.state.room.viewRoot)\n ) && this.isMod())?\n \n \n \n : null}\n\n {this.state.editModeItem === q.questionText &&\n <>\n {(q.type != \"issue\") && this.isMod()?\n \n \n \n : null}\n\n {(q.type != \"solution\") && this.isMod()?\n \n \n \n : null}\n\n {(q.type != \"category\") && this.state?.room?.status != \"document\" && this.isMod()?\n \n \n \n : null}\n\n {(q.type != \"document\") && this.state?.room?.status == \"document\" && this.isMod()?\n \n \n \n : null}\n\n {(q.questionText != this.state.room.viewRoot && (!childElements && ((q.author && q.author == this.state?.user?.username && (!this.readOnly() || q.type == 'suggestion')) || this.isMod())))?\n \n \n \n : null}\n\n {(!(this.state.room.viewRoot == q.questionText) && (q.parent || this.state.survey.questions.filter(q=> q.parent == null).length > 1) && (!this.state.cutting || this.state.cutting == q.questionText) && this.isMod())?\n \n \n \n : null}\n\n\n \n }\n\n {(this.state.cutting && this.state.cutting != q.questionText && !this.getQuestionAncestors(q.questionText).includes(this.state.cutting) && this.isMod())?\n <>\n \n \n \n \n {[\"issue\",\"solution\"].includes(this.state.room.status) &&\n <>\n \n \n \n \n \n \n \n \n \n }\n \n : null}\n\n {this.state.editModeItem === q.questionText && this.isMod() && q.author && {q.author}}\n
\n\n {this.state.room.status == \"ranking\" && ['issue','solution'].includes(q.type) && qr?\n
\n \n
\n : null}\n\n {this.state.viewingComments == q.questionText?\n \n : null}\n \n \n \n
);\n if (childElements && (!this.state.room?.enableTwisties || q.twistedOpen)) {\n elements.push(childElements);\n }\n if (this.state.newItemUnder == q.questionText) {\n elements.push(\n
\n
\n
\n {this.state.newItemMaxLength && this.state.newItemMaxLength < 100 &&\n \n ||\n {e.currentTarget.style.height = \"\";e.currentTarget.style.height = (e.currentTarget.scrollHeight+3) + \"px\"}}\n type=\"text\"\n id=\"new-item-input\"\n className=\"form-control\"\n />\n }\n\n
\n \n
\n
\n {this.state.newItemContent.length == this.state.newItemMaxLength?\n Maximum text length reached\n : null}\n {this.state.survey.questions.find(q => q.questionText == this.state.newItemContent)?\n This is a duplicate of an existing item. \n : null}\n
\n
\n )\n }\n }\n });\n if (parentQuestion == null && this.isMod()) {\n\n elements.push(\n this.state.newItemUnder == null? \n
\n
\n
\n\n \n\n
\n \n
\n
\n {this.state.newItemContent.length == this.state.newItemMaxLength?\n Maximum text length reached\n : null}\n {this.state.survey.questions.find(q => q.questionText == this.state.newItemContent)?\n This is a duplicate of an existing item. \n : null}\n
\n \n
\n :\n \n );\n }\n if (elements.filter(e => (e != null)).length) {\n return
{elements}
\n }\n }\n\n async populateRoomData() {\n const response = await fetch('api/room/' + this.props.match.params.id);\n const data = await response.json();\n this.setState({room: data}, () => {\n if (this.state.room.status == 'document' || this.state.room.bypassLengthLimit) {\n this.setState({newItemMaxLength: null});\n }\n if (this.state.room.onAssignment) {\n this.allocateMeIfRequired();\n }\n else {\n this.populateSurveyData();\n this.populateQuizQuestion();\n this.forceUpdate();\n }\n })\n }\n\n async populateSurveyData() {\n const response = await fetch('api/survey/' + this.state.room.survey + (this.state?.language? \"?lang=\"+this.state.language : ''));\n const data = await response.json();\n this.setState({survey: data}, () => {\n if (this.state.room.status == \"ranking\") {\n this.populateResponseData();\n }\n this.populateCommentData();\n this.forceUpdate();\n })\n }\n\n async populateCommentData() {\n const response = await fetch(`api/survey/${this.state.room.survey}/comment`+ (this.state?.language? \"?lang=\"+this.state.language : ''));\n const comments = await response.json();\n this.setState({comments})\n }\n\n async populateUserData(cb) {\n const response = await fetch('api/user/');\n \n console.log(response);\n if (response.ok) {\n const data = await response.json();\n this.setState({user: data}, () => {\n \n this.forceUpdate();\n cb && cb();\n })\n } else {\n cb && cb()\n }\n \n //setTimeout(this.populateUserData, (Math.random() + 1) * 60000)\n }\n\n async populateQuizQuestion(cb) {\n if (this.state?.room?.activeQuizQuestion) {\n fetch(`/api/quizquestion/${this.state.room.activeQuizQuestion}`)\n .then(response => response.json())\n .then(activeQuizQuestion => this.setState({activeQuizQuestion}))\n } else if (this?.state?.room) {\n this.setState({activeQuizQuestion: null, revealAnswer: false});\n }\n }\n\n async populateResponseData() {\n \n const response = await fetch('api/surveyresponse', {\n method: \"POST\",\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({survey: this.state.survey.id})\n });\n const data = await response.json();\n if (data.questionResponses == null) {\n data.questionResponses = [];\n }\n if (this.state.survey?.questions) {\n this.state.survey.questions.forEach(q => {\n if (!data.questionResponses.find(qr => qr.questionText == q.questionText)) {\n data.questionResponses.push({\n questionText: q.questionText,\n type: \"slider\",\n response: \"10\"\n })\n }\n })\n }\n console.log(data);\n this.setState({ response: data });\n }\n\n\n\n render() {\n\n // if (this.state?.redirect) {\n // console.log(this.state.redirect);\n // let redirect = ;\n // this.setState({redirect: null}, () => {\n // //this.populateRoomData();\n // });\n // return this.state.redirect;\n // }\n if (this.state?.activeQuizQuestion && this.state.user) {\n return \n }\n if (this.state?.room?.videoClip && this.state?.videoClipOpen) {\n return
\n \n \n
\n }\n let contents = null;\n if (this.state?.room?.status == \"hub\") {\n contents =
\n {this.isMod()?\n
\n

You are a moderator and can control this event

\n {this.state?.hubConnection?.state == \"Connected\"?\n
\n

\n Push all event attendees to their favourite room:\n \n

\n

\n Pull all event attendees back to the event page from which they were taken:\n \n

\n {this.state.user.userID == \"73295\" /* TODO <--- this needs removing */ &&\n \n }\n
\n :null}\n
\n :\n

This page is listening for andeye Interactive control messages.

\n }\n
\n }\n else {\n let intro = null;\n if (this.state?.room?.header) {\n intro = \n {this.state.room.header}\n \n } else if (this?.state?.survey) {\n let introText = null;\n if (this.state.room.status == 'issue') {\n introText = \n We are in issues mode. Review the current issues (shown in red) and add more by pressing the icon.\n \n } else if (this.state.room.status == 'solution') {\n introText = \n We are in solutions mode. Review the current issues (shown in red) and solutions (shown in green), and add more solutions by pressing the icon.\n \n } else if (this.state.room.status == 'ranking') {\n introText = \n We are in ranking mode. Move the sliders to the right for important items, or to the left for less important items.\n \n } /* else if (this.state.room.status == 'suggestion') {\n introText = <>\n

\n Water Climate Issues Hierarchy\n

\n \n }*/\n intro =
\n

{introText}

\n {!this.state.room?.vimeo && this.treeMode() != 'treeOnly' &&

If you cannot see a video call on the right of your screen, visit our help page, where you can find potential solutions or live support from our team.

}\n
\n } \n let modTools = null;\n if (this.isMod() && this.state?.room && this.state?.hubConnection?.state == \"Connected\") {\n modTools =
\n \n {([\"solution\",\"ranking\"].includes(this.state.room.status))?\n \n : null}\n {([\"issue\",\"ranking\"].includes(this.state.room.status))?\n \n : null}\n {([\"issue\",\"solution\"].includes(this.state.room.status)) && !this.state.room.disableRankingMode?\n \n : null}\n \n {this.state.user.userID == \"73295\" /* TODO <--- this needs removing */ && this.state.room.assignmentSurvey && ((this.state.room.isOpen)?\n \n : \n \n )}\n {this.state.user.userID == \"73295\" /* TODO <--- this needs removing */ &&\n \n }\n {!this.state.room?.vimeo && this.treeMode() != 'treeOnly' && (\n this.state.room?.visibleUsers === null ?\n \n :\n \n )}\n {this.state.room.videoClip && \n \n }\n\n {['show','user'].includes(this.treeMode()) && [\"73295\", \"113624\"].includes(this.state.user?.userID) &&\n \n }\n \n {this.state.user?.rank == \"mod\" &&
\n
\n
this.setState({userListOpen: !this.state.userListOpen})}\n >\n User list \n
\n {\n this.state.userListOpen &&\n \n \n {this.state.userList.filter(u => u.lastRoom == this.state.room?.id)\n .map(u => {\n return (\n \n \n \n \n );\n })}\n \n
{u.username}\n {(u.username != this.state.user.username)?\n \n \n \n : null}\n\n {(u.username != this.state.user.username && u.rank != \"mod\")?\n \n \n \n : null}\n \n {(u.username != this.state.user.username && u.rank == \"mod\")?\n \n \n \n : null}\n\n {this.state.room?.visibleUsers?.includes(u.username) && !this.state.room?.vimeo ?\n \n \n \n : null}\n {this.state.room?.visibleUsers !== null && !this.state.room.visibleUsers.includes(u.username) && !this.state.room?.vimeo ?\n \n \n \n : null}\n
\n }\n
\n
}\n
\n }\n const toSearchOption = (q) => {\n let thisTranslation = (this.state?.language && this.state.language != 'en' && q.translations?.find(tr => tr.language == this.state.language)) || null;\n return ({\n name: thisTranslation?.translatedText || q.questionText,\n value: q.questionText,\n question: q,\n translated: !!thisTranslation\n })\n };\n const treeSearchOptions = [{name: \"\", value: \"\"}];\n if (!this.state?.searchSuggestionsOnly){\n treeSearchOptions.push(\n {\n type: 'group',\n name: 'Hierarchy items',\n items:\n this.state?.survey?.questions.filter(q => q.type != 'suggestion').map(toSearchOption).sort((a,b) => a.value.localeCompare(b.value))\n }\n );\n }\n treeSearchOptions.push(\n {\n type: 'group',\n name: 'Suggestions',\n items:\n this.state?.survey?.questions.filter(q => q.type == 'suggestion').map(toSearchOption).sort((a,b) => {\n let aScore = (a.question.upvotes?.length || 0) - (a.question.downvotes?.length || 0);\n let bScore = (b.question.upvotes?.length || 0) - (b.question.downvotes?.length || 0);\n return bScore - aScore;\n }\n )\n }\n );\n contents =
\n {this.treeMode() != 'hide' &&
\n {this.state?.branding == \"wcd\" && }\n
\n \n {this.state?.room?.treeMode == \"user\" && this.setState({viewTreeUser: false})}\n className=\"btn btn-info mr-1 mt-3\"\n >\n Hide Tree\n }\n {intro}\n {modTools}\n {this.state?.showGuestModal &&\n this.setState({showGuestModal: false, onGuestModalLogin: null})}\n afterToken={() => {\n this.populateUserData(() => {\n this.createConnection();\n this.state.onGuestModalLogin && this.state.onGuestModalLogin();\n this.setState({showGuestModal: false, onGuestModalLogin: null});\n });\n }}\n >\n

To add to or change the document, you must log in as a guest.

\n \n }\n { this.state?.survey &&\n
\n
\n {this.state?.room?.enableSearch &&\n <>\n \n \n \n }\n
\n {this.state?.room?.enableTranslations &&
\n {console.log(value); this.setState({language: value}, () => {this.populateSurveyData();})}}\n />\n {this.state?.openTranslationModal && \n tr.language == (this.state.language || 'en'))}\n item={this.state.openTranslationModal}\n saveAndClose={this.handleCloseTranslateModal}\n bypassLengthLimit={this.state.room?.bypassLengthLimit}\n />\n }\n
}\n
\n }\n {this.state?.viewRootOverride &&\n \n You're currently viewing part of the tree outside of the focus set by the moderators.\n You can return to the focused part of the tree by clicking {e.preventDefault(); this.setState({viewRootOverride: false})}}>here.\n \n }\n {this.state?.survey?\n (this.state.room.viewRoot && !this.state.viewRootOverride)?\n this.renderQuestions(this.state.room.viewRoot, true)\n :\n this.renderQuestions(null)\n :\n <>\n

Loading the room...

\n

This may take a few seconds. If you're still having trouble seeing this tree after a few seconds, try refreshing the page.

\n

If you continue to see this message, then visit our help page, where you may find a workaround, or live support from our team.

\n {this.state?.errors?.map(e =>
{e.header && {e.header}} {e.message}
)}\n \n \n }\n {this.state?.language && this.state.language != 'en' && (\n
\n \n \n \n
\n )}\n {this.state?.room?.status == 'suggestion' &&\n

\n Use the arrows to navigate the branches of the tree then suggest any additions by

pressing 
\n

\n }\n
\n
}\n
\n { this.state?.room?.treeMode == \"user\" && !this.state.viewTreeUser &&\n \n }\n { (this.treeMode() == 'hide' || (this.treeMode() == 'user' && !this.state.viewTreeUser)) && [\"73295\", \"113624\"].includes(this.state.user?.userID) &&\n \n }\n { this.treeMode() == 'hide' && [\"73295\", \"113624\"].includes(this.state.user?.userID) &&\n \n }\n
\n {this.treeMode() == 'treeOnly' || (\n (this.state?.room?.vimeo && \n \n )\n ||\n (this.state?.room?.youTube && \n \n )\n ||\n \n \n
\n {(this.state?.user?.username && this.state?.room?.id)?\n \n :null}\n \n
\n )}\n \n
;\n }\n \n return (\n contents\n );\n }\n\n \n}","import React, { useState, useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useParams } from 'react-router';\n\nfunction GuestRoom(props) {\n\n const [username, setUsername] = useState([\"\"]);\n const [joining, setJoining] = useState(false);\n let history = useHistory();\n let { roomId } = useParams();\n\n const handleInputChange = (e) => {\n e.preventDefault();\n setUsername(e.target.value);\n }\n\n const handleJoin = (e) => {\n const params = new URLSearchParams(window.location.search);\n const treeOnly = params.get('tree-only')\n e.preventDefault();\n setJoining(true);\n fetch('/api/user/guestkey/'+encodeURIComponent(username))\n .then(\n setTimeout(() => {\n history.push('/sharedtree/' + roomId + (treeOnly? \"?tree-only\" : \"\"))\n }, 500)\n )\n }\n\n return (\n
\n

Guest login

\n {joining?\n

Please wait while we log you in...

\n :\n
\n

To join this room without an andeye account, enter a guest username and press Join

\n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n }\n \n
\n )\n}\n\nexport default GuestRoom; ","import React, { useState, useEffect, useRef } from 'react';\nimport { FormGroup, FormText, Input, Label, Modal } from 'reactstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faDropbox } from '@fortawesome/free-brands-svg-icons';\nimport { faAt, faVideo } from '@fortawesome/free-solid-svg-icons';\nimport SelectSearch, { fuzzySearch } from 'react-select-search';\n\nexport default function ChangeModeModal(props) {\n \n const [room, setRoom] = useState(props.room);\n\n const save = (e) => {\n props.saveAndClose(room);\n }\n const close = (e) => {\n props.saveAndClose();\n }\n\n const fullContents = <>\n
\n
Change settings for this room
\n \n
\n
\n \n \n
\n setRoom(prev => ({...prev, survey, viewRoot: null}))}\n />\n
\n
\n
\n
\n {let readOnlyMode = e.target.value; setRoom(prev => ({...prev, readOnlyMode}))}}\n id=\"readOnlyCheck\"\n aria-describedby=\"readOnlyCheckHelp\"\n />\n \n \n Prevents non-mods from adding items, except suggestions.\n \n
\n
\n
\n
\n {let enableTwisties = e.target.value; setRoom(prev => ({...prev, enableTwisties}))}}\n id=\"enableTwistiesCheck\"\n aria-describedby=\"enableTwistiesCheckHelp\"\n />\n \n \n Changes the navigation of the tree to 'twisties' which can be expanded.\n \n
\n
\n
\n
\n {let enableTranslations = e.target.value; setRoom(prev => ({...prev, enableTranslations}))}}\n id=\"translationsCheck\"\n aria-describedby=\"translationsCheckHelp\"\n />\n \n \n Allows users to change the language in the room and view translations.\n \n
\n
\n
\n
\n {let enableSearch = e.target.value; setRoom(prev => ({...prev, enableSearch}))}}\n id=\"searchCheck\"\n aria-describedby=\"searchCheckHelp\"\n />\n \n \n Display the search box for users to find items in the tree\n \n
\n
\n
\n
\n {let disableRankingMode = e.target.value; setRoom(prev => ({...prev, disableRankingMode}))}}\n id=\"disableRankingModeCheck\"\n aria-describedby=\"disableRankingModeCheckHelp\"\n />\n \n \n Removes the ability for mods to switch the room to ranking mode\n \n
\n
\n
\n \n \n {let treeMode = e.target.value; setRoom(prev => ({...prev, treeMode}))}}\n aria-described-by=\"treeModeSelectHelp\"\n >\n \n \n \n \n \n \n Sets the mode for the tree. Change this on the room page for it to be pushed to all clients immediately.\n \n
\n
\n \n \n {let status = e.target.value; setRoom(prev => ({...prev, status}))}}\n aria-described-by=\"statusSelectHelp\"\n >\n \n \n \n \n \n \n \n Sets the mode for the room. Don't set to Hub mode unless you know the implications\n \n
\n \n \n {let vimeo = e.target.value || null; setRoom(prev => ({...prev, vimeo}))}}\n id=\"vimeoInput\"\n aria-describedby=\"vimeoInputHelp\"\n />\n \n Adds a Vimeo player instead of a Twilio call\n \n \n \n \n {let youTube = e.target.value || null; setRoom(prev => ({...prev, youTube}))}}\n id=\"youTubeInput\"\n aria-describedby=\"youTubeInputHelp\"\n />\n \n Adds a YouTube player. Note that Vimeo takes priority if also set.\n \n \n
\n
\n \n Save\n \n \n Cancel\n \n
\n;\n\n return (\n {fullContents}\n )\n}","import React, { useState, useEffect } from 'react';\n\nfunction TwilioInfo(props) {\n\n const [participants, setParticipants] = useState(null);\n\n useEffect(() => {\n if (props.twilioRoom){\n fetch(`https://interactive.andeye.com:9443/twilio/rooms/${props.twilioRoom.sid}/participants`)\n .then(response => response.json())\n .then(data => {\n setParticipants(data);\n });\n }\n },[props.twilioRoom]);\n\n return
\n

{participants?.length}

\n {participants?.map(p => \n
{p.identity}
\n )}\n
;\n}\n\n\nexport default TwilioInfo;","import { faEdit } from '@fortawesome/free-regular-svg-icons';\nimport { faLanguage, faPencilAlt, faPlus, faQuestion, faRedoAlt, faTrash } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useState, useEffect } from 'react';\nimport { useParams } from 'react-router';\nimport { useHistory, Link } from 'react-router-dom';\nimport { Badge, Button } from 'reactstrap';\nimport ChangeModeModal from './ChangeModeModal';\nimport TwilioInfo from './TwilioInfo';\n\nfunction Admin(props) {\n\n const [rooms, setRooms] = useState([]);\n const [twilioRooms, setTwilioRooms] = useState([]);\n const [surveys, setSurveys] = useState([]);\n const [editingRoom, setEditingRoom] = useState(null);\n let history = useHistory();\n\n useEffect(() => {\n loadSurveys();\n loadRooms();\n loadTwilioRooms();\n },[]);\n\n const loadRooms = () => {\n fetch(`/api/room`, {credentials: \"include\"})\n .then(response => response.json())\n .then(data => {\n console.log(data);\n setRooms(data);\n });\n }\n\n useEffect(() => {\n if (rooms) {\n rooms.filter(r => r.needsUpdate).forEach(r => {\n return fetch(`/api/room/${r.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(r)\n })\n .then (res => {\n if (res.ok) {\n r.needsUpdate = false;\n setRooms(prev => ([...prev.filter(room=>room.id != r.id), r]));\n }\n })\n });\n }\n },[rooms]);\n \n const loadTwilioRooms = () => {\n fetch(`https://interactive.andeye.com:9443/twilio/rooms`)\n .then(response => response.json())\n .then(data => {\n console.log(data);\n setTwilioRooms(data);\n });\n }\n\n const loadSurveys = () => {\n fetch(`/api/survey`, {credentials: \"include\"})\n .then(response => response.json())\n .then(data => {\n console.log(data);\n setSurveys(data);\n });\n }\n const handleDupeSurvey = (e) => {\n let survey = surveys.find(s => s.id == e.currentTarget.dataset.survey);\n let newSurvey = {...survey, id: null, event: survey.event += \" (Copy)\"}\n \n fetch(`/api/survey`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(newSurvey)\n })\n .then(loadSurveys)\n }\n\n const handleMakeRoom = (e) => {\n let surveyId = e.currentTarget.dataset.survey;\n let room = {survey: surveyId, status: \"issue\"}\n \n fetch(`/api/room`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(room)\n })\n .then(loadRooms)\n }\n\n const handleNewAssignedMod = (roomId, username) => {\n let thisRoom = rooms.find(r => r.id == roomId);\n thisRoom.assignedMods || (thisRoom.assignedMods = []);\n if (!thisRoom.assignedMods.includes(username)) thisRoom.assignedMods.push(username);\n thisRoom.needsUpdate = true;\n setRooms(prev => ([...prev.filter(r=>r.id != roomId), thisRoom]))\n }\n\n const handleRemoveAssignedMod = (roomId, username) => {\n let thisRoom = rooms.find(r => r.id == roomId);\n thisRoom.assignedMods || (thisRoom.assignedMods = []);\n thisRoom.assignedMods = thisRoom.assignedMods.filter(u => u != username);\n thisRoom.needsUpdate = true;\n setRooms(prev => ([...prev.filter(r=>r.id != roomId), thisRoom]))\n }\n const applyRoomChange = (roomId, change) => {\n console.log(change)\n if (change){\n let thisRoom = rooms.find(r => r.id == roomId);\n thisRoom = {...thisRoom, ...change, needsUpdate: true}\n setRooms(prev => ([...prev.filter(r=>r.id != roomId), thisRoom]))\n }\n setEditingRoom(null);\n }\n\n return (\n
\n

Admin Dashboard

\n

Surveys/Documents

\n \n \n \n \n \n \n \n \n \n \n {surveys?.map(survey => {\n return \n \n \n \n \n \n })}\n \n
IDNameDuplicateMake an issues room
\n {survey.id}\n \n {survey.event}\n \n {/* {survey.questions.find(q => [\"issue\",\"solution\", \"category\"].includes(q.type))? */}\n \n {/* :null} */}\n \n {/* {survey.questions.find(q => [\"issue\",\"solution\", \"category\"].includes(q.type))? */}\n \n {/* :null} */}\n
\n

Rooms\n \n

\n \n \n \n \n \n \n \n \n \n \n \n \n {rooms?.sort((a,b) => (a.id > b.id) - (b.id > a.id)).map(room => {\n let survey = surveys.find((s) => s.id == room.survey);\n return \n \n \n \n \n \n \n \n })}\n \n
IDSurveyAssignmentTwilioEst. AssignmentsAssigned Mods
\n {room.id}\n
\n \n {room.status == \"issue\" && Issue mode}\n {room.status == \"solution\" && Solution mode}\n {room.status == \"suggestion\" && Suggestion mode}\n {room.readOnlyMode && Read-only}\n {room.treeMode && Tree mode: {room.treeMode}}\n {room.enableTranslations && }\n {e.preventDefault(); setEditingRoom(room.id)}}>\n \n Edit\n \n \n \n \n Quiz\n \n \n
\n {survey? \n `${survey.event} (...${survey.id.substr(-6)})`\n : \"None\"}\n \n {room.topic?\n room.isOpen?\n

{room.topic}

\n :\n

{room.topic} (closed)

\n :null}\n
\n {twilioRooms.find(tr => tr.uniqueName == room.id) && \n tr.uniqueName == room.id)}\n />\n }\n \n {room.testAssignedUsers?.length}\n \n \n
\n
    \n {room.assignedMods && room.assignedMods.map(u => {\n return (\n
  • \n {u}\n handleRemoveAssignedMod(room.id, u)}>\n \n \n
  • )\n })}\n
\n
{e.preventDefault(); handleNewAssignedMod(room.id, (new FormData(e.target)).get('newMod')); }}>\n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n {editingRoom &&\n r.id == editingRoom)}\n saveAndClose={(changedRoom) => {applyRoomChange(editingRoom,changedRoom)}}\n treeList={surveys.map(s => ({name: `${s.event} (...${s.id.substr(-6)})`, value: s.id}))}\n />}\n
\n )\n}\n\nexport default Admin;","\nimport { useParams } from 'react-router';\n\nimport React, { useState, useEffect } from 'react';\n\n\nfunction SuggestionsTable(props) {\n\n \n let { surveyId } = useParams();\n\n const [suggestions, setSuggestions] = useState([]);\n\n useEffect(() => {\n fetch(`/api/survey/${surveyId}/suggestions`)\n .then(response => response.json())\n .then(suggestions => setSuggestions(suggestions));\n },[]);\n\n return (\n
\n

Suggestions

\n\n \n \n \n \n \n \n \n \n \n {suggestions.map( s =>\n \n \n \n \n \n )}\n \n
UserSuggestionParent
\n {s.user}\n \n {s.response}\n \n {s.parent.includes('Suggestion_') && suggestions.find(p => p.questionText == s.parent)?.response + ' (also a suggestion)' || s.parent}\n
\n
\n )\n}\n\nexport default SuggestionsTable;","import React, { useState, useEffect, useRef } from 'react';\nimport { Modal } from 'reactstrap';\nimport styles from './ExternalCallInfoModal.module.css';\nimport classNames from 'classnames/bind';\n\nlet cx = classNames.bind(styles);\n\nfunction ExternalCallInfoModal(props) {\n\n const [myProfile, _setMyProfile] = useState(props.myProfile);\n const [linkError, setLinkError] = useState(null);\n const myProfileRef = useRef(props.myProfile);\n\n const handleUseExternalVideoChange = (e) => {\n let newProfile = {...myProfileRef.current, useExternalVideo: e.currentTarget.checked}\n myProfileRef.current = newProfile;\n _setMyProfile(newProfile);\n console.log(newProfile);\n }\n const handleExternalCallLinkChange = (e) => {\n let newProfile = {...myProfileRef.current, externalCallLink: e.currentTarget.value}\n myProfileRef.current = newProfile;\n try {\n let url = new URL(e.currentTarget.value)\n setLinkError(null);\n } catch (e) {\n console.log(e);\n setLinkError(true);\n }\n _setMyProfile(newProfile);\n console.log(newProfile);\n }\n const handleSaveProfile = (e) => {\n console.log(myProfile);\n props.onClose(myProfile);\n }\n\n const handleAutoSave = (e) => {\n if (props.autosave) handleSaveProfile(e);\n }\n\n const form = <>\n

\n If you can’t use andeye Video you can switch to requesting that others\n join you on Zoom, Teams, or another platform\n

\n
\n \n \n
\n {myProfile.useExternalVideo && \n
\n

\n 1. Open a Teams/Zoom/other call and start your video\n

\n

\n 2. Copy the link to the call\n

\n
\n \n \n {!myProfile.externalCallLink?.length && \n
\n Please enter a meeting room link before saving, or uncheck this feature.\n
\n }\n {!!myProfile.externalCallLink?.length && linkError &&\n
\n Your link is invalid. Please try pasting the link again\n
\n }\n
\n

\n 4. Click save changes below\n

\n

\n 5. Click 'Invite to {props.meetingInfo(myProfile.externalCallLink)?.serviceName || 'external'} call' for each person you'd like to join your call\n

\n

\n 6. Important: Ensure you click 'Mark Call as Ended' on the system when you finish your {props.meetingInfo(myProfile.externalCallLink)?.serviceName || 'external'} call so others aren't sent to an empty room\n

\n
\n }\n\n ;\n\n const fullContents = <>\n
\n
Change video platform
\n {!props.inline && }\n
\n
\n {form}\n
\n {!(props.autosave && props.inline) &&
\n {!props.autosave && }\n {!props.inline && }\n
}\n ;\n\n if (myProfile) {\n if (props.inline){\n return
{fullContents}
;\n } else {\n return {fullContents}\n }\n } else return null;\n}\n\nexport default ExternalCallInfoModal;","import React, { useState, useEffect, useRef } from 'react';\nimport { Modal } from 'reactstrap';\n\nimport styles from './ExternalCallJoinModal.module.css';\nimport classNames from 'classnames/bind';\n\nlet cx = classNames.bind(styles);\n\nfunction ExternalCallJoinModal(props) {\n\n const fullContents = <>\n
\n
Join external call
\n
\n
\n

\n {props.creatorInfo?.nickname || props.callRoom.creator}'s room is hosted outside of the\n andeye platform. They have provided the following link:\n

\n

\n {props.callRoom.externalLink}\n

\n

\n andeye and event organisers are not responsible for external links,\n please satisfy yourself that the link is genuine before clicking.\n

\n

\n Leave this pop-up open while in the call, and you will be shown as 'in a call'\n to other event participants. If you have left the call, click below\n

\n
\n
\n \n
\n ;\n\n return {fullContents};\n}\n\nexport default ExternalCallJoinModal;","import React, { useState, useEffect, useRef } from 'react';\n\nimport styles from './CallRoomItem.module.css';\nimport classNames from 'classnames/bind';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nlet cx = classNames.bind(styles);\n\nfunction CallRoomItem(props) {\n\n const filteredParticipants = props.callRoom?.currentParticipants?.filter(p => p != props.myProfile?.username && p != props.callRoom.creator);\n const thisMeetingInfo = props.callRoom?.externalLink? props.meetingInfo(props.callRoom.externalLink) : null;\n const ownerProfile = props.match || (props.isMyRoom? props.myProfile : props.userProfileIfExist(props.callRoom.creator));\n console.log(filteredParticipants);\n return (\n
\n {e.target.onError=null; e.target.src = process.env.PUBLIC_URL + '/guest.png'}}\n />\n
\n
\n \n {props.isMyRoom? \"Your room\" : `${ownerProfile?.nickname || ownerProfile?.username || props.callRoom?.creator}`} \n \n {!props.isMyRoom && ownerProfile?.summary &&\n {ownerProfile?.summary}\n }\n
\n {!props.isMyRoom && ownerProfile?.wantsToTalk?.length >0 &&\n \n Wants to discuss {ownerProfile?.wantsToTalk}\n \n }\n {!props.isMyRoom && ownerProfile?.reason?.length >0 &&\n \n {ownerProfile?.reason}\n \n }\n \n {filteredParticipants?.length > 0 &&\n \n also with {filteredParticipants.map(p => (props.userProfileIfExist(p)?.nickname) || p).join(', ')}\n \n }\n {\n props.matchIsInOtherCall && !props.existingInviteWithUser &&\n \n In another call\n \n }\n {\n props.existingInviteWithUser && props.existingInviteWithUser.creator != props.match?.user &&\n \n Currently in a call with {props.userProfileIfExist(props.existingInviteWithUser.creator)?.nickname || props.existingInviteWithUser.creator} where you are invited\n \n }\n {\n props.existingInviteWithUser && props.existingInviteWithUser.creator == props.match?.user &&\n \n {props.userProfileIfExist(props.existingInviteWithUser.creator)?.nickname || props.existingInviteWithUser.creator} has already invited you\n \n }\n
\n {props.isCurrentlyInCall &&\n \n {props.isMyRoom? (props.callRoom.isExternal? \"Mark Call as Ended\" : \"End Call\") : \"Leave Call\"}\n \n }\n {props.isInvite && !props.isCurrentlyInAnyCall && \n \n {thisMeetingInfo?.icon && } Join {props.callRoom.externalLink && ` ${thisMeetingInfo?.serviceName || '(external)'}`}\n \n }\n {props.match && !props.isCurrentlyInAnyCall &&\n (props.existingInviteWithUser?\n \n Join ongoing call\n \n :\n Call {props.myProfile?.useExternalVideo && `(${props.meetingInfo(props.myProfile.externalCallLink)?.serviceName || 'external'})`}\n )}\n {props.isCurrentlyInAnyCall && props.currentlyOngoingCall?.creator == props.myProfile?.username && (\n props.currentlyOngoingCall?.invitees?.includes(props.match.user)?\n \n Uninvite\n \n :\n \n Invite {props.myProfile?.useExternalVideo && `(${props.meetingInfo(props.myProfile.externalCallLink)?.serviceName || 'external'})`}\n \n )}\n
\n )\n}\nexport default CallRoomItem;","import React, { useState, useEffect, useRef } from 'react';\nimport { Modal } from 'reactstrap';\n//import styles from './RecorderLinkButtonAndModal.module.css';\n//import classNames from 'classnames/bind';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faDropbox } from '@fortawesome/free-brands-svg-icons';\nimport { faAt, faVideo } from '@fortawesome/free-solid-svg-icons';\n\n//let cx = classNames.bind(styles);\n\nexport default function RecorderLinkButtonAndModal(props) {\n \n const [showModal, setShowModal] = useState(null);\n\n const fullContents = <>\n
\n
Record your Action Pledge
\n {!props.inline && }\n
\n
\n

Please try to keep your pledge as succinct as possible (<1 minute)

\n

You may want to start your Action Pledge by saying \"I’m [name] and I pledge to...”

\n

You can record your pledge directly on the andeye system here:

\n

\n \n Open the Action Pledge Recorder\n \n

\n

\n Otherwise you can upload your pledge:\n \n Upload your Pledge\n \n

\n

\n If neither work for you, get in touch:\n \n Email help@andeye.com\n \n

\n

\n By submitting a pledge you give andeye Productions Ltd permission to edit, collate and distribute your pledge via any medium\n

\n
\n {!(props.autosave && props.inline) &&
\n {!props.inline && }\n
}\n;\n\n return (\n <>\n {setShowModal(true)}}\n >\n Record your Action Pledge\n \n {fullContents}\n \n )\n}","import React, { useState, useEffect, useRef } from 'react';\nimport { useParams } from 'react-router';\n\nimport {\n HubConnectionBuilder,\n LogLevel,\n HubConnectionState\n} from '@microsoft/signalr';\nimport styles from './MatcherRoom.module.css';\nimport classNames from 'classnames/bind';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faFileSignature, faQuestionCircle, faUserFriends, faUsers, faVideo } from '@fortawesome/free-solid-svg-icons';\nimport ProfileEditModal from './ProfileEditModal';\nimport ExternalCallInfoModal from './ExternalCallInfoModal';\nimport ExternalCallJoinModal from './ExternalCallJoinModal';\nimport ProfileBar from './ProfileBar';\nimport CallRoomItem from './CallRoomItem';\nimport RecorderLinkButtonAndModal from '../recorder/RecorderLinkButtonAndModal';\nlet cx = classNames.bind(styles);\n\nfunction MatcherRoom(props) {\n\n const [matches, setMatches] = useState(null);\n const [callRoom, setCallRoom] = useState(null);\n const [myProfile, setMyProfile] = useState(null);\n const [calls, setCalls] = useState([]);\n const [hub, setHub] = useState(null);\n const [showTree, setShowTree] = useState(null);\n const [showExternalModal, setShowExternalModal] = useState(null);\n const lastHubState = useRef(null);\n const callEndpoint = \"https://interactive.andeye.com:9443\";\n\n let { surveyId } = useParams();\n\n useEffect(() => {\n populateMyProfile()\n if (surveyId) {\n populateMatchData(surveyId);\n populateInviteData(surveyId);\n }\n const hubConnection = new HubConnectionBuilder()\n .withUrl(\"/controlHub\")\n .withAutomaticReconnect([0, 3000, 5000, 10000, 15000, 30000])\n .configureLogging(LogLevel.Information)\n .build();\n hubConnection\n .start()\n .then(() => {\n setHub(hubConnection);\n });\n \n }, [surveyId]);\n\n useEffect(() => {\n if (hub?.state === HubConnectionState.Connected && hub.state != lastHubState.current) {\n hub.invoke(\"SubscribeRoom\", surveyId);\n hub.off(\"callRoomJoin\");\n hub.on(\"callRoomJoin\", (callRoom) => {\n setCallRoom(callRoom);\n hub.invoke(\"JoinCallRoom\", callRoom.id)\n });\n // hub.off(\"callRoomInvite\");\n // hub.on(\"callRoomInvite\", (invite) => {\n // console.log(invite);\n // console.log(invites);\n // setInvites(prev => [...prev.filter(cr => cr.id != invite.id), invite]);\n // });\n hub.off(\"callRoomUpdate\");\n hub.on(\"callRoomUpdate\", (updatedRoom) => {\n setCalls(prev => [...prev.filter(cr => cr.id != updatedRoom.id), updatedRoom])\n // setInvites(prev => prev.find(i => i.id == updatedRoom.id) || updatedRoom.invitees.includes(myProfile.username)? [...prev.filter(cr => cr.id != updatedRoom.id), updatedRoom] : prev);\n setCallRoom(prev => prev?.id == updatedRoom.id? (updatedRoom.isOpen? updatedRoom : null) : prev);\n });\n hub.off(\"profileUpdate\");\n hub.on(\"profileUpdate\", (newProfile) => {\n setMatches(prev =>\n prev.map(m =>\n (m.user == newProfile.username) ?\n {\n ...m,\n nickname:newProfile.nickname,\n summary: newProfile.summary,\n wantsToTalk: newProfile.wantsToTalk,\n profilePicture: newProfile.profilePicture\n }\n : m\n )\n )\n });\n lastHubState.current = hub.state;\n }\n \n },[hub, myProfile]);\n\n useEffect(() => {\n console.log(matches);\n }, [matches]);\n\n useEffect(() => {\n if (calls && myProfile) {\n setCallRoom(\n calls.find(c => c.isOpen && (c.currentParticipants?.includes(myProfile.username)))\n )\n }\n }, [calls, callRoom, myProfile])\n\n const populateMatchData = async (surveyId) => {\n fetch(`/api/survey/${surveyId}/matches`)\n .catch(e => {\n console.log(e);\n })\n .then(response => response.json())\n .then(data => setMatches(data));\n // Run this again in 60-120 seconds.\n setTimeout(() => populateMatchData(surveyId), (Math.random() + 1) * 60000);\n }\n\n const populateInviteData = async (surveyId) => {\n fetch(`/api/survey/${surveyId}/callroom`)\n .then(response => response.json())\n .then(data => setCalls(data));\n }\n\n const populateMyProfile = async () => {\n fetch(`/api/user`)\n .then(response => response.json())\n .then(data => setMyProfile(data))\n setTimeout(populateMyProfile, (Math.random() + 1) * 60000)\n }\n\n const createWithUser = (e) => {\n let newCallRoom = {\n parentRoom: surveyId,\n invitees: [e.currentTarget.dataset.username],\n isOpen: true,\n // If the creator is using external video, then set this up for this call\n isExternal: myProfile.useExternalVideo,\n externalLink: myProfile.useExternalVideo ? myProfile.externalCallLink : null\n }\n hub.invoke(\"CreateCallRoom\", newCallRoom);\n }\n\n const joinCall = (e) => {\n setCallRoom(calls.find(i => i.id == e.currentTarget.dataset.call));\n hub.invoke(\"JoinCallRoom\", e.currentTarget.dataset.call)\n }\n\n const leaveCall = (e) => {\n // setCallRoom(null);\n hub.invoke(\"LeaveCallRoom\", e.currentTarget.dataset.call)\n if (!callRoom?.isExternal) {\n try {\n fetch(`https://interactive.andeye.com:9443/twilio/rooms/disconnect`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({'username': myProfile.username, 'room': e.currentTarget.dataset.call})\n })\n .catch(console.error)\n } catch (e) {\n console.log(e);\n }\n }\n }\n\n const inviteToCall = (e) => {\n if (callRoom) {\n hub.invoke(\"InviteToCallRoom\", callRoom.id, e.currentTarget.dataset.username);\n }\n }\n\n const uninviteFromCall = (e) => {\n if (callRoom) {\n hub.invoke(\"UninviteFromCallRoom\", callRoom.id, e.currentTarget.dataset.username);\n }\n }\n\n const handleShowTree = (e) => {\n setShowTree(\"614c7886dfdb08de2668ec81\")\n }\n\n const handleHideTree = (e) => {\n setShowTree(null)\n }\n\n const handleCloseProfileEditModal = (profile) => {\n setShowExternalModal(false);\n if (profile) {\n setMyProfile(profile);\n fetch(`/api/user`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(profile)\n })\n }\n }\n\n const userProfileIfExist = (username, profiles) => {\n return profiles?.find(m => m.user == username)\n }\n\n const meetingInfo = (url) => {\n const meetingSystems = [\n {\n url: 'zoom.us',\n serviceName: 'Zoom',\n icon: faVideo\n },\n {\n url: 'teams.microsoft.com',\n serviceName: 'Teams',\n icon: faUserFriends\n }\n ]\n try {\n const parsedUrl = new URL(url);\n return meetingSystems.find(ms => parsedUrl?.hostname.match(`(^|\\\\.)${ms.url}$`));\n } catch (e) {\n return null;\n }\n }\n\n return (\n <>\n
\n {showTree &&\n <>\n \n
\n
\n \n See other participants\n \n
\n
\n \n }\n
\n
\n
\n
\n \n Help\n \n {/* \n Open the Call to Action\n */}\n {setShowExternalModal(true)}}\n >\n Can't access andeye Video?\n \n \n {showExternalModal &&\n \n }\n
\n
\n {myProfile &&\n \n\n }\n
\n \n {callRoom?.isOpen && \n <>\n

Your current call:

\n userProfileIfExist(username, matches)}\n meetingInfo={meetingInfo}\n joinCall={joinCall}\n leaveCall={leaveCall}\n enableRealTimeButtons={(hub?.state === HubConnectionState.Connected)}\n isCurrentlyInCall={callRoom.isOpen && callRoom.currentParticipants?.includes(myProfile?.username)}\n />\n

In your calls, please ask:

\n
    \n
  • What climate action do you want to take?
  • \n
  • How can we support each other?
  • \n
  • What’s the next step?
  • \n
\n

..and then repeat in other calls. When you're done, press the red button above and record your Action Pledge.

\n \n }\n {calls.filter(i => i.id != callRoom?.id && i.isOpen && i.invitees?.includes(myProfile?.username)).length > 0 && \n <>\n

You have invite(s):

\n {calls\n .filter(i => i.id != callRoom?.id && i.isOpen && i.invitees?.includes(myProfile?.username))\n .sort((a,b) => {\n // If one is a current call, bump it up\n if (a.isExternal - b.isExternal != 0) return a.isExternal - b.isExternal;\n // Else, keep the sort consistent by sorting by hash\n return a.id < b.id && 1 || -1;\n })\n .map(invite => {\n let filteredParticipants = invite.currentParticipants?.filter(i => i != myProfile?.username && i != invite.creator);\n let thisMeetingInfo = invite.externalLink? meetingInfo(invite.externalLink) : null;\n return (\n userProfileIfExist(username, matches)}\n meetingInfo={meetingInfo}\n joinCall={joinCall}\n leaveCall={leaveCall}\n isInvite={true}\n isCurrentlyInCall={false}\n isCurrentlyInAnyCall={!!callRoom}\n enableRealTimeButtons={(hub?.state === HubConnectionState.Connected)}\n />\n );\n \n })}\n \n }\n

These are your matches:

\n
\n {\n matches\n ?.filter(m => m.lastSeen && m.lastSeen > new Date(new Date().getTime() - (6*60*1000)).toISOString())\n ?.map(m => ({\n ...m,\n inACall: (calls.find(c => c.isOpen && c.currentParticipants?.includes(m.user)) != null)\n }))\n ?.sort((a,b) => {\n // If one is a current call, bump it up\n // if (a.inACall) return 1;\n // if (b.inACall) return -1;\n // Else, if one has a higher score, bump it up\n if (a.score < b.score) return 1;\n if (b.score < a.score) return -1;\n // Else, keep the sort consistent by sorting by hash\n return a.user < b.user && 1 || -1;\n })\n .map(m => {\n // Find an invite from this user\n let userOtherCall = calls?.find(i => i.isOpen && (i.creator == m.user || i.currentParticipants?.includes(m.user)))\n // TODO rework this line to make efficient use of a subquery of above\n let existingInviteWithUser = calls?.find(i => i.isOpen && i.invitees?.includes(myProfile?.username) && (i.creator == m.user || i.currentParticipants?.includes(m.user)))\n return (\n userProfileIfExist(username, matches)}\n meetingInfo={meetingInfo}\n joinCall={joinCall}\n createWithUser={createWithUser}\n enableRealTimeButtons={(hub?.state === HubConnectionState.Connected)}\n isCurrentlyInAnyCall={!!callRoom}\n matchIsInOtherCall={!!userOtherCall}\n currentlyOngoingCall={callRoom}\n inviteToCall={inviteToCall}\n uninviteFromCall={uninviteFromCall}\n existingInviteWithUser={existingInviteWithUser}\n />\n )\n \n //
\n // {e.target.onError=null; e.target.src = process.env.PUBLIC_URL + '/guest.png'}} />\n //
\n // {m.nickname || m.user} \n // {m.inACall && (in a call)}\n // {m.summary?.length > 0 && {m.summary}}\n // \n // {m.wantsToTalk?.length && Wants to talk about {m.wantsToTalk}}\n // {(existingInviteWithUser && existingInviteWithUser.creator != m.user) &&\n // \n // Currently in a call with {matches?.find(m => m.user == existingInviteWithUser.creator)?.nickname || existingInviteWithUser.creator} where you are invited\n // \n // }\n // {m.reason}\n //
\n // {!callRoom && (\n // existingInviteWithUser ? \n // Join ongoing call\n // :\n // Call {myProfile?.useExternalVideo && `(${meetingInfo(myProfile.externalCallLink)?.serviceName || 'external'})`}\n // )}\n // {callRoom && callRoom.creator == myProfile?.username && (\n // callRoom?.invitees?.includes(m.user)?\n // \n // Uninvite\n // \n // :\n // \n // Invite {myProfile?.useExternalVideo && `(${meetingInfo(myProfile.externalCallLink)?.serviceName || 'external'})`}\n // \n // )}\n //
;\n }\n )\n }\n
\n
\n
\n {callRoom && !callRoom.isExternal && myProfile && myProfile.username && (\n
\n \n
\n )}\n {callRoom && callRoom.isExternal && myProfile && myProfile.username && callRoom.creator != myProfile.username && (\n m.user == callRoom.creator)}\n onClose={leaveCall}\n />\n )}\n \n )\n\n}\n\nexport default MatcherRoom;","import React, { useState, useEffect, useRef } from 'react';\nimport { useParams } from 'react-router';\n\nimport styles from './PersonalRecorder.module.css';\nimport classNames from 'classnames/bind';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faDropbox } from '@fortawesome/free-brands-svg-icons';\nimport ProfileBar from '../survey/ProfileBar';\nimport { faAt } from '@fortawesome/free-solid-svg-icons';\nimport GuestLoginModal from '../auth/GuestLoginModal';\n\nlet cx = classNames.bind(styles);\n\nexport default function PersonalRecorder(props) {\n const callEndpoint = \"https://interactive.andeye.com:9443\";\n\n const [myProfile, setMyProfile] = useState(null);\n const [showGuestModal, setShowGuestModal] = useState(null);\n\n useEffect(() => {\n populateMyProfile()\n },[]);\n\n const populateMyProfile = async () => {\n fetch(`/api/user`)\n .then(response => {\n if (response.status == 200) {\n response.json()\n .then(data => setMyProfile(data))\n }\n else if (response.status == 401) {\n console.log(401);\n setShowGuestModal(true);\n } \n })\n }\n console.log(showGuestModal);\n\n return (\n <>\n
\n {myProfile &&\n \n }\n {showGuestModal &&\n \n }\n

Action Pledge Recorder

\n

Please try to keep your pledge as succinct as possible - ideally 5-10 seconds.

\n

Please start your Action Pledge by saying \"I’m [name] and I pledge to...”

\n

To record:

\n
    \n
  1. Ensure the system on the right of the page can see and hear you
  2. \n
  3. Click 'Join Now'
  4. \n
  5. When you're ready to record your Pledge, use the 'Start Recording' button
  6. \n
  7. Compose yourself for ~1 second then make your pledge
  8. \n
  9. Press 'Stop Recording' ~1 second after you're finished. The recording will be saved to our system.
  10. \n
  11. If you'd like to have another go, repeat steps 3-5 until you're happy with your Pledge.
  12. \n
\n

\n If you cannot access the video handler to record, you can upload your pledge:\n \n Upload your Pledge\n \n

\n

\n If neither work for you, please get in touch:\n \n Email help@andeye.com\n \n

\n

\n By submitting a pledge you give andeye Productions Ltd and their assigns permission in perpetuity to edit, collate and distribute your pledge via any medium.\n

\n
\n {myProfile &&
\n \n
}\n \n )\n}\n","\nimport React, { useState } from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPlus, faTrash, faCheck, faTimes, faTrashAlt, faPlay } from '@fortawesome/free-solid-svg-icons';\n\nimport { Button, Input } from 'reactstrap';\n\nfunction QuestionRow(props) {\n\n const [newMcqOption, setNewMcqOption] = useState(\"\");\n const [newAnswer, setNewAnswer] = useState(\"\");\n\n const runQuestion = () => {\n return fetch(`/api/room/${props.roomId}/quiz`, {\n credentials: 'include',\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n id: props.roomId,\n activeQuizQuestion: props.question.id\n })\n })\n }\n\n // Change the question type (handles the dropdown change) and clear the options/answers fields\n const changeType = (e) => {\n let newType = e.currentTarget.value;\n console.log(newType);\n props.setQuestion({...props.question, type: newType, mcqOptions: [], answers: [], changed: true});\n }\n\n // Add an option to an MCQ question (handles the submission of the input box for MCQs)\n const handleNewMcqOption = (e) => {\n e.preventDefault();\n let mcqOptions = props.question.mcqOptions || [];\n mcqOptions.push(newMcqOption);\n setNewMcqOption(\"\");\n props.setQuestion({...props.question, mcqOptions, changed: true})\n }\n\n // Remove an option (runs on click of the delete button)\n const handleRemoveMcqOption = (a) => {\n let mcqOptions = props.question.mcqOptions || [];\n mcqOptions = mcqOptions.filter(ans => ans != a);\n props.setQuestion({...props.question, mcqOptions, changed: true})\n }\n\n // Mark an MCQ option as correct by adding it to the answer array\n const handleCorrectMCQ = (a) => {\n let answers = props.question.answers || [];\n if (!answers.includes(a)) answers.push(a);\n props.setQuestion({...props.question, answers, changed: true})\n }\n\n // Mark an MCQ option as incorrect by removing from the answer array\n const handleInorrectMCQ = (a) => {\n let answers = props.question.answers || [];\n answers = answers.filter(ans => ans != a);\n props.setQuestion({...props.question, answers, changed: true})\n }\n\n // Add an answer (for text questions), handles the submission of the input field\n const handleNewAnswer = (e) => {\n e.preventDefault();\n let answers = props.question.answers || [];\n if (!answers.includes(newAnswer)) answers.push(newAnswer);\n setNewAnswer(\"\");\n props.setQuestion({...props.question, answers, changed: true})\n }\n\n // Remove an answer (text questions)\n const handleRemoveAnswer = (a) => {\n let answers = props.question.answers || [];\n answers = answers.filter(ans => ans != a);\n props.setQuestion({...props.question, answers, changed: true})\n }\n\n return (\n \n \n {/* Question Text column */}\n { let questionText = e.target.value; props.setQuestion({...props.question, questionText})}}\n onBlur={e => props.setQuestion({...props.question, changed: true})}\n />\n \n \n {/* Question Type column */}\n \n \n \n \n \n \n {/* Answers column */}\n {props.question.type == \"mcq\"?\n // If MCQ, list options\n
\n
    \n {props.question.mcqOptions?.map(a => {\n return (\n
  • \n {a} {props.question.answers?.includes(a)?\n // Cross to mark as incorrect if it is currently correct\n handleInorrectMCQ(a)}>\n \n \n :\n // Tick to mark as correct if currently not correct\n handleCorrectMCQ(a)}>\n \n \n } handleRemoveMcqOption(a)}>\n \n \n {/* Above: trash icon to remove the options */}\n
  • )\n })}\n
\n {/* Form to submit new MCQ option */}\n
\n
\n setNewMcqOption(e.target.value)}\n />\n
\n \n
\n
\n
\n
\n \n : null}\n {/* If a text-based question */}\n {props.question.type == \"text\"?\n
\n
    \n {props.question.answers.map(a => {\n return (\n
  • \n {/* List the possible answers with a trash icon to remoev them */}\n {a}\n handleRemoveAnswer(a)}>\n \n \n
  • )\n })}\n
\n {/* Form to add new answers */}\n
\n
\n setNewAnswer(e.target.value)}\n />\n
\n \n
\n
\n
\n
\n : null}\n \n \n {/* Button to delete question, calls parent component function */}\n {props.roomId && !props.currentlyActive && }\n \n \n)\n\n}\n\nexport default QuestionRow","import { faCheck, faPlus, faStop, faTimes } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useState, useEffect, useRef } from 'react';\nimport { useParams } from 'react-router';\nimport { useHistory } from 'react-router-dom';\nimport { Button } from 'reactstrap';\nimport {\n HubConnectionBuilder,\n LogLevel,\n HubConnectionState\n} from '@microsoft/signalr';\n\nimport QuestionRow from './QuestionRow'\n\nfunction RoundEditor(props) {\n\n // Store of the questions in the table\n const [questions, setQuestions] = useState([]);\n // Store of question responses for the active question if one is selected\n const [questionResponses, setQuestionResponses] = useState([]);\n // Store of room data. The room is modified when an active question is attached to it.\n const [room, setRoom] = useState(null);\n\n let history = useHistory();\n\n // The SignalR hub. lastHubState is used in a useEffect to ensure the hub stays connected.\n const [hub, setHub] = useState(null);\n const lastHubState = useRef(null);\n\n // This parameter comes from the URL, /admin/quiz/[roomId].\n // It is optional and none of the quiz-running functions appear if it is omitted.\n let {roomId} = useParams();\n\n // Upon load of the page\n useEffect(() => {\n // Get all quiz questions and save them in the questions array\n fetch(`/api/quizquestion`, {credentials: 'include'})\n .then(response => response.json())\n .then(data =>\n setQuestions(data)\n );\n // Connect to the SignalR hub\n const hubConnection = new HubConnectionBuilder()\n .withUrl(\"/controlHub\")\n .withAutomaticReconnect([0, 3000, 5000, 10000, 15000, 30000])\n .configureLogging(LogLevel.Information)\n .build();\n hubConnection\n .start()\n .then(() => {\n setHub(hubConnection);\n });\n },[]);\n\n // Runs if anything about the hub changes. Checks if it is connected and resets the handlers if it (re)connects.\n useEffect(() => {\n if (hub?.state === HubConnectionState.Connected && hub.state != lastHubState.current) {\n hub.invoke(\"subscribeQuizmaster\");\n hub.off(\"modifyRoom\");\n hub.on(\"modifyRoom\", (id, room) => {\n if (id == room?.id) {\n setRoom(room)\n }\n });\n hub.off(\"newQuestionResponse\");\n hub.on(\"newQuestionResponse\", (questionResponse) => {\n setQuestionResponses(prev => ([...prev.filter(qr => qr.id !== questionResponse.id), questionResponse]))\n });\n lastHubState.current = hub.state;\n }\n \n },[hub]);\n\n // Runs when the active quiz question changes\n useEffect(() => {\n // If there is an active quiz question, get all existing responses to the question\n if (room?.activeQuizQuestion) {\n fetch(`/api/quizquestion/${room.activeQuizQuestion}/response`, {credentials: 'include'})\n .then(response => response.json())\n .then(data =>\n setQuestionResponses(data)\n );\n }\n }, [room?.activeQuizQuestion])\n\n // Runs whenever any questions change\n useEffect(() => {\n // Look through for any questions with 'changed' set. This means 'please push me to the database'.\n questions.filter(q => q.changed).forEach(q => {\n fetch(`/api/quizquestion/${q.id}`, {\n credentials: 'include',\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(q)\n });\n // Update the questions array. Keep all the other questions, and modify this question to no longer have 'changed' set.\n setQuestions(prev => [...prev.filter(qu => qu.id != q.id), {...q, changed: false}]);\n })\n }, [questions])\n \n // If there is a roomId parameter in the URL, get the room information.\n useEffect(() => {\n if (roomId) {\n fetch(`/api/room/${roomId}`, {credentials: 'include'})\n .then(response => response.json())\n .then(data =>\n setRoom(data)\n )\n }\n },[roomId])\n\n // Handles the creation of a new (blank) question, pushes this to the database and then adds it to the array for editing\n const handleNewQuestion = (e) => {\n e.preventDefault();\n fetch(`/api/quizquestion`, {\n credentials: 'include',\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({type: \"mcq\", answers: [], mcqOptions: []})\n })\n .then((response) => response.json())\n .then((data) => setQuestions([...questions, data]))\n }\n\n // Handles deleting a question\n const handleDelete = (id) => {\n fetch(`/api/quizquestion/${id}`, {\n credentials: 'include',\n method: 'DELETE'\n }).then((result) => {\n if (result.ok) {\n setQuestions(prev => prev.filter(q => q.id != id));\n }\n })\n }\n\n // 'Stop' a question, by setting the active question in the room to null, returning it to the tree/elsewhere\n const stopQuestion = () => {\n return fetch(`/api/room/${roomId}/quiz`, {\n credentials: 'include',\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n id: props.roomId,\n activeQuizQuestion: null\n })\n })\n }\n\n // Sends a real-time 'reveal answer' message to the clients.\n const revealAnswer = () => {\n hub.invoke(\"revealAnswer\", roomId)\n }\n\n // Just a shorthand to get the current active question to make code tidier\n const activeQuestion = () => {\n return questions.find(q=>q.id == room.activeQuizQuestion)\n }\n\n return (\n
\n

Editing quiz questions

\n {// Only run this section if there is a room ID in the URL\n roomId && (\n <>\n

Selected room

\n {!room &&\n

Loading room information

\n }\n {room && !room.activeQuizQuestion &&\n

No quiz question currently running. Run one from below.

\n }\n {// If there is an active quiz question, display it and its responses\n room?.activeQuizQuestion && activeQuestion() &&\n <>\n

{activeQuestion()?.questionText}

\n
    \n {questionResponses\n .filter(qr => qr.question == room.activeQuizQuestion)\n .map(qr => (\n
  • {qr.answer} ({qr.username}) \n {activeQuestion().answers.map(a=>a.trim().toLowerCase()).includes(qr.answer.trim().toLowerCase())?\n \n :\n <>\n \n \n {\n e.preventDefault();\n let answers = activeQuestion().answers || [];\n if (!answers.includes(qr.answer)) answers.push(qr.answer); \n setQuestions(prev => [...prev.filter(q=> q.id != activeQuestion().id), {...activeQuestion(), answers, changed: true}])}}\n >\n Mark correct\n \n \n }\n \n
  • \n ))}\n
\n \n \n }\n \n )}\n

Questions

\n \n \n \n \n \n \n {/* */}\n \n \n \n \n {// Questions in ID order (creation order; not having an order would cause them to move around when editing)\n questions.sort((a,b) => (a.id > b.id && 1 || -1)).map(question => {\n console.log(question);\n // Use QuestionRow component to display each question editor\n return setQuestions(prev => [...prev.filter(qu => qu.id != q.id), q])}\n handleDelete={handleDelete}\n roomId={roomId}\n currentlyActive={question.id == room?.activeQuizQuestion}\n />\n })}\n \n
QuestionTypeAnswerPoints
\n \n
\n )\n}\n\nexport default RoundEditor;","import React, { useState, useEffect, useRef } from 'react';\nimport { useParams } from 'react-router';\n\nimport * as microsoftTeams from \"@microsoft/teams-js\";\n\nexport default function TeamsConfig(props) {\n\n const [log, setLog] = useState([\"Test log\"]);\n const [context, setContext] = useState(null);\n\n let { surveyId } = useParams();\n\n useEffect(() => {\n microsoftTeams.initialize();\n microsoftTeams.appInitialization.notifySuccess();\n microsoftTeams.settings.registerOnSaveHandler(function (saveEvent) {\n microsoftTeams.settings.setSettings({\n entityID: \"andeye\",\n contentUrl: `${window.location.origin}/sharedtree/61b32661604b6b9a2d527201`,\n suggestedTabName: \"andeye\",\n websiteUrl: `${window.location.origin}/sharedtree/61b32661604b6b9a2d527201`,\n });\n saveEvent.notifySuccess();\n });\n microsoftTeams.settings.setValidityState(true);\n microsoftTeams.getContext(setContext)\n \n }, []);\n\n\n\n\n\n if (context) {\n return

{context['upn']}

\n }\n return (\n null\n )\n\n}","import React, { Component } from 'react';\nimport { Route } from 'react-router';\nimport { Layout } from './components/Layout';\nimport { Home } from './components/Home';\nimport { ViewSurvey } from './components/survey/ViewSurvey';\nimport { ViewMatches } from './components/survey/ViewMatches';\n//import { Register } from './components/Register';\n\nimport './custom.css'\nimport { CompleteSurvey } from './components/survey/CompleteSurvey';\nimport Cookies from 'universal-cookie';\nimport { NewSurveyResponse } from './components/survey/NewSurveyResponse';\nimport { SharedTree } from './components/collaborate/SharedTree';\nimport GuestRoom from './components/collaborate/GuestRoom';\nimport Admin from './components/admin/Admin';\nimport SuggestionTable from './components/admin/SuggestionTable'\nimport MatcherRoom from './components/survey/MatcherRoom';\nimport PersonalRecorder from './components/recorder/PersonalRecorder';\nimport RoundEditor from './components/quiz/RoundEditor';\nimport TeamsConfig from './components/teams/TeamsConfig';\n\nconst cookies = new Cookies();\n\nexport default class App extends Component {\n static displayName = App.name;\n\n render () {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n );\n }\n}\n","// In production, we register a service worker to serve assets from local cache.\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 the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register () {\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);\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/facebookincubator/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. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW (swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\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 }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker (swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').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);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import 'bootstrap/dist/css/bootstrap.css';\nimport \"bootstrap-slider/dist/css/bootstrap-slider.css\"\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport App from './App';\nimport registerServiceWorker, { unregister } from './registerServiceWorker';\n\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\nconst rootElement = document.getElementById('root');\n\nReactDOM.render(\n \n \n ,\n rootElement);\n\n//registerServiceWorker();\nunregister();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"matchName\":\"CallRoomItem_matchName__2lgN7\",\"matchItem\":\"CallRoomItem_matchItem__3TZO9\",\"matchSubLine\":\"CallRoomItem_matchSubLine__1xDBj\",\"matchTextContent\":\"CallRoomItem_matchTextContent__tKPXZ\",\"matchAvatar\":\"CallRoomItem_matchAvatar__1uAxd\",\"otherUsersLine\":\"CallRoomItem_otherUsersLine__3nw8U\",\"wantsToTalkLine\":\"CallRoomItem_wantsToTalkLine__1u8SL\",\"matchReasonLine\":\"CallRoomItem_matchReasonLine__gjQ06\",\"nameAndRole\":\"CallRoomItem_nameAndRole__UUxvr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"listContainer\":\"MatcherRoom_listContainer__1opvp\",\"listContainerHalfSize\":\"MatcherRoom_listContainerHalfSize__RbIud\",\"callContainer\":\"MatcherRoom_callContainer__2yTZb\",\"help\":\"MatcherRoom_help__1rYmZ\",\"showTreeFrame\":\"MatcherRoom_showTreeFrame__3lGuw\",\"showTreeHeader\":\"MatcherRoom_showTreeHeader__2xnNK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stepLine\":\"ExternalCallInfoModal_stepLine__3lM2U\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"parallaxHeader\":\"WCDHeader_parallaxHeader__2RWs0\",\"caption\":\"WCDHeader_caption__246lg\",\"parallax\":\"WCDHeader_parallax__1Obvs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"myProfileNickname\":\"ProfileBar_myProfileNickname__24moE\",\"myProfileSummary\":\"ProfileBar_myProfileSummary__2D14F\",\"noSummary\":\"ProfileBar_noSummary__uwsaj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"infoContainer\":\"PersonalRecorder_infoContainer__2gcKk\",\"callContainer\":\"PersonalRecorder_callContainer__3FVlx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"externalLink\":\"ExternalCallJoinModal_externalLink__3im0k\"};"],"sourceRoot":""}