{"version":3,"sources":["webpack:///../../../src/components/VOverlay/index.ts","webpack:///../../../src/components/VToolbar/index.ts","webpack:///../../../src/components/VGrid/VSpacer.ts","webpack:///../../../src/mixins/applicationable/index.ts","webpack:///../../../src/directives/scroll/index.ts","webpack:///../../../src/mixins/scrollable/index.ts","webpack:///../../../src/components/VAppBar/VAppBar.ts","webpack:///../../../src/components/VFooter/VFooter.ts","webpack:///../../../src/components/VAppBar/VAppBarNavIcon.ts","webpack:///../../../src/components/VToolbar/VToolbar.ts","webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/directives/touch/index.ts","webpack:///../../../src/mixins/ssr-bootable/index.ts","webpack:///../../../src/mixins/mobile/index.ts","webpack:///../../../src/mixins/overlayable/index.ts","webpack:///../../../src/components/VMain/VMain.ts","webpack:///../../../src/components/VNavigationDrawer/VNavigationDrawer.ts"],"names":["VOverlay","VToolbarTitle","createSimpleFunctional","VToolbarItems","VToolbar","applicationable","value","events","mixins","PositionableFactory","extend","name","props","app","Boolean","computed","applicationProperty","watch","x","prev","this","removeApplication","callUpdate","newVal","oldVal","$vuetify","application","unregister","_uid","activated","created","i","length","$watch","mounted","deactivated","destroyed","methods","register","updateApplication","force","inserted","el","binding","vnode","self","modifiers","options","passive","handler","target","arg","document","querySelector","window","addEventListener","_onScroll","Object","context","undefined","unbind","_a","removeEventListener","Scroll","Vue","directives","scrollTarget","String","scrollThreshold","Number","data","currentScroll","currentThreshold","isActive","isScrollingUp","previousScroll","savedScroll","canScroll","computedScrollThreshold","consoleWarn","onScroll","scrollTop","pageYOffset","Math","abs","$nextTick","thresholdMet","baseMixins","Scrollable","SSRBootable","Toggleable","Applicationable","provide","VAppBar","clippedLeft","clippedRight","collapseOnScroll","elevateOnScroll","fadeImgOnScroll","hideOnScroll","invertedScroll","scrollOffScreen","shrinkOnScroll","type","default","bottom","call","isBooted","classes","collapse","absolute","fixed","hideShadow","scrollRatio","threshold","max","computedContentHeight","min","dense","computedOriginalHeight","computedFontSize","isProminent","computedLeft","left","computedMarginTop","bar","computedOpacity","height","isExtended","parseInt","extensionHeight","computedRight","right","computedTransform","computedHeight","isCollapsed","styles","fontSize","convertToUnit","marginTop","transform","val","genBackground","render","_b","tag","style","opacity","h","push","VSheet","inset","padless","computedBottom","isPositioned","isNaN","$el","clientHeight","setBackgroundColor","color","staticClass","class","getSlot","functional","slots","listeners","d","assign","trim","icon","on","defaultSlot","VBtn","VIcon","extended","flat","floating","prominent","short","src","breakpoint","smAndDown","measurableStyles","breakingProps","forEach","original","replacement","$attrs","hasOwnProperty","breaking","image","$scopedSlots","img","$createElement","VImg","genContent","genExtension","extension","children","$listeners","unshift","VCardActions","VCardSubtitle","VCardText","VCardTitle","VCard","Loadable","Routable","hover","link","loaderHeight","raised","isClickable","loading","disabled","background","genProgress","key","generateRouteLink","attrs","tabindex","handleGesture","wrapper","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","offsetX","offsetY","up","down","touchstart","event","touch","changedTouches","clientX","clientY","start","touchend","end","touchmove","touchmoveX","touchmoveY","move","createHandlers","e","parent","parentElement","handlers","_touchHandlers","keys","eventName","Touch","requestAnimationFrame","setAttribute","mobileBreakpoint","validator","v","includes","isMobile","mobile","width","mobileWidth","isNumber","deprecate","hideOverlay","overlayColor","overlayOpacity","animationFrame","overlay","removeOverlay","genOverlay","beforeDestroy","createOverlay","propsData","$mount","parentNode","insertBefore","firstChild","hideScroll","activeZIndex","zIndex","getZIndex","showScroll","addOnceEventListener","removeChild","$destroy","cancelAnimationFrame","scrollListener","tagName","isContentEditable","keyCodes","pageup","pagedown","keyCode","deltaY","body","checkPath","preventDefault","hasScrollbar","nodeType","Node","ELEMENT_NODE","getComputedStyle","overflowY","scrollHeight","overflowX","scrollWidth","clientWidth","shouldScroll","hasAttribute","dir","shiftKey","deltaX","delta","alreadyAtStart","alreadyAtEnd","scrollLeft","scrollingUp","scrollingDown","isInside","path","composedPath","dialog","$refs","selected","getSelection","anchorNode","index","documentElement","content","classList","add","addPassiveEventListener","remove","top","footer","insetFooter","paddingTop","paddingRight","paddingBottom","paddingLeft","ref","Colorable","Dependent","Mobile","Overlayable","Themeable","ClickOutside","Resize","isInNav","clipped","disableResizeWatcher","disableRouteWatcher","expandOnHover","miniVariant","miniVariantWidth","permanent","stateless","temporary","touchless","isMouseover","touchArea","stackMinZIndex","isMiniVariant","themeClasses","computedMaxHeight","hasApp","computedTop","isBottom","computedWidth","reactsToClick","reactsToMobile","reactsToResize","reactsToRoute","showOverlay","translate","maxHeight","$route","$emit","init","updateMiniVariant","beforeMount","calculateTouchArea","parentRect","getBoundingClientRect","closeConditional","_isDestroyed","genAppend","genPosition","genDirectives","include","getOpenDependentElements","swipeLeft","swipeRight","genListeners","mouseenter","mouseleave","transitionend","currentTarget","resizeEvent","createEvent","initUIEvent","dispatchEvent","click","slot","genPrepend","genBorder","onRouteChange"],"mappings":"kHAAA,gBAIeA,e,oCCJf,gGAMA,MAAMC,EAAgBC,eAAuB,oBACvCC,EAAgBD,eAAuB,oBAUzCE,Q,oCCjBJ,0BAGeF,sBAAuB,SAAU,MAAO,a,oCCHvD,8DAMc,SAAUG,EAAiBC,EAAmBC,EAAmB,IAE7E,OAAOC,eAAOC,eAAoB,CAAC,WAAY,WAAWC,OAAO,CAC/DC,KAAM,kBAENC,MAAO,CACLC,IAAKC,SAGPC,SAAU,CACRC,sBACE,OAAOV,IAIXW,MAAO,CAGLJ,IAAKK,EAAYC,GACfA,EACIC,KAAKC,mBAAkB,GACvBD,KAAKE,cAEXN,oBAAqBO,EAAQC,GAC3BJ,KAAKK,SAASC,YAAYC,WAAWP,KAAKQ,KAAMJ,KAIpDK,YACET,KAAKE,cAGPQ,UACE,IAAK,IAAIC,EAAI,EAAGC,EAASzB,EAAOyB,OAAQD,EAAIC,EAAQD,IAClDX,KAAKa,OAAO1B,EAAOwB,GAAIX,KAAKE,YAE9BF,KAAKE,cAGPY,UACEd,KAAKE,cAGPa,cACEf,KAAKC,qBAGPe,YACEhB,KAAKC,qBAGPgB,QAAS,CACPf,aACOF,KAAKP,KAEVO,KAAKK,SAASC,YAAYY,SACxBlB,KAAKQ,KACLR,KAAKJ,oBACLI,KAAKmB,sBAGTlB,kBAAmBmB,GAAQ,IACpBA,GAAUpB,KAAKP,MAEpBO,KAAKK,SAASC,YAAYC,WACxBP,KAAKQ,KACLR,KAAKJ,sBAGTuB,kBAAmBA,IAAM,O,wEC9D/B,SAASE,EAAUC,EAAiBC,EAA+BC,GACjE,MAAM,KAAEC,GAAO,GAAUF,EAAQG,WAAa,GACxCxC,EAAQqC,EAAQrC,MAChByC,EAA4B,kBAAVzC,GAAsBA,EAAMyC,SAAY,CAAEC,SAAS,GACrEC,EAA2B,oBAAV3C,GAAwB,gBAAiBA,EAAQA,EAAQA,EAAM2C,QAEhFC,EAASL,EACXH,EACAC,EAAQQ,IACNC,SAASC,cAAcV,EAAQQ,KAC/BG,OAEDJ,IAELA,EAAOK,iBAAiB,SAAUN,EAASF,GAE3CL,EAAGc,UAAYC,OAAOf,EAAGc,WACzBd,EAAGc,UAAWZ,EAAMc,QAAS9B,MAAQ,CACnCqB,UACAF,UAEAG,OAAQL,OAAOc,EAAYT,IAI/B,SAASU,EAAQlB,EAAiBC,EAA+BC,G,MAC/D,KAAiB,QAAZiB,EAAAnB,EAAGc,iBAAS,IAAAK,OAAA,EAAAA,EAAGjB,EAAMc,QAAS9B,OAAO,OAE1C,MAAM,QAAEqB,EAAF,QAAWF,EAAX,OAAoBG,EAASR,GAAOA,EAAGc,UAAUZ,EAAMc,QAAS9B,MAEtEsB,EAAOY,oBAAoB,SAAUb,EAASF,UACvCL,EAAGc,UAAUZ,EAAMc,QAAS9B,MAG9B,MAAMmC,EAAS,CACpBtB,WACAmB,UAGaG,Q,oCClCAC,SAAItD,OAAO,CACxBC,KAAM,aAENsD,WAAY,CAAEF,UAEdnD,MAAO,CACLsD,aAAcC,OACdC,gBAAiB,CAACD,OAAQE,SAG5BC,KAAMA,KAAA,CACJC,cAAe,EACfC,iBAAkB,EAClBC,UAAU,EACVC,eAAe,EACfC,eAAgB,EAChBC,YAAa,EACb1B,OAAQ,OAGVnC,SAAU,CAMR8D,YACE,MAAyB,qBAAXvB,QAMhBwB,0BACE,OAAO1D,KAAKgD,gBACRC,OAAOjD,KAAKgD,iBACZ,MAIRnD,MAAO,CACLyD,gBACEtD,KAAKwD,YAAcxD,KAAKwD,aAAexD,KAAKmD,eAE9CE,WACErD,KAAKwD,YAAc,IAIvB1C,UACMd,KAAK8C,eACP9C,KAAK8B,OAASE,SAASC,cAAcjC,KAAK8C,cAErC9C,KAAK8B,QACR6B,eAAY,4CAA4C3D,KAAK8C,aAAgB9C,QAKnFiB,QAAS,CACP2C,WACO5D,KAAKyD,YAEVzD,KAAKuD,eAAiBvD,KAAKmD,cAC3BnD,KAAKmD,cAAgBnD,KAAK8B,OACtB9B,KAAK8B,OAAO+B,UACZ3B,OAAO4B,YAEX9D,KAAKsD,cAAgBtD,KAAKmD,cAAgBnD,KAAKuD,eAC/CvD,KAAKoD,iBAAmBW,KAAKC,IAAIhE,KAAKmD,cAAgBnD,KAAK0D,yBAE3D1D,KAAKiE,UAAU,KAEXF,KAAKC,IAAIhE,KAAKmD,cAAgBnD,KAAKwD,aACnCxD,KAAK0D,yBACL1D,KAAKkE,mBAQXA,oB,gDC/EJ,MAAMC,EAAa/E,eACjBJ,OACAoF,EACAC,OACAC,OACAC,eAAgB,MAAO,CACrB,cACA,eACA,iBACA,iBACA,aACA,cACA,WAKWJ,SAAW7E,OAAO,CAC/BC,KAAM,YAENsD,WAAY,CAAEF,UAEd6B,UACE,MAAO,CAAEC,QAASzE,OAGpBR,MAAO,CACLkF,YAAahF,QACbiF,aAAcjF,QACdkF,iBAAkBlF,QAClBmF,gBAAiBnF,QACjBoF,gBAAiBpF,QACjBqF,aAAcrF,QACdsF,eAAgBtF,QAChBuF,gBAAiBvF,QACjBwF,eAAgBxF,QAChBR,MAAO,CACLiG,KAAMzF,QACN0F,SAAS,IAIblC,OACE,MAAO,CACLG,SAAUrD,KAAKd,QAInBS,SAAU,CACRC,sBACE,OAAQI,KAAKqF,OAAiB,SAAR,OAExB5B,YACE,OACEW,EAAWzC,QAAQhC,SAAS8D,UAAU6B,KAAKtF,QAEzCA,KAAKgF,gBACLhF,KAAK6E,iBACL7E,KAAK+E,cACL/E,KAAK4E,kBACL5E,KAAKuF,WAIJvF,KAAKd,QAIZsG,UACE,MAAO,IACFxG,OAAS2C,QAAQhC,SAAS6F,QAAQF,KAAKtF,MAC1C,sBAAuBA,KAAKyF,UAAYzF,KAAK4E,iBAC7C,aAAa,EACb,qBAAsB5E,KAAK0E,aAAe1E,KAAK2E,aAC/C,gCAAiC3E,KAAK8E,gBACtC,+BAAgC9E,KAAK6E,gBACrC,oBAAqB7E,KAAK0F,WAAa1F,KAAKP,KAAOO,KAAK2F,OACxD,yBAA0B3F,KAAK4F,WAC/B,yBAA0B5F,KAAKmD,cAAgB,EAC/C,8BAA+BnD,KAAKkF,iBAGxCW,cACE,MAAMC,EAAY9F,KAAK0D,wBACvB,OAAOK,KAAKgC,KAAKD,EAAY9F,KAAKmD,eAAiB2C,EAAW,IAEhEE,wBACE,IAAKhG,KAAKkF,eAAgB,OAAOlG,OAAS2C,QAAQhC,SAASqG,sBAAsBV,KAAKtF,MAEtF,MAAMiG,EAAMjG,KAAKkG,MAAQ,GAAK,GACxBH,EAAM/F,KAAKmG,uBAEjB,OAAOF,GAAOF,EAAME,GAAOjG,KAAK6F,aAElCO,mBACE,IAAKpG,KAAKqG,YAAa,OAEvB,MAAMJ,EAAM,KACNF,EAAM,IAEZ,OAAOE,GAAOF,EAAME,GAAOjG,KAAK6F,aAElCS,eACE,OAAKtG,KAAKP,KAAOO,KAAK0E,YAAoB,EAEnC1E,KAAKK,SAASC,YAAYiG,MAEnCC,oBACE,OAAKxG,KAAKP,IAEHO,KAAKK,SAASC,YAAYmG,IAFX,GAIxBC,kBACE,GAAK1G,KAAK8E,gBAEV,OAAO9E,KAAK6F,aAEdM,yBACE,IAAIQ,EAAS3H,OAAS2C,QAAQhC,SAASqG,sBAAsBV,KAAKtF,MAElE,OADIA,KAAK4G,aAAYD,GAAUE,SAAS7G,KAAK8G,kBACtCH,GAETI,gBACE,OAAK/G,KAAKP,KAAOO,KAAK2E,aAAqB,EAEpC3E,KAAKK,SAASC,YAAY0G,OAEnCtD,0BACE,OAAI1D,KAAKgD,gBAAwBC,OAAOjD,KAAKgD,iBAEtChD,KAAKmG,wBAA0BnG,KAAKkG,MAAQ,GAAK,KAE1De,oBACE,IACGjH,KAAKyD,WACLzD,KAAK6E,iBAA0C,IAAvB7E,KAAKmD,eAAuBnD,KAAKqD,SAC1D,OAAO,EAET,GAAIrD,KAAKqD,SAAU,OAAO,EAE1B,MAAM4B,EAAkBjF,KAAKiF,gBACzBjF,KAAKkH,eACLlH,KAAKgG,sBAET,OAAOhG,KAAKqF,OAASJ,GAAmBA,GAE1CW,aACE,OAAI5F,KAAK6E,iBAAmB7E,KAAK4G,WACxB5G,KAAKmD,cAAgBnD,KAAK0D,wBAG/B1D,KAAK6E,gBACuB,IAAvB7E,KAAKmD,eACVnD,KAAKiH,kBAAoB,IAI1BjH,KAAK4G,YACN5G,KAAKiF,kBACyB,IAA3BjF,KAAKiH,mBAEZE,cACE,OAAKnH,KAAK4E,iBAIH5E,KAAKmD,cAAgB,EAHnBnE,OAAS2C,QAAQhC,SAASwH,YAAY7B,KAAKtF,OAKtDqG,cACE,OACErH,OAAS2C,QAAQhC,SAAS0G,YAAYf,KAAKtF,OAC3CA,KAAKkF,gBAGTkC,SACE,MAAO,IACFpI,OAAS2C,QAAQhC,SAASyH,OAAO9B,KAAKtF,MACzCqH,SAAUC,eAActH,KAAKoG,iBAAkB,OAC/CmB,UAAWD,eAActH,KAAKwG,mBAC9BgB,UAAW,cAAcF,eAActH,KAAKiH,sBAC5CV,KAAMe,eAActH,KAAKsG,cACzBU,MAAOM,eAActH,KAAK+G,kBAKhClH,MAAO,CACL4D,UAAW,WACXwD,oBAQKjH,KAAKyD,YACJzD,KAAK0E,aAAgB1E,KAAK2E,eAG9B3E,KAAKE,cAEP8E,eAAgByC,GACdzH,KAAKqD,UAAYoE,GAA8B,IAAvBzH,KAAKmD,eAE/B4B,aAAc0C,GACZzH,KAAKqD,UAAYoE,GAAOzH,KAAKmD,cAAgBnD,KAAK0D,0BAItDhD,UACMV,KAAKgF,iBAAgBhF,KAAKqD,UAAW,IAG3CpC,QAAS,CACPyG,gBACE,MAAMC,EAAS3I,OAAS2C,QAAQV,QAAQyG,cAAcpC,KAAKtF,MAM3D,OAJA2H,EAAOzE,KAAOlD,KAAK4H,GAAGD,EAAOzE,MAAQ,GAAIyE,EAAOE,IAAM,CACpDC,MAAO,CAAEC,QAAS/H,KAAK0G,mBAGlBiB,GAETxG,oBACE,OAAOnB,KAAKgF,eACR,EACAhF,KAAKkH,eAAiBlH,KAAKiH,mBAEjC/C,eACMlE,KAAKgF,eACPhF,KAAKqD,SAAWrD,KAAKmD,cAAgBnD,KAAK0D,yBAIxC1D,KAAK+E,eACP/E,KAAKqD,SAAWrD,KAAKsD,eACnBtD,KAAKmD,cAAgBnD,KAAK0D,yBAG1B1D,KAAKoD,iBAAmBpD,KAAK0D,0BAEjC1D,KAAKwD,YAAcxD,KAAKmD,kBAI5BwE,OAAQK,GACN,MAAML,EAAS3I,OAAS2C,QAAQgG,OAAOrC,KAAKtF,KAAMgI,GAalD,OAXAL,EAAOzE,KAAOyE,EAAOzE,MAAQ,GAEzBlD,KAAKyD,YACPkE,EAAOzE,KAAKL,WAAa8E,EAAOzE,KAAKL,YAAc,GACnD8E,EAAOzE,KAAKL,WAAWoF,KAAK,CAC1BlG,IAAK/B,KAAK8C,aACVvD,KAAM,SACNL,MAAOc,KAAK4D,YAIT+D,M,oCC1RX,0EAkBevI,sBACb8I,OACA3D,eAAgB,SAAU,CACxB,SACA,UAEFF,QACA/E,OAAO,CACPC,KAAM,WAENC,MAAO,CACLmH,OAAQ,CACNvB,QAAS,OACTD,KAAM,CAAClC,OAAQF,SAEjBoF,MAAOzI,QACP0I,QAAS1I,QACTmI,IAAK,CACH1C,KAAMpC,OACNqC,QAAS,WAIbzF,SAAU,CACRC,sBACE,OAAOI,KAAKmI,MAAQ,cAAgB,UAEtC3C,UACE,MAAO,IACF0C,OAAOvG,QAAQhC,SAAS6F,QAAQF,KAAKtF,MACxC,qBAAsBA,KAAK0F,SAC3B,mBAAoB1F,KAAK0F,WAAa1F,KAAKP,KAAOO,KAAK2F,OACvD,oBAAqB3F,KAAKoI,QAC1B,kBAAmBpI,KAAKmI,QAG5BE,iBACE,GAAKrI,KAAKsI,aAEV,OAAOtI,KAAKP,IACRO,KAAKK,SAASC,YAAY+E,OAC1B,GAENiB,eACE,GAAKtG,KAAKsI,aAEV,OAAOtI,KAAKP,KAAOO,KAAKmI,MACpBnI,KAAKK,SAASC,YAAYiG,KAC1B,GAENQ,gBACE,GAAK/G,KAAKsI,aAEV,OAAOtI,KAAKP,KAAOO,KAAKmI,MACpBnI,KAAKK,SAASC,YAAY0G,MAC1B,GAENsB,eACE,OAAO5I,QACLM,KAAK0F,UACL1F,KAAK2F,OACL3F,KAAKP,MAGT2H,SACE,MAAMT,EAASE,SAAS7G,KAAK2G,QAE7B,MAAO,IACFuB,OAAOvG,QAAQhC,SAASyH,OAAO9B,KAAKtF,MACvC2G,OAAQ4B,MAAM5B,GAAUA,EAASW,eAAcX,GAC/CJ,KAAMe,eAActH,KAAKsG,cACzBU,MAAOM,eAActH,KAAK+G,eAC1B1B,OAAQiC,eAActH,KAAKqI,mBAKjCpH,QAAS,CACPE,oBACE,MAAMwF,EAASE,SAAS7G,KAAK2G,QAE7B,OAAO4B,MAAM5B,GACT3G,KAAKwI,IAAMxI,KAAKwI,IAAIC,aAAe,EACnC9B,IAIRgB,OAAQK,GACN,MAAM9E,EAAOlD,KAAK0I,mBAAmB1I,KAAK2I,MAAO,CAC/CC,YAAa,WACbC,MAAO7I,KAAKwF,QACZsC,MAAO9H,KAAKoH,SAGd,OAAOY,EAAEhI,KAAK6H,IAAK3E,EAAM4F,eAAQ9I,W,oCChHrC,wCAQe4C,cAAItD,OAAO,CACxBC,KAAM,qBAENwJ,YAAY,EAEZpB,OAAQK,GAAG,MAAEgB,EAAF,UAASC,EAAT,MAAoBzJ,EAApB,KAA2B0D,IACpC,MAAMgG,EAAI7G,OAAO8G,OAAOjG,EAAM,CAC5B0F,aAAc,wBAAuB1F,EAAK0F,aAAe,KAAMQ,OAC/D5J,MAAO,IACFA,EACH6J,MAAM,GAERC,GAAIL,IAGAM,EAAcP,IAAQ5D,QAE5B,OAAO4C,EAAEwB,OAAMN,EAAGK,GAAe,CAACvB,EAAEyB,OAAO,e,8JCRhCvB,cAAO5I,OAAO,CAC3BC,KAAM,YAENC,MAAO,CACLkG,SAAUhG,QACV2F,OAAQ3F,QACR+F,SAAU/F,QACVwG,MAAOxG,QACPgK,SAAUhK,QACVoH,gBAAiB,CACf1B,QAAS,GACTD,KAAM,CAAClC,OAAQF,SAEjB4G,KAAMjK,QACNkK,SAAUlK,QACVmK,UAAWnK,QACXoK,MAAOpK,QACPqK,IAAK,CACH5E,KAAM,CAACpC,OAAQV,QACf+C,QAAS,IAEXyC,IAAK,CACH1C,KAAMpC,OACNqC,QAAS,WAIblC,KAAMA,KAAA,CACJ0D,YAAY,IAGdjH,SAAU,CACRuH,iBACE,MAAMP,EAAS3G,KAAKgG,sBAEpB,IAAKhG,KAAK4G,WAAY,OAAOD,EAE7B,MAAMG,EAAkBD,SAAS7G,KAAK8G,iBAEtC,OAAO9G,KAAKmH,YACRR,EACAA,GAAW4B,MAAMzB,GAAqC,EAAlBA,IAE1Cd,wBACE,OAAIhG,KAAK2G,OAAeE,SAAS7G,KAAK2G,QAClC3G,KAAKqG,aAAerG,KAAKkG,MAAc,GACvClG,KAAKqG,aAAerG,KAAK8J,MAAc,IACvC9J,KAAKqG,YAAoB,IACzBrG,KAAKkG,MAAc,GACnBlG,KAAK8J,OAAS9J,KAAKK,SAAS2J,WAAWC,UAAkB,GACtD,IAETzE,UACE,MAAO,IACF0C,OAAOvG,QAAQhC,SAAS6F,QAAQF,KAAKtF,MACxC,aAAa,EACb,sBAAuBA,KAAK0F,SAC5B,oBAAqB1F,KAAKqF,OAC1B,sBAAuBrF,KAAKyF,SAC5B,uBAAwBzF,KAAKmH,YAC7B,mBAAoBnH,KAAKkG,MACzB,sBAAuBlG,KAAK4G,WAC5B,kBAAmB5G,KAAK2J,KACxB,sBAAuB3J,KAAK4J,SAC5B,uBAAwB5J,KAAKqG,cAGjCc,cACE,OAAOnH,KAAKyF,UAEdY,cACE,OAAOrG,KAAK6J,WAEdzC,SACE,MAAO,IACFpH,KAAKkK,iBACRvD,OAAQW,eAActH,KAAKkH,mBAKjCxG,UACE,MAAMyJ,EAAgB,CACpB,CAAC,MAAO,mBACR,CAAC,gBAAiB,8BAClB,CAAC,eAAgB,4BACjB,CAAC,gBAAiB,6BAClB,CAAC,kBAAmB,+BACpB,CAAC,oBAAqB,iCACtB,CAAC,gBAAiB,6BAClB,CAAC,mBAAoB,gCACrB,CAAC,OAAQ,qBAIXA,EAAcC,QAAQ,EAAEC,EAAUC,MAC5BtK,KAAKuK,OAAOC,eAAeH,IAAWI,eAASJ,EAAUC,EAAatK,SAI9EiB,QAAS,CACPyG,gBACE,MAAMlI,EAAQ,CACZmH,OAAQW,eAActH,KAAKkH,gBAC3B6C,IAAK/J,KAAK+J,KAGNW,EAAQ1K,KAAK2K,aAAaC,IAC5B5K,KAAK2K,aAAaC,IAAI,CAAEpL,UACxBQ,KAAK6K,eAAeC,OAAM,CAAEtL,UAEhC,OAAOQ,KAAK6K,eAAe,MAAO,CAChCjC,YAAa,oBACZ,CAAC8B,KAENK,aACE,OAAO/K,KAAK6K,eAAe,MAAO,CAChCjC,YAAa,qBACbd,MAAO,CACLnB,OAAQW,eAActH,KAAKgG,yBAE5B8C,eAAQ9I,QAEbgL,eACE,OAAOhL,KAAK6K,eAAe,MAAO,CAChCjC,YAAa,uBACbd,MAAO,CACLnB,OAAQW,eAActH,KAAK8G,mBAE5BgC,eAAQ9I,KAAM,gBAIrB2H,OAAQK,GACNhI,KAAK4G,WAAa5G,KAAK0J,YAAc1J,KAAK2K,aAAaM,UAEvD,MAAMC,EAAW,CAAClL,KAAK+K,cACjB7H,EAAOlD,KAAK0I,mBAAmB1I,KAAK2I,MAAO,CAC/CE,MAAO7I,KAAKwF,QACZsC,MAAO9H,KAAKoH,OACZkC,GAAItJ,KAAKmL,aAMX,OAHInL,KAAK4G,YAAYsE,EAASjD,KAAKjI,KAAKgL,iBACpChL,KAAK+J,KAAO/J,KAAK2K,aAAaC,MAAKM,EAASE,QAAQpL,KAAK0H,iBAEtDM,EAAEhI,KAAK6H,IAAK3E,EAAMgI,O,oFCnK7B,kIAGA,MAAMG,EAAevM,eAAuB,mBACtCwM,EAAgBxM,eAAuB,oBACvCyM,EAAYzM,eAAuB,gBACnC0M,EAAa1M,eAAuB,iBAYtC2M,Q,kCClBJ,0EAkBerM,sBACbsM,OACAC,OACAzD,QACA5I,OAAO,CACPC,KAAM,SAENC,MAAO,CACLmK,KAAMjK,QACNkM,MAAOlM,QACPkL,IAAK7H,OACL8I,KAAMnM,QACNoM,aAAc,CACZ3G,KAAM,CAAClC,OAAQF,QACfqC,QAAS,GAEX2G,OAAQrM,SAGVC,SAAU,CACR6F,UACE,MAAO,CACL,UAAU,KACPmG,OAAShK,QAAQhC,SAAS6F,QAAQF,KAAKtF,MAC1C,eAAgBA,KAAK2J,KACrB,gBAAiB3J,KAAK4L,MACtB,eAAgB5L,KAAKgM,YACrB,kBAAmBhM,KAAKiM,QACxB,mBAAoBjM,KAAKkM,SACzB,iBAAkBlM,KAAK+L,UACpB7D,OAAOvG,QAAQhC,SAAS6F,QAAQF,KAAKtF,QAG5CoH,SACE,MAAMU,EAA4B,IAC7BI,OAAOvG,QAAQhC,SAASyH,OAAO9B,KAAKtF,OAOzC,OAJIA,KAAK4K,MACP9C,EAAMqE,WAAa,QAAQnM,KAAK4K,yCAG3B9C,IAIX7G,QAAS,CACPmL,cACE,MAAMzE,EAAS+D,OAAS/J,QAAQV,QAAQmL,YAAY9G,KAAKtF,MAEzD,OAAK2H,EAEE3H,KAAK6K,eAAe,MAAO,CAChCjC,YAAa,mBACbyD,IAAK,YACJ,CAAC1E,IALgB,OASxBA,OAAQK,GACN,MAAM,IAAEH,EAAF,KAAO3E,GAASlD,KAAKsM,oBAS3B,OAPApJ,EAAK4E,MAAQ9H,KAAKoH,OAEdpH,KAAKgM,cACP9I,EAAKqJ,MAAQrJ,EAAKqJ,OAAS,GAC3BrJ,EAAKqJ,MAAMC,SAAW,GAGjBxE,EAAEH,EAAK7H,KAAK0I,mBAAmB1I,KAAK2I,MAAOzF,GAAO,CACvDlD,KAAKoM,cACLtD,eAAQ9I,Y,gFCxFd,gBAaA,MAAMyM,EAAiBC,IACrB,MAAM,YAAEC,EAAF,UAAeC,EAAf,YAA0BC,EAA1B,UAAuCC,GAAcJ,EACrDK,EAAW,GACXC,EAAc,GACpBN,EAAQO,QAAUL,EAAYD,EAC9BD,EAAQQ,QAAUJ,EAAYD,EAE1B9I,KAAKC,IAAI0I,EAAQQ,SAAWH,EAAWhJ,KAAKC,IAAI0I,EAAQO,WAC1DP,EAAQnG,MAASqG,EAAYD,EAAcK,GAAgBN,EAAQnG,KAAKmG,GACxEA,EAAQ1F,OAAU4F,EAAYD,EAAcK,GAAgBN,EAAQ1F,MAAM0F,IAGxE3I,KAAKC,IAAI0I,EAAQO,SAAWF,EAAWhJ,KAAKC,IAAI0I,EAAQQ,WAC1DR,EAAQS,IAAOL,EAAYD,EAAcG,GAAgBN,EAAQS,GAAGT,GACpEA,EAAQU,MAASN,EAAYD,EAAcG,GAAgBN,EAAQU,KAAKV,KAI5E,SAASW,EAAYC,EAAmBZ,GACtC,MAAMa,EAAQD,EAAME,eAAe,GACnCd,EAAQC,YAAcY,EAAME,QAC5Bf,EAAQG,YAAcU,EAAMG,QAE5BhB,EAAQiB,OACNjB,EAAQiB,MAAMtL,OAAO8G,OAAOmE,EAAOZ,IAGvC,SAASkB,EAAUN,EAAmBZ,GACpC,MAAMa,EAAQD,EAAME,eAAe,GACnCd,EAAQE,UAAYW,EAAME,QAC1Bf,EAAQI,UAAYS,EAAMG,QAE1BhB,EAAQmB,KACNnB,EAAQmB,IAAIxL,OAAO8G,OAAOmE,EAAOZ,IAEnCD,EAAcC,GAGhB,SAASoB,EAAWR,EAAmBZ,GACrC,MAAMa,EAAQD,EAAME,eAAe,GACnCd,EAAQqB,WAAaR,EAAME,QAC3Bf,EAAQsB,WAAaT,EAAMG,QAE3BhB,EAAQuB,MAAQvB,EAAQuB,KAAK5L,OAAO8G,OAAOmE,EAAOZ,IAGpD,SAASwB,EAAgBhP,GACvB,MAAMwN,EAAU,CACdC,YAAa,EACbE,YAAa,EACbD,UAAW,EACXE,UAAW,EACXiB,WAAY,EACZC,WAAY,EACZf,QAAS,EACTC,QAAS,EACT3G,KAAMrH,EAAMqH,KACZS,MAAO9H,EAAM8H,MACbmG,GAAIjO,EAAMiO,GACVC,KAAMlO,EAAMkO,KACZO,MAAOzO,EAAMyO,MACbM,KAAM/O,EAAM+O,KACZJ,IAAK3O,EAAM2O,KAGb,MAAO,CACLR,WAAac,GAAkBd,EAAWc,EAAGzB,GAC7CkB,SAAWO,GAAkBP,EAASO,EAAGzB,GACzCoB,UAAYK,GAAkBL,EAAUK,EAAGzB,IAI/C,SAASrL,EAAUC,EAAiBC,EAA8BC,GAChE,MAAMtC,EAAQqC,EAAQrC,MAChB4C,EAAS5C,EAAMkP,OAAS9M,EAAG+M,cAAgB/M,EAC3CK,EAAUzC,EAAMyC,SAAW,CAAEC,SAAS,GAG5C,IAAKE,EAAQ,OAEb,MAAMwM,EAAWJ,EAAe3M,EAAQrC,OACxC4C,EAAOyM,eAAiBlM,OAAOP,EAAOyM,gBACtCzM,EAAOyM,eAAgB/M,EAAMc,QAAS9B,MAAQ8N,EAE9CE,eAAKF,GAAUlE,QAAQqE,IACrB3M,EAAOK,iBAAiBsM,EAAWH,EAASG,GAA6B9M,KAI7E,SAASa,EAAQlB,EAAiBC,EAA8BC,GAC9D,MAAMM,EAASP,EAAQrC,MAAOkP,OAAS9M,EAAG+M,cAAgB/M,EAC1D,IAAKQ,IAAWA,EAAOyM,eAAgB,OAEvC,MAAMD,EAAWxM,EAAOyM,eAAe/M,EAAMc,QAAS9B,MACtDgO,eAAKF,GAAUlE,QAAQqE,IACrB3M,EAAOY,oBAAoB+L,EAAWH,EAASG,aAE1C3M,EAAOyM,eAAe/M,EAAMc,QAAS9B,MAGvC,MAAMkO,EAAQ,CACnBrN,WACAmB,UAGakM,U,kCCvHf,gBAUe9L,cAAItD,OAAO,CACxBC,KAAM,eAEN2D,KAAMA,KAAA,CACJqC,UAAU,IAGZzE,UAIEoB,OAAOyM,sBAAsB,KAC3B3O,KAAKwI,IAAIoG,aAAa,cAAe,QACrC5O,KAAKuF,UAAW,Q,kCCrBtB,4BAIe3C,cAAItD,OAAO,CACxBC,KAAM,SAENC,MAAO,CACLqP,iBAAkB,CAChB1J,KAAM,CAAClC,OAAQF,QACfqC,UAGE,OAAOpF,KAAKK,SACRL,KAAKK,SAAS2J,WAAW6E,sBACzBtM,GAENuM,UAAWC,IACRxG,MAAMtF,OAAO8L,KACd,CAAC,KAAM,KAAM,KAAM,KAAM,MAAMC,SAASjM,OAAOgM,MAKrDpP,SAAU,CACRsP,WACE,MAAM,OACJC,EADI,MAEJC,EAFI,KAGJ5P,EAHI,iBAIJsP,GACE7O,KAAKK,SAAS2J,WAIlB,GAAI6E,IAAqB7O,KAAK6O,iBAAkB,OAAOK,EAEvD,MAAME,EAAcvI,SAAS7G,KAAK6O,iBAAkB,IAC9CQ,GAAY9G,MAAM6G,GAExB,OAAOC,EACHF,EAAQC,EACR7P,IAASS,KAAK6O,mBAItBnO,UAEMV,KAAKuK,OAAOC,eAAe,uBAC7B8E,eAAU,qBAAsB,oBAAqBtP,U,kCCnD3D,wCAgCe4C,cAAItD,SAAiDA,OAAO,CACzEC,KAAM,cAENC,MAAO,CACL+P,YAAa7P,QACb8P,aAAczM,OACd0M,eAAgB,CAACxM,OAAQF,SAG3BG,OACE,MAAO,CACLwM,eAAgB,EAChBC,QAAS,OAIb9P,MAAO,CACL0P,YAAarQ,GACNc,KAAKqD,WAENnE,EAAOc,KAAK4P,gBACX5P,KAAK6P,gBAIdC,gBACE9P,KAAK4P,iBAGP3O,QAAS,CACP8O,gBACE,MAAMJ,EAAU,IAAI/Q,OAAS,CAC3BoR,UAAW,CACTtK,SAAU1F,KAAK0F,SACfxG,OAAO,EACPyJ,MAAO3I,KAAKwP,aACZzH,QAAS/H,KAAKyP,kBAIlBE,EAAQM,SAER,MAAM7B,EAASpO,KAAK0F,SAChB1F,KAAKwI,IAAI0H,WACTlO,SAASC,cAAc,cAE3BmM,GAAUA,EAAO+B,aAAaR,EAAQnH,IAAK4F,EAAOgC,YAElDpQ,KAAK2P,QAAUA,GAEjBE,aAGE,GAFA7P,KAAKqQ,cAEDrQ,KAAKuP,YAgBT,OAdKvP,KAAK2P,SAAS3P,KAAK+P,gBAExB/P,KAAK0P,eAAiBf,sBAAsB,KACrC3O,KAAK2P,eAEgBpN,IAAtBvC,KAAKsQ,aACPtQ,KAAK2P,QAAQY,OAASxN,OAAO/C,KAAKsQ,aAAe,GACxCtQ,KAAKwI,MACdxI,KAAK2P,QAAQY,OAASC,eAAUxQ,KAAKwI,MAGvCxI,KAAK2P,QAAQzQ,OAAQ,MAGhB,GAGT0Q,cAAea,GAAa,GACtBzQ,KAAK2P,UACPe,eAAqB1Q,KAAK2P,QAAQnH,IAAK,gBAAiB,KAEnDxI,KAAK2P,SACL3P,KAAK2P,QAAQnH,KACbxI,KAAK2P,QAAQnH,IAAI0H,aAClBlQ,KAAK2P,QAAQzQ,QACbc,KAAKqD,WAGPrD,KAAK2P,QAAQnH,IAAI0H,WAAWS,YAAY3Q,KAAK2P,QAAQnH,KACrDxI,KAAK2P,QAAQiB,WACb5Q,KAAK2P,QAAU,QAMjBkB,qBAAqB7Q,KAAK0P,gBAE1B1P,KAAK2P,QAAQzQ,OAAQ,GAGvBuR,GAAczQ,KAAKyQ,cAErBK,eAAgB3C,GACd,GAAI,QAASA,EAAG,CACd,GACE,CAAC,QAAS,WAAY,UAAUa,SAAUb,EAAErM,OAAmBiP,UAE9D5C,EAAErM,OAAuBkP,kBAC1B,OAEF,MAAM7D,EAAK,CAAC8D,OAAS9D,GAAI8D,OAASC,QAC5B9D,EAAO,CAAC6D,OAAS7D,KAAM6D,OAASE,UAEtC,GAAIhE,EAAG6B,SAASb,EAAEiD,SACfjD,EAAUkD,QAAU,MAChB,KAAIjE,EAAK4B,SAASb,EAAEiD,SAGzB,OAFCjD,EAAUkD,OAAS,IAMpBlD,EAAErM,SAAW9B,KAAK2P,SACR,YAAXxB,EAAEhJ,MAAsBgJ,EAAErM,SAAWE,SAASsP,MAC/CtR,KAAKuR,UAAUpD,KAAkBA,EAAEqD,kBAEvCC,aAAcnQ,GACZ,IAAKA,GAAMA,EAAGoQ,WAAaC,KAAKC,aAAc,OAAO,EAErD,MAAM9J,EAAQ5F,OAAO2P,iBAAiBvQ,GACtC,OAAS,CAAC,OAAQ,UAAU0N,SAASlH,EAAMgK,YAA8B,WAAfxQ,EAAGyP,UAAyBzP,EAAGyQ,aAAezQ,EAAGmH,cACzG,CAAC,OAAQ,UAAUuG,SAASlH,EAAMkK,YAAgB1Q,EAAG2Q,YAAc3Q,EAAG4Q,aAE1EC,aAAc7Q,EAAa6M,GACzB,GAAI7M,EAAG8Q,aAAa,YAAa,OAAO,EAExC,MAAMC,EAAMlE,EAAEmE,UAAYnE,EAAEoE,OAAS,IAAM,IACrCC,EAAgB,MAARH,EAAclE,EAAEkD,OAASlD,EAAEoE,QAAUpE,EAAEkD,OAErD,IAAIoB,EACAC,EACQ,MAARL,GACFI,EAAkC,IAAjBnR,EAAGuC,UACpB6O,EAAepR,EAAGuC,UAAYvC,EAAGmH,eAAiBnH,EAAGyQ,eAErDU,EAAmC,IAAlBnR,EAAGqR,WACpBD,EAAepR,EAAGqR,WAAarR,EAAG4Q,cAAgB5Q,EAAG2Q,aAGvD,MAAMW,EAAcJ,EAAQ,EACtBK,EAAgBL,EAAQ,EAE9B,QAAKC,IAAkBG,OAClBF,IAAgBG,OAChBJ,IAAkBC,IAAiBpR,EAAG4O,aAClClQ,KAAKmS,aAAa7Q,EAAG4O,WAAuB/B,KAKvD2E,SAAUxR,EAAa8M,GACrB,OAAI9M,IAAO8M,GAEO,OAAP9M,GAAeA,IAAOU,SAASsP,MAGjCtR,KAAK8S,SAASxR,EAAG4O,WAAuB9B,IAGnDmD,UAAWpD,GACT,MAAM4E,EAAOC,eAAa7E,GAE1B,GAAe,YAAXA,EAAEhJ,MAAsB4N,EAAK,KAAO/Q,SAASsP,KAAM,CACrD,MAAM2B,EAASjT,KAAKkT,MAAMD,OAEpBE,EAAWjR,OAAOkR,eAAgBC,WACxC,QAAIJ,GAAUjT,KAAKyR,aAAawB,IAAWjT,KAAK8S,SAASK,EAAUF,MACzDjT,KAAKmS,aAAac,EAAQ9E,GAKtC,IAAK,IAAImF,EAAQ,EAAGA,EAAQP,EAAKnS,OAAQ0S,IAAS,CAChD,MAAMhS,EAAKyR,EAAKO,GAEhB,GAAIhS,IAAOU,SAAU,OAAO,EAC5B,GAAIV,IAAOU,SAASuR,gBAAiB,OAAO,EAC5C,GAAIjS,IAAOtB,KAAKkT,MAAMM,QAAS,OAAO,EAEtC,GAAIxT,KAAKyR,aAAanQ,GAAgB,OAAQtB,KAAKmS,aAAa7Q,EAAe6M,GAGjF,OAAO,GAETkC,aACMrQ,KAAKK,SAAS2J,WAAWC,UAC3BjI,SAASuR,gBAAiBE,UAAUC,IAAI,sBAExCC,eAAwBzR,OAAQ,QAASlC,KAAK8Q,eAAgB,CAAElP,SAAS,IACzEM,OAAOC,iBAAiB,UAAWnC,KAAK8Q,kBAG5CL,aACEzO,SAASuR,gBAAiBE,UAAUG,OAAO,qBAC3C1R,OAAOQ,oBAAoB,QAAS1C,KAAK8Q,gBACzC5O,OAAOQ,oBAAoB,UAAW1C,KAAK8Q,qB,kCCzOjD,sCAWezM,cAAY/E,OAAO,CAChCC,KAAM,SAENC,MAAO,CACLqI,IAAK,CACH1C,KAAMpC,OACNqC,QAAS,SAIbzF,SAAU,CACRyH,SACE,MAAM,IACJX,EADI,IACCoN,EADD,MACM7M,EADN,OACa8M,EADb,YACqBC,EADrB,OACkC1O,EADlC,KAC0CkB,GAC5CvG,KAAKK,SAASC,YAElB,MAAO,CACL0T,WAAeH,EAAMpN,EAAT,KACZwN,aAAiBjN,EAAH,KACdkN,cAAkBJ,EAASC,EAAc1O,EAA1B,KACf8O,YAAgB5N,EAAH,QAKnBoB,OAAQK,GACN,MAAM9E,EAAO,CACX0F,YAAa,SACbd,MAAO9H,KAAKoH,OACZgN,IAAK,QAGP,OAAOpM,EAAEhI,KAAK6H,IAAK3E,EAAM,CACvB8E,EACE,MACA,CAAEY,YAAa,gBACfE,eAAQ9I,a,sNCnBhB,MAAMmE,EAAa/E,eACjBmF,eAAgB,OAAQ,CACtB,WACA,WACA,cACA,gBACA,YACA,QACA,YACA,UAEF8P,OACAC,OACAC,OACAC,OACAnQ,OACAoQ,QAIatQ,SAAW7E,OAAO,CAC/BC,KAAM,sBAENsD,WAAY,CACV6R,oBACAC,cACAjG,cAGFlK,UACE,MAAO,CACLoQ,QAAsB,QAAb5U,KAAK6H,MAIlBrI,MAAO,CACL6F,OAAQ3F,QACRmV,QAASnV,QACToV,qBAAsBpV,QACtBqV,oBAAqBrV,QACrBsV,cAAetV,QACfkK,SAAUlK,QACViH,OAAQ,CACNxB,KAAM,CAAClC,OAAQF,QACfqC,UACE,OAAOpF,KAAKP,IAAM,QAAU,SAGhCwV,YAAavV,QACbwV,iBAAkB,CAChB/P,KAAM,CAAClC,OAAQF,QACfqC,QAAS,IAEX+P,UAAWzV,QACXsH,MAAOtH,QACPqK,IAAK,CACH5E,KAAM,CAACpC,OAAQV,QACf+C,QAAS,IAEXgQ,UAAW1V,QACXmI,IAAK,CACH1C,KAAMpC,OACNqC,UACE,OAAOpF,KAAKP,IAAM,MAAQ,UAG9B4V,UAAW3V,QACX4V,UAAW5V,QACXyP,MAAO,CACLhK,KAAM,CAAClC,OAAQF,QACfqC,QAAS,KAEXlG,MAAO,MAGTgE,KAAMA,KAAA,CACJqS,aAAa,EACbC,UAAW,CACTjP,KAAM,EACNS,MAAO,GAETyO,eAAgB,IAGlB9V,SAAU,CAKRC,sBACE,OAAOI,KAAKgH,MAAQ,QAAU,QAEhCxB,UACE,MAAO,CACL,uBAAuB,EACvB,gCAAiCxF,KAAK0F,SACtC,8BAA+B1F,KAAKqF,OACpC,+BAAgCrF,KAAK6U,QACrC,8BAA+B7U,KAAKqD,SACpC,8BAA+BrD,KAAK0F,WAAa1F,KAAKP,KAAOO,KAAK2F,OAClE,gCAAiC3F,KAAK4J,SACtC,iCAAkC5J,KAAKiP,SACvC,oCAAqCjP,KAAKuV,YAC1C,oCAAqCvV,KAAK0V,cAC1C,2CAA8E,KAAlCzS,OAAOjD,KAAKkV,kBACxD,4BAA6BlV,KAAKqD,SAClC,qCAAsCrD,KAAKgV,cAC3C,6BAA8BhV,KAAKgH,MACnC,iCAAkChH,KAAKqV,aACpCrV,KAAK2V,eAGZC,oBACE,IAAK5V,KAAK6V,OAAQ,OAAO,KAEzB,MAAMD,EACJ5V,KAAKK,SAASC,YAAY+E,OAC1BrF,KAAKK,SAASC,YAAYwT,OAC1B9T,KAAKK,SAASC,YAAYmG,IAG5B,OAAKzG,KAAK6U,QAEHe,EAAoB5V,KAAKK,SAASC,YAAYuT,IAF3B+B,GAI5BE,cACE,IAAK9V,KAAK6V,OAAQ,OAAO,EAEzB,IAAIC,EAAc9V,KAAKK,SAASC,YAAYmG,IAM5C,OAJAqP,GAAe9V,KAAK6U,QAChB7U,KAAKK,SAASC,YAAYuT,IAC1B,EAEGiC,GAET7O,oBACE,OAAIjH,KAAKqD,SAAiB,EACtBrD,KAAK+V,UACF/V,KAAKgH,MADc,KACC,KAE7BgP,gBACE,OAAOhW,KAAK0V,cAAgB1V,KAAKkV,iBAAmBlV,KAAKmP,OAE3D0G,SACE,OACE7V,KAAKP,MACHO,KAAKiP,WAAajP,KAAKqV,WAG7BU,WACE,OAAO/V,KAAKqF,QAAUrF,KAAKiP,UAE7ByG,gBACE,OACG1V,KAAKgV,eACNhV,KAAKiV,aAELjV,KAAKgV,gBACJhV,KAAKuV,aAGVtG,WACE,OACGjP,KAAKoV,YACLpV,KAAKmV,WACNZ,OAAO5S,QAAQhC,SAASsP,SAAS3J,KAAKtF,OAG1CiW,gBACE,OACGjW,KAAKoV,YACLpV,KAAKmV,YACLnV,KAAKiP,UAAYjP,KAAKqV,YAG3Ba,iBACE,OACElW,KAAKP,MACJO,KAAK8U,uBACL9U,KAAKmV,YACLnV,KAAKoV,YACLpV,KAAKqV,WAGVc,iBACE,OAAQnW,KAAK8U,uBAAyB9U,KAAKoV,WAE7CgB,gBACE,OACGpW,KAAK+U,sBACL/U,KAAKoV,YACLpV,KAAKqV,WAAarV,KAAKiP,WAG5BoH,cACE,OACGrW,KAAKuP,aACNvP,KAAKqD,WACJrD,KAAKiP,UAAYjP,KAAKqV,YAG3BjO,SACE,MAAMkP,EAAYtW,KAAK+V,SAAW,aAAe,aACjD,MAAO,CACLpP,OAAQW,eAActH,KAAK2G,QAC3BkN,IAAM7T,KAAK+V,SAA6C,OAAlCzO,eAActH,KAAK8V,aACzCS,UAAqC,MAA1BvW,KAAK4V,kBACZ,eAAetO,eAActH,KAAK4V,2BAClCrT,EACJiF,UAAW,GAAG8O,KAAahP,eAActH,KAAKiH,kBAAmB,QACjEkI,MAAO7H,eAActH,KAAKgW,kBAKhCnW,MAAO,CACL2W,OAAQ,gBACRnT,SAAUoE,GACRzH,KAAKyW,MAAM,QAAShP,IAMtBwH,SAAUxH,EAAK1H,IACZ0H,GACCzH,KAAKqD,WACJrD,KAAKqV,WACNrV,KAAK4P,gBAEK,MAAR7P,GACDC,KAAKmW,gBACLnW,KAAKkW,iBAGRlW,KAAKqD,UAAYoE,IAEnB0N,UAAW1N,GAELA,IAAKzH,KAAKqD,UAAW,IAE3BgT,YAAa5O,GACPA,EAAKzH,KAAK6P,aACT7P,KAAK4P,iBAEZ1Q,MAAOuI,GACDzH,KAAKmV,YAEE,MAAP1N,EAKAA,IAAQzH,KAAKqD,WAAUrD,KAAKqD,SAAWoE,GAJzCzH,KAAK0W,SAMT1B,cAAe,oBACfO,YAAa9N,GACXzH,KAAK2W,mBAAmBlP,KAI5BmP,cACE5W,KAAK0W,QAGPzV,QAAS,CACP4V,qBACE,MAAMzI,EAASpO,KAAKwI,IAAI0H,WAExB,IAAK9B,EAAQ,OAEb,MAAM0I,EAAa1I,EAAO2I,wBAE1B/W,KAAKwV,UAAY,CACfjP,KAAMuQ,EAAWvQ,KAAO,GACxBS,MAAO8P,EAAW9P,MAAQ,KAG9BgQ,mBACE,OAAOhX,KAAKqD,WAAarD,KAAKiX,cAAgBjX,KAAKiW,eAErDiB,YACE,OAAOlX,KAAKmX,YAAY,WAE1BzP,gBACE,MAAMlI,EAAQ,CACZmH,OAAQ,OACRwI,MAAO,OACPpF,IAAK/J,KAAK+J,KAGNW,EAAQ1K,KAAK2K,aAAaC,IAC5B5K,KAAK2K,aAAaC,IAAIpL,GACtBQ,KAAK6K,eAAeC,OAAM,CAAEtL,UAEhC,OAAOQ,KAAK6K,eAAe,MAAO,CAChCjC,YAAa,8BACZ,CAAC8B,KAEN0M,gBACE,MAAMvU,EAAa,CAAC,CAClBtD,KAAM,gBACNL,MAAO,CACL2C,QAASA,KAAQ7B,KAAKqD,UAAW,GACjC2T,iBAAkBhX,KAAKgX,iBACvBK,QAASrX,KAAKsX,4BAelB,OAXKtX,KAAKsV,WAActV,KAAKoV,WAC3BvS,EAAWoF,KAAK,CACd1I,KAAM,QACNL,MAAO,CACLkP,QAAQ,EACR7H,KAAMvG,KAAKuX,UACXvQ,MAAOhH,KAAKwX,cAKX3U,GAET4U,eACE,MAAMnO,EAAyC,CAC7CoO,WAAYA,IAAO1X,KAAKuV,aAAc,EACtCoC,WAAYA,IAAO3X,KAAKuV,aAAc,EACtCqC,cAAgBzJ,IACd,GAAIA,EAAErM,SAAWqM,EAAE0J,cAAe,OAClC7X,KAAKyW,MAAM,gBAAiBtI,GAG5B,MAAM2J,EAAc9V,SAAS+V,YAAY,YACzCD,EAAYE,YAAY,UAAU,GAAM,EAAO9V,OAAQ,GACvDA,OAAO+V,cAAcH,KAQzB,OAJI9X,KAAKiV,cACP3L,EAAG4O,MAAQ,IAAMlY,KAAKyW,MAAM,uBAAuB,IAG9CnN,GAET6N,YAAa5X,GACX,MAAM4Y,EAAOrP,eAAQ9I,KAAMT,GAE3B,OAAK4Y,EAEEnY,KAAK6K,eAAe,MAAO,CAChCjC,YAAa,wBAAwBrJ,GACpC4Y,GAJeA,GAMpBC,aACE,OAAOpY,KAAKmX,YAAY,YAE1BpM,aACE,OAAO/K,KAAK6K,eAAe,MAAO,CAChCjC,YAAa,gCACZE,eAAQ9I,QAEbqY,YACE,OAAOrY,KAAK6K,eAAe,MAAO,CAChCjC,YAAa,iCAGjB8N,OACM1W,KAAKmV,UACPnV,KAAKqD,UAAW,EACPrD,KAAKoV,WACA,MAAdpV,KAAKd,MAELc,KAAKqD,SAAWrD,KAAKd,MACXc,KAAKqV,YACfrV,KAAKqD,UAAYrD,KAAKiP,WAG1BqJ,gBACMtY,KAAKoW,eAAiBpW,KAAKgX,qBAC7BhX,KAAKqD,UAAW,IAGpBkU,UAAWpJ,GACLnO,KAAKqD,UAAYrD,KAAKgH,QAC1BhH,KAAK6W,qBAED9S,KAAKC,IAAImK,EAAEvB,UAAYuB,EAAExB,aAAe,MACxC3M,KAAKgH,OACPmH,EAAExB,aAAe3M,KAAKwV,UAAUxO,MAChChH,KAAKqD,UAAW,GACRrD,KAAKgH,OAAShH,KAAKqD,WAAUrD,KAAKqD,UAAW,MAEzDmU,WAAYrJ,GACNnO,KAAKqD,WAAarD,KAAKgH,QAC3BhH,KAAK6W,qBAED9S,KAAKC,IAAImK,EAAEvB,UAAYuB,EAAExB,aAAe,OACvC3M,KAAKgH,OACRmH,EAAExB,aAAe3M,KAAKwV,UAAUjP,KAChCvG,KAAKqD,UAAW,EACTrD,KAAKgH,OAAShH,KAAKqD,WAAUrD,KAAKqD,UAAW,MAKxDlC,oBACE,IACGnB,KAAKqD,UACNrD,KAAKiP,UACLjP,KAAKqV,YACJrV,KAAKwI,IACN,OAAO,EAET,MAAM2G,EAAQlM,OAAOjD,KAAKiV,YAAcjV,KAAKkV,iBAAmBlV,KAAKmP,OAErE,OAAO5G,MAAM4G,GAASnP,KAAKwI,IAAI0J,YAAc/C,GAE/CwH,kBAAmBlP,GACbzH,KAAKgV,eAAiBhV,KAAKiV,cAAgBxN,GAAKzH,KAAKyW,MAAM,sBAAuBhP,KAI1FE,OAAQK,GACN,MAAMkD,EAAW,CACflL,KAAKoY,aACLpY,KAAK+K,aACL/K,KAAKkX,YACLlX,KAAKqY,aAKP,OAFIrY,KAAK+J,KAAOjB,eAAQ9I,KAAM,SAAQkL,EAASE,QAAQpL,KAAK0H,iBAErDM,EAAEhI,KAAK6H,IAAK7H,KAAK0I,mBAAmB1I,KAAK2I,MAAO,CACrDE,MAAO7I,KAAKwF,QACZsC,MAAO9H,KAAKoH,OACZvE,WAAY7C,KAAKoX,gBACjB9N,GAAItJ,KAAKyX,iBACPvM","file":"js/chunk-4dda817b.1f164f12.js","sourcesContent":["import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","// Components\nimport VToolbar from './VToolbar'\n\n// Utilities\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title')\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items')\n\nexport {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n },\n}\n","import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","import { factory as PositionableFactory } from '../positionable'\nimport { TargetProp } from 'vuetify/types/services/application'\n\n// Util\nimport mixins from '../../util/mixins'\n\nexport default function applicationable (value: TargetProp, events: string[] = []) {\n /* @vue/component */\n return mixins(PositionableFactory(['absolute', 'fixed'])).extend({\n name: 'applicationable',\n\n props: {\n app: Boolean,\n },\n\n computed: {\n applicationProperty (): TargetProp {\n return value\n },\n },\n\n watch: {\n // If previous value was app\n // reset the provided prop\n app (x: boolean, prev: boolean) {\n prev\n ? this.removeApplication(true)\n : this.callUpdate()\n },\n applicationProperty (newVal, oldVal) {\n this.$vuetify.application.unregister(this._uid, oldVal)\n },\n },\n\n activated () {\n this.callUpdate()\n },\n\n created () {\n for (let i = 0, length = events.length; i < length; i++) {\n this.$watch(events[i], this.callUpdate)\n }\n this.callUpdate()\n },\n\n mounted () {\n this.callUpdate()\n },\n\n deactivated () {\n this.removeApplication()\n },\n\n destroyed () {\n this.removeApplication()\n },\n\n methods: {\n callUpdate () {\n if (!this.app) return\n\n this.$vuetify.application.register(\n this._uid,\n this.applicationProperty,\n this.updateApplication()\n )\n },\n removeApplication (force = false) {\n if (!force && !this.app) return\n\n this.$vuetify.application.unregister(\n this._uid,\n this.applicationProperty\n )\n },\n updateApplication: () => 0,\n },\n })\n}\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { DirectiveOptions, VNode } from 'vue'\n\ninterface ScrollVNodeDirective extends Omit {\n value: EventListener | {\n handler: EventListener\n options?: boolean | AddEventListenerOptions\n } | EventListenerObject & { options?: boolean | AddEventListenerOptions }\n modifiers?: {\n self?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n const { self = false } = binding.modifiers || {}\n const value = binding.value\n const options = (typeof value === 'object' && value.options) || { passive: true }\n const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler\n\n const target = self\n ? el\n : binding.arg\n ? document.querySelector(binding.arg)\n : window\n\n if (!target) return\n\n target.addEventListener('scroll', handler, options)\n\n el._onScroll = Object(el._onScroll)\n el._onScroll![vnode.context!._uid] = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target,\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n if (!el._onScroll?.[vnode.context!._uid]) return\n\n const { handler, options, target = el } = el._onScroll[vnode.context!._uid]!\n\n target.removeEventListener('scroll', handler, options)\n delete el._onScroll[vnode.context!._uid]\n}\n\nexport const Scroll = {\n inserted,\n unbind,\n} as DirectiveOptions\n\nexport default Scroll\n","// Directives\nimport { Scroll } from '../../directives'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\n/**\n * Scrollable\n *\n * Used for monitoring scrolling and\n * invoking functions based upon\n * scrolling thresholds being\n * met.\n */\n/* @vue/component */\nexport default Vue.extend({\n name: 'scrollable',\n\n directives: { Scroll },\n\n props: {\n scrollTarget: String,\n scrollThreshold: [String, Number],\n },\n\n data: () => ({\n currentScroll: 0,\n currentThreshold: 0,\n isActive: false,\n isScrollingUp: false,\n previousScroll: 0,\n savedScroll: 0,\n target: null as Element | null,\n }),\n\n computed: {\n /**\n * A computed property that returns\n * whether scrolling features are\n * enabled or disabled\n */\n canScroll (): boolean {\n return typeof window !== 'undefined'\n },\n /**\n * The threshold that must be met before\n * thresholdMet function is invoked\n */\n computedScrollThreshold (): number {\n return this.scrollThreshold\n ? Number(this.scrollThreshold)\n : 300\n },\n },\n\n watch: {\n isScrollingUp () {\n this.savedScroll = this.savedScroll || this.currentScroll\n },\n isActive () {\n this.savedScroll = 0\n },\n },\n\n mounted () {\n if (this.scrollTarget) {\n this.target = document.querySelector(this.scrollTarget)\n\n if (!this.target) {\n consoleWarn(`Unable to locate element with identifier ${this.scrollTarget}`, this)\n }\n }\n },\n\n methods: {\n onScroll () {\n if (!this.canScroll) return\n\n this.previousScroll = this.currentScroll\n this.currentScroll = this.target\n ? this.target.scrollTop\n : window.pageYOffset\n\n this.isScrollingUp = this.currentScroll < this.previousScroll\n this.currentThreshold = Math.abs(this.currentScroll - this.computedScrollThreshold)\n\n this.$nextTick(() => {\n if (\n Math.abs(this.currentScroll - this.savedScroll) >\n this.computedScrollThreshold\n ) this.thresholdMet()\n })\n },\n /**\n * The method invoked when\n * scrolling in any direction\n * has exceeded the threshold\n */\n thresholdMet () { /* noop */ },\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 hideOnScroll (val: boolean) {\n this.isActive = !val || this.currentScroll < this.computedScrollThreshold\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","// Styles\nimport './VFooter.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit, getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue/types/vnode'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Applicationable('footer', [\n 'height',\n 'inset',\n ]),\n SSRBootable\n).extend({\n name: 'v-footer',\n\n props: {\n height: {\n default: 'auto',\n type: [Number, String],\n },\n inset: Boolean,\n padless: Boolean,\n tag: {\n type: String,\n default: 'footer',\n },\n },\n\n computed: {\n applicationProperty (): string {\n return this.inset ? 'insetFooter' : 'footer'\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-footer--absolute': this.absolute,\n 'v-footer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-footer--padless': this.padless,\n 'v-footer--inset': this.inset,\n }\n },\n computedBottom (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app\n ? this.$vuetify.application.bottom\n : 0\n },\n computedLeft (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.left\n : 0\n },\n computedRight (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.right\n : 0\n },\n isPositioned (): boolean {\n return Boolean(\n this.absolute ||\n this.fixed ||\n this.app\n )\n },\n styles (): object {\n const height = parseInt(this.height)\n\n return {\n ...VSheet.options.computed.styles.call(this),\n height: isNaN(height) ? height : convertToUnit(height),\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n bottom: convertToUnit(this.computedBottom),\n }\n },\n },\n\n methods: {\n updateApplication () {\n const height = parseInt(this.height)\n\n return isNaN(height)\n ? this.$el ? this.$el.clientHeight : 0\n : height\n },\n },\n\n render (h): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-footer',\n class: this.classes,\n style: this.styles,\n })\n\n return h(this.tag, data, getSlot(this))\n },\n})\n","// Components\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn/VBtn'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-app-bar-nav-icon',\n\n functional: true,\n\n render (h, { slots, listeners, props, data }) {\n const d = Object.assign(data, {\n staticClass: (`v-app-bar__nav-icon ${data.staticClass || ''}`).trim(),\n props: {\n ...props,\n icon: true,\n },\n on: listeners,\n })\n\n const defaultSlot = slots().default\n\n return h(VBtn, d, defaultSlot || [h(VIcon, '$menu')])\n },\n})\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 VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n getSlot(this),\n ])\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","import Vue from 'vue'\n\n/**\n * SSRBootable\n *\n * @mixin\n *\n * Used in layout components (drawer, toolbar, content)\n * to avoid an entry animation when using SSR\n */\nexport default Vue.extend({\n name: 'ssr-bootable',\n\n data: () => ({\n isBooted: false,\n }),\n\n mounted () {\n // Use setAttribute instead of dataset\n // because dataset does not work well\n // with unit tests\n window.requestAnimationFrame(() => {\n this.$el.setAttribute('data-booted', 'true')\n this.isBooted = true\n })\n },\n})\n","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\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 this.isActive\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 ('key' in e) {\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 as WheelEvent)) 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.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd) && el.parentNode) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\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 = composedPath(e)\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, e)\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, e)\n }\n\n return true\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, { passive: false })\n window.addEventListener('keydown', this.scrollListener)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener)\n window.removeEventListener('keydown', this.scrollListener)\n },\n },\n})\n","// Styles\nimport './VMain.sass'\n\n// Mixins\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default SSRBootable.extend({\n name: 'v-main',\n\n props: {\n tag: {\n type: String,\n default: 'main',\n },\n },\n\n computed: {\n styles (): object {\n const {\n bar, top, right, footer, insetFooter, bottom, left,\n } = this.$vuetify.application\n\n return {\n paddingTop: `${top + bar}px`,\n paddingRight: `${right}px`,\n paddingBottom: `${footer + insetFooter + bottom}px`,\n paddingLeft: `${left}px`,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-main',\n style: this.styles,\n ref: 'main',\n }\n\n return h(this.tag, data, [\n h(\n 'div',\n { staticClass: 'v-main__wrap' },\n getSlot(this),\n ),\n ])\n },\n})\n","// Styles\nimport './VNavigationDrawer.sass'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Colorable from '../../mixins/colorable'\nimport Dependent from '../../mixins/dependent'\nimport Mobile from '../../mixins/mobile'\nimport Overlayable from '../../mixins/overlayable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeDirective, PropType } from 'vue'\nimport { TouchWrapper } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Applicationable('left', [\n 'isActive',\n 'isMobile',\n 'miniVariant',\n 'expandOnHover',\n 'permanent',\n 'right',\n 'temporary',\n 'width',\n ]),\n Colorable,\n Dependent,\n Mobile,\n Overlayable,\n SSRBootable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-navigation-drawer',\n\n directives: {\n ClickOutside,\n Resize,\n Touch,\n },\n\n provide (): object {\n return {\n isInNav: this.tag === 'nav',\n }\n },\n\n props: {\n bottom: Boolean,\n clipped: Boolean,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default (): string {\n return this.app ? '100vh' : '100%'\n },\n },\n miniVariant: Boolean,\n miniVariantWidth: {\n type: [Number, String],\n default: 56,\n },\n permanent: Boolean,\n right: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n stateless: Boolean,\n tag: {\n type: String,\n default (): string {\n return this.app ? 'nav' : 'aside'\n },\n },\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n value: null as unknown as PropType,\n },\n\n data: () => ({\n isMouseover: false,\n touchArea: {\n left: 0,\n right: 0,\n },\n stackMinZIndex: 6,\n }),\n\n computed: {\n /**\n * Used for setting an app value from a dynamic\n * property. Called from applicationable.js\n */\n applicationProperty (): string {\n return this.right ? 'right' : 'left'\n },\n classes (): object {\n return {\n 'v-navigation-drawer': true,\n 'v-navigation-drawer--absolute': this.absolute,\n 'v-navigation-drawer--bottom': this.bottom,\n 'v-navigation-drawer--clipped': this.clipped,\n 'v-navigation-drawer--close': !this.isActive,\n 'v-navigation-drawer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-navigation-drawer--floating': this.floating,\n 'v-navigation-drawer--is-mobile': this.isMobile,\n 'v-navigation-drawer--is-mouseover': this.isMouseover,\n 'v-navigation-drawer--mini-variant': this.isMiniVariant,\n 'v-navigation-drawer--custom-mini-variant': Number(this.miniVariantWidth) !== 56,\n 'v-navigation-drawer--open': this.isActive,\n 'v-navigation-drawer--open-on-hover': this.expandOnHover,\n 'v-navigation-drawer--right': this.right,\n 'v-navigation-drawer--temporary': this.temporary,\n ...this.themeClasses,\n }\n },\n computedMaxHeight (): number | null {\n if (!this.hasApp) return null\n\n const computedMaxHeight = (\n this.$vuetify.application.bottom +\n this.$vuetify.application.footer +\n this.$vuetify.application.bar\n )\n\n if (!this.clipped) return computedMaxHeight\n\n return computedMaxHeight + this.$vuetify.application.top\n },\n computedTop (): number {\n if (!this.hasApp) return 0\n\n let computedTop = this.$vuetify.application.bar\n\n computedTop += this.clipped\n ? this.$vuetify.application.top\n : 0\n\n return computedTop\n },\n computedTransform (): number {\n if (this.isActive) return 0\n if (this.isBottom) return 100\n return this.right ? 100 : -100\n },\n computedWidth (): string | number {\n return this.isMiniVariant ? this.miniVariantWidth : this.width\n },\n hasApp (): boolean {\n return (\n this.app &&\n (!this.isMobile && !this.temporary)\n )\n },\n isBottom (): boolean {\n return this.bottom && this.isMobile\n },\n isMiniVariant (): boolean {\n return (\n !this.expandOnHover &&\n this.miniVariant\n ) || (\n this.expandOnHover &&\n !this.isMouseover\n )\n },\n isMobile (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n Mobile.options.computed.isMobile.call(this)\n )\n },\n reactsToClick (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n (this.isMobile || this.temporary)\n )\n },\n reactsToMobile (): boolean {\n return (\n this.app &&\n !this.disableResizeWatcher &&\n !this.permanent &&\n !this.stateless &&\n !this.temporary\n )\n },\n reactsToResize (): boolean {\n return !this.disableResizeWatcher && !this.stateless\n },\n reactsToRoute (): boolean {\n return (\n !this.disableRouteWatcher &&\n !this.stateless &&\n (this.temporary || this.isMobile)\n )\n },\n showOverlay (): boolean {\n return (\n !this.hideOverlay &&\n this.isActive &&\n (this.isMobile || this.temporary)\n )\n },\n styles (): object {\n const translate = this.isBottom ? 'translateY' : 'translateX'\n return {\n height: convertToUnit(this.height),\n top: !this.isBottom ? convertToUnit(this.computedTop) : 'auto',\n maxHeight: this.computedMaxHeight != null\n ? `calc(100% - ${convertToUnit(this.computedMaxHeight)})`\n : undefined,\n transform: `${translate}(${convertToUnit(this.computedTransform, '%')})`,\n width: convertToUnit(this.computedWidth),\n }\n },\n },\n\n watch: {\n $route: 'onRouteChange',\n isActive (val) {\n this.$emit('input', val)\n },\n /**\n * When mobile changes, adjust the active state\n * only when there has been a previous value\n */\n isMobile (val, prev) {\n !val &&\n this.isActive &&\n !this.temporary &&\n this.removeOverlay()\n\n if (prev == null ||\n !this.reactsToResize ||\n !this.reactsToMobile\n ) return\n\n this.isActive = !val\n },\n permanent (val) {\n // If enabling prop enable the drawer\n if (val) this.isActive = true\n },\n showOverlay (val) {\n if (val) this.genOverlay()\n else this.removeOverlay()\n },\n value (val) {\n if (this.permanent) return\n\n if (val == null) {\n this.init()\n return\n }\n\n if (val !== this.isActive) this.isActive = val\n },\n expandOnHover: 'updateMiniVariant',\n isMouseover (val) {\n this.updateMiniVariant(!val)\n },\n },\n\n beforeMount () {\n this.init()\n },\n\n methods: {\n calculateTouchArea () {\n const parent = this.$el.parentNode as Element\n\n if (!parent) return\n\n const parentRect = parent.getBoundingClientRect()\n\n this.touchArea = {\n left: parentRect.left + 50,\n right: parentRect.right - 50,\n }\n },\n closeConditional () {\n return this.isActive && !this._isDestroyed && this.reactsToClick\n },\n genAppend () {\n return this.genPosition('append')\n },\n genBackground () {\n const props = {\n height: '100%',\n width: '100%',\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-navigation-drawer__image',\n }, [image])\n },\n genDirectives (): VNodeDirective[] {\n const directives = [{\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n }]\n\n if (!this.touchless && !this.stateless) {\n directives.push({\n name: 'touch',\n value: {\n parent: true,\n left: this.swipeLeft,\n right: this.swipeRight,\n },\n } as any)\n }\n\n return directives\n },\n genListeners () {\n const on: Record void> = {\n mouseenter: () => (this.isMouseover = true),\n mouseleave: () => (this.isMouseover = false),\n transitionend: (e: Event) => {\n if (e.target !== e.currentTarget) return\n this.$emit('transitionend', e)\n\n // IE11 does not support new Event('resize')\n const resizeEvent = document.createEvent('UIEvents')\n resizeEvent.initUIEvent('resize', true, false, window, 0)\n window.dispatchEvent(resizeEvent)\n },\n }\n\n if (this.miniVariant) {\n on.click = () => this.$emit('update:mini-variant', false)\n }\n\n return on\n },\n genPosition (name: 'prepend' | 'append') {\n const slot = getSlot(this, name)\n\n if (!slot) return slot\n\n return this.$createElement('div', {\n staticClass: `v-navigation-drawer__${name}`,\n }, slot)\n },\n genPrepend () {\n return this.genPosition('prepend')\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__content',\n }, getSlot(this))\n },\n genBorder () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__border',\n })\n },\n init () {\n if (this.permanent) {\n this.isActive = true\n } else if (this.stateless ||\n this.value != null\n ) {\n this.isActive = this.value\n } else if (!this.temporary) {\n this.isActive = !this.isMobile\n }\n },\n onRouteChange () {\n if (this.reactsToRoute && this.closeConditional()) {\n this.isActive = false\n }\n },\n swipeLeft (e: TouchWrapper) {\n if (this.isActive && this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (this.right &&\n e.touchstartX >= this.touchArea.right\n ) this.isActive = true\n else if (!this.right && this.isActive) this.isActive = false\n },\n swipeRight (e: TouchWrapper) {\n if (this.isActive && !this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (!this.right &&\n e.touchstartX <= this.touchArea.left\n ) this.isActive = true\n else if (this.right && this.isActive) this.isActive = false\n },\n /**\n * Update the application layout\n */\n updateApplication () {\n if (\n !this.isActive ||\n this.isMobile ||\n this.temporary ||\n !this.$el\n ) return 0\n\n const width = Number(this.miniVariant ? this.miniVariantWidth : this.width)\n\n return isNaN(width) ? this.$el.clientWidth : width\n },\n updateMiniVariant (val: boolean) {\n if (this.expandOnHover && this.miniVariant !== val) this.$emit('update:mini-variant', val)\n },\n },\n\n render (h): VNode {\n const children = [\n this.genPrepend(),\n this.genContent(),\n this.genAppend(),\n this.genBorder(),\n ]\n\n if (this.src || getSlot(this, 'img')) children.unshift(this.genBackground())\n\n return h(this.tag, this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n directives: this.genDirectives(),\n on: this.genListeners(),\n }), children)\n },\n})\n"],"sourceRoot":""}