{"version":3,"sources":["webpack:///../../../src/components/VAlert/VAlert.ts","webpack:///../../../src/components/VAppBar/VAppBar.ts","webpack:///./node_modules/vuetify-loader/lib/runtime/installComponents.js","webpack:///../../../src/components/VApp/VApp.ts"],"names":["extend","name","props","border","type","String","validator","val","includes","closeLabel","default","coloredBorder","Boolean","dense","dismissible","closeIcon","icon","outlined","prominent","text","value","computed","__cachedBorder","this","data","staticClass","class","setBackgroundColor","computedColor","$createElement","__cachedDismissible","color","iconColor","small","attrs","$vuetify","lang","t","on","click","isActive","__cachedIcon","computedIcon","classes","options","call","hasColoredIcon","hasText","undefined","isDark","created","$attrs","hasOwnProperty","methods","genWrapper","children","$slots","prepend","genContent","append","$scopedSlots","close","toggle","genAlert","role","listeners$","style","styles","directives","setColor","setTextColor","render","h","transition","origin","mode","baseMixins","Scroll","provide","VAppBar","clippedLeft","clippedRight","collapseOnScroll","elevateOnScroll","fadeImgOnScroll","hideOnScroll","invertedScroll","scrollOffScreen","shrinkOnScroll","applicationProperty","bottom","canScroll","isBooted","collapse","absolute","app","fixed","hideShadow","currentScroll","scrollRatio","threshold","computedScrollThreshold","Math","max","computedContentHeight","min","computedOriginalHeight","computedFontSize","isProminent","computedLeft","application","left","computedMarginTop","bar","computedOpacity","height","isExtended","parseInt","extensionHeight","computedRight","right","scrollThreshold","Number","computedTransform","computedHeight","isCollapsed","fontSize","marginTop","transform","watch","callUpdate","genBackground","_b","tag","opacity","updateApplication","thresholdMet","isScrollingUp","currentThreshold","savedScroll","push","arg","scrollTarget","onScroll","module","exports","component","components","extendOptions","i","dark","id","light","theme","beforeCreate","$root","Error","wrapper","rtl","themeClasses","domProps"],"mappings":"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","file":"js/chunk-vendors~4a7e9e0b.67e0243a.js","sourcesContent":["// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Toggleable,\n Transitionable\n).extend({\n name: 'v-alert',\n\n props: {\n border: {\n type: String,\n validator (val: string) {\n return [\n 'top',\n 'right',\n 'bottom',\n 'left',\n ].includes(val)\n },\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel',\n },\n icon: {\n default: '',\n type: [Boolean, String],\n validator (val: boolean | string) {\n return typeof val === 'string' || val === false\n },\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n validator (val: string) {\n return [\n 'info',\n 'error',\n 'success',\n 'warning',\n ].includes(val)\n },\n },\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n __cachedBorder (): VNode | null {\n if (!this.border) return null\n\n let data: VNodeData = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true,\n },\n }\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data)\n data.class['v-alert__border--has-color'] = true\n }\n\n return this.$createElement('div', data)\n },\n __cachedDismissible (): VNode | null {\n if (!this.dismissible) return null\n\n const color = this.iconColor\n\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: () => (this.isActive = false),\n },\n }, [\n this.$createElement(VIcon, {\n props: { color },\n }, this.closeIcon),\n ])\n },\n __cachedIcon (): VNode | null {\n if (!this.computedIcon) return null\n\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: { color: this.iconColor },\n }, this.computedIcon)\n },\n classes (): object {\n const classes: Record = {\n ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text,\n }\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true\n }\n\n return classes\n },\n computedColor (): string {\n return this.color || this.type\n },\n computedIcon (): string | boolean {\n if (this.icon === false) return false\n if (typeof this.icon === 'string' && this.icon) return this.icon\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n return `$${this.type}`\n },\n hasColoredIcon (): boolean {\n return (\n this.hasText ||\n (Boolean(this.border) && this.coloredBorder)\n )\n },\n hasText (): boolean {\n return this.text || this.outlined\n },\n iconColor (): string | undefined {\n return this.hasColoredIcon ? this.computedColor : undefined\n },\n isDark (): boolean {\n if (\n this.type &&\n !this.coloredBorder &&\n !this.outlined\n ) return true\n\n return Themeable.options.computed.isDark.call(this)\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this)\n }\n },\n\n methods: {\n genWrapper (): VNode {\n const children = [\n this.$slots.prepend || this.__cachedIcon,\n this.genContent(),\n this.__cachedBorder,\n this.$slots.append,\n this.$scopedSlots.close\n ? this.$scopedSlots.close({ toggle: this.toggle })\n : this.__cachedDismissible,\n ]\n\n const data: VNodeData = {\n staticClass: 'v-alert__wrapper',\n }\n\n return this.$createElement('div', data, children)\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-alert__content',\n }, this.$slots.default)\n },\n genAlert (): VNode {\n let data: VNodeData = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert',\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n data = setColor(this.computedColor, data)\n }\n\n return this.$createElement('div', data, [this.genWrapper()])\n },\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (h): VNode {\n const render = this.genAlert()\n\n if (!this.transition) return render\n\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [render])\n },\n})\n","// Styles\nimport './VAppBar.sass'\n\n// Extensions\nimport VToolbar from '../VToolbar/VToolbar'\n\n// Directives\nimport Scroll from '../../directives/scroll'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Scrollable from '../../mixins/scrollable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Toggleable from '../../mixins/toggleable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n VToolbar,\n Scrollable,\n SSRBootable,\n Toggleable,\n Applicationable('top', [\n 'clippedLeft',\n 'clippedRight',\n 'computedHeight',\n 'invertedScroll',\n 'isExtended',\n 'isProminent',\n 'value',\n ])\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-app-bar',\n\n directives: { Scroll },\n\n provide (): object {\n return { VAppBar: this }\n },\n\n props: {\n clippedLeft: Boolean,\n clippedRight: Boolean,\n collapseOnScroll: Boolean,\n elevateOnScroll: Boolean,\n fadeImgOnScroll: Boolean,\n hideOnScroll: Boolean,\n invertedScroll: Boolean,\n scrollOffScreen: Boolean,\n shrinkOnScroll: Boolean,\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n data () {\n return {\n isActive: this.value,\n }\n },\n\n computed: {\n applicationProperty (): string {\n return !this.bottom ? 'top' : 'bottom'\n },\n canScroll (): boolean {\n return (\n Scrollable.options.computed.canScroll.call(this) &&\n (\n this.invertedScroll ||\n this.elevateOnScroll ||\n this.hideOnScroll ||\n this.collapseOnScroll ||\n this.isBooted ||\n // If falsy, user has provided an\n // explicit value which should\n // overwrite anything we do\n !this.value\n )\n )\n },\n classes (): object {\n return {\n ...VToolbar.options.computed.classes.call(this),\n 'v-toolbar--collapse': this.collapse || this.collapseOnScroll,\n 'v-app-bar': true,\n 'v-app-bar--clipped': this.clippedLeft || this.clippedRight,\n 'v-app-bar--fade-img-on-scroll': this.fadeImgOnScroll,\n 'v-app-bar--elevate-on-scroll': this.elevateOnScroll,\n 'v-app-bar--fixed': !this.absolute && (this.app || this.fixed),\n 'v-app-bar--hide-shadow': this.hideShadow,\n 'v-app-bar--is-scrolled': this.currentScroll > 0,\n 'v-app-bar--shrink-on-scroll': this.shrinkOnScroll,\n }\n },\n scrollRatio (): number {\n const threshold = this.computedScrollThreshold\n return Math.max((threshold - this.currentScroll) / threshold, 0)\n },\n computedContentHeight (): number {\n if (!this.shrinkOnScroll) return VToolbar.options.computed.computedContentHeight.call(this)\n\n const min = this.dense ? 48 : 56\n const max = this.computedOriginalHeight\n\n return min + (max - min) * this.scrollRatio\n },\n computedFontSize (): number | undefined {\n if (!this.isProminent) return undefined\n\n const min = 1.25\n const max = 1.5\n\n return min + (max - min) * this.scrollRatio\n },\n computedLeft (): number {\n if (!this.app || this.clippedLeft) return 0\n\n return this.$vuetify.application.left\n },\n computedMarginTop (): number {\n if (!this.app) return 0\n\n return this.$vuetify.application.bar\n },\n computedOpacity (): number | undefined {\n if (!this.fadeImgOnScroll) return undefined\n\n return this.scrollRatio\n },\n computedOriginalHeight (): number {\n let height = VToolbar.options.computed.computedContentHeight.call(this)\n if (this.isExtended) height += parseInt(this.extensionHeight)\n return height\n },\n computedRight (): number {\n if (!this.app || this.clippedRight) return 0\n\n return this.$vuetify.application.right\n },\n computedScrollThreshold (): number {\n if (this.scrollThreshold) return Number(this.scrollThreshold)\n\n return this.computedOriginalHeight - (this.dense ? 48 : 56)\n },\n computedTransform (): number {\n if (\n !this.canScroll ||\n (this.elevateOnScroll && this.currentScroll === 0 && this.isActive)\n ) return 0\n\n if (this.isActive) return 0\n\n const scrollOffScreen = this.scrollOffScreen\n ? this.computedHeight\n : this.computedContentHeight\n\n return this.bottom ? scrollOffScreen : -scrollOffScreen\n },\n hideShadow (): boolean {\n if (this.elevateOnScroll && this.isExtended) {\n return this.currentScroll < this.computedScrollThreshold\n }\n\n if (this.elevateOnScroll) {\n return this.currentScroll === 0 ||\n this.computedTransform < 0\n }\n\n return (\n !this.isExtended ||\n this.scrollOffScreen\n ) && this.computedTransform !== 0\n },\n isCollapsed (): boolean {\n if (!this.collapseOnScroll) {\n return VToolbar.options.computed.isCollapsed.call(this)\n }\n\n return this.currentScroll > 0\n },\n isProminent (): boolean {\n return (\n VToolbar.options.computed.isProminent.call(this) ||\n this.shrinkOnScroll\n )\n },\n styles (): object {\n return {\n ...VToolbar.options.computed.styles.call(this),\n fontSize: convertToUnit(this.computedFontSize, 'rem'),\n marginTop: convertToUnit(this.computedMarginTop),\n transform: `translateY(${convertToUnit(this.computedTransform)})`,\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n }\n },\n },\n\n watch: {\n canScroll: 'onScroll',\n computedTransform () {\n // Normally we do not want the v-app-bar\n // to update the application top value\n // to avoid screen jump. However, in\n // this situation, we must so that\n // the clipped drawer can update\n // its top value when scrolled\n if (\n !this.canScroll ||\n (!this.clippedLeft && !this.clippedRight)\n ) return\n\n this.callUpdate()\n },\n invertedScroll (val: boolean) {\n this.isActive = !val || this.currentScroll !== 0\n },\n },\n\n created () {\n if (this.invertedScroll) this.isActive = false\n },\n\n methods: {\n genBackground () {\n const render = VToolbar.options.methods.genBackground.call(this)\n\n render.data = this._b(render.data || {}, render.tag!, {\n style: { opacity: this.computedOpacity },\n })\n\n return render\n },\n updateApplication (): number {\n return this.invertedScroll\n ? 0\n : this.computedHeight + this.computedTransform\n },\n thresholdMet () {\n if (this.invertedScroll) {\n this.isActive = this.currentScroll > this.computedScrollThreshold\n return\n }\n\n if (this.hideOnScroll) {\n this.isActive = this.isScrollingUp ||\n this.currentScroll < this.computedScrollThreshold\n }\n\n if (this.currentThreshold < this.computedScrollThreshold) return\n\n this.savedScroll = this.currentScroll\n },\n },\n\n render (h): VNode {\n const render = VToolbar.options.render.call(this, h)\n\n render.data = render.data || {}\n\n if (this.canScroll) {\n render.data.directives = render.data.directives || []\n render.data.directives.push({\n arg: this.scrollTarget,\n name: 'scroll',\n value: this.onScroll,\n })\n }\n\n return render\n },\n})\n","// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function installComponents (component, components) {\n var options = typeof component.exports === 'function'\n ? component.exports.extendOptions\n : component.options\n\n if (typeof component.exports === 'function') {\n options.components = component.exports.options.components\n }\n\n options.components = options.components || {}\n\n for (var i in components) {\n options.components[i] = options.components[i] || components[i]\n }\n}\n","// Styles\nimport './VApp.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n Themeable\n).extend({\n name: 'v-app',\n\n props: {\n dark: {\n type: Boolean,\n default: undefined,\n },\n id: {\n type: String,\n default: 'app',\n },\n light: {\n type: Boolean,\n default: undefined,\n },\n },\n\n computed: {\n isDark (): boolean {\n return this.$vuetify.theme.dark\n },\n },\n\n beforeCreate () {\n if (!this.$vuetify || (this.$vuetify === this.$root as any)) {\n throw new Error('Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object')\n }\n },\n\n render (h) {\n const wrapper = h('div', { staticClass: 'v-application--wrap' }, this.$slots.default)\n\n return h('div', {\n staticClass: 'v-application',\n class: {\n 'v-application--is-rtl': this.$vuetify.rtl,\n 'v-application--is-ltr': !this.$vuetify.rtl,\n ...this.themeClasses,\n },\n attrs: { 'data-app': true },\n domProps: { id: this.id },\n }, [wrapper])\n },\n})\n"],"sourceRoot":""}