{"version":3,"sources":["../PuppetRatingRequest.tsx","../PuppetRatingDisplay.tsx","../StarRating.tsx","../SessionStatsRequest.tsx","../SessionStatsDisplay.tsx","pages/Layout.tsx","pages/Home.tsx","components/MediaPlayer.tsx","components/MovementPanel.tsx","pages/Control.tsx","App.tsx","index.tsx","store/configureStore.ts","../ClientList.ts","../Init.tsx","../Stats.tsx","../RobotScript.ts","../FlagReport.ts","../Speak.ts","../TaskStats.ts","../index.ts","../Connecting.tsx","../RobotScriptPanel.tsx","../SpeakPanel.tsx","../Ended.tsx","../Movement.ts"],"names":["React","__webpack_require__","PuppetRatingRequest","_super","props","_this","call","this","queryRating","bind","__extends","prototype","componentDidMount","componentWillUnmount","queryTimeout","clearTimeout","ratings","connectedClient","requestTaskRating","sessionGuid","setTimeout","render","createElement","Fragment","className","PureComponent","exports","StarRating_1","PuppetRatingDisplay","map","rating","index","StarRating","ratingInfo","key","yeses","nayes","i","push","style","width","title","val","SessionStatsRequest","queryStats","sessionStats","requestSessionStats","SessionStatsDisplay","requestServerStats","beautifyNumber","x","Math","round","toString","replace","src","alt","height","duration","videoFrames","actionsCount","serverStats","Layout","react","Container","children","connect","MediaPlayer","_React$Component","Object","classCallCheck","possibleConstructorReturn","getPrototypeOf","videoCanvasRef","videoPlayer","audioPlayer","LoadVideo","assertThisInitialized","onTouchStart","onUnlocked","inherits","createClass","value","document","addEventListener","volume","removeEventListener","audioOut","unlock","node","ReactDOM","findDOMNode","HTMLElement","videoCanvas","querySelector","videoUrl","concat","window","location","href","split","process","JSMpeg","Player","videoBufferSize","audio","canvas","autoplay","disableWebAssembly","onSourceEstablished","dispatchEvent","Event","audioUrl","video","requestStartStreaming","Alert","color","sessionState","ClientStore","Streaming","ref","id","MovementPanel","_React$PureComponent","nippleContainerRef","nippleManager","currentJoyStickNipple","prevMovPos","prevJoystickPos","stopTimeout","gamepadButtonBounceGate","gamePadButtonBounceTimeout","controlLoopRunning","stopThreshold","moveThreshold","undefined","handleMove","controlLoop","move1Direction","handleGamePadConnection","y","isSending","drive","sqrt","prevDrive","abs","requestMovement","MovementStore","Stop","radian","atan2","leftSpeed","rightSpeed","direction","Forward","PI","Right","Left","Reverse","variableSpeed","_this2","setPosition","_this3","current","nipplejs","create","zone","mode","position","left","top","size","threshold","restOpacity","get","on","evt","data","instance","vector","ev","keyCode","preventDefault","e","GamepadEvent","gamepad","gamePadIndex","gamePadDisconnected","axes","length","gamePadConnected","_this4","gp","navigator","getGamepads","buttons","forEach","btn","pressed","requestRobotScript","requestAnimationFrame","Badge","hidden","Control","flagReportMessage","mediaPlayerComponent","reportPanelVisible","handleWindowUnload","handleFlagReportChange","reportContentAndDisconnect","match","params","streamId","taskId","webSocket","WebSocket","onclose","setDisconnect","onerror","telePresenceRequested","LiveFeedController","init","requestDisconnect","target","requestFlag","Modal","isOpen","centered","ModalBody","Card","CardBody","Row","robotImage","Col","CardImg","CardTitle","robotName","CardText","robotDescription","Button","onClick","CardGroup","taskDescription","MediaPlayer_MediaPlayer","assign","textToSpeechEnabled","SpeakPanel","MovementPanel_MovementPanel","muted","RobotScriptPanel","forceUpdate","Collapse","Input","type","onChange","placeholder","confirm","state","clientList","movement","robotScript","flagReport","speak","objectSpread","dispatch","bindActionCreators","RobotScriptStore","FlagReportStore","SpeakStore","AppComponent","apply","arguments","requestTaskState","pathname","Connected","Route","path","component","TaskStatsDisplay","Init","Connecting","Disconnected","Rated","Ended","Home","baseUrl","getElementsByTagName","getAttribute","history","initialState","middleware","thunk","routerMiddleware","appReducer","combineReducers","reducers","router","connectRouter","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","persistConfig","storage","persistedReducer","persistReducer","action","store","createStore","compose","applyMiddleware","persistor","persistStore","configureStore","createBrowserHistory","basename","es","BrowserRouter","integration_react","loading","App","getElementById","SessionState","actionCreators","initializeSession","getState","guid","fetch","then","response","json","requestGuid","theRate","console","log","requestConnect","ok","catch","unintentional","appState","unloadedState","isLoading","Invalid","reducer","incomingAction","react_redux_1","react_router_dom_1","InitPage","Redirect","to","default","TaskStatsStore","startAdminTaskUpdates","beautifyMs","ms","tasks","scope","taskState","Guid","End","Description","substr","Date","now","parse","Updating","PuppetCustomerUsername","PuppeteerCustomerUsername","VideoRate","AudioRate","MovementClientToController","MovementControllerToRcs","MovementRcsToClient","AccuracyRating","PerformanceRating","SatisfactionRating","taskStats","requestedScriptId","requestBody","JSON","stringify","scriptId","method","headers","Accept","Content-Type","body","text","responseText","errorMessage","status","error","isRequestingScript","scriptRequestError","message","reportMessage","flagged","requestingFlag","setSpeakText","textToSpeak","requestSpeak","requestingSpeak","trim","socketList","socketDiag","reload","onmessage","event","msg","Tasks","diagnostic","task","TaskId","ReportType","Value","ClientList","Movement","RobotScript","FlagReport","Speak","TaskStats","reactstrap_1","getIndexKey","activeElement","HTMLInputElement","robotScripts","script","scriptTitle","textInputRef","createRef","handleTextChange","onkeydown","InputGroup","innerRef","disabled","InputGroupAddon","addonType","PuppetRatingRequest_1","PuppetRatingDisplay_1","SessionStatsRequest_1","SessionStatsDisplay_1","__assign","allow","allowFullScreen","backgroundColor","Direction","clientTimeEpoch","finishedDirection","requestedDirection","lastRequestedDirection"],"mappings":"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","file":"static/js/main.1025c19f.chunk.js","sourcesContent":["\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PuppetRatingRequest = void 0;\r\nvar React = require(\"react\");\r\nvar PuppetRatingRequest = /** @class */ (function (_super) {\r\n __extends(PuppetRatingRequest, _super);\r\n function PuppetRatingRequest(props) {\r\n var _this = _super.call(this, props) || this;\r\n _this.queryRating = _this.queryRating.bind(_this);\r\n return _this;\r\n }\r\n PuppetRatingRequest.prototype.componentDidMount = function () {\r\n this.queryRating();\r\n };\r\n PuppetRatingRequest.prototype.componentWillUnmount = function () {\r\n if (this.queryTimeout)\r\n clearTimeout(this.queryTimeout);\r\n };\r\n PuppetRatingRequest.prototype.queryRating = function () {\r\n var _this = this;\r\n if (this.queryTimeout)\r\n clearTimeout(this.queryTimeout);\r\n if (!this.props)\r\n return;\r\n if (this.props.ratings)\r\n return;\r\n if (this.props.connectedClient)\r\n this.props.requestTaskRating(this.props.connectedClient.sessionGuid);\r\n this.queryTimeout = setTimeout(function () { _this.queryRating(); }, 2000);\r\n };\r\n PuppetRatingRequest.prototype.render = function () {\r\n if (!this.props)\r\n return null;\r\n if (this.props.ratings)\r\n return null;\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"d-flex flex-row text-center justify-content-center\" },\r\n React.createElement(\"div\", { className: \"spinner-grow text-secondary\" }),\r\n React.createElement(\"div\", { className: \"lead\" }, \"Waiting for rating\"))));\r\n };\r\n ;\r\n return PuppetRatingRequest;\r\n}(React.PureComponent));\r\nexports.PuppetRatingRequest = PuppetRatingRequest;\r\n//# sourceMappingURL=PuppetRatingRequest.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PuppetRatingDisplay = void 0;\r\nvar React = require(\"react\");\r\nvar StarRating_1 = require(\"./StarRating\");\r\nvar PuppetRatingDisplay = /** @class */ (function (_super) {\r\n __extends(PuppetRatingDisplay, _super);\r\n function PuppetRatingDisplay() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PuppetRatingDisplay.prototype.componentDidMount = function () {\r\n };\r\n PuppetRatingDisplay.prototype.render = function () {\r\n if (!this.props.ratings)\r\n return null;\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"d-flex flex-column\" }, this.props.ratings.map(function (rating, index) {\r\n return (React.createElement(StarRating_1.StarRating, { ratingInfo: rating, key: index }));\r\n }))));\r\n };\r\n return PuppetRatingDisplay;\r\n}(React.PureComponent));\r\nexports.PuppetRatingDisplay = PuppetRatingDisplay;\r\n//# sourceMappingURL=PuppetRatingDisplay.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarRating = void 0;\r\nvar React = require(\"react\");\r\nvar StarRating = /** @class */ (function (_super) {\r\n __extends(StarRating, _super);\r\n function StarRating(props) {\r\n var _this = _super.call(this, props) || this;\r\n _this.yeses = [];\r\n _this.nayes = [];\r\n for (var i = 0; i < 5; i++)\r\n if (i < _this.props.ratingInfo.rating)\r\n _this.yeses.push(i);\r\n else\r\n _this.nayes.push(i);\r\n return _this;\r\n }\r\n StarRating.prototype.render = function () {\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"p-2 d-flex flex-row\" },\r\n React.createElement(\"span\", { className: \"lead text-right pr-1\", style: { width: '100px' } }, this.props.ratingInfo.title),\r\n this.yeses.map(function (val, index) {\r\n return (React.createElement(\"span\", { key: index, className: \"badge badge-warning rounded-circle m-1\", style: { width: '20px' } }, \" \\u00A0 \"));\r\n }),\r\n this.nayes.map(function (val, index) { return (React.createElement(\"span\", { key: index, className: \"badge badge-secondary rounded-circle m-1\", style: { width: '20px' } }, \" \\u00A0 \")); }))));\r\n };\r\n ;\r\n return StarRating;\r\n}(React.PureComponent));\r\nexports.StarRating = StarRating;\r\n//# sourceMappingURL=StarRating.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SessionStatsRequest = void 0;\r\nvar React = require(\"react\");\r\nvar SessionStatsRequest = /** @class */ (function (_super) {\r\n __extends(SessionStatsRequest, _super);\r\n function SessionStatsRequest(props) {\r\n var _this = _super.call(this, props) || this;\r\n _this.queryStats = _this.queryStats.bind(_this);\r\n return _this;\r\n }\r\n SessionStatsRequest.prototype.componentDidMount = function () {\r\n this.queryStats();\r\n };\r\n SessionStatsRequest.prototype.componentWillUnmount = function () {\r\n if (this.queryTimeout)\r\n clearTimeout(this.queryTimeout);\r\n };\r\n SessionStatsRequest.prototype.queryStats = function () {\r\n var _this = this;\r\n if (this.queryTimeout)\r\n clearTimeout(this.queryTimeout);\r\n if (!this.props)\r\n return;\r\n if (this.props.sessionStats)\r\n return;\r\n if (this.props.connectedClient)\r\n this.props.requestSessionStats(this.props.connectedClient.sessionGuid);\r\n this.queryTimeout = setTimeout(function () { _this.queryStats(); }, 2000);\r\n };\r\n SessionStatsRequest.prototype.render = function () {\r\n if (!this.props)\r\n return null;\r\n if (this.props.sessionStats)\r\n return null;\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"d-flex flex-row text-center justify-content-center\" },\r\n React.createElement(\"div\", { className: \"spinner-grow text-secondary\" }),\r\n React.createElement(\"div\", { className: \"lead\" }, \"Gathering session data\"))));\r\n };\r\n ;\r\n return SessionStatsRequest;\r\n}(React.PureComponent));\r\nexports.SessionStatsRequest = SessionStatsRequest;\r\n//# sourceMappingURL=SessionStatsRequest.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SessionStatsDisplay = void 0;\r\nvar React = require(\"react\");\r\nvar SessionStatsDisplay = /** @class */ (function (_super) {\r\n __extends(SessionStatsDisplay, _super);\r\n function SessionStatsDisplay() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SessionStatsDisplay.prototype.componentDidMount = function () {\r\n this.props.requestServerStats();\r\n };\r\n SessionStatsDisplay.prototype.beautifyNumber = function (x) {\r\n return Math.round(x).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n };\r\n SessionStatsDisplay.prototype.render = function () {\r\n if (!this.props.sessionStats)\r\n return null;\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"d-flex flex-column\" },\r\n React.createElement(\"div\", { className: \"alert alert-dark\" },\r\n React.createElement(\"img\", { src: \"/img/assets/analysis.png\", alt: \"done\", height: \"24\", width: \"24\", className: \"m-1\" }),\r\n \"Congratulations! Your \",\r\n React.createElement(\"span\", { className: \"badge-secondary rounded ml-1 mr-1 pl-1 pr-1\" }, this.beautifyNumber(this.props.sessionStats.duration)),\r\n \" second session has generated \",\r\n React.createElement(\"span\", { className: \"badge-secondary rounded ml-1 mr-1 pl-1 pr-1\" }, this.beautifyNumber(this.props.sessionStats.videoFrames)),\r\n \" machine vision samples for classification\",\r\n this.props.sessionStats.actionsCount > 0 ?\r\n React.createElement(\"span\", null,\r\n \" and \",\r\n React.createElement(\"span\", { className: \"badge-secondary ml-1 mr-1 pl-1 pr-1 rounded\" }, this.beautifyNumber(this.props.sessionStats.actionsCount)),\r\n \" navigation decisions.\")\r\n :\r\n React.createElement(\"span\", null, \".\"),\r\n this.props.serverStats ?\r\n React.createElement(\"div\", { className: \"pt-3\" },\r\n \"Exosphere has accumulated \",\r\n React.createElement(\"span\", { className: \"badge-dark text-warning ml-1 mr-1 pl-1 pr-1 rounded\" }, this.beautifyNumber(this.props.serverStats.duration)),\r\n \" minutes of machine learning data. This amounts to \",\r\n React.createElement(\"span\", { className: \"badge-dark text-warning ml-1 mr-1 pl-1 pr-1 rounded\" }, this.beautifyNumber(this.props.serverStats.videoFrames)),\r\n \" vision classification samples and \",\r\n React.createElement(\"span\", { className: \"badge-dark text-warning ml-1 mr-1 pl-1 pr-1 rounded\" }, this.beautifyNumber(this.props.serverStats.actionsCount)),\r\n \" navigation event decisions.\") :\r\n React.createElement(\"div\", { className: \"d-flex flex-row text-center justify-content-center pt-3\" },\r\n React.createElement(\"div\", { className: \"spinner-grow text-secondary\" }),\r\n React.createElement(\"div\", { className: \"lead\" }, \"Calculating cumulative stats\"))))));\r\n };\r\n return SessionStatsDisplay;\r\n}(React.PureComponent));\r\nexports.SessionStatsDisplay = SessionStatsDisplay;\r\n//# sourceMappingURL=SessionStatsDisplay.js.map","import * as React from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport NavMenu from './NavMenu';\r\n\r\nexport default (props: { children?: React.ReactNode }) => (\r\n \r\n \r\n {props.children}\r\n \r\n \r\n);","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport { Jumbotron, Button } from 'reactstrap';\r\n\r\nconst Home = () => (\r\n
\r\n

Synthiam Exosphere

\r\n
\r\n);\r\n\r\nexport default connect()(Home);\r\n","import * as React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport * as ClientStore from '../store/ClientList';\r\nimport { Alert } from 'reactstrap';\r\n\r\ndeclare var JSMpeg: any;\r\n\r\ntype MediaPlayerProps =\r\n ClientStore.ClientListState\r\n & typeof ClientStore.actionCreators;\r\n\r\nexport class MediaPlayer extends React.Component {\r\n\r\n private readonly videoCanvasRef: React.RefObject;\r\n private videoPlayer: any | undefined;\r\n private audioPlayer: any | undefined;\r\n\r\n constructor(props: any) {\r\n\r\n super(props);\r\n this.videoCanvasRef = React.createRef();\r\n this.LoadVideo = this.LoadVideo.bind(this);\r\n this.onTouchStart = this.onTouchStart.bind(this);\r\n this.onUnlocked = this.onUnlocked.bind(this);\r\n }\r\n\r\n public componentDidMount() {\r\n\r\n document.addEventListener('touchstart', this.onTouchStart, false);\r\n }\r\n\r\n private onUnlocked() {\r\n\r\n if (this.audioPlayer) {\r\n\r\n this.audioPlayer.volume = 1;\r\n document.removeEventListener('touchstart', this.onTouchStart);\r\n }\r\n }\r\n private onTouchStart() {\r\n\r\n if (this.audioPlayer) {\r\n\r\n this.audioPlayer.audioOut.unlock(this.onUnlocked);\r\n document.removeEventListener('touchstart', this.onTouchStart);\r\n }\r\n }\r\n\r\n public LoadVideo() {\r\n\r\n const node = ReactDOM.findDOMNode(this);\r\n if (node instanceof HTMLElement) {\r\n\r\n const videoCanvas = node.querySelector('#video-canvas');\r\n\r\n if (!this.props.connectedClient)\r\n return;\r\n\r\n const videoUrl = `wss://${window.location.href.split(\"/\")[2]}${`${process.env.REACT_APP_VIDEO_WEB_SOCKET}${this.props.connectedClient.sessionGuid}/`}`;\r\n this.videoPlayer = new JSMpeg.Player(videoUrl, {\r\n videoBufferSize: 1024 * 1024 * 1,\r\n audio: false,\r\n canvas: videoCanvas,\r\n autoplay: true,\r\n disableWebAssembly: true,\r\n onSourceEstablished: () => setTimeout(() => {\r\n window.dispatchEvent(new Event('resize')); // With a delay after video has started manually all resize to fix joystick (nipplejs) position\r\n }, 500)\r\n });\r\n\r\n const audioUrl = `wss://${window.location.href.split(\"/\")[2]}${`${process.env.REACT_APP_AUDIO_WEB_SOCKET}${this.props.connectedClient.sessionGuid}/`}`;\r\n this.audioPlayer = new JSMpeg.Player(audioUrl, {\r\n video: false,\r\n disableWebAssembly: true\r\n });\r\n\r\n this.props.requestStartStreaming();\r\n this.audioPlayer.audioOut.unlock(this.onUnlocked);\r\n }\r\n }\r\n\r\n public render() {\r\n\r\n return (\r\n \r\n
\r\n Live stream not started yet\r\n \r\n
\r\n
\r\n );\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport * as MovementStore from '../store/Movement';\r\nimport * as RobotScript from '../store/RobotScript';\r\nimport { Alert, Badge } from 'reactstrap';\r\nimport nipplejs from 'nipplejs';\r\n\r\ntype MovementProps =\r\n MovementStore.MovementState\r\n & RobotScript.RobotScriptState\r\n & typeof MovementStore.actionCreators\r\n & typeof RobotScript.actionCreators;\r\n\r\nexport class MovementPanel extends React.PureComponent {\r\n\r\n private readonly nippleContainerRef: React.RefObject;\r\n private nippleManager: nipplejs.JoystickManager | undefined;\r\n private currentJoyStickNipple: nipplejs.Joystick | undefined;\r\n private prevMovPos: number[] = [0, 0];\r\n private prevJoystickPos: number[] = [0, 0];\r\n private stopTimeout: ReturnType | undefined;\r\n private gamepadButtonBounceGate: boolean = false;\r\n private gamePadButtonBounceTimeout: ReturnType | undefined;\r\n private controlLoopRunning: boolean = false;\r\n private readonly stopThreshold = 0.2;\r\n private readonly moveThreshold = 0.1;\r\n\r\n constructor(props: any) {\r\n\r\n super(props);\r\n this.nippleContainerRef = React.createRef();\r\n this.currentJoyStickNipple = undefined;\r\n this.handleMove = this.handleMove.bind(this);\r\n this.controlLoop = this.controlLoop.bind(this);\r\n this.move1Direction = this.move1Direction.bind(this);\r\n this.handleGamePadConnection = this.handleGamePadConnection.bind(this);\r\n }\r\n\r\n public handleMove(x: number, y: number): void {\r\n\r\n if (this.props.isSending)\r\n return;\r\n\r\n const drive = Math.sqrt(x * x + y * y);\r\n const prevDrive = Math.sqrt(this.prevMovPos[0] * this.prevMovPos[0] + this.prevMovPos[1] * this.prevMovPos[1]);\r\n\r\n // If change in move is less than move threshold ignore move unless we are transitioning into stop\r\n if (this.prevMovPos && !(drive < this.stopThreshold && prevDrive >= this.stopThreshold))\r\n if (Math.abs(this.prevMovPos[0] - x) < this.moveThreshold && Math.abs(this.prevMovPos[1] - y) < this.moveThreshold)\r\n return;\r\n\r\n this.prevMovPos = [x, y];\r\n\r\n if (drive < this.stopThreshold)\r\n this.props.requestMovement(MovementStore.Direction.Stop, 0, 0);\r\n else {\r\n\r\n const radian = Math.atan2(y, x);\r\n\r\n let leftSpeed = drive;\r\n let rightSpeed = drive;\r\n\r\n let direction = MovementStore.Direction.Forward;\r\n if (Math.abs(radian) < Math.PI / 4)\r\n direction = MovementStore.Direction.Right;\r\n else if (Math.abs(radian) > 3 * Math.PI / 4)\r\n direction = MovementStore.Direction.Left;\r\n else if (radian < 0)\r\n direction = MovementStore.Direction.Reverse;\r\n\r\n const variableSpeed = Math.abs(Math.abs(y) - Math.abs(x) + .2 * Math.abs(y)) * drive;\r\n\r\n if (x > .2)\r\n rightSpeed = variableSpeed;\r\n else if (x < -.2)\r\n leftSpeed = variableSpeed;\r\n\r\n this.props.requestMovement(direction, leftSpeed, rightSpeed);\r\n }\r\n }\r\n\r\n private move1Direction(direction: MovementStore.Direction): boolean {\r\n\r\n if (this.props.isSending)\r\n return false;\r\n switch (direction) {\r\n\r\n case MovementStore.Direction.Left:\r\n this.props.requestMovement(MovementStore.Direction.Left, 0, 0);\r\n if (this.currentJoyStickNipple)\r\n this.currentJoyStickNipple.setPosition(() => null, { x: -50, y: 0 });\r\n break;\r\n case MovementStore.Direction.Forward:\r\n this.props.requestMovement(MovementStore.Direction.Forward, 0, 0);\r\n if (this.currentJoyStickNipple)\r\n this.currentJoyStickNipple.setPosition(() => null, { x: 0, y: -50 });\r\n break;\r\n case MovementStore.Direction.Right:\r\n this.props.requestMovement(MovementStore.Direction.Right, 0, 0);\r\n if (this.currentJoyStickNipple)\r\n this.currentJoyStickNipple.setPosition(() => null, { x: 50, y: 0 });\r\n break;\r\n case MovementStore.Direction.Reverse:\r\n this.props.requestMovement(MovementStore.Direction.Reverse, 0, 0);\r\n if (this.currentJoyStickNipple)\r\n this.currentJoyStickNipple.setPosition(() => null, { x: 0, y: 50 });\r\n break;\r\n }\r\n\r\n if (this.stopTimeout)\r\n clearTimeout(this.stopTimeout);\r\n\r\n this.stopTimeout = setTimeout(() => {\r\n this.props.requestMovement(MovementStore.Direction.Stop, 0, 0);\r\n if (this.currentJoyStickNipple)\r\n this.currentJoyStickNipple.setPosition(() => null, { x: 0, y: 0 });\r\n }, 250);\r\n\r\n return true;\r\n }\r\n\r\n public componentDidMount() {\r\n\r\n const node = this.nippleContainerRef.current;\r\n if (!node)\r\n return;\r\n\r\n //window.addEventListener(\"resize\", () => {\r\n\r\n if (!this.nippleManager) {\r\n this.nippleManager = nipplejs.create({\r\n zone: node,\r\n mode: 'static',\r\n color: 'black',\r\n position: { left: '50%', top: '50%' },\r\n size: 200,\r\n threshold: 10,\r\n restOpacity: 0.8\r\n });\r\n\r\n this.currentJoyStickNipple = this.nippleManager.get(0);\r\n if (!this.currentJoyStickNipple)\r\n this.currentJoyStickNipple = this.nippleManager.get(1);\r\n\r\n this.nippleManager.on('end', () => {\r\n\r\n this.props.requestMovement(MovementStore.Direction.Stop, 0, 0);\r\n });\r\n this.nippleManager.on('move', (evt, data) => {\r\n\r\n this.currentJoyStickNipple = data.instance;\r\n this.handleMove(data.vector.x, data.vector.y);\r\n });\r\n this.nippleManager.on('shown', (evt, data) => {\r\n\r\n this.currentJoyStickNipple = data.instance;\r\n window.dispatchEvent(new Event('resize'));\r\n });\r\n }\r\n //});\r\n\r\n document.addEventListener(\"keydown\", ev => {\r\n\r\n if (ev.keyCode < 37 || ev.keyCode > 40)\r\n return true;\r\n\r\n switch (ev.keyCode) {\r\n case 37:\r\n this.move1Direction(MovementStore.Direction.Left);\r\n break;\r\n case 38:\r\n this.move1Direction(MovementStore.Direction.Forward);\r\n break;\r\n case 39:\r\n this.move1Direction(MovementStore.Direction.Right);\r\n break;\r\n case 40:\r\n this.move1Direction(MovementStore.Direction.Reverse);\r\n break;\r\n }\r\n\r\n ev.preventDefault();\r\n return false;\r\n });\r\n\r\n window.removeEventListener(\"gamepadconnected\", this.handleGamePadConnection);\r\n window.addEventListener(\"gamepadconnected\", this.handleGamePadConnection);\r\n\r\n window.addEventListener(\"gamepaddisconnected\", (e) => {\r\n\r\n if (e instanceof GamepadEvent && e.gamepad.index === this.props.gamePadIndex)\r\n this.props.gamePadDisconnected();\r\n this.controlLoopRunning = false;\r\n });\r\n }\r\n\r\n private handleGamePadConnection(e: any) {\r\n\r\n if (e instanceof GamepadEvent)\r\n if (e.gamepad.axes.length > 0)\r\n this.props.gamePadConnected(e.gamepad.index);\r\n\r\n if (!this.controlLoopRunning) {\r\n this.controlLoopRunning = true;\r\n this.controlLoop();\r\n }\r\n }\r\n\r\n private controlLoop() {\r\n\r\n if (this.props.gamePadIndex === undefined)\r\n return;\r\n\r\n const gp: Gamepad | null = navigator.getGamepads()[this.props.gamePadIndex as number];\r\n\r\n if (!gp) {\r\n this.controlLoopRunning = false;\r\n return;\r\n }\r\n\r\n if (gp.buttons)\r\n gp.buttons.forEach((btn: GamepadButton, i) => {\r\n\r\n if (btn.pressed) {\r\n\r\n if (!this.gamepadButtonBounceGate) {\r\n\r\n this.gamepadButtonBounceGate = true;\r\n if (this.gamePadButtonBounceTimeout)\r\n clearTimeout(this.gamePadButtonBounceTimeout);\r\n\r\n this.gamePadButtonBounceTimeout = setTimeout(() => this.gamepadButtonBounceGate = false, 300);\r\n\r\n switch (i) {\r\n case 12: // Up\r\n this.move1Direction(MovementStore.Direction.Forward);\r\n break;\r\n\r\n case 13: //down\r\n this.move1Direction(MovementStore.Direction.Reverse);\r\n break;\r\n\r\n case 14: //left\r\n this.move1Direction(MovementStore.Direction.Left);\r\n break;\r\n\r\n case 15: //right \r\n this.move1Direction(MovementStore.Direction.Right);\r\n break;\r\n\r\n case 0: //A\r\n this.props.requestRobotScript(0);\r\n break;\r\n\r\n case 1: // B\r\n this.props.requestRobotScript(1);\r\n break;\r\n\r\n case 2: //X\r\n this.props.requestRobotScript(2);\r\n break;\r\n\r\n case 3: // Y\r\n this.props.requestRobotScript(3);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n\r\n const x = Math.abs(gp.axes[0]) > Math.abs(gp.axes[2]) ? gp.axes[0] : gp.axes[2];\r\n const y = -(Math.abs(gp.axes[1]) > Math.abs(gp.axes[3]) ? gp.axes[1] : gp.axes[3]);\r\n if (this.currentJoyStickNipple)\r\n if (Math.abs(this.prevJoystickPos[0] - x) > 0.01 || Math.abs(this.prevJoystickPos[1] - y) > 0.01) {\r\n this.prevJoystickPos = [x, y];\r\n this.currentJoyStickNipple.setPosition(() => this.handleMove(x, y), { x: x * 100, y: -y * 100 });\r\n }\r\n\r\n requestAnimationFrame(this.controlLoop);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n};","import * as React from 'react';\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\nimport { Container, Row, Col, Button, Card, CardBody, CardTitle, CardText, CardGroup, CardImg, Input, Modal, ModalBody, Collapse } from 'reactstrap';\r\nimport { MediaPlayer } from '../components/MediaPlayer';\r\nimport { MovementPanel } from \"../components/MovementPanel\";\r\nimport { RobotScriptPanel } from '../components/RobotScriptPanel';\r\nimport { SpeakPanel } from '../components/SpeakPanel';\r\nimport { ApplicationState } from '../store';\r\nimport * as ClientStore from \"../store/ClientList\";\r\nimport * as MovementStore from \"../store/Movement\";\r\nimport * as RobotScriptStore from '../store/RobotScript';\r\nimport * as FlagReportStore from '../store/FlagReport';\r\nimport * as SpeakStore from '../store/Speak';\r\nimport { RouteComponentProps } from 'react-router';\r\n\r\ndeclare var LiveFeedController: any;\r\n\r\ninterface RouteParams { streamId: string }\r\n\r\ntype ControlProps = RouteComponentProps\r\n & ClientStore.ClientListState\r\n & MovementStore.MovementState\r\n & RobotScriptStore.RobotScriptState\r\n & FlagReportStore.FlagReportState\r\n & SpeakStore.SpeakState\r\n & typeof ClientStore.actionCreators\r\n & typeof MovementStore.actionCreators\r\n & typeof RobotScriptStore.actionCreators\r\n & typeof FlagReportStore.actionCreators\r\n & typeof SpeakStore.actionCreators;\r\n\r\nexport class Control extends React.PureComponent {\r\n\r\n private flagReportMessage: string;\r\n private readonly mediaPlayerComponent: React.RefObject;\r\n private reportPanelVisible: boolean = false;\r\n\r\n constructor(props: any) {\r\n\r\n super(props);\r\n this.flagReportMessage = '';\r\n this.handleWindowUnload = this.handleWindowUnload.bind(this);\r\n this.handleFlagReportChange = this.handleFlagReportChange.bind(this);\r\n this.reportContentAndDisconnect = this.reportContentAndDisconnect.bind(this);\r\n this.mediaPlayerComponent = React.createRef();\r\n }\r\n\r\n public componentDidMount() {\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.streamId) {\r\n\r\n const taskId = this.props.match.params.streamId;\r\n //this.props.requestConnect(taskId);\r\n\r\n const webSocket = new WebSocket(`wss://${window.location.href.split('/')[2]}${process.env.REACT_APP_CONNECTION_WEB_SOCKET}${taskId}`);\r\n\r\n webSocket.onclose = ev => {\r\n\r\n this.props.setDisconnect();\r\n };\r\n webSocket.onerror = ev => {\r\n\r\n this.props.setDisconnect();\r\n };\r\n\r\n if (this.props.connectedClient && this.props.connectedClient.telePresenceRequested) {\r\n LiveFeedController.init(taskId);\r\n }\r\n\r\n window.addEventListener('beforeunload', this.handleWindowUnload);\r\n }\r\n }\r\n\r\n public handleWindowUnload(e: BeforeUnloadEvent) {\r\n //if (window.location.hostname !== 'localhost')\r\n this.props.requestDisconnect(true);\r\n }\r\n\r\n public handleFlagReportChange(e: any) {\r\n this.flagReportMessage = e.target.value;\r\n }\r\n\r\n public reportContentAndDisconnect() {\r\n this.props.requestFlag(this.flagReportMessage);\r\n this.props.requestDisconnect();\r\n }\r\n\r\n public render() {\r\n\r\n if (!this.props.connectedClient)\r\n return ();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n
You are connecting to the following remote robot.
\r\n
Do not refresh this page during your session.
\r\n \r\n \r\n \r\n {\r\n this.props.connectedClient.robotImage ?\r\n \r\n \r\n \r\n :\r\n \r\n }\r\n \r\n {this.props.connectedClient.robotName}\r\n {this.props.connectedClient.robotDescription}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n Your Task: {this.props.connectedClient.taskDescription}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {(this.props.connectedClient.textToSpeechEnabled) ?\r\n
\r\n \r\n
:\r\n \r\n }\r\n \r\n \r\n \r\n {\r\n (this.props.connectedClient.telePresenceRequested) ?\r\n
\r\n \r\n
\r\n :\r\n \r\n }\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => {\r\n const { clientList, movement, robotScript, flagReport, speak } = state;\r\n if (clientList && movement && robotScript && flagReport && speak) {\r\n return {\r\n ...clientList, ...movement, ...robotScript, ...flagReport, ...speak\r\n };\r\n }\r\n return {};\r\n },\r\n dispatch => ({\r\n ...bindActionCreators({\r\n ...ClientStore.actionCreators,\r\n ...MovementStore.actionCreators,\r\n ...RobotScriptStore.actionCreators,\r\n ...FlagReportStore.actionCreators,\r\n ...SpeakStore.actionCreators\r\n }, dispatch)\r\n })\r\n)(Control as any);","import * as React from 'react';\r\nimport { Route, RouteComponentProps } from 'react-router';\r\nimport Layout from './pages/Layout';\r\nimport Home from './pages/Home';\r\nimport Connecting from './pages/Connecting'\r\nimport Control from './pages/Control';\r\nimport Ended from './pages/Ended';\r\nimport Init from './pages/Init';\r\nimport TaskStatsDisplay from './pages/Stats';\r\nimport * as ClientStore from './store/ClientList';\r\nimport { ApplicationState } from './store';\r\nimport { connect } from 'react-redux';\r\n\r\nimport './custom.css'\r\n\r\ninterface RouteParams { streamId: string }\r\ntype AppComponentProps = ClientStore.ClientListState\r\n & typeof ClientStore.actionCreators &\r\n RouteComponentProps;\r\n\r\nexport class AppComponent extends React.PureComponent {\r\n\r\n public componentDidMount() {\r\n\r\n this.props.requestTaskState(window.location.pathname.split('/')[2]);\r\n }\r\n\r\n public render() {\r\n\r\n switch (this.props.sessionState) {\r\n case ClientStore.SessionState.Connected:\r\n case ClientStore.SessionState.Streaming:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n case ClientStore.SessionState.Init:\r\n case ClientStore.SessionState.Connecting:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n case ClientStore.SessionState.Disconnected:\r\n case ClientStore.SessionState.Rated:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n default:\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.clientList,\r\n ClientStore.actionCreators\r\n)(AppComponent as any);","import 'bootstrap/dist/css/bootstrap.css';\r\n\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport { createBrowserHistory } from 'history';\r\nimport configureStore from './store/configureStore';\r\nimport App from './App';\r\n// import registerServiceWorker from './registerServiceWorker';\r\nimport { PersistGate } from 'redux-persist/es/integration/react';\r\nimport { BrowserRouter } from \"react-router-dom\";\r\n\r\n\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') as string;\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\nconst { store, persistor } = configureStore(history);\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n\r\n// registerServiceWorker();\r\n","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\r\nimport { History } from 'history';\r\nimport { ApplicationState, reducers, AppThunkAction } from './';\r\nimport { persistStore, persistReducer } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\n\r\nexport default function configureStore(history: History, initialState?: ApplicationState) {\r\n const middleware = [\r\n thunk,\r\n routerMiddleware(history)\r\n ];\r\n\r\n const appReducer = combineReducers({\r\n ...reducers,\r\n router: connectRouter(history)\r\n });\r\n\r\n const rootReducer = (state: any, action: any) => {\r\n if (action.type === 'SESSION_INIT')\r\n state = undefined;\r\n\r\n return appReducer(state, action);\r\n };\r\n\r\n const enhancers = [];\r\n const windowIfDefined = typeof window === 'undefined' ? null : window as any;\r\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\r\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\r\n }\r\n\r\n const persistConfig = {\r\n key: 'root',\r\n storage,\r\n }\r\n\r\n const persistedReducer = persistReducer(persistConfig, rootReducer);\r\n let store = createStore(\r\n persistedReducer,\r\n initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers)\r\n );\r\n let persistor = persistStore(store);\r\n\r\n return { store, persistor };\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.reducer = exports.actionCreators = exports.SessionState = void 0;\r\nvar SessionState;\r\n(function (SessionState) {\r\n SessionState[SessionState[\"Invalid\"] = 0] = \"Invalid\";\r\n SessionState[SessionState[\"Init\"] = 1] = \"Init\";\r\n SessionState[SessionState[\"Connecting\"] = 2] = \"Connecting\";\r\n SessionState[SessionState[\"Connected\"] = 3] = \"Connected\";\r\n SessionState[SessionState[\"Streaming\"] = 4] = \"Streaming\";\r\n SessionState[SessionState[\"Disconnected\"] = 5] = \"Disconnected\";\r\n SessionState[SessionState[\"Rated\"] = 6] = \"Rated\";\r\n})(SessionState = exports.SessionState || (exports.SessionState = {}));\r\nexports.actionCreators = {\r\n initializeSession: function () { return function (dispatch, getState) {\r\n dispatch({ type: 'SESSION_INIT' });\r\n }; },\r\n requestTaskState: function (guid) { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState) {\r\n fetch(\"/api/connection/query/\" + guid)\r\n .then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (data) {\r\n dispatch({ type: 'RECEIVE_TASK_STATE', sessionState: data.state });\r\n });\r\n dispatch({ type: 'REQUEST_TASK_STATE', requestGuid: guid });\r\n }\r\n }; },\r\n requestTaskRating: function (guid) { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState) {\r\n fetch(\"/api/connection/query/rating/\" + guid)\r\n .then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (data) {\r\n var theRate = (data.rating && data.rating[0].rating > 0) ? data.rating : undefined;\r\n dispatch({ type: 'RECEIVE_TASK_RATING', ratings: theRate });\r\n });\r\n dispatch({ type: 'REQUEST_TASK_RATING', requestGuid: guid });\r\n }\r\n }; },\r\n requestSessionStats: function (guid) { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState) {\r\n fetch(\"/api/connection/stats/\" + guid)\r\n .then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (data) {\r\n console.log(data);\r\n dispatch({ type: 'RECEIVE_SESSION_STATS', sessionStats: (data.sessionStats && data.sessionStats.duration > 0) ? data.sessionStats : undefined });\r\n });\r\n dispatch({ type: 'REQUEST_SESSION_STATS', requestGuid: guid });\r\n }\r\n }; },\r\n requestServerStats: function () { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState) {\r\n fetch(\"/api/serverstatus/stats\")\r\n .then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (data) {\r\n dispatch({ type: 'RECEIVE_SERVER_STATS', serverStats: (data.sessionStats && data.sessionStats.duration > 0) ? data.sessionStats : undefined });\r\n });\r\n dispatch({ type: 'REQUEST_SERVER_STATS' });\r\n }\r\n }; },\r\n requestConnect: function (guid) { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState) {\r\n fetch(\"/api/connection/connect/\" + guid)\r\n .then(function (response) {\r\n if (!response.ok)\r\n dispatch({ type: 'RECEIVE_DISCONNECT' });\r\n else {\r\n var info = response.json();\r\n info.then(function (data) { return dispatch({ type: 'RECEIVE_CONNECT', connectedClient: data }); });\r\n }\r\n })\r\n .catch(function () { return dispatch({ type: 'RECEIVE_DISCONNECT' }); });\r\n dispatch({ type: 'REQUEST_CONNECT', requestGuid: guid });\r\n }\r\n }; },\r\n requestDisconnect: function (unintentional) { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState && appState.clientList && appState.clientList.connectedClient) {\r\n fetch(\"/api/\" + (unintentional ? 'drop' : 'disconnect') + \"/\" + appState.clientList.connectedClient.sessionGuid)\r\n .then(function (response) { return response.json(); })\r\n .then(function (data) {\r\n dispatch({ type: 'RECEIVE_DISCONNECT' });\r\n });\r\n dispatch({ type: 'REQUEST_DISCONNECT', requestGuid: appState.clientList.connectedClient.sessionGuid });\r\n }\r\n }; },\r\n setDisconnect: function () { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState && appState.clientList) {\r\n dispatch({ type: 'RECEIVE_DISCONNECT' });\r\n }\r\n }; },\r\n requestStartStreaming: function () { return function (dispatch, getState) {\r\n dispatch({ type: 'START_STREAM' });\r\n }; }\r\n};\r\nvar unloadedState = {\r\n isLoading: false, connectedClient: undefined, sessionState: SessionState.Invalid, ratings: undefined, sessionStats: undefined, serverStats: undefined\r\n};\r\nexports.reducer = function (state, incomingAction) {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n var action = incomingAction;\r\n switch (action.type) {\r\n case 'REQUEST_CONNECT':\r\n return {\r\n isLoading: true,\r\n connectedClient: unloadedState.connectedClient,\r\n sessionState: SessionState.Connecting,\r\n ratings: undefined,\r\n sessionStats: state.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'RECEIVE_CONNECT':\r\n return {\r\n isLoading: false,\r\n connectedClient: action.connectedClient,\r\n sessionState: SessionState.Connected,\r\n ratings: undefined,\r\n sessionStats: state.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'REQUEST_DISCONNECT':\r\n return {\r\n isLoading: true,\r\n connectedClient: state.connectedClient,\r\n sessionState: SessionState.Disconnected,\r\n ratings: undefined,\r\n sessionStats: state.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'RECEIVE_DISCONNECT':\r\n return {\r\n isLoading: false,\r\n connectedClient: state.connectedClient,\r\n sessionState: SessionState.Disconnected,\r\n ratings: undefined,\r\n sessionStats: state.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'START_STREAM':\r\n return {\r\n isLoading: state.isLoading,\r\n connectedClient: state.connectedClient,\r\n sessionState: SessionState.Streaming,\r\n ratings: state.ratings,\r\n sessionStats: state.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'REQUEST_TASK_STATE':\r\n return {\r\n isLoading: true,\r\n connectedClient: state.connectedClient,\r\n sessionState: state.sessionState,\r\n ratings: state.ratings,\r\n sessionStats: state.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'RECEIVE_TASK_STATE':\r\n return {\r\n isLoading: false,\r\n connectedClient: state.connectedClient,\r\n sessionState: action.sessionState,\r\n ratings: state.ratings,\r\n sessionStats: state.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'REQUEST_TASK_RATING':\r\n return {\r\n isLoading: true,\r\n connectedClient: state.connectedClient,\r\n sessionState: state.sessionState,\r\n ratings: state.ratings,\r\n sessionStats: state.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'RECEIVE_TASK_RATING':\r\n return {\r\n isLoading: false,\r\n connectedClient: state.connectedClient,\r\n sessionState: state.sessionState,\r\n ratings: action.ratings,\r\n sessionStats: state.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'REQUEST_SESSION_STATS':\r\n return {\r\n isLoading: false,\r\n connectedClient: state.connectedClient,\r\n sessionState: state.sessionState,\r\n ratings: state.ratings,\r\n sessionStats: undefined,\r\n serverStats: state.serverStats\r\n };\r\n case 'RECEIVE_SESSION_STATS':\r\n return {\r\n isLoading: false,\r\n connectedClient: state.connectedClient,\r\n sessionState: state.sessionState,\r\n ratings: state.ratings,\r\n sessionStats: action.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'REQUEST_SERVER_STATS':\r\n return {\r\n isLoading: false,\r\n connectedClient: state.connectedClient,\r\n sessionState: state.sessionState,\r\n ratings: state.ratings,\r\n sessionStats: state.sessionStats,\r\n serverStats: state.serverStats\r\n };\r\n case 'RECEIVE_SERVER_STATS':\r\n return {\r\n isLoading: false,\r\n connectedClient: state.connectedClient,\r\n sessionState: state.sessionState,\r\n ratings: state.ratings,\r\n sessionStats: state.sessionStats,\r\n serverStats: action.serverStats\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n//# sourceMappingURL=ClientList.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = require(\"react\");\r\nvar react_redux_1 = require(\"react-redux\");\r\nvar ClientStore = require(\"../store/ClientList\");\r\nvar react_router_dom_1 = require(\"react-router-dom\");\r\nvar InitPage = /** @class */ (function (_super) {\r\n __extends(InitPage, _super);\r\n function InitPage() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n InitPage.prototype.componentDidMount = function () {\r\n this.props.initializeSession();\r\n };\r\n InitPage.prototype.render = function () {\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"pt-3 d-flex align-content-center justify-content-around text-center flex-column\" },\r\n React.createElement(\"div\", { className: \"spinner-grow align-self-center\" }),\r\n React.createElement(\"p\", { className: \"lead\" }, \"Initializing Synthiam Exosphere Session\")),\r\n React.createElement(react_router_dom_1.Redirect, { to: \"/stream/\" + this.props.match.params.streamId + \"/live\" })));\r\n };\r\n return InitPage;\r\n}(React.PureComponent));\r\n;\r\nexports.default = react_redux_1.connect(function (state) { return state.clientList; }, ClientStore.actionCreators)(InitPage);\r\n//# sourceMappingURL=Init.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TaskStatsDisplay = void 0;\r\nvar React = require(\"react\");\r\nvar TaskStatsStore = require(\"../store/TaskStats\");\r\nvar react_redux_1 = require(\"react-redux\");\r\nvar TaskStatsDisplay = /** @class */ (function (_super) {\r\n __extends(TaskStatsDisplay, _super);\r\n function TaskStatsDisplay() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TaskStatsDisplay.prototype.componentDidMount = function () {\r\n this.props.startAdminTaskUpdates();\r\n };\r\n TaskStatsDisplay.prototype.beautifyMs = function (ms) {\r\n if (ms < 0)\r\n return '-';\r\n if (ms < 3600000)\r\n return Math.round(ms / 60000) + \" m\";\r\n return Math.round(ms / 3600000) + \" h\";\r\n };\r\n TaskStatsDisplay.prototype.render = function () {\r\n var _this = this;\r\n if (!this.props.tasks)\r\n return (React.createElement(React.Fragment, null, \"Loading...\"));\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { style: { position: 'absolute', top: '1%', left: '0', width: '100%' } },\r\n React.createElement(\"table\", { className: \"table table-dark table-striped mx-auto\", style: { width: '99%' } },\r\n React.createElement(\"thead\", null,\r\n React.createElement(\"tr\", null,\r\n React.createElement(\"th\", { scope: \"col\" }, \"Task\"),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Ended\"),\r\n React.createElement(\"th\", { scope: \"col\" }),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Puppet\"),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Puppeteer\"),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Video (kbps)\"),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Audio (kbps)\"),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Web delay (ms)\"),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Server delay (ms)\"),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Control delay (ms)\"),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Accuracy\"),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Performance\"),\r\n React.createElement(\"th\", { scope: \"col\" }, \"Satisfaction\"))),\r\n React.createElement(\"tbody\", null, this.props.tasks.map(function (taskState, index) {\r\n return (React.createElement(\"tr\", { key: taskState.Guid, className: \"\" + (taskState.End ? \"\" : \"bg-info\") },\r\n React.createElement(\"th\", { scope: \"row\" },\r\n taskState.Description.substr(0, 50),\r\n \"...\"),\r\n React.createElement(\"td\", null, taskState.End ? \"\" + _this.beautifyMs(Date.now() - Date.parse(taskState.End.toString())) : null),\r\n React.createElement(\"td\", null, taskState.Updating ? React.createElement(\"span\", null, \"\\u26A1\") : null),\r\n React.createElement(\"td\", null, taskState.PuppetCustomerUsername),\r\n React.createElement(\"td\", null, taskState.PuppeteerCustomerUsername),\r\n React.createElement(\"td\", null, taskState.VideoRate ? Math.round(taskState.VideoRate * 8 / 1000) : taskState.End ? '' : '---'),\r\n React.createElement(\"td\", null, taskState.AudioRate ? Math.round(taskState.AudioRate * 8 / 1000) : taskState.End ? '' : '---'),\r\n React.createElement(\"td\", { className: taskState.MovementClientToController > 500 ? 'text-warning' : '' }, taskState.MovementClientToController > 0 ? Math.round(taskState.MovementClientToController) : '-'),\r\n React.createElement(\"td\", { className: taskState.MovementControllerToRcs > 20 ? 'text-warning' : '' }, Math.round(taskState.MovementControllerToRcs)),\r\n React.createElement(\"td\", { className: taskState.MovementRcsToClient > 50 ? 'text-warning' : '' }, Math.round(taskState.MovementRcsToClient)),\r\n React.createElement(\"td\", null, taskState.AccuracyRating),\r\n React.createElement(\"td\", null, taskState.PerformanceRating),\r\n React.createElement(\"td\", null, taskState.SatisfactionRating)));\r\n }))),\r\n React.createElement(\"div\", { className: \"clearfix\" }))));\r\n };\r\n return TaskStatsDisplay;\r\n}(React.PureComponent));\r\nexports.TaskStatsDisplay = TaskStatsDisplay;\r\nexports.default = react_redux_1.connect(function (state) { return state.taskStats; }, TaskStatsStore.actionCreators)(TaskStatsDisplay);\r\n//# sourceMappingURL=Stats.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.reducer = exports.actionCreators = void 0;\r\nexports.actionCreators = {\r\n requestRobotScript: function (requestedScriptId) { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState && appState.robotScript && appState.clientList && appState.clientList.connectedClient) {\r\n var requestBody = JSON.stringify({\r\n sessionGuid: \"\" + appState.clientList.connectedClient.sessionGuid,\r\n scriptId: requestedScriptId\r\n });\r\n fetch(\"/api/robotscript\", {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: requestBody\r\n })\r\n .then(function (response) {\r\n if (!response.ok)\r\n response.text().then(function (responseText) {\r\n dispatch({ type: 'RECEIVED_ERROR_ROBOT_SCRIPT', errorMessage: responseText + \" (\" + response.status + \")\" });\r\n });\r\n else {\r\n dispatch({ type: 'FINISHED_ROBOT_SCRIPT' });\r\n }\r\n ;\r\n })\r\n .catch(function (error) { return dispatch({ type: 'RECEIVED_ERROR_ROBOT_SCRIPT', errorMessage: error }); });\r\n dispatch({ type: 'REQUEST_ROBOT_SCRIPT', scriptId: requestedScriptId });\r\n }\r\n }; }\r\n};\r\nvar unloadedState = { isRequestingScript: false, scriptRequestError: '', requestedScriptId: undefined };\r\nexports.reducer = function (state, incomingAction) {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n var action = incomingAction;\r\n switch (action.type) {\r\n case 'REQUEST_ROBOT_SCRIPT':\r\n return {\r\n isRequestingScript: true,\r\n scriptRequestError: state.scriptRequestError,\r\n requestedScriptId: action.scriptId\r\n };\r\n case 'FINISHED_ROBOT_SCRIPT':\r\n return {\r\n isRequestingScript: false,\r\n scriptRequestError: '',\r\n requestedScriptId: state.requestedScriptId\r\n };\r\n case 'RECEIVED_ERROR_ROBOT_SCRIPT':\r\n return {\r\n isRequestingScript: false,\r\n scriptRequestError: action.errorMessage,\r\n requestedScriptId: state.requestedScriptId\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n//# sourceMappingURL=RobotScript.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.reducer = exports.actionCreators = void 0;\r\nexports.actionCreators = {\r\n requestFlag: function (message) { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState && appState.flagReport && appState.clientList && appState.clientList.connectedClient) {\r\n var requestBody = JSON.stringify({\r\n reportMessage: message\r\n });\r\n fetch(\"/api/report/\" + appState.clientList.connectedClient.sessionGuid + \"/\", {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: requestBody\r\n })\r\n .then(function (response) { return dispatch({ type: 'FINISHED_REQUESTING_FLAG' }); });\r\n dispatch({ type: 'REQUEST_FLAG', message: message });\r\n }\r\n }; }\r\n};\r\nvar unloadedState = { flagged: false, requestingFlag: false };\r\nexports.reducer = function (state, incomingAction) {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n var action = incomingAction;\r\n switch (action.type) {\r\n case 'REQUEST_FLAG':\r\n return {\r\n requestingFlag: true,\r\n flagged: state.flagged\r\n };\r\n case 'FINISHED_REQUESTING_FLAG':\r\n return {\r\n requestingFlag: false,\r\n flagged: true\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n//# sourceMappingURL=FlagReport.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.reducer = exports.actionCreators = void 0;\r\nexports.actionCreators = {\r\n setSpeakText: function (message) { return function (dispatch, getState) {\r\n dispatch({ type: 'SET_TEXT_TO_SPEAK', textToSpeak: message });\r\n }; },\r\n requestSpeak: function () { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState && appState.speak && appState.clientList && appState.clientList.connectedClient) {\r\n var requestBody = JSON.stringify({\r\n textToSpeak: appState.speak.textToSpeak\r\n });\r\n fetch(\"/api/speak/\" + appState.clientList.connectedClient.sessionGuid + \"/\", {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: requestBody\r\n })\r\n .then(function (response) {\r\n dispatch({ type: 'FINISHED_REQUESTING_SPEAK' });\r\n });\r\n dispatch({ type: 'REQUEST_SPEAK' });\r\n }\r\n }; }\r\n};\r\nvar unloadedState = { requestingSpeak: false, textToSpeak: '' };\r\nexports.reducer = function (state, incomingAction) {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n var action = incomingAction;\r\n switch (action.type) {\r\n case 'REQUEST_SPEAK':\r\n return {\r\n requestingSpeak: true,\r\n textToSpeak: state.textToSpeak.trim()\r\n };\r\n case 'FINISHED_REQUESTING_SPEAK':\r\n return {\r\n requestingSpeak: false,\r\n textToSpeak: ''\r\n };\r\n case 'SET_TEXT_TO_SPEAK':\r\n return {\r\n requestingSpeak: state.requestingSpeak,\r\n textToSpeak: action.textToSpeak\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n//# sourceMappingURL=Speak.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.reducer = exports.actionCreators = void 0;\r\nexports.actionCreators = {\r\n startAdminTaskUpdates: function () { return function (dispatch, getState) {\r\n var socketList = new WebSocket(\"wss://\" + window.location.href.split(\"/\")[2] + \"/ws/tasks/list\");\r\n var socketDiag = new WebSocket(\"wss://\" + window.location.href.split(\"/\")[2] + \"/ws/tasks/diagnostics\");\r\n socketList.onerror = function () {\r\n dispatch({ type: 'RECEIVE_ERROR_ADMIN_TASK_UPDATES' });\r\n window.location.reload(true);\r\n };\r\n socketList.onclose = function () {\r\n dispatch({ type: 'RECEIVE_ERROR_ADMIN_TASK_UPDATES' });\r\n window.location.reload(true);\r\n };\r\n socketList.onmessage = function (event) {\r\n var msg = JSON.parse(event.data);\r\n dispatch({ type: 'RECEIVE_ADMIN_TASK_UPDATES', tasks: msg.Tasks });\r\n };\r\n socketDiag.onerror = function () {\r\n dispatch({ type: 'RECEIVE_ERROR_TASK_DIAGNOSTIC_UPDATES' });\r\n };\r\n socketDiag.onmessage = function (event) {\r\n var msg = JSON.parse(event.data);\r\n dispatch({ type: 'RECEIVE_TASK_DIAGNOSTIC_UPDATES', diagnostic: msg });\r\n };\r\n dispatch({ type: 'START_ADMIN_TASK_UPDATES' });\r\n }; }\r\n};\r\nvar unloadedState = {\r\n tasks: undefined\r\n};\r\nexports.reducer = function (state, incomingAction) {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n var action = incomingAction;\r\n switch (action.type) {\r\n case 'START_ADMIN_TASK_UPDATES':\r\n return unloadedState;\r\n case 'RECEIVE_ERROR_ADMIN_TASK_UPDATES':\r\n return unloadedState;\r\n case 'RECEIVE_ADMIN_TASK_UPDATES':\r\n return {\r\n tasks: action.tasks\r\n };\r\n case 'RECEIVE_TASK_DIAGNOSTIC_UPDATES':\r\n if (!state || !state.tasks)\r\n return state;\r\n var tasksToUpdate = state.tasks.map(function (task, index) {\r\n if (task.TaskId !== action.diagnostic.TaskId) {\r\n task.Updating = false;\r\n return task;\r\n }\r\n task.Updating = true;\r\n switch (action.diagnostic.ReportType) {\r\n case 1:\r\n task.VideoRate = action.diagnostic.Value;\r\n break;\r\n case 2:\r\n task.AudioRate = action.diagnostic.Value;\r\n break;\r\n case 3:\r\n task.MovementClientToController = action.diagnostic.Value;\r\n break;\r\n case 4:\r\n task.MovementControllerToRcs = action.diagnostic.Value;\r\n break;\r\n case 5:\r\n task.MovementRcsToClient = action.diagnostic.Value;\r\n break;\r\n }\r\n return task;\r\n });\r\n return {\r\n tasks: tasksToUpdate\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n//# sourceMappingURL=TaskStats.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.reducers = void 0;\r\nvar ClientList = require(\"./ClientList\");\r\nvar Movement = require(\"./Movement\");\r\nvar RobotScript = require(\"./RobotScript\");\r\nvar FlagReport = require(\"./FlagReport\");\r\nvar Speak = require(\"./Speak\");\r\nvar TaskStats = require(\"./TaskStats\");\r\n// Whenever an action is dispatched, Redux will update each top-level application state property using\r\n// the reducer with the matching name. It's important that the names match exactly, and that the reducer\r\n// acts on the corresponding ApplicationState property type.\r\nexports.reducers = {\r\n clientList: ClientList.reducer,\r\n movement: Movement.reducer,\r\n robotScript: RobotScript.reducer,\r\n flagReport: FlagReport.reducer,\r\n speak: Speak.reducer,\r\n taskStats: TaskStats.reducer\r\n};\r\n//# sourceMappingURL=index.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = require(\"react\");\r\nvar react_redux_1 = require(\"react-redux\");\r\nvar ClientStore = require(\"../store/ClientList\");\r\nvar Connecting = /** @class */ (function (_super) {\r\n __extends(Connecting, _super);\r\n function Connecting() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Connecting.prototype.componentDidMount = function () {\r\n this.props.requestConnect(this.props.match.params.streamId);\r\n };\r\n Connecting.prototype.render = function () {\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"pt-3 d-flex align-content-center justify-content-around text-center flex-column\" },\r\n React.createElement(\"div\", { className: \"spinner-grow align-self-center\" }),\r\n React.createElement(\"p\", { className: \"lead\" }, \"Connecting to Synthiam Exosphere\"))));\r\n };\r\n return Connecting;\r\n}(React.PureComponent));\r\n;\r\nexports.default = react_redux_1.connect(function (state) { return state.clientList; }, ClientStore.actionCreators)(Connecting);\r\n//# sourceMappingURL=Connecting.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RobotScriptPanel = void 0;\r\nvar React = require(\"react\");\r\nvar reactstrap_1 = require(\"reactstrap\");\r\nvar RobotScriptPanel = /** @class */ (function (_super) {\r\n __extends(RobotScriptPanel, _super);\r\n function RobotScriptPanel() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RobotScriptPanel.prototype.getIndexKey = function (index) {\r\n switch (index) {\r\n case 0:\r\n return 'A';\r\n case 1:\r\n return 'B';\r\n case 2:\r\n return 'X';\r\n case 3:\r\n return 'Y';\r\n }\r\n return '';\r\n };\r\n RobotScriptPanel.prototype.componentDidMount = function () {\r\n var _this = this;\r\n document.addEventListener(\"keydown\", function (ev) {\r\n var activeElement = document.activeElement;\r\n if (activeElement instanceof HTMLInputElement && activeElement.type === 'text')\r\n return true;\r\n switch (ev.keyCode) {\r\n case 65:\r\n _this.props.requestRobotScript(0);\r\n ev.preventDefault();\r\n return false;\r\n case 66:\r\n ev.preventDefault();\r\n _this.props.requestRobotScript(1);\r\n return false;\r\n case 88:\r\n ev.preventDefault();\r\n _this.props.requestRobotScript(2);\r\n return false;\r\n case 89:\r\n ev.preventDefault();\r\n _this.props.requestRobotScript(3);\r\n return false;\r\n }\r\n return true;\r\n });\r\n };\r\n RobotScriptPanel.prototype.render = function () {\r\n var _this = this;\r\n if (this.props.connectedClient && this.props.connectedClient.robotScripts) {\r\n if (this.props.connectedClient.robotScripts.length) {\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"d-flex flex-column w-100\" }, this.props.connectedClient.robotScripts.map(function (script) {\r\n return (React.createElement(\"div\", { className: \"w-100 pb-1\", key: script.scriptId },\r\n React.createElement(reactstrap_1.Button, { color: _this.props.requestedScriptId === script.scriptId ? 'info' : 'primary', className: \"w-100\", onClick: function () { return _this.props.requestRobotScript(script.scriptId); } },\r\n script.scriptTitle,\r\n \" \",\r\n script.scriptId < 4 && script.scriptId >= 0 ? React.createElement(reactstrap_1.Badge, { color: \"light\" }, _this.getIndexKey(script.scriptId)) : React.createElement(React.Fragment, null))));\r\n }))));\r\n }\r\n }\r\n return (React.createElement(React.Fragment, null));\r\n };\r\n ;\r\n return RobotScriptPanel;\r\n}(React.PureComponent));\r\nexports.RobotScriptPanel = RobotScriptPanel;\r\n//# sourceMappingURL=RobotScriptPanel.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SpeakPanel = void 0;\r\nvar React = require(\"react\");\r\nvar reactstrap_1 = require(\"reactstrap\");\r\nvar SpeakPanel = /** @class */ (function (_super) {\r\n __extends(SpeakPanel, _super);\r\n function SpeakPanel(props) {\r\n var _this = _super.call(this, props) || this;\r\n _this.textInputRef = React.createRef();\r\n _this.handleTextChange = _this.handleTextChange.bind(_this);\r\n return _this;\r\n }\r\n SpeakPanel.prototype.componentDidMount = function () {\r\n var _this = this;\r\n document.onkeydown = function (ev) {\r\n if (ev.keyCode === 13 && _this.textInputRef.current && document.activeElement === _this.textInputRef.current) {\r\n _this.props.requestSpeak();\r\n return true;\r\n }\r\n return true;\r\n };\r\n };\r\n SpeakPanel.prototype.handleTextChange = function (e) {\r\n if (e.target.value) {\r\n this.props.setSpeakText(e.target.value);\r\n }\r\n else {\r\n this.props.setSpeakText('');\r\n }\r\n };\r\n SpeakPanel.prototype.render = function () {\r\n var _this = this;\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(reactstrap_1.InputGroup, null,\r\n React.createElement(reactstrap_1.Input, { type: \"text\", className: \"bg-secondary text-light\", innerRef: this.textInputRef, value: this.props.textToSpeak, disabled: this.props.requestingSpeak, onChange: this.handleTextChange, placeholder: \"Type something to say through the robot's text to speech engine\" }),\r\n React.createElement(reactstrap_1.InputGroupAddon, { addonType: \"append\" },\r\n React.createElement(reactstrap_1.Button, { color: \"secondary\", className: \"bg-secondary text-light border-light\", disabled: this.props.requestingSpeak || !this.props.textToSpeak, onClick: function () { return _this.props.requestSpeak(); } }, \"Say!\")))));\r\n };\r\n ;\r\n return SpeakPanel;\r\n}(React.PureComponent));\r\nexports.SpeakPanel = SpeakPanel;\r\n//# sourceMappingURL=SpeakPanel.js.map","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = require(\"react\");\r\nvar react_redux_1 = require(\"react-redux\");\r\nvar ClientStore = require(\"../store/ClientList\");\r\nvar PuppetRatingRequest_1 = require(\"../components/PuppetRatingRequest\");\r\nvar PuppetRatingDisplay_1 = require(\"../components/PuppetRatingDisplay\");\r\nvar SessionStatsRequest_1 = require(\"../components/SessionStatsRequest\");\r\nvar SessionStatsDisplay_1 = require(\"../components/SessionStatsDisplay\");\r\nvar reactstrap_1 = require(\"reactstrap\");\r\nvar Ended = /** @class */ (function (_super) {\r\n __extends(Ended, _super);\r\n function Ended() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Ended.prototype.componentDidMount = function () {\r\n };\r\n Ended.prototype.render = function () {\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"pt-3 d-flex justify-content-center text-center flex-column pt-2 text-light\" },\r\n React.createElement(\"div\", null,\r\n React.createElement(\"img\", { src: \"/img/assets/flag.png\", alt: \"done\", height: \"64\", width: \"64\" })),\r\n React.createElement(\"h1\", { className: \"display-4\" }, \"Your Results\"),\r\n React.createElement(\"div\", { className: \"d-flex flex-row justify-content-center\" }, this.props.ratings ?\r\n React.createElement(PuppetRatingDisplay_1.PuppetRatingDisplay, __assign({}, this.props))\r\n :\r\n React.createElement(PuppetRatingRequest_1.PuppetRatingRequest, __assign({}, this.props))),\r\n React.createElement(\"div\", { className: \"d-flex flex-row justify-content-center\" }, this.props.sessionStats ?\r\n React.createElement(SessionStatsDisplay_1.SessionStatsDisplay, __assign({}, this.props))\r\n :\r\n React.createElement(SessionStatsRequest_1.SessionStatsRequest, __assign({}, this.props))),\r\n React.createElement(reactstrap_1.Container, { className: \"pt-5 pb-5 text-left\" },\r\n React.createElement(reactstrap_1.Row, null,\r\n React.createElement(reactstrap_1.Col, { className: \"col-12 col-lg-7\" },\r\n React.createElement(\"div\", { className: \"embed-responsive embed-responsive-16by9\" },\r\n React.createElement(\"iframe\", { className: \"embed-responsive-item\", src: \" https://www.youtube.com/embed/-gQCVeRFnoI\", allow: \"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\", allowFullScreen: true }))),\r\n React.createElement(reactstrap_1.Col, { className: \"col-12 col-lg-5\" },\r\n React.createElement(\"p\", { className: \"lead\" }, \"The demo you have completed is a playground training area that new users and AI/ML algorithms must complete before controlling real world robots using Exosphere.\"))),\r\n React.createElement(reactstrap_1.Row, { className: \"pt-4\" },\r\n React.createElement(reactstrap_1.Col, null,\r\n React.createElement(reactstrap_1.Container, { className: \"text-left text-light pt-3 pb-2 pr-5 pl-5 rounded\", style: { backgroundColor: 'grey' } },\r\n React.createElement(reactstrap_1.Row, null,\r\n React.createElement(reactstrap_1.Col, null,\r\n React.createElement(\"h2\", { className: \"text-center\" }, \"How Does Exosphere Work?\"))),\r\n React.createElement(reactstrap_1.Row, { className: \"mb-2\" },\r\n React.createElement(reactstrap_1.Col, { className: \"col-12 col-md-2 text-center\" },\r\n React.createElement(\"img\", { src: \"/img/assets/Icons01.png\", className: \"mx-auto\", width: \"100\", height: \"100\", alt: \"Step 1\" })),\r\n React.createElement(reactstrap_1.Col, { className: \"col-12 col-md-10 my-auto\" },\r\n \" \",\r\n React.createElement(\"div\", { className: \"lead\" }, \"1. A robot is instructed to execute a task.\"))),\r\n React.createElement(reactstrap_1.Row, { className: \"mb-2\" },\r\n React.createElement(reactstrap_1.Col, { className: \"col-12 col-md-2 text-center\" },\r\n React.createElement(\"img\", { src: \"/img/assets/Icons02.png\", className: \"mx-auto\", width: \"100\", height: \"100\", alt: \"Step 1\" })),\r\n React.createElement(reactstrap_1.Col, { className: \"col-12 col-md-10 my-auto\" },\r\n \" \",\r\n React.createElement(\"div\", { className: \"lead\" }, \"2. The task is submitted to Exosphere as a contract request.\"))),\r\n React.createElement(reactstrap_1.Row, { className: \"mb-2\" },\r\n React.createElement(reactstrap_1.Col, { className: \"col-12 col-md-2 text-center\" },\r\n React.createElement(\"img\", { src: \"/img/assets/Icons03.png\", className: \"mx-auto\", width: \"100\", height: \"100\", alt: \"Step 1\" })),\r\n React.createElement(reactstrap_1.Col, { className: \"col-12 col-md-10 my-auto\" },\r\n \" \",\r\n React.createElement(\"div\", { className: \"lead\" }, \"3. AI/ML and humans provide a confidence bid to win the contract.\"))),\r\n React.createElement(reactstrap_1.Row, { className: \"mb-2\" },\r\n React.createElement(reactstrap_1.Col, { className: \"col-12 col-md-2 text-center\" },\r\n React.createElement(\"img\", { src: \"/img/assets/Icons04.png\", className: \"mx-auto\", width: \"100\", height: \"100\", alt: \"Step 1\" })),\r\n React.createElement(reactstrap_1.Col, { className: \"col-12 col-md-10 my-auto\" },\r\n \" \",\r\n React.createElement(\"div\", { className: \"lead\" }, \"4. If AI/ML can\\u2019t control the robot to successfully perform a task, another contract is issued to a human operator to take over or assist the robot. In turn, training the global AI knowledge base for future task requests.\")))))),\r\n React.createElement(reactstrap_1.Row, null,\r\n React.createElement(reactstrap_1.Col, null,\r\n React.createElement(reactstrap_1.Container, { className: \"mt-4 p-5 pt-3 bg-light text-dark rounded\" },\r\n React.createElement(reactstrap_1.Row, null,\r\n React.createElement(reactstrap_1.Col, null,\r\n React.createElement(\"div\", null,\r\n React.createElement(\"h2\", null, \"Who Is Exosphere For?\"),\r\n React.createElement(\"p\", null, \"The way we think is being replicated in AI algorithms to include moral hesitation, judgment and responsibility. This is why AI greatly benefits from human interaction. With close to 1 million robot connections on Synthiam\\u2019s platform, when exosphere is publicly released, robots from around the world will be added daily with new tasks. These tasks will be created for real robots with real problems to solve. This gets AI out of the lab and into the real world.\"),\r\n React.createElement(\"p\", null, \"Exosphere can control as much or little as necessary to help robot companies achieve their goals. Even if that means using human intelligence to fill in the 10% edge cases that robots can\\u2019t do. Such as\\u2026\"),\r\n React.createElement(\"ul\", null,\r\n React.createElement(\"li\", null, \"In times of global concerns, such as with Covid-19, robots can be remotely operated to delivery packages, medicine or check-up on individuals.\"),\r\n React.createElement(\"li\", null, \"A floor cleaning robot calling for help when it gets stuck. It can be remotely controlled by a human operator to correct its path and get it moving again.\"),\r\n React.createElement(\"li\", null, \"A hotel delivery robot can be guided to its destination without requiring expensive localized customization.\"),\r\n React.createElement(\"li\", null, \"Retail robots that autonomously navigate aisles while counting inventory\\u2026 can also interact with customers using human operators.\"),\r\n React.createElement(\"li\", null, \"In addition to robots being assisted by humans, Exosphere also provides a platform for AI/ML companies to proof algorithms on real robots in the real-world scenarios, rather than lab simulations.\")),\r\n React.createElement(\"h2\", null, \"Exosphere Product Research\"),\r\n React.createElement(\"p\", null, \"Over a number of years of supporting nearly 1,000,000 robot connections, Synthiam has been developing a platform to mature the robotics industry. This also includes the democratization of programming robotics with a platform that leverages creative non-programmers. While aligning our next goal to meet the needs of customers, we had discussions with AI/ML, robot and hardware companies to learn about their challenges and how Exosphere can help. We discovered that...\"),\r\n React.createElement(\"ul\", null,\r\n React.createElement(\"li\", null, \"Organizations invested in AI/ML research spend more than 75% of their time programming and building robots to test algorithms, which is not their core competency.\"),\r\n React.createElement(\"li\", null, \"AI/ML organizations are creating custom simulated environments without real-world scenarios.\"),\r\n React.createElement(\"li\", null, \"Robot programming is using complicated legacy IF/ELSE conditional programming that does not scale with the unpredictable physical world.\"),\r\n React.createElement(\"li\", null, \"Robots in retail are failing to correctly navigate environments and customers are preferring human conversation for support assistance.\"),\r\n React.createElement(\"li\", null, \"Delivery robots are not able to navigate the real-world due to lack of environmental training data.\"),\r\n React.createElement(\"li\", null, \"Warehousing and field/farming robots require supervision by highly technical support staff to prevent downtime due to unpredictable scenarios.\"),\r\n React.createElement(\"li\", null, \"Large corporations are failing to achieve product automation due to minimum technical requirements of recruiting staff.\")),\r\n React.createElement(\"h2\", null, \"Synthiam's Training Playground\"),\r\n React.createElement(\"div\", { className: \"embed-responsive embed-responsive-16by9\" },\r\n React.createElement(\"iframe\", { className: \"embed-responsive-item\", src: \" https://www.youtube.com/embed/eYLoxlJAUyA\", allow: \"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\", allowFullScreen: true })),\r\n React.createElement(\"h2\", null, \"Compatibility\"),\r\n React.createElement(\"p\", null, \"With the recent onset of Covid-19, it is important for Exosphere to have compatibility with existing robots to leverage their ability with human operators - while continuing to train the knowledge base for future autonomous behaviors. Exosphere was designed as a webservice to allow connections from existing robots or control software, such as ROS or ARC. However, it only takes minutes to add any robot to Exosphere with Synthiam\\u2019s ARC software. As per the Synthiam way, we\\u2019ll be adding many tutorials that demonstrate how to add a variety of robots to Exosphere using ARC.\")))))))))));\r\n };\r\n return Ended;\r\n}(React.PureComponent));\r\n;\r\nexports.default = react_redux_1.connect(function (state) { return state.clientList; }, ClientStore.actionCreators)(Ended);\r\n//# sourceMappingURL=Ended.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.reducer = exports.actionCreators = exports.Direction = void 0;\r\nvar Direction;\r\n(function (Direction) {\r\n Direction[Direction[\"Stop\"] = 0] = \"Stop\";\r\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\r\n Direction[Direction[\"Reverse\"] = 2] = \"Reverse\";\r\n Direction[Direction[\"Left\"] = 3] = \"Left\";\r\n Direction[Direction[\"Right\"] = 4] = \"Right\";\r\n})(Direction = exports.Direction || (exports.Direction = {}));\r\nexports.actionCreators = {\r\n requestMovement: function (direction, leftSpeed, rightSpeed) { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState && appState.movement && appState.clientList && appState.clientList.connectedClient) {\r\n var requestBody = JSON.stringify({\r\n leftSpeed: leftSpeed,\r\n rightSpeed: rightSpeed,\r\n direction: direction,\r\n clientTimeEpoch: Date.now()\r\n });\r\n fetch(\"/move/\" + appState.clientList.connectedClient.sessionGuid + \"/\", {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: requestBody\r\n })\r\n .then(function (response) { return response.json(); })\r\n .then(function (data) { return dispatch({ type: 'FINISHED_REQUESTING_MOVEMENT', finishedDirection: direction }); });\r\n dispatch({ type: 'REQUEST_MOVEMENT', requestedDirection: direction });\r\n }\r\n }; },\r\n gamePadConnected: function (index) { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState && appState.movement) {\r\n dispatch({ type: 'GAME_PAD_DETECTED', index: index });\r\n }\r\n }; },\r\n gamePadDisconnected: function () { return function (dispatch, getState) {\r\n var appState = getState();\r\n if (appState && appState.movement) {\r\n dispatch({ type: 'GAME_PAD_REMOVED' });\r\n }\r\n }; }\r\n};\r\nvar unloadedState = { isSending: false, lastRequestedDirection: Direction.Stop, gamePadIndex: undefined };\r\nexports.reducer = function (state, incomingAction) {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n var action = incomingAction;\r\n switch (action.type) {\r\n case 'REQUEST_MOVEMENT':\r\n return {\r\n isSending: true,\r\n lastRequestedDirection: action.requestedDirection,\r\n gamePadIndex: state.gamePadIndex\r\n };\r\n case 'FINISHED_REQUESTING_MOVEMENT':\r\n return {\r\n isSending: false,\r\n lastRequestedDirection: state.lastRequestedDirection,\r\n gamePadIndex: state.gamePadIndex\r\n };\r\n case 'GAME_PAD_DETECTED':\r\n return {\r\n isSending: state.isSending,\r\n lastRequestedDirection: state.lastRequestedDirection,\r\n gamePadIndex: action.index\r\n };\r\n case 'GAME_PAD_REMOVED':\r\n return {\r\n isSending: state.isSending,\r\n lastRequestedDirection: state.lastRequestedDirection,\r\n gamePadIndex: undefined\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n//# sourceMappingURL=Movement.js.map"],"sourceRoot":""}