{"version":3,"file":"games.js","mappings":"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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/create fake namespace object","webpack:///./games/ws.jsx","webpack:///./locale/messages.jsx","webpack:///./games/utils.jsx","webpack:///./locale/nameGenerator.jsx","webpack:///./games/index.css?b542","webpack:///./games/Game.jsx","webpack:///./games/Puzzle.jsx","webpack:///./games/Quiz.jsx","webpack:///./games/Placement.jsx","webpack:///./games.js","webpack:///./games/index.css","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/harmony module decorator","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/runtimeId","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/runtime/nonce","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","function noop() {}\n\nexport default function (url, opts) {\n\topts = opts || {};\n\n\tlet k, ws, num, $={}, self=this;\n\tlet ms=opts.timeout || 1e3, max=opts.maxAttempts || Infinity;\n\n\t$.onmessage = opts.onmessage || noop;\n\n\t$.onclose = e => {\n\t\t(e.code !== 1e3 && e.code !== 1005) && self.reconnect(e);\n\t\t(opts.onclose || noop)(e);\n\t};\n\n\t$.onerror = e => {\n\t\t(e && e.code==='ECONNREFUSED') ? self.reconnect(e) : (opts.onerror || noop)(e);\n\t};\n\n\t$.onopen = e => {\n\t\tnum=0; (opts.onopen || noop)(e);\n\t};\n\n\tself.isReady = () => {\n\t\treturn ws.readyState;\n\t};\n\n\tself.open = () => {\n\t\tws = new WebSocket(url, opts.protocols);\n\t\tfor (k in $) ws[k] = $[k];\n\t};\n\n\tself.reconnect = e => {\n\t\t(num++ < max) ? setTimeout(_ => {\n\t\t\t(opts.onreconnect || noop)(e);\n\t\t\tself.open();\n\t\t}, ms) : (opts.onmaximum || noop)(e);\n\t};\n\n\tself.json = x => {\n\t\tws.send(JSON.stringify(x));\n\t};\n\n\tself.send = x => {\n\t\tws.send(x);\n\t};\n\n\tself.close = (x, y) => {\n\t\tws.close(x, y);\n\t};\n\n\tself.open(); // init\n\n\treturn self;\n}","'use strict';\nimport messagesRU from \"./ru.json\";\nimport messagesEN from \"./en.json\";\n\nconst messages = {\n 'ru': messagesRU,\n 'en': messagesEN\n};\n\nexport default messages;","import messages from \"../locale/messages\";\n\nconst prepareInfobox = (json) => {\n if (json.area) {\n json.area = `${Number(json.area).toLocaleString()} ${messages[window.__LANGUAGE__].km2}`;\n }\n if (json.population) {\n json.population = Number(json.population).toLocaleString();\n }\n ['depth', 'length', 'width', 'height'].forEach(item => {\n if (json[item]) {\n json[item] = `${Number(json[item]).toLocaleString()} ${messages[window.__LANGUAGE__].m}`;\n }\n });\n return json;\n};\n\nfunction shuffle(a) {\n for (let i = a.length; i; i--) {\n let j = Math.floor(Math.random() * i);\n [a[i - 1], a[j]] = [a[j], a[i - 1]];\n }\n return a;\n}\n\n\nexport {prepareInfobox, shuffle};","'use strict';\n\nlet words = {\n en: {\n adjs: [\"Autumn\", \"Hidden\", \"Bitter\", \"Misty\", \"Silent\", \"Empty\", \"Dry\", \"Dark\", \"Summer\", \"Icy\", \"Delicate\", \"Quiet\", \"White\", \"Cool\", \"Spring\", \"Winter\", \"Patient\", \"Twilight\", \"Dawn\", \"Crimson\", \"Wispy\", \"Weathered\", \"Blue\", \"Billowing\", \"Broken\", \"Cold\", \"Damp\", \"Falling\", \"Frosty\", \"Green\", \"Long\", \"Late\", \"Lingering\", \"Bold\", \"Little\", \"Morning\", \"Muddy\", \"Old\", \"Red\", \"Rough\", \"Still\", \"Small\", \"Sparkling\", \"Throbbing\", \"Shy\", \"Wandering\", \"Withered\", \"Wild\", \"Black\", \"Young\", \"Holy\", \"Solitary\", \"Fragrant\", \"Aged\", \"Snowy\", \"Proud\", \"Floral\", \"Restless\", \"Divine\", \"Polished\", \"Ancient\", \"Purple\", \"Lively\", \"Nameless\"],\n nouns: [\"Waterfall\", \"River\", \"Breeze\", \"Moon\", \"Rain\", \"Wind\", \"Sea\", \"Morning\", \"Snow\", \"Lake\", \"Sunset\", \"Pine\", \"Shadow\", \"Leaf\", \"Dawn\", \"Glitter\", \"Forest\", \"Hill\", \"Cloud\", \"Meadow\", \"Sun\", \"Glade\", \"Bird\", \"Brook\", \"Butterfly\", \"Bush\", \"Dew\", \"Dust\", \"Field\", \"Fire\", \"Flower\", \"Firefly\", \"Feather\", \"Grass\", \"Haze\", \"Mountain\", \"Night\", \"Pond\", \"Darkness\", \"Snowflake\", \"Silence\", \"Sound\", \"Sky\", \"Shape\", \"Surf\", \"Thunder\", \"Violet\", \"Water\", \"Wildflower\", \"Wave\", \"Water\", \"Resonance\", \"Sun\", \"Wood\", \"Dream\", \"Cherry\", \"Tree\", \"Fog\", \"Frost\", \"Voice\", \"Paper\", \"Frog\", \"Smoke\", \"Star\"]\n },\n ru: {\n adjs: [\"Autumn\", \"Hidden\", \"Bitter\", \"Misty\", \"Silent\", \"Empty\", \"Dry\", \"Dark\", \"Summer\", \"Icy\", \"Delicate\", \"Quiet\", \"White\", \"Cool\", \"Spring\", \"Winter\", \"Patient\", \"Twilight\", \"Dawn\", \"Crimson\", \"Wispy\", \"Weathered\", \"Blue\", \"Billowing\", \"Broken\", \"Cold\", \"Damp\", \"Falling\", \"Frosty\", \"Green\", \"Long\", \"Late\", \"Lingering\", \"Bold\", \"Little\", \"Morning\", \"Muddy\", \"Old\", \"Red\", \"Rough\", \"Still\", \"Small\", \"Sparkling\", \"Throbbing\", \"Shy\", \"Wandering\", \"Withered\", \"Wild\", \"Black\", \"Young\", \"Holy\", \"Solitary\", \"Fragrant\", \"Aged\", \"Snowy\", \"Proud\", \"Floral\", \"Restless\", \"Divine\", \"Polished\", \"Ancient\", \"Purple\", \"Lively\", \"Nameless\"],\n nouns: [\"Waterfall\", \"River\", \"Breeze\", \"Moon\", \"Rain\", \"Wind\", \"Sea\", \"Morning\", \"Snow\", \"Lake\", \"Sunset\", \"Pine\", \"Shadow\", \"Leaf\", \"Dawn\", \"Glitter\", \"Forest\", \"Hill\", \"Cloud\", \"Meadow\", \"Sun\", \"Glade\", \"Bird\", \"Brook\", \"Butterfly\", \"Bush\", \"Dew\", \"Dust\", \"Field\", \"Fire\", \"Flower\", \"Firefly\", \"Feather\", \"Grass\", \"Haze\", \"Mountain\", \"Night\", \"Pond\", \"Darkness\", \"Snowflake\", \"Silence\", \"Sound\", \"Sky\", \"Shape\", \"Surf\", \"Thunder\", \"Violet\", \"Water\", \"Wildflower\", \"Wave\", \"Water\", \"Resonance\", \"Sun\", \"Wood\", \"Dream\", \"Cherry\", \"Tree\", \"Fog\", \"Frost\", \"Voice\", \"Paper\", \"Frog\", \"Smoke\", \"Star\"]\n },\n};\n\nfunction randomWord(list){\n return list[Math.floor(Math.random()*(list.length-1))];\n}\n\nfunction nameGenerator(){\n let language = words[window.__LANGUAGE__];\n return `${randomWord(language.adjs)} ${randomWord(language.nouns)}`;\n}\n\nexport default nameGenerator;","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!./index.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!./index.css\";\n export default content && content.locals ? content.locals : undefined;\n","'use strict';\nimport React from \"react\";\nimport Loading from \"../components/Loading/index\";\nimport Sockette from './ws';\nimport {prepareInfobox} from \"./utils\";\nimport Toolbox from \"./components/Toolbox/index\";\nimport Infobox from \"./components/Infobox/index\";\nimport Map from '../components/Map/index';\nimport {MultiplayerPopup} from \"./components/MultiplayerPopup\";\nimport nameGenerator from \"../locale/nameGenerator\";\nimport {MultiplayerCongratulation, Congratulation} from \"./components/Congratulation\";\n\nimport './index.css';\n\n\nclass Game extends React.Component {\n constructor(props) {\n super(props);\n let multiplayer = window.__MULTIPLAYER__;\n this.is_multiplayer = (multiplayer !== undefined) && Object.entries(multiplayer).length !== 0;\n if (this.is_multiplayer) {\n multiplayer = {...multiplayer, players: [], started: false, name: nameGenerator(), score: {}};\n }\n this.state = {isLoaded: null, startTime: null, regions: [], showInfobox: true, infobox: null, sticky: null,\n congratulations: null,\n map: {typeId: 'terrain'}, wsState: null, showMap: true, multiplayer: multiplayer};\n this.ws = null;\n }\n\n wsSend = (payload) => {\n payload['sticky'] = this.is_multiplayer? null : this.state.sticky;\n if(this.ws && this.ws.isReady() === 1) {\n this.ws.json(payload);\n } else {\n setTimeout(() => {this.wsSend(payload);}, 100);\n }\n };\n\n setupWs = () => {\n let ws_scheme = window.location.protocol === \"https:\" ? \"wss\" : \"ws\";\n let addr = `${ws_scheme}://${window.location.host}/ws/${this.GAME_NAME}/`;\n if (this.is_multiplayer) {\n addr += `?multiplayer=${this.state.multiplayer.code}&name=${this.state.multiplayer.name}`;\n }\n this.ws = new Sockette(addr, {\n timeout: 5e3,\n onopen: () => this.setState(state => ({...state, wsState: true})),\n onmessage: e => this.dispatchMessage(e),\n onreconnect: () => this.setState(state => ({...state, wsState: null})),\n onmaximum: () => this.setState(state => ({...state, wsState: false})),\n onclose: () => this.setState(state => ({...state, wsState: null})),\n onerror: () => this.setState(state => ({...state, wsState: false}))\n });\n };\n\n startGame = (params) => {\n this.setState(state => ({...state, ...params, isLoaded: true, startTime: Date.now()}));\n };\n\n startMultiplayer = (sendMessage, options) => {\n if (sendMessage) {\n this.wsSend({type: 'START_MULTIPLAYER', options: options});\n }\n this.setState(state => ({...state, multiplayer: {...state.multiplayer, started: true}}));\n this.loadData(options);\n };\n\n incScore = (name) => {\n let score = this.state.multiplayer.score;\n if (score[name] === undefined) {\n score[name] = 0;\n }\n score[name] += 1;\n this.setState(state => ({...state, multiplayer: {...state.multiplayer, score: score}}));\n };\n\n dispatchMessage = (event) => {\n let data = JSON.parse(event.data);\n switch(data.type) {\n case 'FINISH_GAME':\n if (!this.is_multiplayer) {\n this.setState(state => ({...state, congratulations: data.congratulations}));\n }\n break;\n case 'START_MULTIPLAYER':\n this.startMultiplayer(false, data.options);\n break;\n case 'CONNECT_MULTIPLAYER':\n if (this.state.multiplayer.master) {\n this.setState(state => ({...state, multiplayer: {...state.multiplayer, players: [...state.multiplayer.players, data.author]}}));\n }\n break;\n case 'DISCONNECT_MULTIPLAYER':\n if (this.state.multiplayer.master) {\n this.setState(state => ({...state, multiplayer: {...state.multiplayer, players: state.multiplayer.players.filter(item => item !== data.author)}}));\n }\n break;\n default:\n this._dispatchMessage(data);\n }\n };\n\n _dispatchMessage = (data) => {};\n\n mapInit = () => {\n this.setupWs();\n if (!this.is_multiplayer) {\n this.loadData();\n } else {\n this.setState(state => ({...state, multiplayer: {...state.multiplayer, players: [...state.multiplayer.players, state.multiplayer.name]}}));\n }\n };\n\n loadData = () => {};\n\n mapClick = (e) => {};\n\n setMapType = (typeId) => {\n this.setState(state => ({...state, map: {...state.map, typeId: typeId}}));\n };\n\n closeInfobox = () => {\n this.setState(state => ({...state, showInfobox: false}));\n };\n\n openInfobox = (region) => {\n this.setState(state => ({...state, showInfobox: true, infobox: region.infobox}));\n };\n\n onPolygonClick = async (polygon) => {\n if (polygon && (polygon.draggable !== undefined) && !polygon.draggable) {\n let region = this.state.regions.find(x => x.id === polygon.id);\n if (region.infobox.loaded) {\n this.openInfobox(region);\n } else {\n let id = region.id;\n try {\n let response = await fetch(`${window.location.origin}/puzzle/area/${id}/infobox/`, {method: 'GET'});\n let data = await response.json();\n let regions = this.state.regions.map((item) =>\n item.id === id ? {...item, infobox: prepareInfobox(data)} : item);\n this.setState(state => ({...state, regions: regions, infobox: data, showInfobox: true}));\n } catch (e) {\n console.log(e);\n }\n }\n }\n };\n\n mainItems() {\n return this.state.regions;\n }\n\n render_loaded() {\n return this.state.isLoaded === true ? null : ;\n }\n\n render_congratulation() {\n if (this.state.isLoaded) {\n if (this.is_multiplayer) {\n // legacy behaviour\n let items = this.mainItems();\n if (items.filter(el => el.isOpen === false).length === 0) {\n return ;\n }\n } else {\n if ((this.state.congratulations) && (this.state.sticky === this.state.congratulations.sticky)) {\n return ;\n }\n }\n }\n return null;\n }\n\n render_question() {\n return null;\n }\n\n render_popup() {\n return null;\n }\n\n render_multiplayer_popup() {\n return ;\n }\n\n render() {\n return
\n {this.render_loaded()}\n {this.is_multiplayer &&\n this.render_multiplayer_popup()}\n \n {!this.is_multiplayer &&\n this.render_popup()}\n
\n \n {this.render_question()}\n
\n \n
\n
\n {this.render_congratulation()}\n
;\n }\n}\n\nexport default Game;\n","'use strict';\nimport React from \"react\";\nimport Game from \"./Game\";\nimport { prepareInfobox } from \"./utils\";\nimport {Button} from \"react-bootstrap\";\nimport {FormattedMessage as Msg} from \"react-intl\";\nimport Map from \"../components/Map\";\n\n\nclass Puzzle extends Game {\n GAME_NAME = 'puzzle';\n\n static extractData(polygons, solved) {\n return polygons.map(country => {\n // useDecode because TrueSizePolygon accepts (lng, lat)\n let paths = Map.preparePolygon(country.polygon, true);\n paths = Map.moveTo(paths, country.center, country.default_position);\n return {\n id: country.id,\n draggable: true,\n isSolved: false,\n isOpen: false,\n defaultPosition: country.default_position,\n infobox: {name: country.name, loaded: false},\n paths: paths\n }\n }).concat(solved.map(region => {\n return {\n id: region.id,\n draggable: false,\n isSolved: true,\n isOpen: true,\n infobox: region.infobox,\n paths: Map.preparePolygon(region.polygon)\n }\n })).sort((one, another) => {\n return one.infobox.name > another.infobox.name ? 1 : -1\n });\n }\n\n _dispatchMessage = (data) => {\n let regions = this.state.regions;\n let infobox = this.state.infobox;\n switch(data.type) {\n case 'PUZZLE_CHECK_SUCCESS':\n regions = regions.map((region) => {\n if (region.id === data.id) {\n return {\n ...region,\n draggable: false,\n isSolved: true,\n isOpen: true,\n infobox: {...prepareInfobox(data.infobox), loaded: true},\n paths: Map.preparePolygon(data.polygon),\n };\n } else {\n return region;\n }\n });\n infobox = data.infobox;\n this.setState(state => ({...state, regions: regions, infobox: infobox}));\n break;\n case 'PUZZLE_GIVEUP_DONE':\n regions = regions.map((polygon) => {\n if (!polygon.isSolved) {\n let solve = data.solves[polygon.id];\n return {\n ...polygon,\n draggable: false,\n isOpen: true,\n infobox: {...prepareInfobox(solve.infobox), loaded: true},\n paths: Map.preparePolygon(solve.polygon),\n };\n } else {\n return polygon;\n }\n });\n this.setState(state => ({...state, regions: regions, infobox: infobox}));\n break;\n }\n };\n\n loadData = () => {\n fetch(`${location.pathname}questions/${location.search}`)\n .then(response => response.json())\n .then(data => {\n this.startGame({regions: Puzzle.extractData(data.questions, data.solved), sticky: data.sticky});\n })\n .catch(response => {\n this.setState({...this.state, isLoaded: false})\n });\n };\n\n giveUp = () => {\n let ids = this.state.regions.filter(obj => (!obj.isSolved)).map(polygon => (polygon.id));\n return this.wsSend({ids: ids, type: 'PUZZLE_GIVEUP'});\n };\n\n refreshMap = () => {\n this.setState({...this.state, showMap: false}, () => {this.setState({...this.state, showMap: true})});\n };\n\n onDragPolygon = (id, coords, path) => {\n this.wsSend({type: 'PUZZLE_CHECK', coords: coords, id: id, zoom: this.props.map.zoom});\n };\n\n render_question() {\n return
\n \n \n
;\n }\n}\n\n\nexport default Puzzle;\n","'use strict';\nimport React from \"react\";\nimport {QuizInit} from './components/QuizInit/index';\nimport QuizQuestion from './components/QuizQuestion/index';\nimport Map from \"../components/Map\";\nimport Game from \"./Game\";\nimport {prepareInfobox, shuffle} from \"./utils\";\nimport {QuizMultiplayerPopup} from \"./components/MultiplayerPopup\";\n\n\nclass Quiz extends Game {\n GAME_NAME = 'quiz';\n\n constructor(props) {\n super(props);\n this.state = {...this.state, showInit: true, question: null, questions: []};\n }\n\n static extractData(polygons, solved) {\n return polygons.map(polygon => {\n return {\n id: polygon.id,\n draggable: false,\n isSolved: false,\n isOpen: false,\n infobox: {name: polygon.name, loaded: false},\n paths: []\n }\n }).concat(solved.map(region => {\n return {\n id: region.id,\n draggable: false,\n isSolved: true,\n isOpen: true,\n infobox: region.infobox,\n paths: Map.preparePolygon(region.polygon)\n }\n })).sort((one, another) => {\n return one.infobox.name > another.infobox.name ? 1 : -1\n });\n }\n\n static prepareQuestions(questions, quizBy) {\n return shuffle(questions\n .map(question => {\n return quizBy\n .map(key => {\n if (question[key] === undefined) {\n return null;\n }\n let result = {id: question.id};\n result[key] = question[key];\n return result;\n })\n .filter(item => item !== null);\n }).reduce((l, acc) => {acc = acc.concat(l); return acc}, []));\n }\n\n changeRegionState(data, current) {\n let regions = this.state.regions.map((polygon) => {\n if (polygon.id === data.id) {\n return {\n draggable: false,\n id: data.id,\n isSolved: data.type === 'QUIZ_CHECK_SUCCESS',\n isOpen: true,\n infobox: {...prepareInfobox(data.infobox), loaded: true},\n paths: Map.preparePolygon(data.polygon),\n };\n }\n return polygon;\n });\n let questions = this.state.questions.filter(element => {return element.id !== data.id});\n let index = current === null ? this.state.question % questions.length : questions.findIndex(item => item.id === current.id);\n if (index === -1) {\n index = this.state.question % questions.length;\n }\n let infobox = current === null ? {...data.infobox} : this.state.infobox;\n this.setState({...this.state, regions: regions, infobox: infobox, questions: questions, question: index});\n }\n\n _dispatchMessage = (data) => {\n switch(data.type) {\n case 'QUIZ_CHECK_SUCCESS':\n case 'QUIZ_GIVEUP_DONE':\n this.changeRegionState(data, null);\n if ((data.type === 'QUIZ_CHECK_SUCCESS') && this.is_multiplayer) {\n this.incScore(this.state.multiplayer.name);\n }\n break;\n case 'QUIZ_FOUND':\n this.changeRegionState(data, this.state.questions[this.state.question]);\n this.incScore(data.author);\n break;\n }\n };\n\n mapClick = (lat, lng) => {\n let question = this.state.questions[this.state.question];\n if (question) {\n this.wsSend({type: 'QUIZ_CHECK', coords: {lat: lat, lng: lng}, id: question.id});\n }\n };\n\n loadData = (options) => {\n if (options) {\n let quizBy = ['name', 'flag', 'coat_of_arms', 'capital'].filter((param) => options[param]);\n let getParams = location.search ? location.search + '&' : '?';\n getParams += 'params=' + quizBy.join();\n fetch(`${location.pathname}questions/${getParams}`)\n .then(response => response.json())\n .then(data => {\n let regions = Quiz.extractData(data.questions, data.solved);\n this.startGame({regions: regions, questions: Quiz.prepareQuestions(data.questions, quizBy), question: 0, sticky: data.sticky});\n })\n .catch(response => {this.setState({...this.state, isLoaded: false})});\n this.setState({...this.state, showInit: false});\n }\n };\n\n giveUp = () => {\n this.wsSend({type: 'QUIZ_GIVEUP', id: this.state.questions[this.state.question].id});\n };\n\n onNext = () => {\n this.setState({...this.state, question: (this.state.question + 1) % this.state.questions.length});\n };\n\n onPrevious = () => {\n let index = this.state.question - 1;\n this.setState({...this.state, question: index < 0 ? this.state.questions.length - 1 : index});\n };\n\n render_question() {\n return ;\n }\n\n render_popup() {\n return ;\n }\n\n render_multiplayer_popup() {\n return this.state.isLoaded ? null : ;\n }\n}\n\n\nexport default Quiz;\n","'use strict';\nimport React from \"react\";\nimport QuizQuestion from './components/QuizQuestion/index';\nimport Game from \"./Game\";\nimport { prepareInfobox, shuffle } from \"./utils\";\n\n\nclass Placement extends Game {\n GAME_NAME = 'placement';\n\n constructor(props) {\n super(props);\n this.state = {...this.state, points: [], question: null, questions: [], map: {typeId: google.maps.MapTypeId.SATELLITE}};\n }\n\n static extractData(polygons, solved) {\n return polygons.map(polygon => {\n return {\n id: polygon.id,\n isSolved: false,\n isOpen: false,\n infobox: {...prepareInfobox(polygon.infobox), marker: polygon.point},\n draggable: true,\n point: polygon.point,\n }\n }).concat(solved.map(region => {\n return {\n id: region.id,\n isSolved: true,\n isOpen: true,\n infobox: {...prepareInfobox(region.infobox), marker: region.point, loaded: true},\n draggable: false,\n point: region.point,\n }\n })).sort((one, another) => {\n return one.infobox.name > another.infobox.name ? 1 : -1\n });\n }\n\n isMultiplayerFinished() {\n let items = this.mainItems();\n return items.filter(el => el.draggable === true).length === 0;\n }\n\n static prepareQuestions(questions) {\n return shuffle(questions\n .map(question => {\n let result = {id: question.id};\n result['name'] = question.infobox.name;\n return result;\n }));\n }\n\n changePointState(data, current) {\n let points = this.state.points.map((polygon) => {\n if (polygon.id === data.id) {\n return {\n draggable: false,\n id: data.id,\n isSolved: data.type === 'PLACEMENT_CHECK_SUCCESS',\n isOpen: true,\n infobox: {...prepareInfobox(data.infobox), loaded: true, marker: data.point},\n point: data.point,\n };\n }\n return polygon;\n });\n let questions = this.state.questions.filter(element => {return element.id !== data.id});\n let index = current === null ? this.state.question % questions.length : questions.findIndex(item => item.id === current.id);\n if (index === -1) {\n index = this.state.question % questions.length;\n }\n let infobox = current === null ? {...data.infobox, marker: data.point} : this.state.infobox;\n this.setState({...this.state, points: points, infobox: infobox, questions: questions, question: index});\n }\n\n _dispatchMessage = (data) => {\n switch(data.type) {\n case 'PLACEMENT_CHECK_SUCCESS':\n case 'PLACEMENT_GIVEUP_DONE':\n this.changePointState(data, null);\n if ((data.type === 'PLACEMENT_CHECK_SUCCESS') && this.is_multiplayer) {\n this.incScore(this.state.multiplayer.name);\n }\n break;\n case 'PLACEMENT_FOUND':\n this.changePointState(data, this.state.questions[this.state.question]);\n this.incScore(data.author);\n break;\n }\n };\n\n loadData = () => {\n fetch(`${location.pathname}questions/`)\n .then(response => response.json())\n .then(data => {\n let regions = Placement.extractData(data.questions, data.solved);\n this.startGame({points: regions, questions: Placement.prepareQuestions(data.questions), question: 0, sticky: data.sticky});\n })\n .catch(response => {\n this.setState({...this.state, isLoaded: false})\n });\n };\n\n onPolygonClick = (polygon) => {\n let region = this.state.points.find(x => x.id === polygon.id);\n if (region.infobox.loaded) {\n this.setState({...this.state, infobox: region.infobox, showInfobox: true});\n } else {\n let question = this.state.questions[this.state.question];\n if (question) {\n this.wsSend({type: 'PLACEMENT_CHECK', point: region.point, id: question.id});\n }\n }\n };\n\n giveUp = () => {\n this.wsSend({type: 'PLACEMENT_GIVEUP', id: this.state.questions[this.state.question].id});\n };\n\n onNext = () => {\n this.setState({...this.state, question: (this.state.question + 1) % this.state.questions.length});\n };\n\n onPrevious = () => {\n let index = this.state.question - 1;\n this.setState({...this.state, question: index < 0 ? this.state.questions.length - 1 : index});\n };\n\n mainItems() {\n return this.state.points;\n }\n\n render_question() {\n return ;\n }\n}\n\n\nexport default Placement;\n","'use strict';\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport Puzzle from \"./games/Puzzle\";\nimport Quiz from \"./games/Quiz\";\nimport Placement from \"./games/Placement\";\nimport messages from \"./locale/messages\";\nimport {IntlProvider} from \"react-intl\";\n\nlet games = {\n 'puzzle': ,\n 'quiz': ,\n 'placement': ,\n};\n\n\nfor (let [game, component] of Object.entries(games)) {\n let node = document.getElementById(game);\n if (node !== null) {\n let root = createRoot(node);\n root.render(\n \n {component}\n \n );\n }\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.game-box {\n width: 100%;\n position: fixed;\n top: 56px;\n height: 0;\n z-index: 500;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: flex-start;\n}\n\n.infobox-wrapper {\n width: 214px;\n}\n\n@media (max-width: 768px) {\n .game-box {\n top: 56px;\n }\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./games/index.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,WAAW;IACX,eAAe;IACf,SAAS;IACT,SAAS;IACT,YAAY;IACZ,aAAa;IACb,mBAAmB;IACnB,8BAA8B;IAC9B,uBAAuB;AAC3B;;AAEA;IACI,YAAY;AAChB;;AAEA;IACI;QACI,SAAS;IACb;AACJ\",\"sourcesContent\":[\".game-box {\\n width: 100%;\\n position: fixed;\\n top: 56px;\\n height: 0;\\n z-index: 500;\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: flex-start;\\n}\\n\\n.infobox-wrapper {\\n width: 214px;\\n}\\n\\n@media (max-width: 768px) {\\n .game-box {\\n top: 56px;\\n }\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 903;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t903: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk\"] = self[\"webpackChunk\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [592,160], () => (__webpack_require__(3720)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","noop","url","opts","k","ws","num","$","self","this","ms","timeout","max","maxAttempts","Infinity","onmessage","onclose","e","code","reconnect","onerror","onopen","isReady","readyState","open","WebSocket","protocols","setTimeout","_","onreconnect","onmaximum","json","x","send","JSON","stringify","close","y","prepareInfobox","area","Number","toLocaleString","messages","window","__LANGUAGE__","km2","population","forEach","item","m","shuffle","a","i","length","j","Math","floor","random","words","en","adjs","nouns","ru","randomWord","list","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","Game","props","payload","is_multiplayer","state","sticky","wsSend","ws_scheme","location","protocol","addr","host","GAME_NAME","multiplayer","name","Sockette","setState","wsState","dispatchMessage","params","isLoaded","startTime","Date","now","sendMessage","type","started","loadData","score","undefined","event","data","parse","congratulations","startMultiplayer","master","players","author","filter","_dispatchMessage","setupWs","typeId","map","showInfobox","region","infobox","polygon","draggable","regions","find","id","loaded","openInfobox","fetch","origin","method","response","console","log","language","__MULTIPLAYER__","Object","entries","showMap","Loading","hasError","mainItems","el","isOpen","href","game","subjects","parts","Congratulation","text","MultiplayerPopup","onStart","render_loaded","render_multiplayer_popup","Map","initCallback","mapInit","mapClick","mapTypeId","points","onPolygonClick","onDragPolygon","render_popup","className","Toolbox","setMapType","render_question","Infobox","show","onClose","closeInfobox","render_congratulation","React","Puzzle","isSolved","paths","preparePolygon","solve","solves","pathname","search","then","startGame","extractData","questions","solved","ids","obj","coords","path","zoom","Button","variant","onClick","giveUp","refreshMap","polygons","country","moveTo","center","default_position","defaultPosition","concat","sort","one","another","Quiz","changeRegionState","incScore","question","lat","lng","quizBy","param","getParams","join","prepareQuestions","showInit","index","current","element","findIndex","QuizQuestion","onNext","onPrevious","QuizInit","load","key","result","reduce","l","acc","Placement","changePointState","point","google","maps","MapTypeId","SATELLITE","marker","games","__MAP__","__GAME__","__OPTIONS__","component","node","document","getElementById","createRoot","render","locale","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","call","O","chunkIds","fn","priority","notFulfilled","fulfilled","keys","every","splice","r","n","getter","__esModule","d","getPrototypeOf","t","value","mode","ns","create","def","indexOf","getOwnPropertyNames","definition","o","defineProperty","enumerable","get","g","globalThis","Function","hmd","children","set","Error","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}