{"version":3,"sources":["webpack:///./src/views/groups/components/videos/AddVideoButton.vue?c363","webpack:///./src/views/groups/components/videos/AddVideoButton.vue","webpack:///./src/views/groups/components/videos/AddVideoButton.vue?3a0f","webpack:///./src/views/groups/components/videos/AddVideoButton.vue?65c1","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///../../../src/components/VSwitch/VSwitch.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","VContainer","VDialog","attrs","scopedSlots","_u","key","fn","ref","on","VBtn","_g","addVideoLoading","toggleDialog","VIcon","staticClass","_v","_s","$t","model","value","callback","$$v","showDialog","expression","VCard","VSpacer","VDivider","VForm","$event","preventDefault","VTextField","linkLoading","title","VTextarea","description","VSwitch","isPinned","linkField","fileField","_e","toggleLinkField","toggleFileField","linkErrors","parseLink","link","length","stopPropagation","openConfirmationDialog","VFileInput","handleFileChange","confirmationDialog","confirmAndAddVideo","staticRenderFns","ytUrlPattern","urlPattern","AddVideoButton","file","videoType","type","addVideoFromLink","addVideoFromFile","data","groupId","videoUri","addVideoFromLinkAction","url","test","push","toString","match","code","includes","split","watchUrl","embedUrl","fetch","then","r","json","res","toLowerCase","author_name","console","log","startsWith","name","replace","FormData","append","addVideoFromFileAction","Vue","__decorate","Prop","default","Getter","Action","Component","component","VGrid","extend","functional","props","id","String","tag","h","children","trim","classes","Object","keys","filter","join","domProps","Grid","fluid","Boolean","mergeData","class","Array","concat","baseMixins","mixins","autoGrow","noResize","rowHeight","Number","validator","v","isNaN","parseFloat","rows","parseInt","computed","noResizeHandle","options","call","watch","val","$nextTick","calculateInputHeight","$refs","input","_a","style","removeProperty","lazyValue","mounted","setTimeout","methods","height","scrollHeight","minHeight","Math","max","genInput","onInput","e","onKeyDown","isFocused","keyCode","$emit","Selectable","directives","Touch","inset","loading","flat","VInput","isActive","isDisabled","role","validationState","hasError","shouldValidate","hasSuccess","hasColor","computedColor","switchData","setTextColor","undefined","themeClasses","genDefaultSlot","genSwitch","genLabel","attrs$","switchAttrs","genRipple","left","onSwipeLeft","right","onSwipeRight","genProgress","VFabTransition","$slots","progress","VProgressCircular","color","size","width","indeterminate","onChange","onKeydown","keyCodes"],"mappings":"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","file":"assets/js/chunk-7f0355d1.2e580dbb.js","sourcesContent":["import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VContainer,[_c(VDialog,{attrs:{\"max-width\":\"600px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c(VBtn,_vm._g({attrs:{\"disabled\":_vm.addVideoLoading,\"loading\":_vm.addVideoLoading,\"color\":\"primary\",\"elevation\":\"0\",\"left\":\"\"},on:{\"click\":_vm.toggleDialog}},on),[_c(VIcon,{staticClass:\"mr-2\"},[_vm._v(\"mdi-plus\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"groups.addv\")))])],1)]}}]),model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"headline\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"groups.addnv\")))]),_c(VSpacer),_c(VBtn,{attrs:{\"icon\":\"\"},on:{\"click\":_vm.toggleDialog}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)],1),_c(VDivider),_c(VCardText,[_c(VContainer,[_c(VForm,{on:{\"submit\":function($event){$event.preventDefault();return (function () {})($event)}}},[_c(VTextField,{staticClass:\"mb-4\",attrs:{\"label\":_vm.$t('groups.vidtitlelabel'),\"hint\":_vm.$t('groups.vidtitlehint'),\"disabled\":_vm.linkLoading,\"loading\":_vm.linkLoading,\"persistent-hint\":\"\"},model:{value:(_vm.title),callback:function ($$v) {_vm.title=$$v},expression:\"title\"}}),_c(VTextarea,{staticClass:\"mb-4\",attrs:{\"label\":_vm.$t('groups.viddesc'),\"disabled\":_vm.linkLoading,\"clear-icon\":\"mdi-close\",\"loading\":_vm.linkLoading,\"clearable\":\"\",\"auto-grow\":\"\",\"rows\":\"4\"},model:{value:(_vm.description),callback:function ($$v) {_vm.description=$$v},expression:\"description\"}}),_c(VSwitch,{staticClass:\"mb-4\",attrs:{\"label\":_vm.$t('groups.vidpinlabel'),\"hint\":_vm.$t('groups.vidpinhint'),\"persistent-hint\":\"\"},model:{value:(_vm.isPinned),callback:function ($$v) {_vm.isPinned=$$v},expression:\"isPinned\"}}),_c('div',{staticClass:\"mt-6\"},[(!_vm.linkField && !_vm.fileField)?_c('div',{staticClass:\"d-flex align-center justify-center\"},[_c(VBtn,{staticClass:\"mr-2 flex-grow-1\",attrs:{\"text\":\"\"},on:{\"click\":_vm.toggleLinkField}},[_c(VIcon,{staticClass:\"mr-4\",attrs:{\"left\":\"\"}},[_vm._v(\"mdi-link\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"groups.link\")))])],1),_c(VBtn,{staticClass:\"ml-2 flex-grow-1\",attrs:{\"text\":\"\"},on:{\"click\":_vm.toggleFileField}},[_c(VIcon,{staticClass:\"mr-4\",attrs:{\"left\":\"\"}},[_vm._v(\"mdi-file-video\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"groups.file\")))])],1)],1):_vm._e(),(_vm.linkField && !_vm.fileField)?_c('div',[_c(VTextField,{attrs:{\"label\":_vm.$t('groups.vidlinklabel'),\"append-icon\":\"mdi-chevron-left\",\"error-messages\":_vm.linkErrors,\"disabled\":_vm.linkLoading,\"loading\":_vm.linkLoading},on:{\"click:append\":_vm.toggleLinkField,\"change\":_vm.parseLink},model:{value:(_vm.link),callback:function ($$v) {_vm.link=$$v},expression:\"link\"}}),_c(VBtn,{staticClass:\"mt-2\",attrs:{\"disabled\":_vm.linkLoading || _vm.linkErrors.length > 0,\"color\":\"primary\",\"elevation\":\"0\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.openConfirmationDialog('link')}}},[_c('span',[_vm._v(_vm._s(_vm.$t(\"global.submit\")))])])],1):_vm._e(),(!_vm.linkField && _vm.fileField)?_c('div',[_c(VFileInput,{attrs:{\"accept\":\"video/mp4, video/x-m4v, video/*\",\"show-size\":\"\"},on:{\"change\":_vm.handleFileChange}}),_c('div',{staticClass:\"d-flex\"},[_c(VBtn,{staticClass:\"mt-2 flex-grow-1\",attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.fileField = false}}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-chevron-left\")]),_c('span',{staticClass:\"ml-2\"},[_vm._v(_vm._s(_vm.$t(\"global.back\")))])],1),_c(VBtn,{staticClass:\"mt-2 flex-grow-1\",attrs:{\"color\":\"primary\",\"type\":\"submit\",\"text\":\"\"},on:{\"click\":function($event){return _vm.openConfirmationDialog('file')}}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-cloud-upload\")]),_c('span',{staticClass:\"ml-2\"},[_vm._v(_vm._s(_vm.$t(\"global.upload\")))])],1)],1)],1):_vm._e()])],1)],1)],1)],1)],1),_c(VDialog,{attrs:{\"max-width\":\"600px\"},model:{value:(_vm.confirmationDialog),callback:function ($$v) {_vm.confirmationDialog=$$v},expression:\"confirmationDialog\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t(\"groups.disclaimer.title\")))]),_c(VDivider),_c(VCardText,[_vm._v(_vm._s(_vm.$t(\"groups.disclaimer.message\")))]),_c(VCardActions,[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.confirmationDialog = false}}},[_vm._v(_vm._s(_vm.$t(\"global.cancel\")))]),_c(VBtn,{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.confirmAndAddVideo}},[_vm._v(_vm._s(_vm.$t(\"global.confirm\")))])],1)],1)],1)],1)}\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\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\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\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 from \"vue\";\r\nimport { Action, Getter } from \"vuex-class\";\r\nimport { Component, Prop } from \"vue-property-decorator\";\r\n\r\nconst ytUrlPattern = /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#&?]*).*/;\r\nconst urlPattern = /https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%+._~#?&//=]*)/;\r\n@Component\r\nexport default class AddVideoButton extends Vue {\r\n @Prop({ default: () => 0 }) groupId!: number;\r\n @Getter(\"groups/addVideoLoading\") addVideoLoading!: boolean;\r\n @Action(\"groups/addVideoFromLink\") addVideoFromLinkAction!: Function;\r\n @Action(\"groups/addVideoFromFile\") addVideoFromFileAction!: Function;\r\n\r\n link = \"\";\r\n title = \"\";\r\n description = \"\";\r\n isPinned = false;\r\n showDialog = false;\r\n linkLoading = false;\r\n file: File | null = null;\r\n\r\n linkField = false;\r\n fileField = false;\r\n\r\n // New state for confirmation dialog\r\n confirmationDialog = false;\r\n videoType: \"link\" | \"file\" | null = null;\r\n toggleDialog() {\r\n this.showDialog = !this.showDialog;\r\n this.title = \"\";\r\n this.description = \"\";\r\n this.link = \"\";\r\n this.fileField = false;\r\n this.linkField = false;\r\n }\r\n\r\n // Show confirmation dialog\r\n openConfirmationDialog(type: \"link\" | \"file\") {\r\n this.videoType = type;\r\n this.confirmationDialog = true;\r\n }\r\n\r\n // Confirm and proceed with adding the video\r\n confirmAndAddVideo() {\r\n if (this.videoType === \"link\") this.addVideoFromLink();\r\n else if (this.videoType === \"file\") this.addVideoFromFile();\r\n\r\n this.confirmationDialog = false;\r\n }\r\n\r\n // Add video from link\r\n linkErrors: string[] = [];\r\n toggleLinkField() {\r\n this.linkField = !this.linkField;\r\n }\r\n addVideoFromLink() {\r\n let data = {\r\n groupId: this.groupId,\r\n title: this.title,\r\n description: this.description,\r\n isPinned: this.isPinned,\r\n videoUri: this.link,\r\n };\r\n this.addVideoFromLinkAction(data);\r\n this.toggleDialog();\r\n }\r\n async parseLink(url: string) {\r\n if (url.length == 0 || this.linkLoading) return;\r\n\r\n if (!urlPattern.test(this.link)) {\r\n this.linkErrors.push(this.$t(\"global.invalidURL\").toString());\r\n return;\r\n } else this.linkErrors = [];\r\n\r\n this.linkLoading = true;\r\n const match = url.match(ytUrlPattern);\r\n let code = match && match[7].length == 11 ? match[7] : \"\";\r\n\r\n if (code == \"\" && this.link.includes(\"v=\"))\r\n code = this.link.split(\"v=\")[1].split(\"&\")[0];\r\n\r\n if (code != \"\") {\r\n let watchUrl = \"https://youtube.com/watch?v=\" + code;\r\n let embedUrl = \"https://youtube.com/embed/\" + code;\r\n this.link = embedUrl;\r\n\r\n try {\r\n const url =\r\n \"https://www.youtube.com/oembed?format=json&url=\" + watchUrl;\r\n let res = await fetch(url).then(r => r.json());\r\n\r\n if (this.title.length == 0) this.title = res.title;\r\n else if (!this.description.toLowerCase().includes(\"original title\"))\r\n this.description +=\r\n \"\\n\" +\r\n this.$t(\"groups.original_title\").toString() +\r\n \": \" +\r\n res.title;\r\n\r\n if (!this.description.toLowerCase().includes(\"author\"))\r\n this.description +=\r\n \"\\n\" + this.$t(\"groups.author\").toString() + \": \" + res.author_name;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n this.linkLoading = false;\r\n }\r\n\r\n // Add video from file\r\n toggleFileField() {\r\n this.fileField = !this.fileField;\r\n }\r\n handleFileChange(file: File) {\r\n if (!file.type.startsWith(\"video/\")) return;\r\n\r\n this.file = file;\r\n if (this.title.length == 0)\r\n this.title = file.name.replace(\".\" + file.type.replace(\"video/\", \"\"), \"\");\r\n }\r\n addVideoFromFile() {\r\n if (!this.file) return;\r\n\r\n const data = new FormData();\r\n data.append(\"groupId\", this.groupId.toString());\r\n data.append(\"title\", this.title);\r\n data.append(\"description\", \"\" + this.description);\r\n data.append(\"isPinned\", \"\" + this.isPinned);\r\n data.append(\"videoFile\", this.file);\r\n\r\n this.addVideoFromFileAction(data);\r\n this.toggleDialog();\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddVideoButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddVideoButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddVideoButton.vue?vue&type=template&id=27e70052&\"\nimport script from \"./AddVideoButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddVideoButton.vue?vue&type=script&lang=ts&\"\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","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VSwitch.sass'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\nimport VInput from '../VInput'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport { VFabTransition } from '../transitions'\nimport VProgressCircular from '../VProgressCircular/VProgressCircular'\n\n// Helpers\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-switch',\n\n directives: { Touch },\n\n props: {\n inset: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n flat: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--switch': true,\n 'v-input--switch--flat': this.flat,\n 'v-input--switch--inset': this.inset,\n }\n },\n attrs (): object {\n return {\n 'aria-checked': String(this.isActive),\n 'aria-disabled': String(this.isDisabled),\n role: 'switch',\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n switchData (): VNodeData {\n return this.setTextColor(this.loading ? undefined : this.validationState, {\n class: this.themeClasses,\n })\n },\n },\n\n methods: {\n genDefaultSlot (): (VNode | null)[] {\n return [\n this.genSwitch(),\n this.genLabel(),\n ]\n },\n genSwitch (): VNode {\n const { title, ...switchAttrs } = this.attrs$\n\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.genInput('checkbox', {\n ...this.attrs,\n ...switchAttrs,\n }),\n this.genRipple(this.setTextColor(this.validationState, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight,\n },\n }],\n })),\n this.$createElement('div', {\n staticClass: 'v-input--switch__track',\n ...this.switchData,\n }),\n this.$createElement('div', {\n staticClass: 'v-input--switch__thumb',\n ...this.switchData,\n }, [this.genProgress()]),\n ])\n },\n genProgress (): VNode {\n return this.$createElement(VFabTransition, {}, [\n this.loading === false\n ? null\n : this.$slots.progress || this.$createElement(VProgressCircular, {\n props: {\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n size: 16,\n width: 2,\n indeterminate: true,\n },\n }),\n ])\n },\n onSwipeLeft () {\n if (this.isActive) this.onChange()\n },\n onSwipeRight () {\n if (!this.isActive) this.onChange()\n },\n onKeydown (e: KeyboardEvent) {\n if (\n (e.keyCode === keyCodes.left && this.isActive) ||\n (e.keyCode === keyCodes.right && !this.isActive)\n ) this.onChange()\n },\n },\n})\n"],"sourceRoot":""}