{"version":3,"sources":["webpack:///../../../src/components/VTextField/index.ts","webpack:///../../../src/components/VChip/VChip.ts","webpack:///./src/views/About.vue?8c33","webpack:///src/views/About.vue","webpack:///./src/views/About.vue?f1da","webpack:///../../../src/components/VFileInput/VFileInput.ts","webpack:///./src/views/About.vue"],"names":["name","props","active","type","default","activeClass","this","chipGroup","close","closeIcon","closeLabel","disabled","draggable","filter","filterIcon","label","link","outlined","pill","tag","textColor","value","data","proxyClass","computed","classes","groupClasses","hasClose","Boolean","isClickable","created","breakingProps","original","replacement","methods","click","genFilter","children","$createElement","staticClass","left","genClose","right","size","attrs","$vuetify","lang","t","on","e","genContent","$slots","render","tabindex","setBackgroundColor","color","h","setTextColor","_vm","_h","_c","_self","_v","model","callback","$$v","file","expression","upload_file","staticRenderFns","mixins","loading","filename","mounted","console","log","VTextField","prop","event","chips","clearable","counterSizeString","counterString","hideInput","multiple","placeholder","prependIcon","readonly","showSize","validator","v","includes","smallChips","truncateLength","Number","val","computedCounterValue","fileCount","lazyValue","bytes","internalArrayValue","reduce","base","internalValue","get","set","isDirty","length","isLabelActive","text","isFocused","map","truncatedText","hasChips","watch","handler","immediate","$refs","input","clearableCallback","genChips","small","genControl","display","genInput","genPrependSlot","icon","genIcon","genSlot","genSelectionText","genSelections","$scopedSlots","index","class","selection","genTextFieldSlot","node","onInput","files","onKeyDown","truncateText","str","charsKeepOneSide","Math","component","VBtn","VFileInput"],"mappings":"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","file":"js/About.985b8470.js","sourcesContent":["import VTextField from './VTextField'\n\nexport { VTextField }\nexport default VTextField\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"about\"},[_c('h1',[_vm._v(\"Upload Test\")]),_c('v-file-input',{attrs:{\"accept\":\".pdf\",\"truncate-length\":\"20\"},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}}),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.upload_file}},[_vm._v(\"Upload\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=script&lang=js&\"","// Styles\nimport './VFileInput.sass'\n\n// Extensions\nimport VTextField from '../VTextField'\n\n// Components\nimport { VChip } from '../VChip'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n// Utilities\nimport { deepEqual, humanReadableFileSize, wrapInArray } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { mergeStyles } from '../../util/mergeData'\n\nexport default VTextField.extend({\n name: 'v-file-input',\n\n model: {\n prop: 'value',\n event: 'change',\n },\n\n props: {\n chips: Boolean,\n clearable: {\n type: Boolean,\n default: true,\n },\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n placeholder: String,\n prependIcon: {\n type: String,\n default: '$file',\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n showSize: {\n type: [Boolean, Number],\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n } as PropValidator,\n smallChips: Boolean,\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n type: {\n type: String,\n default: 'file',\n },\n value: {\n default: undefined,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n } as PropValidator,\n },\n\n computed: {\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-file-input': true,\n }\n },\n computedCounterValue (): string {\n const fileCount = (this.multiple && this.lazyValue)\n ? this.lazyValue.length\n : (this.lazyValue instanceof File) ? 1 : 0\n\n if (!this.showSize) return this.$vuetify.lang.t(this.counterString, fileCount)\n\n const bytes = this.internalArrayValue.reduce((bytes: number, { size = 0 }: File) => {\n return bytes + size\n }, 0)\n\n return this.$vuetify.lang.t(\n this.counterSizeString,\n fileCount,\n humanReadableFileSize(bytes, this.base === 1024)\n )\n },\n internalArrayValue (): File[] {\n return wrapInArray(this.internalValue)\n },\n internalValue: {\n get (): File[] {\n return this.lazyValue\n },\n set (val: File | File[]) {\n this.lazyValue = val\n this.$emit('change', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.internalArrayValue.length > 0\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n text (): string[] {\n if (!this.isDirty && (this.isFocused || !this.hasLabel)) return [this.placeholder]\n\n return this.internalArrayValue.map((file: File) => {\n const {\n name = '',\n size = 0,\n } = file\n\n const truncatedText = this.truncateText(name)\n\n return !this.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, this.base === 1024)})`\n })\n },\n base (): 1000 | 1024 | undefined {\n return typeof this.showSize !== 'boolean' ? this.showSize : undefined\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n },\n\n watch: {\n readonly: {\n handler (v) {\n if (v === true) consoleError('readonly is not supported on ', this)\n },\n immediate: true,\n },\n value (v) {\n const value = this.multiple ? v : v ? [v] : []\n if (!deepEqual(value, this.$refs.input.files)) {\n // When the input value is changed programatically, clear the\n // internal input's value so that the `onInput` handler\n // can be triggered again if the user re-selects the exact\n // same file(s). Ideally, `input.files` should be\n // manipulated directly but that property is readonly.\n this.$refs.input.value = ''\n }\n },\n },\n\n methods: {\n clearableCallback () {\n this.internalValue = this.multiple ? [] : null\n this.$refs.input.value = ''\n },\n genChips () {\n if (!this.isDirty) return []\n\n return this.text.map((text, index) => this.$createElement(VChip, {\n props: { small: this.smallChips },\n on: {\n 'click:close': () => {\n const internalValue = this.internalValue\n internalValue.splice(index, 1)\n this.internalValue = internalValue // Trigger the watcher\n },\n },\n }, [text]))\n },\n genControl () {\n const render = VTextField.options.methods.genControl.call(this)\n\n if (this.hideInput) {\n render.data!.style = mergeStyles(\n render.data!.style,\n { display: 'none' }\n )\n }\n\n return render\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data!.attrs!.multiple = this.multiple\n\n // We should not be setting value\n // programmatically on the input\n // when it is using type=\"file\"\n delete input.data!.domProps!.value\n\n // This solves an issue in Safari where\n // nothing happens when adding a file\n // do to the input event not firing\n // https://github.com/vuetifyjs/vuetify/issues/7941\n delete input.data!.on!.input\n input.data!.on!.change = this.onInput\n\n return [this.genSelections(), input]\n },\n genPrependSlot () {\n if (!this.prependIcon) return null\n\n const icon = this.genIcon('prepend', () => {\n this.$refs.input.click()\n })\n\n return this.genSlot('prepend', 'outer', [icon])\n },\n genSelectionText (): string[] {\n const length = this.text.length\n\n if (length < 2) return this.text\n if (this.showSize && !this.counter) return [this.computedCounterValue]\n return [this.$vuetify.lang.t(this.counterString, length)]\n },\n genSelections () {\n const children = []\n\n if (this.isDirty && this.$scopedSlots.selection) {\n this.internalArrayValue.forEach((file: File, index: number) => {\n if (!this.$scopedSlots.selection) return\n\n children.push(\n this.$scopedSlots.selection({\n text: this.text[index],\n file,\n index,\n })\n )\n })\n } else {\n children.push(this.hasChips && this.isDirty ? this.genChips() : this.genSelectionText())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-file-input__text',\n class: {\n 'v-file-input__text--placeholder': this.placeholder && !this.isDirty,\n 'v-file-input__text--chips': this.hasChips && !this.$scopedSlots.selection,\n },\n }, children)\n },\n genTextFieldSlot () {\n const node = VTextField.options.methods.genTextFieldSlot.call(this)\n\n node.data!.on = {\n ...(node.data!.on || {}),\n click: () => this.$refs.input.click(),\n }\n\n return node\n },\n onInput (e: Event) {\n const files = [...(e.target as HTMLInputElement).files || []]\n\n this.internalValue = this.multiple ? files : files[0]\n\n // Set initialValue here otherwise isFocused\n // watcher in VTextField will emit a change\n // event whenever the component is blurred\n this.initialValue = this.internalValue\n },\n onKeyDown (e: KeyboardEvent) {\n this.$emit('keydown', e)\n },\n truncateText (str: string) {\n if (str.length < Number(this.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(this.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n },\n },\n})\n","import { render, staticRenderFns } from \"./About.vue?vue&type=template&id=adb51872&\"\nimport script from \"./About.vue?vue&type=script&lang=js&\"\nexport * from \"./About.vue?vue&type=script&lang=js&\"\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 { VFileInput } from 'vuetify/lib/components/VFileInput';\ninstallComponents(component, {VBtn,VFileInput})\n"],"sourceRoot":""}