{"version":3,"sources":["webpack:///./src/view/layout/header/AppTop.vue?d765","webpack:///src/view/layout/header/AppTop.vue","webpack:///./src/view/layout/header/AppTop.vue?36f8","webpack:///./src/view/layout/header/AppTop.vue","webpack:///../../../src/components/VTabs/VTab.ts","webpack:///../../../src/components/VSlideGroup/VSlideGroup.ts","webpack:///../../../src/components/VWindow/VWindow.ts","webpack:///../../../src/components/VTabs/VTabsItems.ts","webpack:///../../../src/components/VBtn/index.ts","webpack:///../../../src/components/VTabs/VTabsBar.ts","webpack:///../../../src/components/VTabs/VTabsSlider.ts","webpack:///../../../src/components/VTabs/VTabs.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","$root","currentpage","chatuser","staticClass","style","lang","admin","extramargin","attrs","scopedSlots","_u","$user","getCurrentUser","role","id","key","fn","_l","item","on","$event","globalClick","value","icon","_v","_s","text","proxy","title","remote","avatar","apiURL","private_hash","staticStyle","first_name","charAt","last_name","_e","staticRenderFns","name","data","managemenu","statsmenu","components","methods","$util","EventBus","$emit","to","computed","mounted","$on","component","VAppBar","VAvatar","VImg","VListItem","VListItemAvatar","VListItemContent","VList","VListItemSubtitle","VListItemTitle","VSpacer","VTab","VTabs","baseMixins","props","ripple","type","Boolean","default","proxyClass","classes","groupClasses","$router","Object","resolve","click","href","indexOf","e","$el","blur","String","tabindex","keydown","h","tag","$slots","BaseSlideGroup","directives","Resize","Touch","activeClass","centerActive","nextIcon","prevIcon","showArrows","validator","v","internalItemsLength","isOverflowing","resizeTimeout","startX","scrollOffset","widths","content","wrapper","__cachedNext","genTransition","__cachedPrev","hasAffixes","isMobile","hasNext","Math","hasPrev","watch","internalValue","beforeUpdate","$children","updated","genNext","slot","$scopedSlots","next","class","genContent","ref","genData","onResize","genIcon","$vuetify","rtl","location","upperLocation","hasAffix","disabled","genPrev","prev","genWrapper","start","move","end","calculateNewOffset","sign","newAbosluteOffset","direction","onAffixClick","onTouchStart","onTouchMove","onTouchEnd","maxScrollOffset","overflowCheck","scrollIntoView","selectedIndex","calculateCenteredOffset","selectedItem","calculateUpdatedOffset","clientWidth","selectedElement","offsetLeft","currentScrollOffset","totalWidth","itemOffset","additionalOffset","offsetCentered","scrollTo","$refs","setWidths","window","provide","slideGroup","windowGroup","continuous","mandatory","reverse","undefined","showArrowsOnHover","touch","touchless","required","vertical","changedByDelimiters","internalHeight","transitionHeight","transitionCount","isBooted","isReverse","isActive","computedTransition","axis","hasActiveItems","items","find","internalIndex","length","findIndex","internalReverse","genContainer","children","height","VBtn","t","VIcon","large","genControlIcons","icons","getNextIndex","nextIndex","index","getPrevIndex","prevIndex","getValue","lastIndex","updateReverse","val","left","right","isDark","mixins","tabsBar","themeClasses","$route","callSlider","onRouteChange","newPath","oldPath","oldVal","hasNew","hasOld","setBackgroundColor","alignWithTitle","backgroundColor","centered","fixedTabs","grow","Number","hideSlider","iconsAndText","mobileBreakpoint","optional","sliderColor","sliderSize","slider","top","width","transitionTime","isReversed","sliderStyles","transition","computedColor","selectedItems","activeTab","el","scrollWidth","genBar","dark","light","change","VTabsBar","genSlider","genItems","VTabsItems","VTabsSlider","color","clearTimeout","parseNodes","tab","i","vnode","modifiers","quiet"],"mappings":"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","file":"js/chunk-101e708a.124c1a00.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.$root.currentpage != 'chat' || _vm.chatuser != null)?_c('v-app-bar',{staticClass:\"px-3\",style:(_vm.$root.lang == 'ar'\n ? 'right:' + _vm.$root.admin.extramargin\n : 'left:' + _vm.$root.admin.extramargin),attrs:{\"color\":\"white\",\"flat\":\"\",\"app\":\"\",\"height\":\"60px\"},scopedSlots:_vm._u([(\n _vm.$user.getCurrentUser() &&\n _vm.$user.getCurrentUser().role.id === 1 &&\n _vm.$root.currentpage === 'dashboard'\n )?{key:\"extension\",fn:function(){return [_c('v-tabs',_vm._l((_vm.statsmenu),function(item){return _c('v-tab',{key:item.id,on:{\"click\":function($event){return _vm.globalClick(item.value)}}},[_c('v-avatar',[_c('unicon',{attrs:{\"name\":item.icon,\"fill\":'#0971CE'}})],1),_vm._v(_vm._s(item.text))],1)}),1)]},proxy:true}:(\n _vm.$user.getCurrentUser() &&\n _vm.$user.getCurrentUser().role.id === 1 &&\n _vm.$root.currentpage === 'manage'\n )?{key:\"extension\",fn:function(){return [_c('v-tabs',_vm._l((_vm.managemenu),function(item){return _c('v-tab',{key:item.id,on:{\"click\":function($event){return _vm.globalClick(item.value)}}},[_c('v-avatar',[_c('unicon',{attrs:{\"name\":item.icon,\"fill\":'#0971CE'}})],1),_vm._v(_vm._s(item.text))],1)}),1)]},proxy:true}:null],null,true)},[(_vm.$root.currentpage != 'chat')?[_c('div',{staticClass:\"font-size-h4 text-primary mx-1 mb-0\"},[_vm._v(\" \"+_vm._s(this.$root.title)+\" \")]),_c('v-spacer')]:[(_vm.chatuser)?_c('v-list-item',[_c('v-list-item-avatar',{attrs:{\"color\":\"#f2f7fd\",\"size\":\"40\"}},[(_vm.chatuser.remote != null && _vm.chatuser.remote.avatar)?_c('v-avatar',{attrs:{\"color\":\"#f2f7fd\",\"size\":\"40\"}},[_c('v-img',{attrs:{\"src\":_vm.$root.apiURL + 'assets/' + _vm.chatuser.remote.avatar.private_hash}})],1):_c('v-avatar',{attrs:{\"color\":\"#f2f7fd\",\"size\":\"40\"}},[_c('div',{staticClass:\"primary--text font-size-h1\",staticStyle:{\"text-transform\":\"uppercase\",\"width\":\"100%\"}},[(_vm.chatuser.remote != null && _vm.chatuser.remote.first_name)?_c('span',[_vm._v(_vm._s(_vm.chatuser.remote.first_name.charAt(0)))]):_c('span',[_vm._v(\"D\")])])])],1),_c('v-list-item-content',[_c('v-list-item-title',[(_vm.chatuser.remote)?_c('span',[_vm._v(_vm._s(_vm.chatuser.remote.first_name)+\" \"+_vm._s(_vm.chatuser.remote.last_name))]):_c('span',[_vm._v(_vm._s(_vm.chatuser.title))])]),(_vm.chatuser.remote.online)?_c('v-list-item-subtitle',[_vm._v(\"Online\")]):_vm._e()],1)],1):_vm._e()]],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n {{ item.text }}\n \n \n \n\n\n\n\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!./AppTop.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!./AppTop.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppTop.vue?vue&type=template&id=5e41841a&scoped=true&\"\nimport script from \"./AppTop.vue?vue&type=script&lang=js&\"\nexport * from \"./AppTop.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 \"5e41841a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\ninstallComponents(component, {VAppBar,VAvatar,VImg,VListItem,VListItemAvatar,VListItemContent,VListItemSubtitle,VListItemTitle,VSpacer,VTab,VTabs})\n","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Routable from '../../mixins/routable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { ExtractVue } from './../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Routable,\n // Must be after routable\n // to overwrite activeClass\n GroupableFactory('tabsBar'),\n Themeable\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-tab',\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n data: () => ({\n proxyClass: 'v-tab--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-tab': true,\n ...Routable.options.computed.classes.call(this),\n 'v-tab--disabled': this.disabled,\n ...this.groupClasses,\n }\n },\n value (): any {\n let to = this.to || this.href || ''\n\n if (this.$router &&\n this.to === Object(this.to)\n ) {\n const resolve = this.$router.resolve(\n this.to,\n this.$route,\n this.append\n )\n\n to = resolve.href\n }\n\n return to.replace('#', '')\n },\n },\n\n mounted () {\n this.onRouteChange()\n },\n\n methods: {\n click (e: KeyboardEvent | MouseEvent): void {\n // If user provides an\n // actual link, do not\n // prevent default\n if (this.href &&\n this.href.indexOf('#') > -1\n ) e.preventDefault()\n\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n 'aria-selected': String(this.isActive),\n role: 'tab',\n tabindex: 0,\n }\n data.on = {\n ...data.on,\n keydown: (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n return h(tag, data, this.$slots.default)\n },\n})\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\n\ninterface TouchEvent {\n touchstartX: number\n touchmoveX: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nexport const BaseSlideGroup = mixins\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n this.isOverflowing\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n this.isOverflowing\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n this.$refs.content.style.transform = `translateX(${-val}px)`\n },\n },\n\n beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\n },\n\n methods: {\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n this.scrollOffset = this.startX - e.touchmoveX\n },\n onTouchEnd () {\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = this.calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = this.calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n calculateUpdatedOffset (selectedElement: HTMLElement, widths: Widths, rtl: boolean, currentScrollOffset: number): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n },\n calculateCenteredOffset (selectedElement: HTMLElement, widths: Widths, rtl: boolean): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths /* istanbul ignore next */ () {\n window.requestAnimationFrame(() => {\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n this.isOverflowing = this.widths.wrapper < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n","// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-window',\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n directives: { Touch },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: {\n type: Boolean,\n default: undefined,\n },\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType,\n touchless: Boolean,\n value: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.$vuetify.rtl && axis === 'x' ? !this.internalReverse : this.internalReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.reverse ? !this.isReverse : this.isReverse\n },\n },\n\n watch: {\n internalIndex: 'updateReverse',\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genContainer (): VNode {\n const children = [this.$slots.default]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive,\n },\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n fn: () => void\n ) {\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, [\n this.$createElement(VBtn, {\n props: { icon: true },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n },\n on: {\n click: () => {\n this.changedByDelimiters = true\n fn()\n },\n },\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ]),\n ])\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n this.isReverse = this.$vuetify.rtl\n\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n this.isReverse = !this.$vuetify.rtl\n\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n if (this.changedByDelimiters) {\n this.changedByDelimiters = false\n return\n }\n\n this.isReverse = val < oldVal\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-window',\n class: this.classes,\n directives: [] as VNodeDirective[],\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n data.directives.push({\n name: 'touch',\n value,\n })\n }\n\n return h('div', data, [this.genContainer()])\n },\n})\n","// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Types & Components\nimport { BaseItemGroup, GroupableInstance } from './../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default VWindow.extend({\n name: 'v-tabs-items',\n\n props: {\n mandatory: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-tabs-items': true,\n }\n },\n isDark (): boolean {\n return this.rootIsDark\n },\n },\n\n methods: {\n getValue (item: GroupableInstance, i: number) {\n return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i)\n },\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.options.methods.genContent.call(this)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === newPath) hasNew = true\n else if (item.to === oldPath) hasOld = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (h): VNode {\n const render = BaseSlideGroup.options.render.call(this, h)\n\n render.data!.attrs = {\n role: 'tablist',\n }\n\n return render\n },\n})\n","// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(Colorable).extend({\n name: 'v-tabs-slider',\n\n render (h): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs-slider',\n }))\n },\n})\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport VTabsBar from './VTabsBar'\nimport VTabsItems from './VTabsItems'\nimport VTabsSlider from './VTabsSlider'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Colorable,\n Proxyable,\n Themeable\n)\n\ninterface options extends ExtractVue {\n $refs: {\n items: InstanceType\n }\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-tabs',\n\n directives: {\n Resize,\n },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n alignWithTitle: Boolean,\n backgroundColor: String,\n centerActive: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mobileBreakpoint: [String, Number],\n nextIcon: {\n type: String,\n default: '$next',\n },\n optional: Boolean,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n right: Boolean,\n showArrows: [Boolean, String],\n sliderColor: String,\n sliderSize: {\n type: [Number, String],\n default: 2,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n resizeTimeout: 0,\n slider: {\n height: null as null | number,\n left: null as null | number,\n right: null as null | number,\n top: null as null | number,\n width: null as null | number,\n },\n transitionTime: 300,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-tabs--align-with-title': this.alignWithTitle,\n 'v-tabs--centered': this.centered,\n 'v-tabs--fixed-tabs': this.fixedTabs,\n 'v-tabs--grow': this.grow,\n 'v-tabs--icons-and-text': this.iconsAndText,\n 'v-tabs--right': this.right,\n 'v-tabs--vertical': this.vertical,\n ...this.themeClasses,\n }\n },\n isReversed (): boolean {\n return this.$vuetify.rtl && this.vertical\n },\n sliderStyles (): object {\n return {\n height: convertToUnit(this.slider.height),\n left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n transition: this.slider.left != null ? null : 'none',\n width: convertToUnit(this.slider.width),\n }\n },\n computedColor (): string {\n if (this.color) return this.color\n else if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n },\n\n watch: {\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n centerActive: 'callSlider',\n fixedTabs: 'callSlider',\n grow: 'callSlider',\n right: 'callSlider',\n showArrows: 'callSlider',\n vertical: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n '$vuetify.rtl': 'onResize',\n },\n\n mounted () {\n this.$nextTick(() => {\n window.setTimeout(this.callSlider, 30)\n })\n },\n\n methods: {\n callSlider () {\n if (\n this.hideSlider ||\n !this.$refs.items ||\n !this.$refs.items.selectedItems.length\n ) {\n this.slider.width = 0\n return false\n }\n\n this.$nextTick(() => {\n // Give screen time to paint\n const activeTab = this.$refs.items.selectedItems[0]\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) {\n this.slider.width = 0\n this.slider.left = 0\n return\n }\n const el = activeTab.$el as HTMLElement\n\n this.slider = {\n height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n left: this.vertical ? 0 : el.offsetLeft,\n right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n top: el.offsetTop,\n width: this.vertical ? Number(this.sliderSize) : el.scrollWidth,\n }\n })\n\n return true\n },\n genBar (items: VNode[], slider: VNode | null) {\n const data = {\n style: {\n height: convertToUnit(this.height),\n },\n props: {\n activeClass: this.activeClass,\n centerActive: this.centerActive,\n dark: this.dark,\n light: this.light,\n mandatory: !this.optional,\n mobileBreakpoint: this.mobileBreakpoint,\n nextIcon: this.nextIcon,\n prevIcon: this.prevIcon,\n showArrows: this.showArrows,\n value: this.internalValue,\n },\n on: {\n 'call:slider': this.callSlider,\n change: (val: any) => {\n this.internalValue = val\n },\n },\n ref: 'items',\n }\n\n this.setTextColor(this.computedColor, data)\n this.setBackgroundColor(this.backgroundColor, data)\n\n return this.$createElement(VTabsBar, data, [\n this.genSlider(slider),\n items,\n ])\n },\n genItems (items: VNode | null, item: VNode[]) {\n // If user provides items\n // opt to use theirs\n if (items) return items\n\n // If no tabs are provided\n // render nothing\n if (!item.length) return null\n\n return this.$createElement(VTabsItems, {\n props: {\n value: this.internalValue,\n },\n on: {\n change: (val: any) => {\n this.internalValue = val\n },\n },\n }, item)\n },\n genSlider (slider: VNode | null) {\n if (this.hideSlider) return null\n\n if (!slider) {\n slider = this.$createElement(VTabsSlider, {\n props: { color: this.sliderColor },\n })\n }\n\n return this.$createElement('div', {\n staticClass: 'v-tabs-slider-wrapper',\n style: this.sliderStyles,\n }, [slider])\n },\n onResize () {\n if (this._isDestroyed) return\n\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.callSlider, 0)\n },\n parseNodes () {\n let items = null\n let slider = null\n const item = []\n const tab = []\n const slot = this.$slots.default || []\n const length = slot.length\n\n for (let i = 0; i < length; i++) {\n const vnode = slot[i]\n\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider': slider = vnode\n break\n case 'v-tabs-items': items = vnode\n break\n case 'v-tab-item': item.push(vnode)\n break\n // case 'v-tab' - intentionally omitted\n default: tab.push(vnode)\n }\n } else {\n tab.push(vnode)\n }\n }\n\n /**\n * tab: array of `v-tab`\n * slider: single `v-tabs-slider`\n * items: single `v-tabs-items`\n * item: array of `v-tab-item`\n */\n return { tab, slider, items, item }\n },\n },\n\n render (h): VNode {\n const { tab, slider, items, item } = this.parseNodes()\n\n return h('div', {\n staticClass: 'v-tabs',\n class: this.classes,\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n }, [\n this.genBar(tab, slider),\n this.genItems(items, item),\n ])\n },\n})\n"],"sourceRoot":""}