{"version":3,"sources":["webpack:///./src/views/admin/components/CreateVideo.vue?c0e4","webpack:///./src/views/admin/components/CreateVideo.vue","webpack:///./src/views/admin/components/CreateVideo.vue?7276","webpack:///./src/views/admin/components/CreateVideo.vue?ff25","webpack:///../../../src/mixins/rippleable/index.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///../../../src/components/VSwitch/VSwitch.ts","webpack:///../../../src/mixins/selectable/index.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","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","VContainer","VForm","$event","preventDefault","VTextField","linkLoading","title","VTextarea","description","VSwitch","isPinned","linkField","fileField","_e","toggleLinkField","toggleFileField","linkErrors","parseLink","link","length","stopPropagation","addVideoFromLink","VFileInput","handleFileChange","addVideoFromFile","staticRenderFns","ytUrlPattern","urlPattern","AddVideoButton","file","data","videoUri","addVideoFromLinkAction","url","test","push","toString","match","code","includes","split","watchUrl","embedUrl","fetch","then","r","json","res","toLowerCase","author_name","console","log","type","startsWith","name","replace","FormData","append","addVideoFromFileAction","Vue","__decorate","Getter","Action","Component","component","extend","directives","ripple","props","Boolean","Object","default","methods","genRipple","center","VGrid","functional","id","String","tag","h","children","trim","classes","keys","filter","join","domProps","Grid","fluid","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","height","scrollHeight","minHeight","Math","max","genInput","onInput","e","onKeyDown","isFocused","keyCode","$emit","Selectable","Touch","inset","loading","flat","VInput","isActive","isDisabled","role","validationState","hasError","shouldValidate","hasSuccess","hasColor","computedColor","switchData","setTextColor","undefined","themeClasses","genDefaultSlot","genSwitch","genLabel","attrs$","switchAttrs","left","onSwipeLeft","right","onSwipeRight","genProgress","VFabTransition","$slots","progress","VProgressCircular","color","size","width","indeterminate","onChange","onKeydown","keyCodes","prevent","Rippleable","Comparable","prop","event","inputValue","falseValue","trueValue","multiple","label","isDark","appIsDark","isMultiple","isArray","internalValue","some","item","valueComparator","isDirty","rippleState","click","assign","disabled","computedId","checked","blur","onBlur","change","focus","onFocus","keydown","onClick","isInteractive","validate"],"mappings":"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","file":"assets/js/chunk-4007ecae.c5f3d01b.js","sourcesContent":["import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } 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(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.addVideoFromLink($event)}}},[_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\":_vm.addVideoFromFile}},[_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)}\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\r\nimport Vue from \"vue\";\r\nimport { Action, Getter } from \"vuex-class\";\r\nimport { Component } 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 @Getter(\"howTos/addVideoLoading\") addVideoLoading!: boolean;\r\n @Action(\"howTos/addVideoFromLink\") addVideoFromLinkAction!: Function;\r\n @Action(\"howTos/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 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 // 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 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(\"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!./CreateVideo.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!./CreateVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CreateVideo.vue?vue&type=template&id=43129810&\"\nimport script from \"./CreateVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateVideo.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","// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","// 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","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n"],"sourceRoot":""}