{"version":3,"file":"static/js/629.0ee0b4ce.chunk.js","mappings":"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","sources":["ui/PlainList.jsx","multiworld/Session.jsx","multiworld/Connection.jsx","../node_modules/reactstrap/es/CardTitle.js","multiworld/styled.js","ui/ColoredIcon.jsx","multiworld/Game.jsx","game/item_lookup.js","multiworld/Multiworld.jsx","../node_modules/lodash/_baseDifference.js","../node_modules/lodash/_baseExtremum.js","../node_modules/lodash/_baseGt.js","../node_modules/lodash/_baseLt.js","../node_modules/lodash/differenceBy.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/lodash/maxBy.js","../node_modules/lodash/minBy.js"],"sourcesContent":["import styled from 'styled-components';\n\nexport default styled.ul`\n margin: 0;\n padding: 0;\n list-style: none;\n`;\n","import React from 'react';\nimport { Row, Col, Card, CardHeader, CardBody, Button } from 'reactstrap';\nimport PlainList from '../ui/PlainList';\nimport classNames from 'classnames';\n\nconst clientStates = {\n 0: { name: \"Unregistered\", color: \"secondary\" },\n 1: { name: \"Registering\", color: \"secondary\" },\n 2: { name: \"Registered\", color: \"secondary\" },\n 3: { name: \"Identifying\", color: \"secondary\" },\n 4: { name: \"Patching\", color: \"secondary\" },\n 5: { name: \"Ready\", color: \"info\" },\n 6: { name: \"Playing\", color: \"info\" },\n 7: { name: \"Forfeit\", color: \"dark\" }\n};\n\nexport default function Session(props) {\n const { status, session, sessionStatus, clientData } = props;\n const { seed } = session || {};\n\n const { onRegisterPlayer, onUnregisterPlayer, onRemove, onForfeit } = props;\n\n return (\n \n 0,\n 'bg-danger': status === 0\n }, 'text-white'\n )}>\n \n
  • Session: {status > 0 ? session.guid: 'Loading...'}
  • \n
  • Game: {status > 0 ? `${seed.game_name} v${seed.game_version}` : 'Loading...'}
  • \n
  • Hash: {status > 0 ? seed.hash : 'Loading...'}
  • \n
  • Status: {sessionStatus}
  • \n
    \n \n \n \n {status > 0 && seed.worlds.map((world, i) => {\n return (\n \n
    {world.player_name}
    \n {world.client_state === 0 ? (\n (clientData === null && ) ||\n (clientData !== null && )\n ) : \n (clientData === null && ) ||\n (clientData !== null && world.world_id !== clientData.world_id &&
    {world.client_state <= 5 && }
    ) ||\n (clientData !== null && world.world_id === clientData.world_id &&
    )\n }\n \n );\n })}\n
    \n
    \n
    \n );\n}\n","import React, { useState } from 'react';\nimport { Card, CardBody, CardHeader, Button, Input } from 'reactstrap';\n\nimport PlainList from '../ui/PlainList';\n\nimport classNames from 'classnames';\n\nexport default function Connection(props) {\n const { device, deviceStatus } = props;\n const { onDeviceSelect, onConnect } = props;\n const [selectedDevice, setSelectedDevice] = useState(null);\n const deviceState = device ? device.state : 0;\n\n if (device && device.selecting && device.list && selectedDevice === null) {\n setSelectedDevice(device.list[0]);\n }\n\n return (\n \n \n Game Connection\n \n \n \n
  • Status: {deviceStatus}
  • \n {device && (!device.selecting\n ? <>
  • Device: {device.uri}
  • Name: {device.name}
  • \n : (<>\n

  • Multiple devices detected, please select one below:
  • \n
  • \n setSelectedDevice(device.list[e.target.selectedIndex])}>\n {device.list.map((d, i) =>\n \n )}\n \n \n
  • \n )\n )}\n \n
    \n {deviceState === 0 && (\n \n )}\n
    \n
    \n );\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar CardTitle = function CardTitle(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'card-title'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nCardTitle.propTypes = propTypes;\nCardTitle.defaultProps = defaultProps;\nexport default CardTitle;","import styled from 'styled-components';\n\nimport { CheckSquareFill, ChatLeftDots, ArrowClockwise } from '../ui/BootstrapIcon';\nimport { Hourglass, WarningTriangle } from '../ui/ColoredIcon';\n\nexport const LogMessageRow = styled.div.attrs({\n className: \"d-flex align-items-center\"\n})`\n pointer-events: none;\n &:hover { background: #ffeeee; }\n\n div > a { pointer-events: auto; }\n &:hover div > a { text-decoration: none; }\n`;\n\nconst LogIcon = styled.div`\n width: 1.5em;\n height: 1.5em;\n`;\n\nexport const Ok = styled(LogIcon).attrs({ as: CheckSquareFill })`\n color: green;\n`;\n\nexport const Delay = styled(LogIcon).attrs({ as: Hourglass })`\n --frame: saddlebrown;\n --glass: lightblue;\n --sand: gold;\n`;\n\nexport const Msg = styled(LogIcon).attrs({ as: ChatLeftDots })`\n color: black;\n`;\n\nexport const Issue = styled(LogIcon).attrs({ as: WarningTriangle })`\n --background: gold;\n --outline: black;\n`;\n\nexport const Reload = styled(LogIcon).attrs({ as: ArrowClockwise })`\n color: red;\n`;\n","import React from 'react';\n\n/* based on https://icons.getbootstrap.com/icons/hourglass-split/ */\nexport const Hourglass = (props) => (\n \n \n \n \n \n);\n\n/* based on https://icons.getbootstrap.com/icons/exclamation-triangle-fill/ */\nexport const WarningTriangle = (props) => (\n \n \n \n \n);\n","/* eslint-disable no-mixed-operators, jsx-a11y/anchor-is-valid */\nimport React, { useRef, useState, useEffect } from 'react';\nimport { Row, Col, Card, CardBody, CardTitle, CardHeader } from 'reactstrap';\nimport { LogMessageRow } from './styled';\n\nimport { Ok, Delay, Msg, Issue, Reload } from './styled';\n\nimport sortBy from 'lodash/sortBy';\n\nexport default function Game(props) {\n const logEnd = useRef(null);\n const [eventCount, setEventCount] = useState(0);\n const { events, clientData } = props;\n const { onChatMessage, onResendEvent } = props;\n\n useEffect(() => {\n if (events.length !== eventCount) {\n logEnd.current?.scrollIntoView();\n }\n setEventCount(events.length);\n }, [events, eventCount])\n\n function renderMessage(event) {\n const Icon = event.event_type <= 1\n ? event.confirmed ? Ok : Delay\n : event.event_type === 2 ? Msg : Issue;\n\n const message = event.event_type === 0\n ? (event.from_world_id === clientData.world_id\n ? <>{event.item_location === -1 ? Re-sent : Sent} {event.item_name} to {event.to_player}\n : <>{event.item_location === -1 ? Re-received : Received} {event.item_name} from {event.from_player})\n : (event.event_type === 2\n ? <>[{event.from_player}] {event.message}\n : {event.message});\n\n return <>\n \n
    [{event.time_stamp.substring(11)}]
    \n
    {message}
    \n {event.event_type === 0 && event.from_world_id === clientData.world_id && (\n
    onResendEvent(event)} role=\"button\">
    \n )}\n ;\n }\n\n function onChatKeyUp(e) {\n if (e.key === \"Enter\") {\n const message = e.target.value;\n e.target.value = \"\";\n onChatMessage(message);\n }\n }\n\n return (\n
    \n \n \n Game information\n \n \n {props.gameStatus}\n \n \n
    Game log
    \n \n
    \n \n \n
    \n {sortBy(events, 'id').map(event => (\n \n {renderMessage(event)}\n \n ))}\n
    \n
    \n \n \n \n \n \n
    \n );\n}\n","export const smz3ItemNames = {\n 0x60: \"Progressive Tunic\",\n 0x5F: \"Progressive Shield\",\n 0x5E: \"Progressive Sword\",\n 0x0B: \"Bow\",\n 0x58: \"Silver Arrows\",\n 0x0C: \"Blue Boomerang\",\n 0x2A: \"Red Boomerang\",\n 0x0A: \"Hookshot\",\n 0x29: \"Mushroom\",\n 0x0D: \"Powder\",\n 0x07: \"Firerod\",\n 0x08: \"Icerod\",\n 0x0f: \"Bombos\",\n 0x10: \"Ether\",\n 0x11: \"Quake\",\n 0x12: \"Lamp\",\n 0x09: \"Hammer\",\n 0x13: \"Shovel\",\n 0x14: \"Flute\",\n 0x21: \"Bugnet\",\n 0x1D: \"Book\",\n 0x16: \"Bottle\",\n 0x15: \"Somaria\",\n 0x18: \"Byrna\",\n 0x19: \"Cape\",\n 0x1A: \"Mirror\",\n 0x4B: \"Boots\",\n 0x61: \"Progressive Glove\",\n 0x1E: \"Flippers\",\n 0x1F: \"Moon Pearl\",\n 0x4E: \"Half Magic\",\n 0x17: \"Heart Piece\",\n 0x3E: \"Heart Container\",\n 0x3F: \"Sanc Heart Container\",\n 0x28: \"Three Bombs\",\n 0x43: \"Arrow\",\n 0x44: \"Ten Arrows\",\n 0x34: \"One Rupee\",\n 0x35: \"Five Rupees\",\n 0x36: \"Twenty Rupees\",\n 0x47: \"Twenty Rupees\",\n 0x41: \"Fifty Rupees\",\n 0x40: \"One Hundred Rupees\",\n 0x46: \"Three Hundred Rupees\",\n 0x51: \"5 Bombs Upgrade\",\n 0x52: \"10 Bombs Upgrade\",\n 0x53: \"5 Arrows Upgrade\",\n 0x54: \"10 Arrow Upgrade\",\n 0xC2: \"Missile\",\n 0xC3: \"Super\",\n 0xC4: \"Power Bomb\",\n 0xB0: \"Grapple\",\n 0xB1: \"X-Ray\",\n 0xC0: \"Energy Tank\",\n 0xC1: \"Reserve Tank\",\n 0xBB: \"Charge\",\n 0xBC: \"Ice\",\n 0xBD: \"Wave\",\n 0xBE: \"Spazer\",\n 0xBF: \"Plasma\",\n 0xB2: \"Varia\",\n 0xB6: \"Gravity\",\n 0xB4: \"Morph\",\n 0xB9: \"Bombs\",\n 0xB3: \"Spring Ball\",\n 0xB5: \"Screw Attack\",\n 0xB7: \"Hi-Jump Boots\",\n 0xB8: \"Space Jump\",\n 0xBA: \"Speed Booster\",\n 0x2B: \"Bottle With Red Potion\",\n 0x2C: \"Bottle With Green Potion\",\n 0x2D: \"Bottle With Blue Potion\",\n 0x3D: \"Bottle With Fairy\",\n 0x3C: \"Bottle With Bee\",\n 0x48: \"Bottle With Gold Bee\",\n 0x2E: \"Red Content\",\n 0x2F: \"Green Content\",\n 0x30: \"Blue Content\",\n 0x0E: \"Bee Content\",\n 0x7F: \"Hyrule Castle Map\",\n 0x7D: \"Eastern Palace Map\",\n 0x7C: \"Desert Palace Map\",\n 0x75: \"Tower of Hera Map\",\n 0x79: \"Palace of Darkness Map\",\n 0x7A: \"Swamp Palace Map\",\n 0x77: \"Skull Woods Map\",\n 0x74: \"Thieves Town Map\",\n 0x76: \"Ice Palace Map\",\n 0x78: \"Misery Mire Map\",\n 0x73: \"Turtle Rock Map\",\n 0x72: \"Ganons Tower Map\",\n \n 0x8D: \"Eastern Palace Compass\",\n 0x8C: \"Desert Palace Compass\",\n 0x85: \"Tower of Hera Compass\",\n 0x89: \"Palace of Darkness Compass\",\n 0x8A: \"Swamp Palace Compass\",\n 0x87: \"Skull Woods Compass\",\n 0x84: \"Thieves Town Compass\",\n 0x86: \"Ice Palace Compass\",\n 0x88: \"Misery Mire Compass\",\n 0x83: \"Turtle Rock Compass\",\n 0x82: \"Ganons Tower Compass\",\n \n 0x9D: \"Eastern Palace Big Key\",\n 0x9C: \"Desert Palace Big Key\",\n 0x95: \"Tower of Hera Big Key\",\n 0x99: \"Palace of Darkness Big Key\",\n 0x9A: \"Swamp Palace Big Key\",\n 0x97: \"Skull Woods Big Key\",\n 0x94: \"Thieves Town Big Key\",\n 0x96: \"Ice Palace Big Key\",\n 0x98: \"Misery Mire Big Key\",\n 0x93: \"Turtle Rock Big Key\",\n 0x92: \"Ganons Tower Big Key\",\n \n 0xA0: \"Sewer Key\",\n 0xA4: \"Castle Tower Key\",\n 0xA3: \"Desert Palace Key\",\n 0xAA: \"Tower of Hera Key\",\n 0xA6: \"Palace of Darkness Key\",\n 0xA5: \"Swamp Palace Key\",\n 0xA8: \"Skull Woods Key\",\n 0xAB: \"Thieves Town Key\",\n 0xA9: \"Ice Palace Key\",\n 0xA7: \"Misery Mire Key\",\n 0xAC: \"Turtle Rock Key\",\n 0xAD: \"Ganons Tower Key\",\n \n 0x24: \"Small Key\",\n 0x25: \"Compass\",\n 0x32: \"Big Key\",\n 0x33: \"Map\",\n\n 0xCA: \"Brinstar Map\",\n 0xCB: \"Wrecked Ship Map\",\n 0xCC: \"Maridia Map\",\n 0xCD: \"Lower Norfair Map\",\n\n 0xD0: \"Crateria Level 1 Key\",\n 0xD1: \"Crateria Level 2 Key\",\n 0xD2: \"Crateria Boss Key\",\n 0xD3: \"Brinstar Level 1 Key\",\n 0xD4: \"Brinstar Level 2 Key\",\n 0xD5: \"Brinstar Boss Key\",\n 0xD6: \"Norfair Level 1 Key\",\n 0xD7: \"Norfair Level 2 Key\",\n 0xD8: \"Norfair Boss Key\",\n 0xD9: \"Maridia Level 1 Key\",\n 0xDA: \"Maridia Level 2 Key\",\n 0xDB: \"Maridia Boss Key\",\n 0xDC: \"Wrecked Ship Level 1 Key\",\n 0xDD: \"Wrecked Ship Boss Key\",\n 0xDE: \"Lower Norfair Level 1 Key\",\n 0xDF: \"Lower Norfair Boss Key\",\n};\n\nexport const smItemNames = {\n 0x00: \"Energy Tank\",\n 0x01: \"Missile\",\n 0x02: \"Super Missile\",\n 0x03: \"Power Bomb\",\n 0x04: \"Bombs\",\n 0x05: \"Charge\",\n 0x06: \"Ice Beam\",\n 0x07: \"Hi-Jump Boots\",\n 0x08: \"Speed Booster\",\n 0x09: \"Wave Beam\",\n 0x0A: \"Spazer\",\n 0x0B: \"Spring Ball\",\n 0x0C: \"Varia Suit\",\n 0x0D: \"Gravity Suit\",\n 0x0E: \"X-ray Scope\",\n 0x0F: \"Plasma Beam\",\n 0x10: \"Grapple Beam\",\n 0x11: \"Space Jump\",\n 0x12: \"Screw Attack\",\n 0x13: \"Morph Ball\",\n 0x14: \"Reserve Tank\",\n 0x15: \"Unused\",\n 0x16: \"Unused\",\n 0x17: \"Unused\",\n 0x18: \"Unused\",\n 0x19: \"Unused\",\n 0x1A: \"Unused\",\n 0x1B: \"Unused\",\n 0x1C: \"Unused\",\n 0x1D: \"Unused\",\n 0x1E: \"Unused\",\n 0x1F: \"Unused\",\n 0x20: \"Crateria L1 Key\",\n 0x21: \"Crateria L2 Key\",\n 0x22: \"Crateria Boss Key\",\n 0x23: \"Brinstar L1 Key\",\n 0x24: \"Brinstar L2 Key\",\n 0x25: \"Brinstar Boss Key\",\n 0x26: \"Norfair L1 Key\",\n 0x27: \"Norfair L2 Key\",\n 0x28: \"Norfair Boss Key\",\n 0x29: \"Maridia L1 Key\",\n 0x2A: \"Maridia L2 Key\",\n 0x2B: \"Maridia Boss Key\",\n 0x2C: \"Wrecked Ship L1 Key\",\n 0x2D: \"Wrecked Ship Boss Key\",\n 0x2E: \"Lower Norfair L1 Key\",\n 0x2F: \"Lower Norfair Boss Key\",\n};","import React, { useState, useEffect, useRef, useContext, useCallback } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { Row, Col } from 'reactstrap';\n\nimport MessageCard from '../ui/MessageCard'\n\nimport Session from './Session';\nimport Connection from './Connection';\nimport Game from './Game';\nimport Patch from '../patch';\nimport Spoiler from '../spoiler';\nimport { smz3ItemNames, smItemNames } from '../game/item_lookup'\n\nimport { GameTraitsCtx } from '../game/traits';\nimport { gameServiceHost, adjustHostname } from '../site/domain';\n\nimport { decode } from 'slugid';\n\nimport differenceBy from 'lodash/differenceBy';\nimport isEmpty from 'lodash/isEmpty';\nimport minBy from 'lodash/minBy';\nimport maxBy from 'lodash/maxBy';\n\nimport { tryParseJson } from '../util';\n\n// Message types to handle from WASM\nconst MessageType = {\n ConsoleDisconnected: 0,\n ConsoleReconnecting: 1,\n ConsoleConnected: 2,\n ConsoleError: 3,\n GameState: 4,\n ItemFound: 5,\n ItemReceived: 6,\n ItemsConfirmed: 7,\n};\n\nexport default function Multiworld() {\n const { sessionSlug } = useParams();\n\n const randomizerClient = useRef(null);\n const eventLoopHandle = useRef(null);\n const statusLoopHandle = useRef(null);\n const [events, setEvents] = useState([]);\n const [state, setState] = useState(null);\n const [sessionStatus, setSessionStatus] = useState('');\n const [gameStatus, setGameStatus] = useState('');\n const [deviceStatus, setDeviceStatus] = useState('');\n const game = useContext(GameTraitsCtx);\n const itemLookup = game.id === \"smz3\" ? smz3ItemNames : smItemNames;\n\n const formatEvent = useCallback(event => {\n const worlds = state.session.seed.worlds;\n return {\n ...event,\n from_player: event.from_world_id === -1 ? \"SERVER\" : worlds.find(w => w.world_id === event.from_world_id).player_name,\n to_player: event.to_world_id === -1 ? \"SERVER\" : worlds.find(w => w.world_id === event.to_world_id).player_name,\n item_name: itemLookup[event.item_id],\n message: event.message.replace(\"\", itemLookup[event.item_id]),\n };\n }, [state, itemLookup]);\n\n const handleMessage = (message, args) => {\n switch (message) {\n case MessageType.GameState:\n setGameStatus(args[0]);\n break;\n case MessageType.ConsoleDisconnected:\n setDeviceStatus(\"Disconnected\");\n break;\n case MessageType.ConsoleReconnecting:\n setDeviceStatus(\"Disconnected - Attempting to reconnect\");\n break;\n case MessageType.ConsoleConnected:\n setDeviceStatus(\"Connected\");\n setState(prevState => ({ ...prevState, device: { ...prevState.device, uri: args[0] } }));\n break;\n case MessageType.ConsoleError:\n setDeviceStatus(`Disconnected - ${args[0]}`);\n clearTimeout(eventLoopHandle.current);\n setState(prevState => ({ ...prevState, device: null, status: 1 }));\n break;\n default:\n break;\n } \n };\n\n useEffect(() => {\n\n const initSession = async () => { \n\n /* Webassembly files must be imported async */\n const { RandomizerClient } = await import(\"randomizer-client\");\n\n const sessionGuid = decode(sessionSlug).replace(/-/g, \"\");\n if (sessionGuid) {\n let session = null;\n\n try {\n if (randomizerClient.current === null) {\n RandomizerClient.init();\n randomizerClient.current = new RandomizerClient(`https://${gameServiceHost(window.location.href)}`, sessionGuid, handleMessage);\n }\n session = await randomizerClient.current.initialize();\n } catch {\n setSessionStatus(\"Could not initialize session, try reloading the page.\");\n setState({ status: 0, session: null, clientData: null, device: null, patch: null });\n return;\n }\n\n const clientGuid = localStorage.getItem(sessionGuid);\n if (clientGuid) {\n try {\n let clientData = await randomizerClient.current.login_player(clientGuid);\n await updatePlayer(clientData);\n } catch {\n setSessionStatus(\"Could not re-authenticate to session, try reloading the page.\")\n setState({ status: 0, session: null, clientData: null, device: null, patch: null });\n return;\n }\n } else {\n setState({ status: 1, session: session, clientData: null, device: null, patch: null });\n }\n\n setSessionStatus(\"Initialized\");\n setDeviceStatus(\"Disconnected\");\n setEvents([]);\n }\n };\n\n initSession();\n return () => { \n clearTimeout(eventLoopHandle.current);\n clearTimeout(statusLoopHandle.current);\n statusLoopHandle.current = null;\n eventLoopHandle.current = null;\n };\n }, []); /* eslint-disable-line react-hooks/exhaustive-deps */\n\n useEffect(() => {\n\n async function statusLoop() {\n const minUnConfirmed = minBy(events.filter(e => !e.confirmed), 'id');\n const maxReceived = maxBy(events, 'id');\n const minId = minUnConfirmed != null\n ? minUnConfirmed.id\n : (maxReceived != null ? maxReceived.id + 1 : 0);\n\n try {\n const report = await randomizerClient.current.get_report(minId, [0, 1, 2, 3]);\n setState(prevState => {\n return {\n ...prevState, session: {\n ...prevState.session, seed: {\n ...prevState.session.seed, worlds: report.worlds\n }\n }\n }\n });\n\n const newEvents = report.events.map(formatEvent);\n setEvents(prevEvents => isEmpty(newEvents) ? prevEvents : [...differenceBy(prevEvents, newEvents, 'id'), ...newEvents]);\n } catch (e) {\n console.log(e);\n }\n }\n\n clearTimeout(statusLoopHandle.current);\n statusLoopHandle.current = setTimeout(async () => await statusLoop(), 5000);\n }, [events, formatEvent]);\n\n async function onRegisterPlayer(sessionGuid, worldId) {\n if (!state.clientData) {\n try {\n let clientData = await randomizerClient.current.register_player(worldId);\n localStorage.setItem(sessionGuid, clientData.client_guid);\n await updatePlayer(clientData);\n\n } catch (e) {\n console.log(\"Error while registering player\", e);\n }\n }\n }\n\n async function onUnregisterPlayer() {\n const ok = window.confirm(\"This will unregister you from the session, are you sure?\");\n if (ok && state && state.clientData) {\n try {\n await randomizerClient.current.unregister_player();\n localStorage.removeItem(state.session.guid);\n clearTimeout(eventLoopHandle.current);\n clearTimeout(statusLoopHandle.current);\n setState({ status: 1, session: session, clientData: null, device: null, patch: null });\n } catch (e) {\n console.log(\"Error while unregistering player\", e);\n }\n }\n }\n\n async function onForfeit() {\n const ok = window.confirm(\"This will remove you completely from the session and can not be undone, are you sure you want to forfeit?\");\n if (ok) {\n await randomizerClient.current.forfeit();\n localStorage.removeItem(state.session.guid);\n clearTimeout(eventLoopHandle.current);\n clearTimeout(statusLoopHandle.current);\n setState({ status: 1, session: session, clientData: null, device: null, patch: null });\n }\n }\n\n async function onRemove(worldId) {\n const ok = window.confirm(\"Vote to remove this player from the session, are you sure?\")\n if (ok) {\n try {\n await randomizerClient.current.send_event(5, worldId, -1, -1, -1, true, \"\");\n\n } catch (e) {\n console.log(e);\n }\n\n }\n }\n\n async function updatePlayer(clientData) {\n let sessionData = await randomizerClient.current.initialize();\n let patchData = await randomizerClient.current.get_patch();\n setState({ status: 2, session: sessionData, clientData: clientData, device: null, patch: patchData });\n }\n\n async function onConnect() {\n try {\n setDeviceStatus(\"Requesting device list\");\n const devices = await randomizerClient.current.list_devices();\n if (devices.length === 0) {\n setDeviceStatus(\"Got an empty device list, make sure the emulator or sd2snes/fxpak is connected\");\n } else if (devices.length > 1) {\n setDeviceStatus(\"Select a device\");\n setState((prevState) => ({ ...prevState, status: 2, device: { selecting: true, list: devices } }));\n } else {\n await onDeviceSelect(devices[0]);\n }\n } catch {\n setDeviceStatus(\"Could not get device list, press 'Connect' to try again\");\n return;\n }\n }\n\n async function onDeviceSelect(device) {\n try {\n await randomizerClient.current.start(device.uri);\n setDeviceStatus(\"Connected\");\n setState((prevState) => ({ ...prevState, status: 3, device: { state: 1, selecting: false, list: null, name: device.name, uri: device.uri } }));\n\n await eventLoop();\n } catch {\n setDeviceStatus(\"Could not start device session, try again\");\n }\n }\n\n async function eventLoop() {\n try {\n await randomizerClient.current.update();\n } catch (e) {\n console.log(e);\n }\n eventLoopHandle.current = setTimeout(async () => await eventLoop(), 1000);\n }\n\n async function onChatMessage(message) {\n const event = await randomizerClient.current.send_event(2, -1, 0, 0, -1, true, message);\n setEvents((prevEvents) => [...prevEvents, formatEvent(event.event)]);\n }\n\n async function onResendEvent(event) {\n const resentEvent = await randomizerClient.current.send_event(event.event_type, event.to_world_id, event.item_id, -1, -1, false, `RESENT: ${event.message}`);\n setEvents((prevEvents) => [...prevEvents, formatEvent(resentEvent.event)]);\n }\n\n if (state === null) return null;\n\n const { session, clientData, device, status, patch } = state;\n const { race } = session ? tryParseJson(session.seed.worlds[0].settings) : {};\n const gameMismatch = session && session.seed.game_id !== game.id;\n\n return !gameMismatch ? (\n <>\n {session && session.guid && (\n \n \n \n \n \n )}\n {session && clientData !== null && status < 3 && (\n \n \n world.world_id === clientData.world_id), player: clientData.player_name, patch: btoa(String.fromCharCode.apply(null, new Uint8Array(patch))) }}\n />\n \n \n )}\n {session && clientData !== null && (\n \n \n \n \n \n )}\n {device && device.state === 1 && (\n \n \n \n \n \n )}\n {session && race === 'false' && (\n \n \n \n \n \n )}\n ) :\n (\n Go to the correct domain here}\n />\n );\n}\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseIteratee = require('./_baseIteratee'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n last = require('./last');\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n : [];\n});\n\nmodule.exports = differenceBy;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nmodule.exports = maxBy;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n"],"names":["styled","ul","_templateObject","_taggedTemplateLiteral","clientStates","name","color","Session","props","status","session","sessionStatus","clientData","seed","onRegisterPlayer","onUnregisterPlayer","onRemove","onForfeit","_jsxs","Card","children","_jsx","CardHeader","className","classNames","PlainList","guid","concat","game_name","game_version","hash","CardBody","Row","worlds","map","world","i","Col","md","player_name","client_state","Button","size","onClick","world_id","disabled","Connection","device","deviceStatus","onDeviceSelect","onConnect","_useState","useState","_useState2","_slicedToArray","selectedDevice","setSelectedDevice","deviceState","state","selecting","list","_Fragment","Input","type","onChange","e","target","selectedIndex","d","uri","_excluded","propTypes","tag","tagPropType","PropTypes","cssModule","CardTitle","Tag","attributes","_objectWithoutPropertiesLoose","classes","mapToCssModules","React","_extends","defaultProps","LogMessageRow","div","attrs","LogIcon","_templateObject2","Ok","as","CheckSquareFill","_templateObject3","Delay","_objectSpread","viewBox","xmlns","fill","stroke","strokeLinecap","_templateObject4","Msg","ChatLeftDots","_templateObject5","Issue","_templateObject6","Reload","ArrowClockwise","_templateObject7","Game","logEnd","useRef","eventCount","setEventCount","events","onChatMessage","onResendEvent","renderMessage","event","Icon","event_type","confirmed","message","from_world_id","item_location","item_name","to_player","from_player","time_stamp","substring","role","useEffect","_logEnd$current","length","current","scrollIntoView","gameStatus","style","sortBy","id","ref","onKeyUp","key","value","smz3ItemNames","smItemNames","MessageType","ConsoleDisconnected","ConsoleReconnecting","ConsoleConnected","ConsoleError","GameState","ItemFound","ItemReceived","ItemsConfirmed","Multiworld","sessionSlug","useParams","randomizerClient","eventLoopHandle","statusLoopHandle","setEvents","_useState3","_useState4","setState","_useState5","_useState6","setSessionStatus","_useState7","_useState8","setGameStatus","_useState9","_useState10","setDeviceStatus","game","useContext","GameTraitsCtx","itemLookup","formatEvent","useCallback","find","w","to_world_id","item_id","replace","handleMessage","args","prevState","clearTimeout","_onRegisterPlayer","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","sessionGuid","worldId","_clientData2","wrap","_context4","prev","next","register_player","sent","localStorage","setItem","client_guid","updatePlayer","t0","console","log","stop","apply","arguments","_onUnregisterPlayer","_callee5","_context5","window","confirm","unregister_player","removeItem","patch","_onForfeit","_callee6","_context6","forfeit","_onRemove","_callee7","_context7","send_event","_x4","_updatePlayer","_callee8","sessionData","patchData","_context8","initialize","get_patch","_onConnect","_callee9","devices","_context9","list_devices","abrupt","_x5","_onDeviceSelect","_callee10","_context10","start","eventLoop","_eventLoop","_callee12","_context12","update","setTimeout","_callee11","_context11","_onChatMessage","_callee13","_context13","prevEvents","_toConsumableArray","_onResendEvent","_callee14","resentEvent","_context14","initSession","_ref","_callee","_yield$import","RandomizerClient","_session","clientGuid","_clientData","_context","decode","init","gameServiceHost","location","href","getItem","login_player","t1","statusLoop","_statusLoop","_callee3","minUnConfirmed","maxReceived","minId","report","newEvents","_context3","minBy","filter","maxBy","get_report","isEmpty","differenceBy","_callee2","_context2","race","tryParseJson","settings","game_id","MessageCard","error","title","msg","adjustHostname","document","gameId","_x","_x2","_x3","Patch","mode","game_mode","gameName","gameVersion","seedNumber","number","player","btoa","String","fromCharCode","Uint8Array","_x6","_x7","Spoiler","seedGuid","SetCache","require","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","module","exports","array","values","iteratee","comparator","index","includes","isCommon","result","valuesLength","outer","computed","valuesIndex","push","isSymbol","undefined","other","baseDifference","baseFlatten","baseIteratee","baseRest","isArrayLikeObject","last","isArrayLike","isObjectLike","baseExtremum","baseGt","baseLt"],"sourceRoot":""}