{"version":3,"sources":["webpack:///../../../src/components/VGrid/VSpacer.ts","webpack:///../../../src/components/VToolbar/VToolbar.ts","webpack:///../../../src/directives/touch/index.ts","webpack:///../../../src/components/VOverlay/VOverlay.ts","webpack:///../../../src/components/VOverlay/index.ts","webpack:///../../../src/mixins/overlayable/index.ts"],"names":["name","props","absolute","bottom","collapse","dense","extended","extensionHeight","default","type","Number","String","flat","floating","prominent","short","src","tag","data","isExtended","computed","computedHeight","height","this","parseInt","isCollapsed","isNaN","computedContentHeight","isProminent","$vuetify","breakpoint","classes","styles","created","breakingProps","original","replacement","methods","genBackground","image","$scopedSlots","img","$createElement","staticClass","genContent","style","genExtension","render","children","setBackgroundColor","class","on","$listeners","h","handleGesture","wrapper","touchendY","dirRatio","minDistance","touchendX","Math","touchstartX","touchstartY","touch","event","Object","createHandlers","touchmoveX","touchmoveY","offsetX","offsetY","left","value","right","up","down","start","move","end","touchstart","e","touchend","touchmove","inserted","binding","target","el","options","passive","handlers","vnode","eventName","unbind","Touch","mixins","color","dark","opacity","zIndex","__scrim","computedOpacity","themeClasses","isActive","$slots","hideOverlay","overlayColor","overlayOpacity","animationFrame","overlay","watch","genOverlay","beforeDestroy","createOverlay","propsData","parent","$el","document","requestAnimationFrame","removeOverlay","showScroll","cancelAnimationFrame","scrollListener","includes","checkPath","hasScrollbar","Node","window","shouldScroll","delta","isInside","path","composedPath","dialog","$refs","selected","index","hideScroll"],"mappings":"kHAAA,0BAGe,sBAAuB,SAAU,MAAhD,a,sNCce,qBAAc,CAC3BA,KAD2B,YAG3BC,MAAO,CACLC,SADK,QAELC,OAFK,QAGLC,SAHK,QAILC,MAJK,QAKLC,SALK,QAMLC,gBAAiB,CACfC,QADe,GAEfC,KAAM,CAACC,OAAQC,SAEjBC,KAVK,QAWLC,SAXK,QAYLC,UAZK,QAaLC,MAbK,QAcLC,IAAK,CACHP,KAAM,CAACE,OADJ,QAEHH,QAAS,IAEXS,IAAK,CACHR,KADG,OAEHD,QAAS,WAIbU,KAAM,iBAAO,CACXC,YAAY,IAGdC,SAAU,CACRC,eADQ,WAEN,IAAMC,EAASC,KAAf,sBAEA,IAAKA,KAAL,WAAsB,OAAOD,EAE7B,IAAMf,EAAkBiB,SAASD,KAAjC,iBAEA,OAAOA,KAAKE,YAAL,EAEHH,GAAWI,MAAD,GAFd,EAEc,IAEhBC,sBAZQ,WAaN,OAAIJ,KAAJ,OAAwBC,SAASD,KAAhB,QACbA,KAAKK,aAAeL,KAAxB,MAA2C,GACvCA,KAAKK,aAAeL,KAAxB,MAA2C,IACvCA,KAAJ,YAA6B,IACzBA,KAAJ,MAAuB,GACnBA,KAAKR,OAASQ,KAAKM,SAASC,WAAhC,UAA6D,GAC7D,IAEFC,QArBQ,WAsBN,wCACK,qCADE,OAAP,IAEE,aAFK,EAGL,sBAAuBR,KAHlB,SAIL,oBAAqBA,KAJhB,OAKL,sBAAuBA,KALlB,SAML,uBAAwBA,KANnB,YAOL,mBAAoBA,KAPf,MAQL,sBAAuBA,KARlB,WASL,kBAAmBA,KATd,KAUL,sBAAuBA,KAVlB,SAWL,uBAAwBA,KAAKK,eAGjCH,YApCQ,WAqCN,OAAOF,KAAP,UAEFK,YAvCQ,WAwCN,OAAOL,KAAP,WAEFS,OA1CQ,WA2CN,wCACKT,KADE,kBAAP,IAEED,OAAQ,eAAcC,KAAD,oBAK3BU,QAjF2B,WAiFpB,WACCC,EAAgB,CACpB,CAAC,MADmB,mBAEpB,CAAC,gBAFmB,8BAGpB,CAAC,eAHmB,4BAIpB,CAAC,gBAJmB,6BAKpB,CAAC,kBALmB,+BAMpB,CAAC,oBANmB,iCAOpB,CAAC,gBAPmB,6BAQpB,CAAC,mBARmB,gCASpB,CAAC,OATH,qBAaAA,EAAA,SAAsB,YAA4B,0BAA3B,EAA2B,KAA5B,EAA4B,KAC5C,wBAAJ,IAA0C,eAASC,EAAUC,EAAnB,OAI9CC,QAAS,CACPC,cADO,WAEL,IAAMrC,EAAQ,CACZqB,OAAQ,eAAcC,KADV,gBAEZP,IAAKO,KAAKP,KAGNuB,EAAQhB,KAAKiB,aAAaC,IAC5BlB,KAAKiB,aAAaC,IAAI,CAAExC,UACxBsB,KAAKmB,eAAe,EAApB,KAA0B,CAAEzC,UAEhC,OAAOsB,KAAKmB,eAAe,MAAO,CAChCC,YAAa,oBACZ,CAFH,KAIFC,WAfO,WAgBL,OAAOrB,KAAKmB,eAAe,MAAO,CAChCC,YADgC,qBAEhCE,MAAO,CACLvB,OAAQ,eAAcC,KAAD,yBAEtB,eALH,QAOFuB,aAvBO,WAwBL,OAAOvB,KAAKmB,eAAe,MAAO,CAChCC,YADgC,uBAEhCE,MAAO,CACLvB,OAAQ,eAAcC,KAAD,mBAEtB,eAAQA,KALX,gBASJwB,OArI2B,SAqIrB,GACJxB,KAAA,WAAkBA,KAAKjB,YAAciB,KAAKiB,aAA1C,UAEA,IAAMQ,EAAW,CAACzB,KAAlB,cACML,EAAOK,KAAK0B,mBAAmB1B,KAAxB,MAAoC,CAC/C2B,MAAO3B,KADwC,QAE/CsB,MAAOtB,KAFwC,OAG/C4B,GAAI5B,KAAK6B,aAMX,OAHI7B,KAAJ,YAAqByB,EAAA,KAAczB,KAAd,iBACjBA,KAAKP,KAAOO,KAAKiB,aAArB,MAAuCQ,EAAA,QAAiBzB,KAAjB,iBAEhC8B,EAAE9B,KAAD,MAAR,O,sECrJE+B,EAAiB,SAAAC,GAAyB,IACxC,EAAN,EAAM,cAAN,EAAM,YAAN,EAAM,YAAuCC,EAA7C,EAA6CA,UACvCC,EAAN,GACMC,EAAN,GACAH,EAAA,QAAkBI,EAAlB,EACAJ,EAAA,QAAkBC,EAAlB,EAEII,KAAA,IAASL,EAAT,SAA4BE,EAAWG,KAAA,IAASL,EAApD,WACEA,EAAA,MAAiBI,EAAYE,EAA7B,GAA2DN,EAAA,KAA3DA,GACAA,EAAA,OAAkBI,EAAYE,EAA9B,GAA4DN,EAAA,MAA5DA,IAGEK,KAAA,IAASL,EAAT,SAA4BE,EAAWG,KAAA,IAASL,EAApD,WACEA,EAAA,IAAeC,EAAYM,EAA3B,GAAyDP,EAAA,GAAzDA,GACAA,EAAA,MAAiBC,EAAYM,EAA7B,GAA2DP,EAAA,KAA3DA,KAIJ,SAAS,EAAT,KACE,IAAMQ,EAAQC,EAAA,eAAd,GACAT,EAAA,YAAsBQ,EAAtB,QACAR,EAAA,YAAsBQ,EAAtB,QAEAR,EAAA,OACEA,EAAA,MAAcU,OAAA,SADhBV,IAIF,SAAS,EAAT,KACE,IAAMQ,EAAQC,EAAA,eAAd,GACAT,EAAA,UAAoBQ,EAApB,QACAR,EAAA,UAAoBQ,EAApB,QAEAR,EAAA,KACEA,EAAA,IAAYU,OAAA,SADdV,IAGAD,EAAA,GAGF,SAAS,EAAT,KACE,IAAMS,EAAQC,EAAA,eAAd,GACAT,EAAA,WAAqBQ,EAArB,QACAR,EAAA,WAAqBQ,EAArB,QAEAR,EAAA,MAAgBA,EAAA,KAAaU,OAAA,SAA7BV,IAGF,SAASW,EAAT,GACE,IAAMX,EAAU,CACdM,YADc,EAEdC,YAFc,EAGdH,UAHc,EAIdH,UAJc,EAKdW,WALc,EAMdC,WANc,EAOdC,QAPc,EAQdC,QARc,EASdC,KAAMC,EATQ,KAUdC,MAAOD,EAVO,MAWdE,GAAIF,EAXU,GAYdG,KAAMH,EAZQ,KAadI,MAAOJ,EAbO,MAcdK,KAAML,EAdQ,KAedM,IAAKN,EAAMM,KAGb,MAAO,CACLC,WAAa,SAAAC,GAAD,OAAmB,EAAWA,EADrC,IAELC,SAAW,SAAAD,GAAD,OAAmB,EAASA,EAFjC,IAGLE,UAAY,SAAAF,GAAD,OAAmB,EAAUA,EAAGzB,KAI/C,SAAS4B,EAAT,OACE,IAAMX,EAAQY,EAAd,MACMC,EAASb,EAAA,OAAec,EAAf,cAAf,EACMC,EAAUf,EAAA,SAAiB,CAAEgB,SAAS,GAG5C,MAEA,IAAMC,EAAWvB,EAAekB,EAAhC,OACAC,EAAA,eAAwBpB,OAAOoB,EAA/B,gBACAA,EAAA,eAAuBK,EAAA,QAAvB,QAEA,2BAAuB,SAAAC,GACrBN,EAAA,mBAAmCI,EAAnC,UAIJ,SAASG,EAAT,OACE,IAAMP,EAASD,EAAA,aAAwBE,EAAxB,cAAf,EACA,GAAKD,GAAWA,EAAhB,gBAEA,IAAMI,EAAWJ,EAAA,eAAsBK,EAAA,QAAvC,MACA,2BAAuB,SAAAC,GACrBN,EAAA,sBAAsCI,EAAtC,cAEKJ,EAAA,eAAsBK,EAAA,QAA7B,OAGK,IAAMG,EAAQ,CACnBV,WACAS,UAGF,U,4ICxGe,SAAAE,EAAA,MAAO,EAAD,YAAN,eAIN,CACP9F,KADO,YAGPC,MAAO,CACLC,SADK,QAEL6F,MAAO,CACLtF,KADK,OAELD,QAAS,WAEXwF,KAAM,CACJvF,KADI,QAEJD,SAAS,GAEXyF,QAAS,CACPxF,KAAM,CAACC,OADA,QAEPF,QAAS,KAEXgE,MAAO,CACLhE,SAAS,GAEX0F,OAAQ,CACNzF,KAAM,CAACC,OADD,QAENF,QAAS,IAIbY,SAAU,CACR+E,QADQ,WAEN,IAAMjF,EAAOK,KAAK0B,mBAAmB1B,KAAxB,MAAoC,CAC/CoB,YAD+C,mBAE/CE,MAAO,CACLoD,QAAS1E,KAAK6E,mBAIlB,OAAO7E,KAAKmB,eAAe,MAA3B,IAEFX,QAXQ,WAYN,uBACE,sBAAuBR,KADlB,SAEL,oBAAqBA,KAFhB,UAGFA,KAAK8E,eAGZD,gBAlBQ,WAmBN,OAAO1F,OAAOa,KAAK+E,SAAW/E,KAAhB,QAAd,IAEFS,OArBQ,WAsBN,MAAO,CACLkE,OAAQ3E,KAAK2E,UAKnB7D,QAAS,CACPO,WADO,WAEL,OAAOrB,KAAKmB,eAAe,MAAO,CAChCC,YAAa,sBACZpB,KAAKgF,OAFR,WAMJxD,OA9DO,SA8DD,GACJ,IAAMC,EAAW,CAACzB,KAAlB,SAIA,OAFIA,KAAJ,UAAmByB,EAAA,KAAczB,KAAd,cAEZ8B,EAAE,MAAO,CACdV,YADc,YAEdO,MAAO3B,KAFO,QAGdsB,MAAOtB,KAAKS,QAHd,MClFJ,I,wBC2Be,8BAA4D,CACzEhC,KADyE,cAGzEC,MAAO,CACLuG,YADK,QAELC,aAFK,OAGLC,eAAgB,CAAChG,OAAQC,SAG3BO,KATyE,WAUvE,MAAO,CACLyF,eADK,EAELC,QAAS,OAIbC,MAAO,CACLL,YADK,SACM,GACJjF,KAAL,WAEA,EAAWA,KAAX,gBACKA,KAAKuF,gBAIdC,cAzByE,WA0BvExF,KAAA,iBAGFc,QAAS,CACP2E,cADO,WAEL,IAAMJ,EAAU,IAAI,EAAS,CAC3BK,UAAW,CACT/G,SAAUqB,KADD,SAETiD,OAFS,EAGTuB,MAAOxE,KAHE,aAIT0E,QAAS1E,KAAKmF,kBAIlBE,EAAA,SAEA,IAAMM,EAAS3F,KAAKrB,SAChBqB,KAAK4F,IADM,WAEXC,SAAA,cAFJ,cAIAF,GAAUA,EAAA,aAAoBN,EAApB,IAAiCM,EAA3C,YAEA3F,KAAA,WAEFuF,WArBO,WAqBG,WAGR,GAFAvF,KAAA,cAEIA,KAAJ,YAgBA,OAdKA,KAAL,SAAmBA,KAAKyF,gBAExBzF,KAAA,eAAsB8F,uBAAsB,WACrC,EAAL,eAEA,IAAI,eACF,iBAAsB1G,OAAO,eAA7B,GACS,EAAJ,MACL,iBAAsB,eAAU,EAAhC,MAGF,wBAGF,GAGF2G,cA3CO,WA2CyB,WAAjBC,IAAiB,yDAC1BhG,KAAJ,UACE,eAAqBA,KAAKqF,QAAN,qBAAoC,WAEnD,EAAD,SACC,UADD,KAEC,cAFD,aAGA,UAJF,QAOA,qCAAwC,UAAxC,KACA,qBACA,mBAMFY,qBAAqBjG,KAArB,gBAEAA,KAAA,kBAGFgG,GAAchG,KAAdgG,cAEFE,eApEO,SAoEO,GACZ,eAAIzC,EAAA,KAAsB,CACxB,GACE,CAAC,QAAS,WAAY,UAAU0C,SAAU1C,EAAA,OAA1C,UAECA,EAAA,OAHH,kBAIE,OAEF,IAAMN,EAAK,CAAC,OAAD,GAAc,OAAzB,QACMC,EAAO,CAAC,OAAD,KAAgB,OAA7B,UAEA,GAAID,EAAA,SAAYM,EAAhB,SACGA,EAAA,cACI,KAAIL,EAAA,SAAcK,EAAlB,SAGL,OAFCA,EAAA,WAMDA,EAAA,SAAazD,KAAb,SACD,YAAAyD,EAAA,MAAwBA,EAAA,SAAaoC,SADpC,MAEF7F,KAAKoG,UAFP,KAEqB3C,EAAA,kBAEvB4C,aA5FO,SA4FK,GACV,IAAKtC,GAAMA,EAAA,WAAgBuC,KAA3B,aAA8C,OAAO,EAErD,IAAMhF,EAAQiF,OAAA,iBAAd,GACA,MAAO,CAAC,OAAQ,UAAUJ,SAAS7E,EAA5B,YAAiDyC,EAAA,aAAkBA,EAA1E,cAEFyC,aAlGO,SAkGK,KACV,OAAI,IAAAzC,EAAA,WAAsB0C,EAA1B,GACO1C,EAAA,UAAeA,EAAf,eAAmCA,EAAnC,cAAsD0C,EAA7D,GAEFC,SAtGO,SAsGC,KACN,OAAI3C,IAAJ,GAEW,OAAAA,GAAeA,IAAO8B,SAA1B,MAGE7F,KAAK0G,SAAS3C,EAAd,WAAP,IAGJqC,UA/GO,SA+GE,GACP,IAAMO,EAAOlD,EAAA,MAAUzD,KAAK4G,aAA5B,GACMH,EAAQhD,EAAd,OAEA,GAAI,YAAAA,EAAA,MAAwBkD,EAAA,KAAYd,SAAxC,KAAuD,CACrD,IAAMgB,EAAS7G,KAAK8G,MADiC,OAG/CC,EAAWR,OAAA,eAAjB,WACA,QAAIM,GAAU7G,KAAKqG,aAAfQ,IAAuC7G,KAAK0G,SAASK,EAAzD,KACS/G,KAAKwG,aAAaK,EAAzB,GAKJ,IAAK,IAAIG,EAAT,EAAoBA,EAAQL,EAA5B,OAAyCK,IAAS,CAChD,IAAMjD,EAAK4C,EAAX,GAEA,GAAI5C,IAAJ,SAAqB,OAAO,EAC5B,GAAIA,IAAO8B,SAAX,gBAAqC,OAAO,EAC5C,GAAI9B,IAAO/D,KAAK8G,MAAhB,QAA+B,OAAO,EAEtC,GAAI9G,KAAKqG,aAAT,GAAsC,OAAOrG,KAAKwG,aAAazC,EAAzB,GAGxC,UAKF6C,aA5IO,SA4IK,GACV,GAAInD,EAAJ,aAAoB,OAAOA,EAAP,eAEpB,IAAMkD,EAAN,GACI5C,EAAKN,EAAT,OAEA,QAAW,CAGT,GAFAkD,EAAA,QAEA,SAAI5C,EAAA,QAIF,OAHA4C,EAAA,eACAA,EAAA,aAEA,EAGF5C,EAAKA,EAAL,cAEF,UAEFkD,WAhKO,WAiKDjH,KAAKM,SAASC,WAAlB,UACEsF,SAAA,oDAEA,eAAwBU,OAAQ,QAASvG,KAAlB,eAA8D,CAAEiE,SAAS,IAChGsC,OAAA,2BAAmCvG,KAAnC,kBAGJgG,WAxKO,WAyKLH,SAAA,sDACAU,OAAA,4BAAoCvG,KAApC,gBACAuG,OAAA,8BAAsCvG,KAAtC","file":"js/chunk-7e8afc17.213b749b.js","sourcesContent":["import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', ''],\n ['manual-scroll', ''],\n ['clipped-left', ''],\n ['clipped-right', ''],\n ['inverted-scroll', ''],\n ['scroll-off-screen', ''],\n ['scroll-target', ''],\n ['scroll-threshold', ''],\n ['card', ''],\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 genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","import { VNodeDirective, VNode } from 'vue/types/vnode'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\ninterface TouchVNodeDirective extends VNodeDirective {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start &&\n wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end &&\n wrapper.end(Object.assign(event, wrapper))\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end,\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction inserted (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const value = binding.value!\n const target = value.parent ? el.parentElement : el\n const options = value.options || { passive: true }\n\n // Needed to pass unit tests\n if (!target) return\n\n const handlers = createHandlers(binding.value!)\n target._touchHandlers = Object(target._touchHandlers)\n target._touchHandlers![vnode.context!._uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName] as EventListener, options)\n })\n}\n\nfunction unbind (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const target = binding.value!.parent ? el.parentElement : el\n if (!target || !target._touchHandlers) return\n\n const handlers = target._touchHandlers[vnode.context!._uid]\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n delete target._touchHandlers[vnode.context!._uid]\n}\n\nexport const Touch = {\n inserted,\n unbind,\n}\n\nexport default Touch\n","// Styles\nimport './VOverlay.sass'\n\n// Mixins\nimport Colorable from './../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from './../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Themeable,\n Toggleable\n).extend({\n name: 'v-overlay',\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121',\n },\n dark: {\n type: Boolean,\n default: true,\n },\n opacity: {\n type: [Number, String],\n default: 0.46,\n },\n value: {\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 5,\n },\n },\n\n computed: {\n __scrim (): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity,\n },\n })\n\n return this.$createElement('div', data)\n },\n classes (): object {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses,\n }\n },\n computedOpacity (): number {\n return Number(this.isActive ? this.opacity : 0)\n },\n styles (): object {\n return {\n zIndex: this.zIndex,\n }\n },\n },\n\n methods: {\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n const children = [this.__scrim]\n\n if (this.isActive) children.push(this.genContent())\n\n return h('div', {\n staticClass: 'v-overlay',\n class: this.classes,\n style: this.styles,\n }, children)\n },\n})\n","import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent & KeyboardEvent) {\n if (e.type === 'keydown') {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY!) && el.scrollHeight > el.clientHeight\n },\n shouldScroll (el: Element, delta: number) {\n if (el.scrollTop === 0 && delta < 0) return true\n return el.scrollTop + el.clientHeight === el.scrollHeight && delta > 0\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = e.path || this.composedPath(e)\n const delta = e.deltaY\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return this.shouldScroll(dialog, delta)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return this.shouldScroll(el as Element, delta)\n }\n\n return true\n },\n /**\n * Polyfill for Event.prototype.composedPath\n */\n composedPath (e: WheelEvent): EventTarget[] {\n if (e.composedPath) return e.composedPath()\n\n const path = []\n let el = e.target as Element\n\n while (el) {\n path.push(el)\n\n if (el.tagName === 'HTML') {\n path.push(document)\n path.push(window)\n\n return path\n }\n\n el = el.parentElement!\n }\n return path\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener as EventHandlerNonNull, { passive: false })\n window.addEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener as EventHandlerNonNull)\n window.removeEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n },\n },\n})\n"],"sourceRoot":""}