chunk-6709cd20.4910527d.js.map 17 KB
{"version":3,"sources":["webpack:///../../../src/components/VForm/VForm.ts","webpack:///./src/views/Feedback.vue?ed12","webpack:///./src/components/Feedback.vue?180e","webpack:///src/components/Feedback.vue","webpack:///./src/components/Feedback.vue?6d57","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///./src/components/Feedback.vue","webpack:///src/views/Feedback.vue","webpack:///./src/views/Feedback.vue?955a","webpack:///./src/views/Feedback.vue","webpack:///../../../src/components/VDivider/VDivider.ts"],"names":["name","inheritAttrs","props","lazyValidation","value","Boolean","data","inputs","watchers","errorBag","watch","handler","errors","Object","this","deep","immediate","methods","watchInput","watcher","input","val","_uid","valid","shouldValidate","validate","filter","reset","resetErrorBag","setTimeout","resetValidation","register","unregister","found","find","i","unwatch","render","h","staticClass","attrs","novalidate","attrs$","on","submit","e","$slots","_vm","_h","$createElement","_c","_self","staticRenderFns","_v","baseMixins","mixins","autoGrow","noResize","rowHeight","type","Number","default","validator","v","isNaN","parseFloat","rows","parseInt","computed","classes","VTextField","noResizeHandle","lazyValue","$nextTick","mounted","calculateInputHeight","$refs","height","minHeight","Math","genInput","onInput","onKeyDown","isFocused","component","VBtn","VCard","VDivider","VForm","VSpacer","VTextarea","VToolbar","VToolbarTitle","VApp","inset","vertical","$attrs","role","orientation","class","themeClasses","$listeners"],"mappings":"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","file":"js/chunk-6709cd20.4910527d.js","sourcesContent":["// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record<number, boolean>\ntype VInputInstance = InstanceType<typeof VInput>\ntype Watchers = {\n  _uid: number\n  valid: () => void\n  shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n  BindsAttrs,\n  RegistrableProvide('form')\n  /* @vue/component */\n).extend({\n  name: 'v-form',\n\n  inheritAttrs: false,\n\n  props: {\n    lazyValidation: Boolean,\n    value: Boolean,\n  },\n\n  data: () => ({\n    inputs: [] as VInputInstance[],\n    watchers: [] as Watchers[],\n    errorBag: {} as ErrorBag,\n  }),\n\n  watch: {\n    errorBag: {\n      handler (val) {\n        const errors = Object.values(val).includes(true)\n\n        this.$emit('input', !errors)\n      },\n      deep: true,\n      immediate: true,\n    },\n  },\n\n  methods: {\n    watchInput (input: any): Watchers {\n      const watcher = (input: any): (() => void) => {\n        return input.$watch('hasError', (val: boolean) => {\n          this.$set(this.errorBag, input._uid, val)\n        }, { immediate: true })\n      }\n\n      const watchers: Watchers = {\n        _uid: input._uid,\n        valid: () => {},\n        shouldValidate: () => {},\n      }\n\n      if (this.lazyValidation) {\n        // Only start watching inputs if we need to\n        watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n          if (!val) return\n\n          // Only watch if we're not already doing it\n          if (this.errorBag.hasOwnProperty(input._uid)) return\n\n          watchers.valid = watcher(input)\n        })\n      } else {\n        watchers.valid = watcher(input)\n      }\n\n      return watchers\n    },\n    /** @public */\n    validate (): boolean {\n      return this.inputs.filter(input => !input.validate(true)).length === 0\n    },\n    /** @public */\n    reset (): void {\n      this.inputs.forEach(input => input.reset())\n      this.resetErrorBag()\n    },\n    resetErrorBag () {\n      if (this.lazyValidation) {\n        // Account for timeout in validatable\n        setTimeout(() => {\n          this.errorBag = {}\n        }, 0)\n      }\n    },\n    /** @public */\n    resetValidation () {\n      this.inputs.forEach(input => input.resetValidation())\n      this.resetErrorBag()\n    },\n    register (input: VInputInstance) {\n      this.inputs.push(input)\n      this.watchers.push(this.watchInput(input))\n    },\n    unregister (input: VInputInstance) {\n      const found = this.inputs.find(i => i._uid === input._uid)\n\n      if (!found) return\n\n      const unwatch = this.watchers.find(i => i._uid === found._uid)\n      if (unwatch) {\n        unwatch.valid()\n        unwatch.shouldValidate()\n      }\n\n      this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n      this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n      this.$delete(this.errorBag, found._uid)\n    },\n  },\n\n  render (h): VNode {\n    return h('form', {\n      staticClass: 'v-form',\n      attrs: {\n        novalidate: true,\n        ...this.attrs$,\n      },\n      on: {\n        submit: (e: Event) => this.$emit('submit', e),\n      },\n    }, this.$slots.default)\n  },\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',[_c('feedback')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-toolbar',{attrs:{\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"피드백 \")]),_c('v-spacer')],1),_c('v-divider'),_c('v-form',[_c('v-textarea',{attrs:{\"name\":\"input-7-1\",\"filled\":\"\",\"label\":\"아쉬웠던 점을 말씀해주세요. 칭찬도 당연히 환영입니다!\",\"auto-grow\":\"\"}}),_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\"}},[_vm._v(\"SUBMIT\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template lang=\"html\">\r\n  <v-card>\r\n    <v-toolbar flat>\r\n      <v-toolbar-title>피드백\r\n      </v-toolbar-title>\r\n      <v-spacer></v-spacer>\r\n    </v-toolbar>\r\n    <v-divider></v-divider>\r\n    <v-form>\r\n      <v-textarea\r\n        name=\"input-7-1\"\r\n        filled\r\n        label=\"아쉬웠던 점을 말씀해주세요. 칭찬도 당연히 환영입니다!\"\r\n        auto-grow\r\n      ></v-textarea>\r\n      <v-btn large color=\"primary\">SUBMIT</v-btn>\r\n    </v-form>\r\n\r\n\r\n  </v-card>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  data(){\r\n    return{\r\n\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style lang=\"css\" scoped>\r\n</style>\r\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/vuetify-loader/lib/loader.js??ref--17-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Feedback.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/vuetify-loader/lib/loader.js??ref--17-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Feedback.vue?vue&type=script&lang=js&\"","// 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<options &\n  InstanceType<typeof VTextField>\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    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","import { render, staticRenderFns } from \"./Feedback.vue?vue&type=template&id=51aa79f6&scoped=true&lang=html&\"\nimport script from \"./Feedback.vue?vue&type=script&lang=js&\"\nexport * from \"./Feedback.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  \"51aa79f6\",\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 { VCard } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VCard,VDivider,VForm,VSpacer,VTextarea,VToolbar,VToolbarTitle})\n","<template lang=\"html\">\r\n  <v-app>\r\n    <feedback></feedback>\r\n  </v-app>\r\n</template>\r\n\r\n<script>\r\n  import feedback from '@/components/Feedback.vue'\r\n  export default {\r\n    components:{\r\n      feedback\r\n    }\r\n  }\r\n</script>\r\n\r\n<style lang=\"css\" scoped>\r\n</style>\r\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/vuetify-loader/lib/loader.js??ref--17-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Feedback.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/vuetify-loader/lib/loader.js??ref--17-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Feedback.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Feedback.vue?vue&type=template&id=7c98d7b2&scoped=true&lang=html&\"\nimport script from \"./Feedback.vue?vue&type=script&lang=js&\"\nexport * from \"./Feedback.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  \"7c98d7b2\",\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 { VApp } from 'vuetify/lib/components/VApp';\ninstallComponents(component, {VApp})\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n  name: 'v-divider',\n\n  props: {\n    inset: Boolean,\n    vertical: Boolean,\n  },\n\n  render (h): VNode {\n    // WAI-ARIA attributes\n    let orientation\n    if (!this.$attrs.role || this.$attrs.role === 'separator') {\n      orientation = this.vertical ? 'vertical' : 'horizontal'\n    }\n    return h('hr', {\n      class: {\n        'v-divider': true,\n        'v-divider--inset': this.inset,\n        'v-divider--vertical': this.vertical,\n        ...this.themeClasses,\n      },\n      attrs: {\n        role: 'separator',\n        'aria-orientation': orientation,\n        ...this.$attrs,\n      },\n      on: this.$listeners,\n    })\n  },\n})\n"],"sourceRoot":""}