{"version":3,"sources":["webpack:///./src/renderer/modules/tournament/views/TournamentForm/TournamentForm.vue?d7ea","webpack:///./src/renderer/modules/tournament/views/TournamentForm/TournamentForm.vue?837c","webpack:///./src/renderer/modules/tournament/views/TournamentForm/TournamentForm.vue","webpack:///./src/renderer/modules/tournament/views/TournamentForm/TournamentForm.vue?a41f","webpack:///./src/renderer/modules/tournament/views/TournamentForm/TournamentForm.vue?63fc","webpack:///./src/renderer/modules/tournament/views/TournamentForm/index.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","isLoading","attrs","ref","on","$event","preventDefault","submit","model","value","callback","$$v","isValid","expression","theSchema","_v","_s","$t","_e","staticRenderFns","minLen","l","v","length","schema","shouldHide","getTournamentCustomFormSchema","tournamentId","response","data","payload","fetchTournamentCustomFormSchema","window","fillForm","isHide","shouldHideForm","res","form","validate","$reactNativeWebView","postMessage","JSON","stringify","parse","alert","schemaString","Object","values","property","Array","isArray","rule","includes","param","split","console","log","urlParams","URLSearchParams","location","search","get","required","type","String","components","VFormBase","component","VBtn","VContainer","VForm","VProgressCircular","VSpacer"],"mappings":"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","file":"js/tournament-form.96093ed8.js","sourcesContent":["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!./TournamentForm.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!./TournamentForm.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.tournamentId)?_c('v-container',{staticClass:\"tournament-form d-flex flex-column\"},[_c('v-container',[(!_vm.isLoading)?_c('v-form',{ref:\"form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-form-base',{attrs:{\"model\":_vm.model,\"schema\":_vm.theSchema}})],1):_c('div',{staticClass:\"text-center\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":\"150\"}})],1)],1),_c('v-spacer'),_c('v-container',[_c('v-btn',{staticClass:\"submit-button mb-5\",attrs:{\"block\":\"\",\"color\":\"#1E8B49\",\"x-large\":\"\",\"disabled\":!_vm.isValid},on:{\"click\":_vm.submit}},[_vm._v(_vm._s(_vm.$t('InGameNameRegistration.Next')))])],1)],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\r\nimport { TournamentAPI } from '@/api/tournament'\r\nimport { parseSchema } from '@/utils/customform_validation'\r\nimport { Vue, Component, Prop, Ref } from 'vue-property-decorator'\r\nimport VFormBase from 'vuetify-form-base'\r\n\r\ninterface VForm extends HTMLFormElement {\r\n validate(): boolean\r\n}\r\nconst minLen = (l: string) => (v: any) =>\r\n (v && v.length >= l) || `min. ${l} Characters`\r\nconst maxLen = (l: string) => (v: any) =>\r\n (v && v.length <= l) || `max. ${l} Characters`\r\nconst required = (msg: string) => (v: any) => !!v || msg\r\nconst requiredArray = (msg: string) => (v: any) =>\r\n (Array.isArray(v) && v.length > 1) || msg\r\n\r\n@Component({\r\n components: {\r\n VFormBase\r\n }\r\n})\r\nexport default class TournamentForm extends Vue {\r\n @Prop({ required: true, type: String }) readonly tournamentId!: string\r\n @Ref() readonly form!: VForm\r\n\r\n model: any = {}\r\n schema: any = {}\r\n isLoading: boolean = false\r\n isValid: boolean = false\r\n\r\n $reactNativeWebView: any\r\n\r\n async fetchTournamentCustomFormSchema() {\r\n this.isLoading = true\r\n try {\r\n let response = await TournamentAPI.getTournamentCustomFormSchema(\r\n this.tournamentId\r\n )\r\n if (response.data.payload) {\r\n try {\r\n this.schema = parseSchema(response.data.payload.schema)\r\n } catch {\r\n this.schema = {}\r\n }\r\n }\r\n } catch {\r\n this.schema = {}\r\n } finally {\r\n this.isLoading = false\r\n }\r\n }\r\n\r\n async created() {\r\n await this.fetchTournamentCustomFormSchema()\r\n // Register fillForm function for react native\r\n ;(window as any).fillForm = this.fillForm\r\n }\r\n\r\n // FIXME: temp code\r\n\r\n shouldHide: boolean = false\r\n\r\n get isHide() {\r\n const urlParams = new URLSearchParams(window.location.search)\r\n return urlParams.get('hide') === '1'\r\n }\r\n\r\n async mounted() {\r\n if (!this.isHide) {\r\n return\r\n }\r\n\r\n try {\r\n const res = await TournamentAPI.shouldHideForm()\r\n this.shouldHide = res.data.payload!\r\n } catch (err) {\r\n // we don't care\r\n }\r\n }\r\n\r\n get theSchema() {\r\n if (this.shouldHide) {\r\n const schema = { ...this.schema }\r\n delete schema['studentidf']\r\n delete schema['studentidb']\r\n\r\n return schema\r\n }\r\n\r\n return this.schema\r\n }\r\n\r\n // end of temp code\r\n\r\n submit() {\r\n if (!this.form.validate()) return\r\n\r\n this.$reactNativeWebView.postMessage(JSON.stringify(this.model))\r\n }\r\n\r\n fillForm(value: string) {\r\n try {\r\n this.model = JSON.parse(value)\r\n return true\r\n } catch {\r\n alert('Failed to parse tournament form value')\r\n this.model = {}\r\n return false\r\n }\r\n }\r\n\r\n // \"{validationMethod}<::>{arg1}<::>{args2}\"\r\n schemaParser(schemaString: string) {\r\n var schema: Object = JSON.parse(schemaString)\r\n for (var property of Object.values(schema)) {\r\n if (property['rules'] && Array.isArray(property['rules'])) {\r\n for (var rule of property['rules']) {\r\n if (typeof rule !== 'string' || !rule.includes('<::>')) {\r\n continue\r\n }\r\n // Attempt to parse for validation function\r\n var param = rule.split('<::>')\r\n\r\n // Validate min length: \"minLen<::>5\"\r\n if (param[0] === 'minLen') {\r\n rule = minLen(param[1])\r\n }\r\n }\r\n }\r\n }\r\n\r\n console.log('schemaParser output', schema)\r\n return schema\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!./TournamentForm.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!./TournamentForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TournamentForm.vue?vue&type=template&id=26542b17&\"\nimport script from \"./TournamentForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./TournamentForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TournamentForm.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 { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VContainer,VForm,VProgressCircular,VSpacer})\n","import TournamentForm from './TournamentForm.vue'\r\nexport default TournamentForm\r\nexport { TournamentForm }\r\n"],"sourceRoot":""}