{"version":3,"sources":["webpack:///./src/renderer/utils/index.ts","webpack:///./src/renderer/modules/tournament/views/TournamentBracket/TournamentBracket.vue?c351","webpack:///./src/renderer/modules/tournament/views/TournamentBracket/TournamentBracket.vue?8f1f","webpack:///./src/renderer/modules/tournament/views/TournamentBracket/TournamentBracket.vue","webpack:///./src/renderer/modules/tournament/views/TournamentBracket/TournamentBracket.vue?5ced","webpack:///./src/renderer/modules/tournament/views/TournamentBracket/TournamentBracket.vue?66b6","webpack:///./src/renderer/modules/tournament/views/TournamentBracket/index.ts","webpack:///./src/renderer/assets/country/hk.svg","webpack:///./src/renderer/assets/country/tw.svg"],"names":["unixTimestampToDateTime","unixTimestamp","utc","local","toDate","upperCase","string","toUpperCase","capitalSpacing","replace","date","number","isNaN","dateTime","Date","getFullYear","toString","padStart","getMonth","getDate","join","getHours","getMinutes","render","_vm","this","_h","$createElement","_c","_self","staticClass","stages","length","attrs","stageItems","model","value","callback","$$v","selectedStageId","expression","_e","hasStages","hasBracket","stage","isBracketVisible","staticStyle","_v","_s","$t","_l","bracket","i","key","getBracket","setting","stageFormat","staticRenderFns","loading","fetchStage","then","fetchStages","stageId","getTournamentStages","tournamentId","res","data","payload","$toast","error","getMessage","console","getStage","index","brackets","retval","push","map","text","name","type","String","components","StageBracket","component","VIcon","VProgressCircular","VSelect","module","exports"],"mappings":"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","file":"js/tournament-bracket.57052d27.js","sourcesContent":["import { Console } from 'console'\r\nimport { padStart } from 'lodash'\r\nimport moment from 'moment'\r\n\r\nexport function countryFlag(countryCode: string) {\r\n if (!countryCode || !countryCode.length) {\r\n return null\r\n }\r\n\r\n switch (countryCode.toLowerCase()) {\r\n case 'tw':\r\n return require('@/assets/country/tw.svg')\r\n case 'hk':\r\n return require('@/assets/country/hk.svg')\r\n\r\n default:\r\n return null\r\n }\r\n}\r\n\r\nexport function sleep(duration: number) {\r\n return new Promise(resolve => setTimeout(resolve, duration))\r\n}\r\n\r\nexport function unixTimestampToDateTime(unixTimestamp: number): Date {\r\n return moment\r\n .utc(unixTimestamp * 1000)\r\n .local()\r\n .toDate()\r\n}\r\n\r\nexport function upperCase(string: string): string {\r\n return string.toUpperCase()\r\n}\r\n\r\nexport function lowerCase(string: string): string {\r\n return string.toLowerCase()\r\n}\r\n\r\nexport function capitalSpacing(string: string): string {\r\n return string.replace(/([a-z])([A-Z])/g, '$1 $2')\r\n}\r\n\r\nexport function capitalizeFirstLetter(string: string) {\r\n return string.charAt(0).toUpperCase() + string.slice(1)\r\n}\r\n\r\nexport function numberWithCommas(number: number) {\r\n if (!number) return 0\r\n return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\r\n}\r\n\r\nexport function date(number: number) {\r\n if (isNaN(number)) return ''\r\n const dateTime = new Date(number * 1000)\r\n return [\r\n dateTime\r\n .getFullYear()\r\n .toString()\r\n .padStart(4, '0'),\r\n (dateTime.getMonth() + 1).toString().padStart(2, '0'),\r\n dateTime\r\n .getDate()\r\n .toString()\r\n .padStart(2, '0')\r\n ].join('/')\r\n}\r\n\r\nexport function dateTime(number: number) {\r\n if (isNaN(number)) return ''\r\n const dateTime = new Date(number * 1000)\r\n return (\r\n [\r\n dateTime\r\n .getFullYear()\r\n .toString()\r\n .padStart(4, '0'),\r\n (dateTime.getMonth() + 1).toString().padStart(2, '0'),\r\n dateTime\r\n .getDate()\r\n .toString()\r\n .padStart(2, '0')\r\n ].join('/') +\r\n ' ' +\r\n [\r\n dateTime\r\n .getHours()\r\n .toString()\r\n .padStart(2, '0'),\r\n dateTime\r\n .getMinutes()\r\n .toString()\r\n .padStart(2, '0')\r\n ].join(':')\r\n )\r\n}\r\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!../../../../../../node_modules/webpack-preprocessor-loader/index.js??ref--16-0!./TournamentBracket.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!../../../../../../node_modules/webpack-preprocessor-loader/index.js??ref--16-0!./TournamentBracket.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 (_vm.stage)?_c('div',{staticClass:\"tournament-bracket-container\"},[(_vm.stages.length > 0)?_c('v-select',{attrs:{\"items\":_vm.stageItems,\"solo\":\"\"},model:{value:(_vm.selectedStageId),callback:function ($$v) {_vm.selectedStageId=$$v},expression:\"selectedStageId\"}}):_vm._e(),(_vm.loading)?_c('div',{staticClass:\"loading\"},[_c('v-progress-circular',{attrs:{\"size\":\"80\",\"indeterminate\":\"\"}})],1):(\n !_vm.hasStages || !_vm.hasBracket || (_vm.stage && !_vm.stage.isBracketVisible)\n )?_c('div',{staticClass:\"text-center bracket-not-ready\"},[_c('v-icon',{staticStyle:{\"font-size\":\"10rem\"}},[_vm._v(\"mdi-progress-wrench\")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('TournamentDetailsBracket.TheBracketIsNotReady'))+\" \")])],1):_c('div',_vm._l((_vm.stage.brackets),function(bracket,i){return _c('div',{key:(\"group-\" + i)},[_c('h3',{staticClass:\"my-5 mb-0\"},[_vm._v(\"Group \"+_vm._s(i + 1))]),_c('StageBracket',{attrs:{\"brackets\":_vm.getBracket(i),\"format\":_vm.stage.setting.stageFormat,\"tab\":i}}),_c('hr',{staticClass:\"my-3\"})],1)}),0)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator'\r\nimport StageBracket from '@/modules/tournament/components/StageBracket/StageBracket.vue'\r\nimport { StageAPI, StageEntity, StageListItemEntity } from '@/api/stage'\r\nimport ServerError from '@/utils/server_error'\r\n@Component({\r\n components: { StageBracket }\r\n})\r\nexport default class TournamentBracket extends Vue {\r\n @Prop({ type: String }) tournamentId!: string\r\n\r\n stages: StageListItemEntity[] = []\r\n stage: StageEntity | null = null\r\n selectedStageId: string | null = null\r\n loading: boolean = true\r\n\r\n @Watch('selectedStageId')\r\n onSelectedStageIdChanged() {\r\n this.fetchStage(this.selectedStageId!).then()\r\n }\r\n\r\n async created() {\r\n await this.fetchStages()\r\n\r\n if (this.stages.length > 0) {\r\n this.selectedStageId = this.stages[0].stageId\r\n }\r\n }\r\n\r\n async fetchStages() {\r\n try {\r\n const res = await StageAPI.getTournamentStages(this.tournamentId)\r\n this.stages = res.data.payload!\r\n } catch (err) {\r\n if (err instanceof ServerError) {\r\n this.$toast.error(err.getMessage())\r\n } else {\r\n this.$toast.error('System error')\r\n }\r\n console.error(err)\r\n }\r\n }\r\n\r\n async fetchStage(stageId: string) {\r\n this.loading = true\r\n try {\r\n const res = await StageAPI.getStage(stageId)\r\n this.stage = res.data.payload!\r\n } catch (err) {\r\n if (err instanceof ServerError) {\r\n this.$toast.error(err.getMessage())\r\n } else {\r\n this.$toast.error('System error')\r\n }\r\n console.error(err)\r\n } finally {\r\n this.loading = false\r\n }\r\n }\r\n\r\n get stageItems() {\r\n return this.stages.map(stage => ({\r\n text: stage.name,\r\n value: stage.stageId\r\n }))\r\n }\r\n\r\n get hasStages() {\r\n return this.stages.length > 0\r\n }\r\n\r\n get hasBracket() {\r\n if (!this.stage || !this.stage!.brackets) return false\r\n\r\n return this.stage!.brackets.length > 0\r\n }\r\n\r\n // dunno why we need this but it actually works\r\n getBracket(index: number) {\r\n if (!this.stage || !this.stage.brackets) {\r\n return\r\n }\r\n\r\n const retval: any[] = []\r\n\r\n for (let i = 0; i < index; i++) {\r\n retval.push([])\r\n }\r\n\r\n retval.push(this.stage.brackets[index])\r\n\r\n return retval\r\n }\r\n}\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!../../../../../../node_modules/webpack-preprocessor-loader/index.js??ref--16-0!./TournamentBracket.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!../../../../../../node_modules/webpack-preprocessor-loader/index.js??ref--16-0!./TournamentBracket.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TournamentBracket.vue?vue&type=template&id=48e39d3a&\"\nimport script from \"./TournamentBracket.vue?vue&type=script&lang=ts&\"\nexport * from \"./TournamentBracket.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TournamentBracket.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\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VIcon,VProgressCircular,VSelect})\n","import TournamentBracket from '@/modules/tournament/views/TournamentBracket/TournamentBracket.vue'\r\nexport { TournamentBracket }\r\nexport default TournamentBracket\r\n","module.exports = __webpack_public_path__ + \"img/hk.901fbb55.svg\";","module.exports = __webpack_public_path__ + \"img/tw.790bc738.svg\";"],"sourceRoot":""}