{"version":3,"sources":["webpack:///../../../src/mixins/applicationable/index.ts","webpack:///../../../src/directives/touch/index.ts","webpack:///../../../src/components/VNavigationDrawer/VNavigationDrawer.ts","webpack:///./src/components/layout/AppHeader.vue","webpack:///./src/services/api/user.js","webpack:///src/components/layout/AppHeader.vue","webpack:///./src/components/layout/AppHeader.vue?1db9","webpack:///./src/components/layout/AppHeader.vue?2c37","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/components/VOverlay/VOverlay.ts","webpack:///../../../src/components/VOverlay/index.ts","webpack:///../../../src/mixins/overlayable/index.ts"],"names":["applicationable","value","events","arguments","length","undefined","mixins","PositionableFactory","extend","name","props","app","Boolean","computed","applicationProperty","watch","x","prev","this","removeApplication","callUpdate","newVal","oldVal","$vuetify","application","unregister","_uid","activated","created","i","$watch","mounted","deactivated","destroyed","methods","register","updateApplication","force","handleGesture","wrapper","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","offsetX","offsetY","Math","abs","left","right","up","down","touchstart","event","touch","changedTouches","clientX","clientY","start","Object","assign","touchend","end","touchmove","touchmoveX","touchmoveY","move","createHandlers","e","inserted","el","binding","vnode","target","parent","parentElement","options","passive","handlers","_touchHandlers","context","keys","forEach","eventName","addEventListener","unbind","removeEventListener","Touch","baseMixins","Applicationable","Colorable","Dependent","Mobile","Overlayable","SSRBootable","Themeable","directives","ClickOutside","Resize","provide","isInNav","tag","bottom","clipped","disableResizeWatcher","disableRouteWatcher","expandOnHover","floating","height","type","Number","String","default","miniVariant","miniVariantWidth","permanent","src","stateless","temporary","touchless","width","data","isMouseover","touchArea","stackMinZIndex","classes","_objectSpread","absolute","isActive","fixed","isMobile","isMiniVariant","themeClasses","computedMaxHeight","hasApp","footer","bar","top","computedTop","computedTransform","isBottom","computedWidth","call","reactsToClick","reactsToMobile","reactsToResize","reactsToRoute","showOverlay","hideOverlay","styles","translate","convertToUnit","maxHeight","concat","transform","$route","val","$emit","removeOverlay","genOverlay","init","updateMiniVariant","beforeMount","calculateTouchArea","$el","parentNode","parentRect","getBoundingClientRect","closeConditional","_isDestroyed","genAppend","genPosition","genBackground","image","$scopedSlots","img","$createElement","VImg","staticClass","genDirectives","_this","handler","include","getOpenDependentElements","push","swipeLeft","swipeRight","genListeners","_this2","on","mouseenter","mouseleave","transitionend","currentTarget","resizeEvent","document","createEvent","initUIEvent","window","dispatchEvent","click","slot","getSlot","genPrepend","genContent","genBorder","onRouteChange","isNaN","clientWidth","render","h","children","unshift","setBackgroundColor","color","class","style","attrs","_c","model","_vm","callback","$set","user","expression","_v","key","path","staticRenderFns","UserService","_classCallCheck","_createClass","_getUser","_asyncToGenerator","regeneratorRuntime","mark","_callee","response","wrap","_context","next","apiClient","getWithCache","cacheDuration","sent","abrupt","stop","getUser","apply","topLevelItems","$router","routes","filter","r","topLevel","route","items","icon","title","userService","then","catch","error","console","log","dialog","drawer","onClientChanged","ApiClient","setClientID","clientID","go","component","Measurable","aspectRatio","contentClass","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","measurableStyles","$listeners","VResponsive","hasIntersect","intersect","alt","contain","eager","gradient","lazySrc","root","rootMargin","threshold","position","sizes","srcset","transition","currentSrc","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","_typeof","__cachedImage","backgroundImage","join","backgroundPosition","mode","loadImage","entries","observer","isIntersecting","lazyImg","Image","pollForSize","onLoad","getSrc","endsWith","startsWith","naturalHeight","onError","onload","decode","err","consoleWarn","message","onerror","timeout","poll","complete","setTimeout","content","_b","__genPlaceholder","placeholder","appear","node","mergeData","role","modifiers","once","Toggleable","dark","opacity","zIndex","__scrim","computedOpacity","VOverlay","Vue","overlayColor","overlayOpacity","animationFrame","overlay","beforeDestroy","createOverlay","propsData","$mount","querySelector","insertBefore","firstChild","hideScroll","requestAnimationFrame","activeZIndex","getZIndex","showScroll","addOnceEventListener","removeChild","$destroy","cancelAnimationFrame","scrollListener","includes","tagName","isContentEditable","keyCodes","pageup","pagedown","keyCode","deltaY","body","checkPath","preventDefault","hasScrollbar","nodeType","Node","ELEMENT_NODE","getComputedStyle","overflowY","scrollHeight","clientHeight","overflowX","scrollWidth","shouldScroll","hasAttribute","alreadyAtStart","alreadyAtEnd","dir","shiftKey","deltaX","delta","scrollTop","scrollLeft","scrollingUp","scrollingDown","isInside","composedPath","$refs","selected","getSelection","anchorNode","index","documentElement","breakpoint","smAndDown","classList","add","addPassiveEventListener","remove"],"mappings":"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","file":"js/chunk-095e1fd5.31480b28.js","sourcesContent":["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, 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 './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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-navigation-drawer',{staticClass:\"mx-auto mr-6\",attrs:{\"width\":\"220\",\"color\":\"primary lighten-4\",\"permanent\":\"\",\"app\":\"\"}},[_c('v-list-item',{attrs:{\"two-line\":\"\"}},[_c('v-list-item-avatar',{attrs:{\"color\":\"white\"}},[_c('v-img',{attrs:{\"src\":\"https://cdn.vuetifyjs.com/images/logos/v.png\",\"height\":\"34\",\"contain\":\"\"}})],1),_c('v-list-item-title',{staticClass:\"title\"},[_vm._v(\"\\n MarketScout\\n \")])],1),(_vm.user?.canAccessClients.length > 1)?_c('v-select',{attrs:{\"items\":_vm.user.canAccessClients,\"item-text\":\"clientName\",\"item-value\":\"clientID\",\"label\":\"Select Client\",\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":_vm.onClientChanged},model:{value:(_vm.user.clientID),callback:function ($$v) {_vm.$set(_vm.user, \"clientID\", $$v)},expression:\"user.clientID\"}}):(_vm.user?.clientName)?_c('v-chip',{staticClass:\"mx-2 mb-1\",attrs:{\"color\":\"cyan\",\"label\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.user?.clientName)+\"\\n \")]):_vm._e(),(_vm.user?.username)?_c('v-chip',{staticClass:\"mx-2 mb-3\",attrs:{\"color\":\"cyan\",\"label\":\"\"}},[_vm._v(_vm._s(_vm.user?.username))]):_vm._e(),_c('v-divider',{staticClass:\"mx-3 mb-3\"}),_c('v-list',_vm._l((_vm.items),function(item){return _c('v-list-item',{key:item.title,attrs:{\"to\":{ path: item.path }}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(item.icon))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import apiClient from './apiClient';\r\n\r\nexport class UserService {\r\n\r\n /**\r\n * @summary Get the current user\r\n * @returns {Promise<{\r\n * username: \"user@domain.com\",\r\n * clientID: 123,\r\n * clientName: \"Client Name\"\r\n * canAccessClients: {\r\n * clientID: 123,\r\n * clientName: \"Client Name\"\r\n * }[]\r\n * }>}\r\n */\r\n async getUser() {\r\n const response = await apiClient.getWithCache(\"api/user\", { cacheDuration: 1000 * 60 * 60 });\r\n return response.data;\r\n }\r\n} ","\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppHeader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppHeader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AppHeader.vue?vue&type=template&id=40a4d3c4\"\nimport script from \"./AppHeader.vue?vue&type=script&lang=js\"\nexport * from \"./AppHeader.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, getSlot(this))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\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'\nimport { getSlot } from '../../util/helpers'\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 }, getSlot(this))\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 on: this.$listeners,\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 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"],"sourceRoot":""}