{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Modal.vue?9709","webpack:///./src/components/TownSquare.vue?5ccd","webpack:///./src/App.vue?d565","webpack:///./src/components/TownSquare.vue?0842","webpack:///./src/components/Player.vue?0408","webpack:///src/components/Player.vue","webpack:///./src/components/Player.vue?42e4","webpack:///./src/components/Player.vue","webpack:///./src/components/Modal.vue?d649","webpack:///src/components/Modal.vue","webpack:///./src/components/Modal.vue?2d56","webpack:///./src/components/Modal.vue","webpack:///src/components/TownSquare.vue","webpack:///./src/components/TownSquare.vue?c41d","webpack:///./src/components/TownSquare.vue","webpack:///src/App.vue","webpack:///./src/App.vue?8b47","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///./src/App.vue?f446","webpack:///./src/components/Player.vue?0fbc"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","attrs","isPublic","staticClass","on","togglePublic","_v","staticRenderFns","class","public","players","_l","player","roles","openReminderModal","openRoleModal","directives","rawName","availableReminders","expression","closeModal","reminder","role","$event","addReminder","_s","availableRoles","id","team","setRole","dead","hasDied","hasVoted","toggleStatus","changeRole","_e","reminders","ability","removeReminder","$emit","component","close","stopPropagation","_t","config","productionTip","h","App","$mount"],"mappings":"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","file":"js/app.86616708.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/townsquare/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"56d7\",\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TownSquare.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TownSquare.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('TownSquare',{attrs:{\"is-public\":_vm.isPublic}}),_c('div',{staticClass:\"controls\"},[_c('button',{on:{\"click\":_vm.togglePublic}},[_vm._v(\"Toggle\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"square\",class:{ public: _vm.isPublic },attrs:{\"id\":\"townsquare\"}},[_c('ul',{staticClass:\"circle\",class:['size-' + _vm.players.length]},_vm._l((_vm.players),function(player){return _c('Player',{key:player.name,attrs:{\"player\":player,\"roles\":_vm.roles,\"is-public\":_vm.isPublic},on:{\"add-reminder\":_vm.openReminderModal,\"set-role\":_vm.openRoleModal}})}),1),_c('Modal',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.availableReminders.length),expression:\"availableReminders.length\"}],on:{\"close\":_vm.closeModal}},[_c('h2',[_vm._v(\"Choose a reminder token:\")]),_c('ul',{staticClass:\"reminders\"},_vm._l((_vm.availableReminders),function(reminder){return _c('li',{staticClass:\"reminder\",class:[reminder.role],on:{\"click\":function($event){return _vm.addReminder(reminder)}}},[_vm._v(\" \"+_vm._s(reminder.name)+\" \")])}),0)]),_c('Modal',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.availableRoles.length),expression:\"availableRoles.length\"}],on:{\"close\":_vm.closeModal}},[_c('h2',[_vm._v(\"Choose a new role:\")]),_c('ul',{staticClass:\"tokens\"},_vm._l((_vm.availableRoles),function(role){return _c('li',{staticClass:\"token\",class:[role.id, role.team],on:{\"click\":function($event){return _vm.setRole(role)}}},[_vm._v(\" \"+_vm._s(role.name)+\" \")])}),0)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',[_c('div',{staticClass:\"player\",class:{ dead: _vm.player.hasDied, 'no-vote': _vm.player.hasVoted }},[_c('div',{staticClass:\"shroud\",on:{\"click\":function($event){return _vm.toggleStatus()}}}),_c('div',{staticClass:\"token\",class:[_vm.player.role.id],on:{\"click\":function($event){return _vm.changeRole()}}},[(_vm.player.role.firstNight)?_c('span',{staticClass:\"leaf-left\"}):_vm._e(),(_vm.player.role.otherNight)?_c('span',{staticClass:\"leaf-right\"}):_vm._e(),(_vm.player.role.reminders.length)?_c('span',{class:['leaf-top' + _vm.player.role.reminders.length]}):_vm._e(),(_vm.player.role.setup)?_c('span',{staticClass:\"leaf-orange\"}):_vm._e(),_c('div',[_vm._v(_vm._s(_vm.player.role.name))])]),(_vm.player.role.ability)?_c('div',{staticClass:\"ability\"},[_vm._v(_vm._s(_vm.player.role.ability))]):_vm._e(),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.player.name))])]),_vm._l((_vm.player.reminders),function(reminder){return (_vm.player.reminders)?_c('div',{staticClass:\"reminder\",class:[reminder.role],on:{\"click\":function($event){return _vm.removeReminder(reminder)}}},[_vm._v(_vm._s(reminder.name))]):_vm._e()}),_c('div',{staticClass:\"reminder add\",on:{\"click\":function($event){return _vm.$emit('add-reminder', _vm.player)}}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <li>\n    <div class=\"player\"\n         :class=\"{ dead: player.hasDied, 'no-vote': player.hasVoted }\">\n      <div class=\"shroud\" @click=\"toggleStatus()\"></div>\n      <div class=\"token\" @click=\"changeRole()\" :class=\"[player.role.id]\">\n        <span class=\"leaf-left\" v-if=\"player.role.firstNight\"></span>\n        <span class=\"leaf-right\" v-if=\"player.role.otherNight\"></span>\n        <span v-if=\"player.role.reminders.length\" v-bind:class=\"['leaf-top' + player.role.reminders.length]\"></span>\n        <span class=\"leaf-orange\" v-if=\"player.role.setup\"></span>\n        <div>{{ player.role.name }}</div>\n      </div>\n      <div class=\"ability\" v-if=\"player.role.ability\">{{ player.role.ability }}</div>\n      <div class=\"name\">{{ player.name }}</div>\n    </div>\n    <div class=\"reminder\"\n         v-if=\"player.reminders\"\n         v-for=\"reminder in player.reminders\"\n         v-bind:class=\"[reminder.role]\"\n         @click=\"removeReminder(reminder)\">{{ reminder.name }}</div>\n    <div class=\"reminder add\" @click=\"$emit('add-reminder', player)\"></div>\n  </li>\n</template>\n\n<script>\n  export default {\n    props: {\n      player: {\n        type: Object,\n        required: true\n      },\n      roles: {\n        type: Map,\n        required: true\n      },\n      isPublic: {\n        type: Boolean,\n        required: true\n      }\n    },\n    data () {\n      return {}\n    },\n    methods: {\n      toggleStatus () {\n        if (!this.isPublic || !this.player.hasDied) {\n          this.$set(this.player, 'hasDied', !this.player.hasDied);\n          if (!this.player.hasDied) {\n            this.$set(this.player, 'hasVoted', false);\n          }\n        } else {\n          this.$set(this.player, 'hasVoted', !this.player.hasVoted);\n        }\n      },\n      changeRole () {\n        if (!this.isPublic) {\n          this.$emit('set-role', this.player);\n        } else {\n          this.toggleStatus();\n        }\n      },\n      removeReminder (reminder) {\n        this.player.reminders.splice(this.player.reminders.indexOf(reminder), 1);\n      }\n    }\n  }\n</script>\n\n<style lang=\"scss\">\n\n  // token size\n  $token: 150px;\n\n  /***** Player token *****/\n  .circle .player {\n    margin-bottom: 10px;\n\n    .shroud {\n      content: \" \";\n      background: url('../assets/shroud.png') center -10px no-repeat;\n      background-size: auto 100%;\n      position: absolute;\n      margin-left: -2/6 * $token;\n      width: 2/3 * $token;\n      height: 2/3 * $token;\n      left: 50%;\n      top: -30px;\n      cursor: pointer;\n      opacity: 0;\n      transform: scale(1.5);\n      transition: all 200ms;\n      z-index: 2;\n      &:hover {\n        opacity: 0.5;\n        top: -10px;\n        transform: scale(1);\n      }\n    }\n\n    &.dead .shroud {\n      opacity: 1;\n      top: 0;\n      transform: scale(1);\n    }\n    &.dead .name { color: #999; }\n  }\n\n  #townsquare.public .player.dead {\n    &:after {\n      content: \" \";\n      position: absolute;\n      left: 0;\n      top: 0;\n      width: 100%;\n      background: url('../assets/vote.png') center center no-repeat;\n      background-size: 40%;\n      height: $token + 3px;\n      pointer-events: none;\n    }\n    &.traveller:after { filter: grayscale(100%); }\n    &.no-vote:after { display: none; }\n  }\n\n  #townsquare.public .player .shroud { display: none; }\n\n  /***** Role token ******/\n  .circle .token {\n    border-radius: 50%;\n    height: $token + 3px;\n    width: $token + 3px;\n    background: url('../assets/token.png') center center;\n    background-size: 100%;\n    text-align: center;\n    position: relative;\n    color: black;\n    margin: auto;\n    font-weight: 600;\n    text-shadow:\n        -1px -1px 0 #fff,\n        1px -1px 0 #fff,\n        -1px 1px 0 #fff,\n        1px 1px 0 #fff,\n        0 0 5px rgba(0,0,0,0.75);\n    padding-top: $token * 0.7;\n    box-sizing: border-box;\n    font-family: 'Papyrus', serif;\n    border: 3px solid black;\n    box-shadow: 0 0 10px rgba(0,0,0,0.5);\n    cursor: pointer;\n\n    &:before {\n      content: \" \";\n      background-size: 100%;\n      position: absolute;\n      width: 100%;\n      height: 100%;\n      left: 0;\n      top: 0;\n    }\n\n    span {\n      position: absolute;\n      width: 100%;\n      height: 100%;\n      background-size: 100%;\n      left: 0;\n      top: 0;\n      pointer-events: none;\n      &.leaf-left { background-image: url('../assets/leaf-left.png'); }\n      &.leaf-orange { background-image: url('../assets/leaf-orange.png'); }\n      &.leaf-right { background-image: url('../assets/leaf-right.png'); }\n      &.leaf-top1 { background-image: url('../assets/leaf-top1.png'); }\n      &.leaf-top2 { background-image: url('../assets/leaf-top2.png'); }\n      &.leaf-top3 { background-image: url('../assets/leaf-top3.png'); }\n      &.leaf-top4 { background-image: url('../assets/leaf-top4.png'); }\n      &.leaf-top5 { background-image: url('../assets/leaf-top5.png'); }\n    }\n  }\n\n  #townsquare.public .token {\n    background-image: url('../assets/life.png');\n    div { display: none; }\n    &:before, &:after, span { display: none; }\n  }\n\n  #townsquare.public .player.dead .token {\n    background-image: url('../assets/death.png');\n  }\n\n  #townsquare.public .player.traveller .token {\n    filter: grayscale(100%);\n  }\n\n  /***** Player name *****/\n  .name {\n    font-size: 120%;\n    line-height: 120%;\n    text-shadow:\n        -2px -2px 0 #000,\n        2px -2px 0 #000,\n        -2px 2px 0 #000,\n        2px 2px 0 #000,\n        0 0 10px rgba(0,0,0,0.75);\n  }\n\n  /***** Ability text *****/\n  #townsquare.public .ability { display: none; }\n  .circle .ability {\n    position: absolute;\n    padding: 5px 10px;\n    top: 20px;\n    right: 100%;\n    width: 200px;\n    z-index: 25;\n    font-size: 80%;\n    background: rgba(0,0,0,0.7);\n    border-radius: 10px;\n    border: 3px solid black;\n    text-align: left;\n    display: none;\n    &:after {\n      content: \" \";\n      border: 10px solid transparent;\n      position: absolute;\n      left: 100%;\n      width: 0;\n      height: 0;\n      border-left-color: black;\n      top: 20px;\n      margin: 0 2px;\n    }\n  }\n\n  .player:hover .ability { display: block; }\n\n  /***** Reminder token *****/\n  .circle .reminder {\n    background: url('../assets/reminder.png') center center;\n    background-size: 100%;\n    width: $token / 2;\n    height: $token / 2;\n    color: black;\n    font-size: 50%;\n    font-weight: bold;\n    display: block;\n    margin: 5px ($token / -4) 0;\n    text-align: center;\n    position: relative;\n    box-sizing: border-box;\n    padding-top: $token * 0.3;\n    border-radius: 50%;\n    border: 3px solid black;\n    box-shadow: 0 0 10px rgba(0,0,0,0.5);\n    transition: all 200ms;\n    cursor: pointer;\n\n    &:before, &:after {\n      content: \" \";\n      position: absolute;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-size: 100%;\n      background-position: center 0;\n      background-repeat: no-repeat;\n      background-image: url('../assets/icons/plus.png');\n      transition: opacity 200ms;\n    }\n\n    &:after {\n      background-image: url('../assets/icons/x.png');\n      opacity: 0;\n    }\n\n    &.add {\n      opacity: 0;\n      top: 30px;\n      &:after { display: none; }\n    }\n\n    &:hover:before { opacity: 0; }\n    &:hover:after { opacity: 1; }\n  }\n  .circle li:hover .reminder.add, { opacity: 1; top: 0; }\n  .circle li:hover .reminder.add:before { opacity: 1; }\n\n  #townsquare.public .reminder { display: none; }\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Player.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Player.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Player.vue?vue&type=template&id=55b33d86&\"\nimport script from \"./Player.vue?vue&type=script&lang=js&\"\nexport * from \"./Player.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Player.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"modal-fade\"}},[_c('div',{staticClass:\"modal-backdrop\",on:{\"click\":_vm.close}},[_c('div',{staticClass:\"modal\",attrs:{\"role\":\"dialog\",\"aria-labelledby\":\"modalTitle\",\"aria-describedby\":\"modalDescription\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\n  export default {\n    methods: {\n      close() {\n        this.$emit('close');\n      },\n    },\n  };\n</script>\n<template>\n  <transition name=\"modal-fade\">\n    <div class=\"modal-backdrop\" @click=\"close\">\n      <div class=\"modal\"\n           role=\"dialog\"\n           aria-labelledby=\"modalTitle\"\n           aria-describedby=\"modalDescription\"\n           @click.stop=\"\"\n      >\n        <slot></slot>\n      </div>\n    </div>\n  </transition>\n</template>\n<style lang=\"scss\">\n  .modal-backdrop {\n    position: fixed;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    background-color: rgba(0, 0, 0, 0.3);\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    z-index: 100;\n  }\n\n  .modal {\n    background: rgba(0,0,0,0.8);\n    padding: 10px 20px;\n    border-radius: 10px;\n    box-shadow: 2px 2px 20px 1px #000;\n    overflow-x: auto;\n    display: flex;\n    flex-direction: column;\n    max-width: 60%;\n\n    h2 {\n      margin: 0;\n      text-align: center;\n    }\n  }\n\n  .modal-fade-enter,\n  .modal-fade-leave-active {\n    opacity: 0;\n  }\n\n  .modal-fade-enter-active,\n  .modal-fade-leave-active {\n    transition: opacity .2s ease\n  }\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Modal.vue?vue&type=template&id=60e9d468&\"\nimport script from \"./Modal.vue?vue&type=script&lang=js&\"\nexport * from \"./Modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Modal.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div  id=\"townsquare\" class=\"square\" v-bind:class=\"{ public: isPublic }\">\n    <ul class=\"circle\" v-bind:class=\"['size-' + players.length]\">\n      <Player\n          v-for=\"player in players\"\n          :key=\"player.name\"\n          :player=\"player\"\n          :roles=\"roles\"\n          :is-public=\"isPublic\"\n          @add-reminder=\"openReminderModal\"\n          @set-role=\"openRoleModal\"\n      ></Player>\n    </ul>\n    <Modal v-show=\"availableReminders.length\" @close=\"closeModal\">\n      <h2>Choose a reminder token:</h2>\n      <ul class=\"reminders\">\n        <li v-for=\"reminder in availableReminders\" class=\"reminder\"\n            v-bind:class=\"[reminder.role]\"\n            @click=\"addReminder(reminder)\">\n          {{ reminder.name }}\n        </li>\n      </ul>\n    </Modal>\n    <Modal v-show=\"availableRoles.length\" @close=\"closeModal\">\n      <h2>Choose a new role:</h2>\n      <ul class=\"tokens\">\n        <li v-for=\"role in availableRoles\" class=\"token\"\n            v-bind:class=\"[role.id, role.team]\"\n            @click=\"setRole(role)\">\n          {{ role.name }}\n        </li>\n      </ul>\n    </Modal>\n  </div>\n</template>\n\n<script>\n  import rolesJSON from '../roles.json'\n  import Player from './Player'\n  import Modal from \"./Modal\";\n\n  const roles = new Map(rolesJSON.sort((a, b) => b.team.localeCompare(a.team)).map(role => [role.id, role]));\n\n  export default {\n    components: {\n      Modal,\n      Player\n    },\n    props: ['isPublic'],\n    data () {\n      return {\n        players: [\n          { name: \"Steffen\", role: roles.get('baron'), reminders: [{ role: 'imp', name: 'Die' }] },\n          { name: \"Tino\", role: roles.get(\"imp\") },\n          { name: \"Basti\", role: roles.get(\"chef\"), reminders: [] },\n          { name: \"Bernd\", role: roles.get(\"ravenkeeper\"), reminders: [] },\n          { name: \"Tim\", role: roles.get(\"drunk\"), reminders: [] },\n          { name: \"Yann\", role: roles.get(\"librarian\"), reminders: [] },\n          { name: \"Marie\", role: roles.get(\"empath\"), reminders: [] },\n          { name: \"Bogdan\", role: roles.get(\"scarletwoman\"), reminders: [] },\n          { name: \"Sean\", role: roles.get(\"recluse\"), reminders: [] },\n          { name: \"Petra\", role: roles.get(\"undertaker\"), reminders: [] },\n        ],\n        roles,\n        selectedPlayer: false,\n        availableReminders: [],\n        availableRoles: [],\n      }\n    },\n    methods: {\n      openReminderModal (player) {\n        this.selectedPlayer = player;\n        this.availableReminders = [];\n        this.roles.forEach(role => {\n          if (this.players.some(p => p.role.id === role.id)) {\n            this.availableReminders = [\n              ...this.availableReminders,\n              ...role.reminders.map(name => ({role: role.id, name}))\n            ];\n          }\n        });\n      },\n      openRoleModal (player) {\n        this.selectedPlayer = player;\n        this.availableRoles = [];\n        this.roles.forEach(role => {\n          if(role.id !== player.role) {\n            this.availableRoles.push(role);\n          }\n        });\n      },\n      addReminder (reminder) {\n        this.selectedPlayer.reminders.push(reminder);\n        this.closeModal();\n      },\n      setRole (role) {\n        this.selectedPlayer.role = role;\n        this.closeModal();\n      },\n      closeModal () {\n        this.selectedPlayer = false;\n        this.availableReminders = [];\n        this.availableRoles = [];\n      }\n    }\n  }\n</script>\n\n<style lang=\"scss\">\n  @import '../roles.scss';\n\n  @mixin on-circle($item-count) {\n    $angle: (360 / $item-count);\n    $rot: 0;\n\n    @for $i from 1 through $item-count {\n      &:nth-child(#{$i}) {\n        transform: rotate($rot * 1deg);\n        @if $i - 1 <= $item-count / 2 {\n          z-index: $item-count - $i + 1;\n          .ability {\n            left: 100%; right: auto;\n            &:after {\n              border-left-color: transparent;\n              border-right-color: black;\n              left: auto;\n              right: 100%;\n            }\n          }\n        } @else {\n          z-index: $i - 1;\n        }\n        > * {\n          transform: rotate($rot * -1deg);\n        }\n      }\n      $rot: $rot + $angle;\n    }\n  }\n\n  .circle {\n    padding: 0;\n    width: 100%;\n    height: 100%;\n    list-style: none;\n    overflow: hidden;\n    position: relative;\n    margin: 0;\n    box-sizing: border-box;\n\n    li {\n      position: absolute;\n      top: 0;\n      left: 50%;\n      height: 50%;\n      transform-origin: 0 100%;\n      text-align: center;\n\n      &:hover {\n        z-index: 25 !important;\n      }\n\n      > * {\n        margin-left: -100px;\n        width: 200px;\n      }\n    }\n  }\n\n  @for $i from 5 through 20 {\n    .circle.size-#{$i} li {\n      @include on-circle($item-count: $i);\n    }\n  }\n\n  #townsquare {\n    width: 100%;\n    height: 100%;\n    position: relative;\n    border-radius: 50%;\n    box-sizing: border-box;\n    padding: 20px;\n  }\n\n  // player circle\n  .circle {\n    background: url('../assets/demon-head2.png') center center no-repeat;\n    background-size: 10%;\n  }\n\n  #townsquare.public .circle {\n    background-image: url('../assets/demon-head.png');\n  }\n\n  /***** Role token modal ******/\n  ul.tokens {\n    list-style-type: none;\n    margin: 0;\n    padding: 0;\n    display: flex;\n    flex-wrap: wrap;\n    align-content: center;\n    align-items: center;\n    overflow: hidden;\n    justify-content: center;\n    font-size: 75%;\n    line-height: 100%;\n\n    .token {\n      border-radius: 50%;\n      height: 120px;\n      width: 120px;\n      background: url('../assets/token.png') center center;\n      background-size: 100%;\n      text-align: center;\n      position: relative;\n      color: black;\n      margin: 5px;\n      font-weight: 600;\n      text-shadow:\n          -1px -1px 0 #fff,\n          1px -1px 0 #fff,\n          -1px 1px 0 #fff,\n          1px 1px 0 #fff,\n          0 0 5px rgba(0,0,0,0.75);\n      padding-top: 85px;\n      box-sizing: border-box;\n      font-family: 'Papyrus', serif;\n      border: 3px solid black;\n      box-shadow: 0 0 10px rgba(0,0,0,0.5);\n      cursor: pointer;\n      transition: transform 500ms ease;\n\n      &.townsfolk { box-shadow: 0 0 10px #004cff, 0 0 10px #004cff; }\n      &.outsider { box-shadow: 0 0 10px #00D6FF, 0 0 10px #00d6ff; }\n      &.minion { box-shadow: 0 0 10px #ff6900, 0 0 10px #ff6900; }\n      &.demon { box-shadow: 0 0 10px #ff0000, 0 0 10px #ff0000; }\n\n      &:before {\n        content: \" \";\n        background-size: 100%;\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        left: 0;\n        top: 0;\n      }\n\n      &:hover {\n        transform: scale(1.2);\n      }\n    }\n  }\n\n  /***** Reminder token modal ******/\n  ul.reminders {\n    @extend .tokens;\n\n    .reminder {\n      background: url('../assets/reminder.png') center center;\n      background-size: 100%;\n      width: 100px;\n      height: 100px;\n      color: black;\n      font-size: 65%;\n      font-weight: bold;\n      display: block;\n      margin: 5px;\n      text-align: center;\n      position: relative;\n      border-radius: 50%;\n      border: 3px solid black;\n      box-shadow: 0 0 10px rgba(0,0,0,0.5);\n      cursor: pointer;\n      box-sizing: border-box;\n      padding-top: 65px;\n      transition: transform 500ms ease;\n\n      &:before {\n        content: \" \";\n        position: absolute;\n        left: 0;\n        top: 0;\n        width: 100%;\n        height: 100%;\n        background-size: 100%;\n        background-position: center 0;\n        background-repeat: no-repeat;\n      }\n\n      &:hover {\n        transform: scale(1.2);\n      }\n    }\n  }\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TownSquare.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TownSquare.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TownSquare.vue?vue&type=template&id=45e9ba66&\"\nimport script from \"./TownSquare.vue?vue&type=script&lang=js&\"\nexport * from \"./TownSquare.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TownSquare.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div id=\"app\">\n    <TownSquare :is-public=\"isPublic\"></TownSquare>\n    <div class=\"controls\">\n      <button v-on:click=\"togglePublic\">Toggle</button>\n    </div>\n  </div>\n</template>\n\n<script>\n  import TownSquare from './components/TownSquare.vue'\n\n  export default {\n    components: {\n      TownSquare\n    },\n    data: () => ({\n      isPublic: false\n    }),\n    methods: {\n      togglePublic () {\n        this.isPublic = !this.isPublic;\n      }\n    }\n  }\n</script>\n\n<style lang=\"scss\">\n  @font-face { font-family: \"Papyrus\";\n    src: url(\"assets/fonts/papyrus.eot\"); /* IE9*/\n    src: url(\"assets/fonts/papyrus.eot?#iefix\") format(\"embedded-opentype\"), /* IE6-IE8 */\n    url(\"assets/fonts/papyrus.woff2\") format(\"woff2\"), /* chrome firefox */\n    url(\"assets/fonts/papyrus.woff\") format(\"woff\"), /* chrome firefox */\n    url(\"assets/fonts/papyrus.ttf\") format(\"truetype\"), /* chrome firefox opera Safari, Android, iOS 4.2+*/\n    url(\"assets/fonts/papyrus.svg#PapyrusW01\") format(\"svg\"); /* iOS 4.1- */\n  }\n\n  html, body {\n    font-size: 1.2em;\n    line-height: 1.4;\n    background: url('assets/background.jpg') center center;\n    background-size: cover;\n    color: white;\n    height: 100%;\n    font-family: 'Roboto Condensed', sans-serif;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    padding: 0;\n    margin: 0;\n  }\n\n  #app {\n    height: 100%;\n  }\n\n  // Controls\n  .controls {\n    position: absolute;\n    right: 0;\n    top: 0;\n  }\n</style>\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=0cf97133&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App'\n\nVue.config.productionTip = false;\n\nnew Vue({\n  render: h => h(App),\n}).$mount('#app')\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Player.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Player.vue?vue&type=style&index=0&lang=scss&\""],"sourceRoot":""}