{"version":3,"sources":["webpack:///./node_modules/quasar/src/directives/TouchSwipe.js","webpack:///./node_modules/quasar/src/composables/private/use-panel.js","webpack:///./node_modules/quasar/src/components/tabs/QTabs.js","webpack:///./node_modules/quasar/src/components/tabs/use-tab.js","webpack:///./node_modules/quasar/src/components/tabs/QTab.js","webpack:///./node_modules/quasar/src/components/tab-panels/QTabPanel.js","webpack:///./node_modules/quasar/src/components/tab-panels/QTabPanels.js","webpack:///./node_modules/quasar/src/composables/private/use-cache.js"],"names":["parseArg","arg","data","length","split","forEach","val","index","v","parseFloat","__QUASAR_SSR_SERVER__","name","beforeMount","el","value","modifiers","mouse","client","has","touch","mouseCapture","ctx","handler","sensitivity","direction","getModifierDirections","noop","mouseStart","evt","shouldStart","leftClick","addEvt","document","start","touchStart","target","mouseEvent","is","firefox","preventDraggable","pos","position","event","x","left","y","top","time","Date","now","dir","move","distX","absX","Math","abs","distY","absY","end","velX","velY","vertical","horizontal","up","down","right","stopAndPrevent","body","classList","add","clearSelection","styleCleanup","withDelay","remove","setTimeout","duration","distance","cleanEvt","__qtouchswipe","capture","updated","bindings","oldValue","beforeUnmount","usePanelChildProps","required","disable","Boolean","PanelWrapper","setup","_","slots","h","class","role","hSlot","default","usePanelProps","modelValue","animated","infinite","swipeable","transitionPrev","String","transitionNext","keepAlive","keepAliveInclude","Array","RegExp","keepAliveExclude","keepAliveMax","Number","usePanelEmits","panels","forcedPanelTransition","getCurrentInstance","props","emit","proxy","useCache","getCacheWithFn","panelIndex","ref","panelTransition","onSwipe","goToPanelByOffset","$q","lang","rtl","panelDirectives","computed","TouchSwipe","contentKey","keepAliveProps","include","exclude","max","needsUniqueKeepAliveWrapper","nextPanel","previousPanel","goToPanel","isValidPanelName","getPanelIndex","findIndex","panel","getEnabledPanels","filter","updatePanelTransition","startIndex","opt","updatePanelIndex","getPanelContentChild","KeepAlive","key","getPanelContent","Transition","updatePanelsList","getNormalizedVNodes","slot","getPanels","watch","newVal","oldVal","nextTick","Object","assign","next","previous","goTo","getIndicatorClass","color","alignValues","defineComponent","align","type","validator","includes","breakpoint","shrink","stretch","activeColor","activeBgColor","indicatorColor","leftIcon","rightIcon","outsideArrows","mobileArrows","switchIndicator","narrowIndicator","inlineLabel","noCaps","dense","contentClass","Function","animateTimer","scrollTimer","unwatchRoute","vm","useTick","registerTick","prepareTick","useTimeout","registerTimeout","rootRef","contentRef","currentModel","scrollable","leftArrow","rightArrow","justify","arrowsEnabled","platform","desktop","tabList","localFromRoute","localUpdateArrows","updateArrowsFn","tabProps","indicatorClass","alignClass","classes","innerClass","mobile","domProps","container","content","scroll","updateModel","setCurrent","skipEmit","fromRoute","animate","recalculateScroll","isDeactivated","isUnmounted","updateContainer","width","offsetWidth","height","offsetHeight","domSize","size","scrollSize","min","prototype","reduce","call","children","acc","localJustify","parseInt","oldName","newName","oldTab","find","tab","newTab","oldEl","tabIndicatorRef","newEl","clearTimeout","style","transition","transform","oldPos","getBoundingClientRect","newPos","offset","floor","ceil","rect","scrollTop","scrollLeft","scrollHeight","scrollWidth","animScrollTo","stopAnimScroll","scrollTowards","setInterval","scrollToStart","scrollToEnd","clearInterval","done","getRouteList","routerProps","hasLink","updateActiveRoute","href","wasActive","exact","linkRoute","verifyRouteModel","registerTab","getTab","push","routeList","$route","unregisterTab","tabData","splice","indexOf","provide","tabsKey","onBeforeUnmount","onActivated","child","QResizeObserver","onResize","onScroll","QIcon","iconSet","tabs","onMousedown","onTouchstartPassive","onMouseup","onMouseleave","onTouchend","uid","useTabEmits","useTabProps","icon","label","alert","alertIcon","tabindex","ripple","$tabs","inject","console","error","blurTargetRef","isActive","linkClass","tabIndex","onClick","e","keyboard","focus","go","__qNavigate","navigateToLink","defaultPrevented","onKeyup","isKeyCode","getContent","narrow","indicator","node","hMergeSlot","renderTab","tag","customData","hDir","Ripple","onMounted","emits","useTab","useDarkProps","isDark","useDark","usePanel","cache","Map","getCache","obj","fn"],"mappings":"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","file":"js/chunk-cdcfe00e.29789608.js","sourcesContent":["import { client } from '../plugins/Platform.js'\nimport { getModifierDirections, shouldStart } from '../utils/private/touch.js'\nimport { addEvt, cleanEvt, position, leftClick, stopAndPrevent, preventDraggable, noop } from '../utils/event.js'\nimport { clearSelection } from '../utils/private/selection.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.js'\n\nfunction parseArg (arg) {\n // delta (min velocity -- dist / time)\n // mobile min distance on first move\n // desktop min distance until deciding if it's a swipe or not\n const data = [ 0.06, 6, 50 ]\n\n if (typeof arg === 'string' && arg.length) {\n arg.split(':').forEach((val, index) => {\n const v = parseFloat(val)\n v && (data[ index ] = v)\n })\n }\n\n return data\n}\n\nexport default __QUASAR_SSR_SERVER__\n ? { name: 'touch-swipe', getSSRProps }\n : {\n name: 'touch-swipe',\n\n beforeMount (el, { value, arg, modifiers }) {\n // early return, we don't need to do anything\n if (modifiers.mouse !== true && client.has.touch !== true) {\n return\n }\n\n const mouseCapture = modifiers.mouseCapture === true ? 'Capture' : ''\n\n const ctx = {\n handler: value,\n sensitivity: parseArg(arg),\n direction: getModifierDirections(modifiers),\n\n noop,\n\n mouseStart (evt) {\n if (shouldStart(evt, ctx) && leftClick(evt)) {\n addEvt(ctx, 'temp', [\n [ document, 'mousemove', 'move', `notPassive${ mouseCapture }` ],\n [ document, 'mouseup', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt, true)\n }\n },\n\n touchStart (evt) {\n if (shouldStart(evt, ctx)) {\n const target = evt.target\n addEvt(ctx, 'temp', [\n [ target, 'touchmove', 'move', 'notPassiveCapture' ],\n [ target, 'touchcancel', 'end', 'notPassiveCapture' ],\n [ target, 'touchend', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt)\n }\n },\n\n start (evt, mouseEvent) {\n client.is.firefox === true && preventDraggable(el, true)\n\n const pos = position(evt)\n\n ctx.event = {\n x: pos.left,\n y: pos.top,\n time: Date.now(),\n mouse: mouseEvent === true,\n dir: false\n }\n },\n\n move (evt) {\n if (ctx.event === void 0) {\n return\n }\n\n if (ctx.event.dir !== false) {\n stopAndPrevent(evt)\n return\n }\n\n const time = Date.now() - ctx.event.time\n\n if (time === 0) {\n return\n }\n\n const\n pos = position(evt),\n distX = pos.left - ctx.event.x,\n absX = Math.abs(distX),\n distY = pos.top - ctx.event.y,\n absY = Math.abs(distY)\n\n if (ctx.event.mouse !== true) {\n if (absX < ctx.sensitivity[ 1 ] && absY < ctx.sensitivity[ 1 ]) {\n ctx.end(evt)\n return\n }\n }\n else if (absX < ctx.sensitivity[ 2 ] && absY < ctx.sensitivity[ 2 ]) {\n return\n }\n\n const\n velX = absX / time,\n velY = absY / time\n\n if (\n ctx.direction.vertical === true\n && absX < absY\n && absX < 100\n && velY > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = distY < 0 ? 'up' : 'down'\n }\n\n if (\n ctx.direction.horizontal === true\n && absX > absY\n && absY < 100\n && velX > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = distX < 0 ? 'left' : 'right'\n }\n\n if (\n ctx.direction.up === true\n && absX < absY\n && distY < 0\n && absX < 100\n && velY > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'up'\n }\n\n if (\n ctx.direction.down === true\n && absX < absY\n && distY > 0\n && absX < 100\n && velY > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'down'\n }\n\n if (\n ctx.direction.left === true\n && absX > absY\n && distX < 0\n && absY < 100\n && velX > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'left'\n }\n\n if (\n ctx.direction.right === true\n && absX > absY\n && distX > 0\n && absY < 100\n && velX > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'right'\n }\n\n if (ctx.event.dir !== false) {\n stopAndPrevent(evt)\n\n if (ctx.event.mouse === true) {\n document.body.classList.add('no-pointer-events--children')\n document.body.classList.add('non-selectable')\n clearSelection()\n\n ctx.styleCleanup = withDelay => {\n ctx.styleCleanup = void 0\n\n document.body.classList.remove('non-selectable')\n\n const remove = () => {\n document.body.classList.remove('no-pointer-events--children')\n }\n\n if (withDelay === true) { setTimeout(remove, 50) }\n else { remove() }\n }\n }\n\n ctx.handler({\n evt,\n touch: ctx.event.mouse !== true,\n mouse: ctx.event.mouse,\n direction: ctx.event.dir,\n duration: time,\n distance: {\n x: absX,\n y: absY\n }\n })\n }\n else {\n ctx.end(evt)\n }\n },\n\n end (evt) {\n if (ctx.event === void 0) {\n return\n }\n\n cleanEvt(ctx, 'temp')\n client.is.firefox === true && preventDraggable(el, false)\n ctx.styleCleanup !== void 0 && ctx.styleCleanup(true)\n evt !== void 0 && ctx.event.dir !== false && stopAndPrevent(evt)\n\n ctx.event = void 0\n }\n }\n\n el.__qtouchswipe = ctx\n\n modifiers.mouse === true && addEvt(ctx, 'main', [\n [ el, 'mousedown', 'mouseStart', `passive${ mouseCapture }` ]\n ])\n\n client.has.touch === true && addEvt(ctx, 'main', [\n [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],\n [ el, 'touchmove', 'noop', 'notPassiveCapture' ]\n ])\n },\n\n updated (el, bindings) {\n const ctx = el.__qtouchswipe\n\n if (ctx !== void 0) {\n if (bindings.oldValue !== bindings.value) {\n typeof bindings.value !== 'function' && ctx.end()\n ctx.handler = bindings.value\n }\n\n ctx.direction = getModifierDirections(bindings.modifiers)\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qtouchswipe\n\n if (ctx !== void 0) {\n cleanEvt(ctx, 'main')\n cleanEvt(ctx, 'temp')\n\n client.is.firefox === true && preventDraggable(el, false)\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n delete el.__qtouchswipe\n }\n }\n }\n","import { h, ref, computed, watch, nextTick, getCurrentInstance, Transition, KeepAlive } from 'vue'\n\nimport TouchSwipe from '../../directives/TouchSwipe.js'\n\nimport useCache from '../../composables/private/use-cache.js'\n\nimport { hSlot } from '../../utils/private/render.js'\nimport { getNormalizedVNodes } from '../../utils/private/vm.js'\n\nexport const usePanelChildProps = {\n name: { required: true },\n disable: Boolean\n}\n\nconst PanelWrapper = {\n setup (_, { slots }) {\n return () => h('div', {\n class: 'q-panel scroll',\n role: 'tabpanel'\n }, hSlot(slots.default))\n }\n}\n\nexport const usePanelProps = {\n modelValue: {\n required: true\n },\n\n animated: Boolean,\n infinite: Boolean,\n swipeable: Boolean,\n vertical: Boolean,\n\n transitionPrev: String,\n transitionNext: String,\n\n keepAlive: Boolean,\n keepAliveInclude: [ String, Array, RegExp ],\n keepAliveExclude: [ String, Array, RegExp ],\n keepAliveMax: Number\n}\n\nexport const usePanelEmits = [ 'update:modelValue', 'before-transition', 'transition' ]\n\nexport default function () {\n const { props, emit, proxy } = getCurrentInstance()\n const { getCacheWithFn } = useCache()\n\n let panels, forcedPanelTransition\n\n const panelIndex = ref(null)\n const panelTransition = ref(null)\n\n function onSwipe (evt) {\n const dir = props.vertical === true ? 'up' : 'left'\n goToPanelByOffset((proxy.$q.lang.rtl === true ? -1 : 1) * (evt.direction === dir ? 1 : -1))\n }\n\n const panelDirectives = computed(() => {\n // if props.swipeable\n return [ [\n TouchSwipe,\n onSwipe,\n void 0,\n {\n horizontal: props.vertical !== true,\n vertical: props.vertical,\n mouse: true\n }\n ] ]\n })\n\n const transitionPrev = computed(() =>\n props.transitionPrev || `slide-${ props.vertical === true ? 'down' : 'right' }`\n )\n\n const transitionNext = computed(() =>\n props.transitionNext || `slide-${ props.vertical === true ? 'up' : 'left' }`\n )\n\n const contentKey = computed(() => (\n typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? props.modelValue\n : String(props.modelValue)\n ))\n\n const keepAliveProps = computed(() => ({\n include: props.keepAliveInclude,\n exclude: props.keepAliveExclude,\n max: props.keepAliveMax\n }))\n\n const needsUniqueKeepAliveWrapper = computed(() =>\n props.keepAliveInclude !== void 0\n || props.keepAliveExclude !== void 0\n )\n\n watch(() => props.modelValue, (newVal, oldVal) => {\n const index = isValidPanelName(newVal) === true\n ? getPanelIndex(newVal)\n : -1\n\n if (forcedPanelTransition !== true) {\n updatePanelTransition(\n index === -1 ? 0 : (index < getPanelIndex(oldVal) ? -1 : 1)\n )\n }\n\n if (panelIndex.value !== index) {\n panelIndex.value = index\n emit('before-transition', newVal, oldVal)\n nextTick(() => {\n emit('transition', newVal, oldVal)\n })\n }\n })\n\n function nextPanel () { goToPanelByOffset(1) }\n function previousPanel () { goToPanelByOffset(-1) }\n\n // expose public methods\n Object.assign(proxy, {\n next: nextPanel,\n previous: previousPanel,\n goTo: goToPanel\n })\n\n function goToPanel (name) {\n emit('update:modelValue', name)\n }\n\n function isValidPanelName (name) {\n return name !== void 0 && name !== null && name !== ''\n }\n\n function getPanelIndex (name) {\n return panels.findIndex(panel => {\n return panel.props.name === name\n && panel.props.disable !== ''\n && panel.props.disable !== true\n })\n }\n\n function getEnabledPanels () {\n return panels.filter(panel => {\n return panel.props.disable !== ''\n && panel.props.disable !== true\n })\n }\n\n function updatePanelTransition (direction) {\n const val = direction !== 0 && props.animated === true && panelIndex.value !== -1\n ? 'q-transition--' + (direction === -1 ? transitionPrev.value : transitionNext.value)\n : null\n\n if (panelTransition.value !== val) {\n panelTransition.value = val\n }\n }\n\n function goToPanelByOffset (direction, startIndex = panelIndex.value) {\n let index = startIndex + direction\n\n while (index > -1 && index < panels.length) {\n const opt = panels[ index ]\n\n if (\n opt !== void 0\n && opt.props.disable !== ''\n && opt.props.disable !== true\n ) {\n updatePanelTransition(direction)\n forcedPanelTransition = true\n emit('update:modelValue', opt.props.name)\n setTimeout(() => {\n forcedPanelTransition = false\n })\n return\n }\n\n index += direction\n }\n\n if (props.infinite === true && panels.length > 0 && startIndex !== -1 && startIndex !== panels.length) {\n goToPanelByOffset(direction, direction === -1 ? panels.length : -1)\n }\n }\n\n function updatePanelIndex () {\n const index = getPanelIndex(props.modelValue)\n\n if (panelIndex.value !== index) {\n panelIndex.value = index\n }\n\n return true\n }\n\n function getPanelContentChild () {\n const panel = isValidPanelName(props.modelValue)\n && updatePanelIndex()\n && panels[ panelIndex.value ]\n\n return props.keepAlive === true\n ? [\n h(KeepAlive, keepAliveProps.value, [\n h(\n needsUniqueKeepAliveWrapper.value === true\n ? getCacheWithFn(contentKey.value, () => ({ ...PanelWrapper, name: contentKey.value }))\n : PanelWrapper,\n { key: contentKey.value },\n () => panel\n )\n ])\n ]\n : [\n h('div', {\n class: 'q-panel scroll',\n key: contentKey.value,\n role: 'tabpanel'\n }, [ panel ])\n ]\n }\n\n function getPanelContent () {\n if (panels.length === 0) {\n return\n }\n\n return props.animated === true\n ? [\n h(Transition, {\n name: panelTransition.value\n }, getPanelContentChild)\n ]\n : getPanelContentChild()\n }\n\n function updatePanelsList (slots) {\n panels = getNormalizedVNodes(\n hSlot(slots.default, [])\n ).filter(\n panel => panel.props !== null\n && panel.props.slot === void 0\n && isValidPanelName(panel.props.name)\n )\n\n return panels.length\n }\n\n function getPanels () {\n return panels\n }\n\n return {\n panelIndex,\n panelDirectives,\n\n updatePanelsList,\n updatePanelIndex,\n\n getPanelContent,\n getEnabledPanels,\n getPanels,\n\n isValidPanelName,\n\n keepAliveProps,\n needsUniqueKeepAliveWrapper,\n\n goToPanelByOffset,\n goToPanel,\n\n nextPanel,\n previousPanel\n }\n}\n","import { h, defineComponent, ref, computed, watch, nextTick, onBeforeUnmount, onActivated, getCurrentInstance, provide } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport useTick from '../../composables/private/use-tick.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\n\nimport { noop } from '../../utils/event.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { tabsKey } from '../../utils/private/symbols.js'\n\nfunction getIndicatorClass (color, top, vertical) {\n const pos = vertical === true\n ? [ 'left', 'right' ]\n : [ 'top', 'bottom' ]\n\n return `absolute-${ top === true ? pos[ 0 ] : pos[ 1 ] }${ color ? ` text-${ color }` : '' }`\n}\n\nconst alignValues = [ 'left', 'center', 'right', 'justify' ]\n\nexport default defineComponent({\n name: 'QTabs',\n\n props: {\n modelValue: [ Number, String ],\n\n align: {\n type: String,\n default: 'center',\n validator: v => alignValues.includes(v)\n },\n breakpoint: {\n type: [ String, Number ],\n default: 600\n },\n\n vertical: Boolean,\n shrink: Boolean,\n stretch: Boolean,\n\n activeColor: String,\n activeBgColor: String,\n indicatorColor: String,\n leftIcon: String,\n rightIcon: String,\n\n outsideArrows: Boolean,\n mobileArrows: Boolean,\n\n switchIndicator: Boolean,\n\n narrowIndicator: Boolean,\n inlineLabel: Boolean,\n noCaps: Boolean,\n\n dense: Boolean,\n\n contentClass: String,\n\n 'onUpdate:modelValue': Function\n },\n\n setup (props, { slots, emit }) {\n const vm = getCurrentInstance()\n const { proxy: { $q } } = vm\n\n const { registerTick, prepareTick } = useTick()\n const { registerTimeout } = useTimeout()\n\n const rootRef = ref(null)\n const contentRef = ref(null)\n\n const currentModel = ref(props.modelValue)\n const scrollable = ref(false)\n const leftArrow = ref(true)\n const rightArrow = ref(false)\n const justify = ref(false)\n\n const arrowsEnabled = computed(() =>\n $q.platform.is.desktop === true || props.mobileArrows === true\n )\n\n const tabList = []\n\n let localFromRoute = false, animateTimer, scrollTimer, unwatchRoute\n let localUpdateArrows = arrowsEnabled.value === true\n ? updateArrowsFn\n : noop\n\n const tabProps = computed(() => ({\n activeColor: props.activeColor,\n activeBgColor: props.activeBgColor,\n indicatorClass: getIndicatorClass(\n props.indicatorColor,\n props.switchIndicator,\n props.vertical\n ),\n narrowIndicator: props.narrowIndicator,\n inlineLabel: props.inlineLabel,\n noCaps: props.noCaps\n }))\n\n const alignClass = computed(() => {\n const align = scrollable.value === true\n ? 'left'\n : (justify.value === true ? 'justify' : props.align)\n\n return `q-tabs__content--align-${ align }`\n })\n\n const classes = computed(() =>\n 'q-tabs row no-wrap items-center'\n + ` q-tabs--${ scrollable.value === true ? '' : 'not-' }scrollable`\n + ` q-tabs--${ props.vertical === true ? 'vertical' : 'horizontal' }`\n + ` q-tabs__arrows--${ arrowsEnabled.value === true && props.outsideArrows === true ? 'outside' : 'inside' }`\n + (props.dense === true ? ' q-tabs--dense' : '')\n + (props.shrink === true ? ' col-shrink' : '')\n + (props.stretch === true ? ' self-stretch' : '')\n )\n\n const innerClass = computed(() =>\n 'q-tabs__content row no-wrap items-center self-stretch hide-scrollbar '\n + alignClass.value\n + (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')\n + ($q.platform.is.mobile === true ? ' scroll' : '')\n )\n\n const domProps = computed(() => (\n props.vertical === true\n ? { container: 'height', content: 'offsetHeight', scroll: 'scrollHeight' }\n : { container: 'width', content: 'offsetWidth', scroll: 'scrollWidth' }\n ))\n\n watch(() => props.modelValue, name => {\n updateModel({ name, setCurrent: true, skipEmit: true })\n })\n\n watch(() => props.outsideArrows, () => {\n nextTick(recalculateScroll())\n })\n\n watch(arrowsEnabled, v => {\n localUpdateArrows = v === true\n ? updateArrowsFn\n : noop\n\n nextTick(recalculateScroll())\n })\n\n function updateModel ({ name, setCurrent, skipEmit, fromRoute }) {\n if (currentModel.value !== name) {\n skipEmit !== true && emit('update:modelValue', name)\n if (\n setCurrent === true\n || props[ 'onUpdate:modelValue' ] === void 0\n ) {\n animate(currentModel.value, name)\n currentModel.value = name\n }\n }\n\n if (fromRoute !== void 0) {\n localFromRoute = fromRoute\n }\n }\n\n function recalculateScroll () {\n registerTick(() => {\n if (vm.isDeactivated !== true && vm.isUnmounted !== true) {\n updateContainer({\n width: rootRef.value.offsetWidth,\n height: rootRef.value.offsetHeight\n })\n }\n })\n\n prepareTick()\n }\n\n function updateContainer (domSize) {\n // it can be called faster than component being initialized\n // so we need to protect against that case\n // (one example of such case is the docs release notes page)\n if (domProps.value === void 0 || contentRef.value === null) { return }\n\n const\n size = domSize[ domProps.value.container ],\n scrollSize = Math.min(\n contentRef.value[ domProps.value.scroll ],\n Array.prototype.reduce.call(\n contentRef.value.children,\n (acc, el) => acc + el[ domProps.value.content ],\n 0\n )\n ),\n scroll = size > 0 && scrollSize > size // when there is no tab, in Chrome, size === 0 and scrollSize === 1\n\n if (scrollable.value !== scroll) {\n scrollable.value = scroll\n }\n\n // Arrows need to be updated even if the scroll status was already true\n scroll === true && nextTick(localUpdateArrows)\n\n const localJustify = size < parseInt(props.breakpoint, 10)\n\n if (justify.value !== localJustify) {\n justify.value = localJustify\n }\n }\n\n function animate (oldName, newName) {\n const\n oldTab = oldName !== void 0 && oldName !== null && oldName !== ''\n ? tabList.find(tab => tab.name.value === oldName)\n : null,\n newTab = newName !== void 0 && newName !== null && newName !== ''\n ? tabList.find(tab => tab.name.value === newName)\n : null\n\n if (oldTab && newTab) {\n const\n oldEl = oldTab.tabIndicatorRef.value,\n newEl = newTab.tabIndicatorRef.value\n\n clearTimeout(animateTimer)\n\n oldEl.style.transition = 'none'\n oldEl.style.transform = 'none'\n newEl.style.transition = 'none'\n newEl.style.transform = 'none'\n\n const\n oldPos = oldEl.getBoundingClientRect(),\n newPos = newEl.getBoundingClientRect()\n\n newEl.style.transform = props.vertical === true\n ? `translate3d(0,${ oldPos.top - newPos.top }px,0) scale3d(1,${ newPos.height ? oldPos.height / newPos.height : 1 },1)`\n : `translate3d(${ oldPos.left - newPos.left }px,0,0) scale3d(${ newPos.width ? oldPos.width / newPos.width : 1 },1,1)`\n\n // allow scope updates to kick in (QRouteTab needs more time)\n nextTick(() => {\n animateTimer = setTimeout(() => {\n newEl.style.transition = 'transform .25s cubic-bezier(.4, 0, .2, 1)'\n newEl.style.transform = 'none'\n }, 70)\n })\n }\n\n if (newTab && scrollable.value === true) {\n const\n { left, width, top, height } = contentRef.value.getBoundingClientRect(),\n newPos = newTab.rootRef.value.getBoundingClientRect()\n\n let offset = props.vertical === true ? newPos.top - top : newPos.left - left\n\n if (offset < 0) {\n contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.floor(offset)\n localUpdateArrows()\n return\n }\n\n offset += props.vertical === true ? newPos.height - height : newPos.width - width\n if (offset > 0) {\n contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.ceil(offset)\n localUpdateArrows()\n }\n }\n }\n\n function updateArrowsFn () {\n const content = contentRef.value\n if (content !== null) {\n const\n rect = content.getBoundingClientRect(),\n pos = props.vertical === true ? content.scrollTop : content.scrollLeft\n\n leftArrow.value = pos > 0\n rightArrow.value = props.vertical === true\n ? Math.ceil(pos + rect.height) < content.scrollHeight\n : Math.ceil(pos + rect.width) < content.scrollWidth\n }\n }\n\n function animScrollTo (value) {\n stopAnimScroll()\n scrollTowards(value)\n\n scrollTimer = setInterval(() => {\n if (scrollTowards(value)) {\n stopAnimScroll()\n }\n }, 5)\n }\n\n function scrollToStart () {\n animScrollTo(0)\n }\n\n function scrollToEnd () {\n animScrollTo(9999)\n }\n\n function stopAnimScroll () {\n clearInterval(scrollTimer)\n }\n\n function scrollTowards (value) {\n const content = contentRef.value\n let\n pos = props.vertical === true ? content.scrollTop : content.scrollLeft,\n done = false\n\n const direction = value < pos ? -1 : 1\n\n pos += direction * 5\n if (pos < 0) {\n done = true\n pos = 0\n }\n else if (\n (direction === -1 && pos <= value)\n || (direction === 1 && pos >= value)\n ) {\n done = true\n pos = value\n }\n\n content[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] = pos\n localUpdateArrows()\n\n return done\n }\n\n function getRouteList () {\n return tabList.filter(tab => tab.routerProps !== void 0 && tab.routerProps.hasLink.value === true)\n }\n\n // do not use directly; use verifyRouteModel() instead\n function updateActiveRoute () {\n let href = '', name = null, wasActive = localFromRoute\n\n getRouteList().forEach(tab => {\n if (\n tab.routerProps !== void 0\n && tab.routerProps[ tab.routerProps.exact.value === true ? 'linkIsExactActive' : 'linkIsActive' ].value === true\n && tab.routerProps.linkRoute.value.href.length > href.length\n ) {\n href = tab.routerProps.linkRoute.value.href\n name = tab.name.value\n }\n else if (currentModel.value === tab.name.value) {\n wasActive = true\n }\n })\n\n if (wasActive === true || name !== null) {\n updateModel({ name, setCurrent: true, fromRoute: true })\n }\n }\n\n function verifyRouteModel () {\n registerTimeout(updateActiveRoute)\n }\n\n function registerTab (getTab) {\n tabList.push(getTab)\n\n const routeList = getRouteList()\n\n if (routeList.length > 0) {\n if (unwatchRoute === void 0) {\n unwatchRoute = watch(() => vm.proxy.$route, verifyRouteModel)\n }\n\n verifyRouteModel()\n }\n }\n\n /*\n * Vue has an aggressive diff (in-place replacement) so we cannot\n * ensure that the instance getting destroyed is the actual tab\n * reported here. As a result, we cannot use its name or check\n * if it's a route one to make the necessary updates. We need to\n * always check the existing list again and infer the changes.\n */\n function unregisterTab (tabData) {\n tabList.splice(tabList.indexOf(tabData), 1)\n\n if (unwatchRoute !== void 0) {\n const routeList = getRouteList()\n\n if (routeList.length === 0) {\n unwatchRoute()\n unwatchRoute = void 0\n }\n\n verifyRouteModel()\n }\n }\n\n provide(tabsKey, {\n currentModel,\n tabProps,\n\n registerTab,\n unregisterTab,\n\n verifyRouteModel,\n updateModel,\n recalculateScroll\n })\n\n onBeforeUnmount(() => {\n clearTimeout(animateTimer)\n unwatchRoute !== void 0 && unwatchRoute()\n })\n\n onActivated(recalculateScroll)\n\n return () => {\n const child = [\n h(QResizeObserver, { onResize: updateContainer }),\n\n h('div', {\n ref: contentRef,\n class: innerClass.value,\n onScroll: localUpdateArrows\n }, hSlot(slots.default))\n ]\n\n arrowsEnabled.value === true && child.push(\n h(QIcon, {\n class: 'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon'\n + (leftArrow.value === true ? '' : ' q-tabs__arrow--faded'),\n name: props.leftIcon || $q.iconSet.tabs[ props.vertical === true ? 'up' : 'left' ],\n onMousedown: scrollToStart,\n onTouchstartPassive: scrollToStart,\n onMouseup: stopAnimScroll,\n onMouseleave: stopAnimScroll,\n onTouchend: stopAnimScroll\n }),\n\n h(QIcon, {\n class: 'q-tabs__arrow q-tabs__arrow--right absolute q-tab__icon'\n + (rightArrow.value === true ? '' : ' q-tabs__arrow--faded'),\n name: props.rightIcon || $q.iconSet.tabs[ props.vertical === true ? 'down' : 'right' ],\n onMousedown: scrollToEnd,\n onTouchstartPassive: scrollToEnd,\n onMouseup: stopAnimScroll,\n onMouseleave: stopAnimScroll,\n onTouchend: stopAnimScroll\n })\n )\n\n return h('div', {\n ref: rootRef,\n class: classes.value,\n role: 'tablist'\n }, child)\n }\n }\n})\n","import { h, ref, computed, inject, onBeforeUnmount, onMounted } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport Ripple from '../../directives/Ripple.js'\n\nimport { hMergeSlot, hDir } from '../../utils/private/render.js'\nimport { isKeyCode } from '../../utils/private/key-composition.js'\nimport { tabsKey } from '../../utils/private/symbols.js'\n\nlet uid = 0\n\nexport const useTabEmits = [ 'click', 'keyup' ]\n\nexport const useTabProps = {\n icon: String,\n label: [ Number, String ],\n\n alert: [ Boolean, String ],\n alertIcon: String,\n\n name: {\n type: [ Number, String ],\n default: () => `t_${ uid++ }`\n },\n\n noCaps: Boolean,\n\n tabindex: [ String, Number ],\n disable: Boolean,\n\n contentClass: String,\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n }\n}\n\nexport default function (props, slots, emit, routerProps) {\n const $tabs = inject(tabsKey, () => {\n console.error('QTab/QRouteTab component needs to be child of QTabs')\n })\n\n const blurTargetRef = ref(null)\n const rootRef = ref(null)\n const tabIndicatorRef = ref(null)\n\n const isActive = computed(() => $tabs.currentModel.value === props.name)\n\n const classes = computed(() =>\n 'q-tab relative-position self-stretch flex flex-center text-center'\n + ` q-tab--${ isActive.value === true ? '' : 'in' }active`\n + (\n isActive.value === true\n ? (\n ($tabs.tabProps.value.activeColor ? ` text-${ $tabs.tabProps.value.activeColor }` : '')\n + ($tabs.tabProps.value.activeBgColor ? ` bg-${ $tabs.tabProps.value.activeBgColor }` : '')\n )\n : ''\n )\n + (props.icon && props.label && $tabs.tabProps.value.inlineLabel === false ? ' q-tab--full' : '')\n + (props.noCaps === true || $tabs.tabProps.value.noCaps === true ? ' q-tab--no-caps' : '')\n + (props.disable === true ? ' disabled' : ' q-focusable q-hoverable cursor-pointer')\n + (routerProps !== void 0 && routerProps.linkClass.value !== '' ? ` ${ routerProps.linkClass.value }` : '')\n )\n\n const innerClass = computed(() =>\n 'q-tab__content self-stretch flex-center relative-position q-anchor--skip non-selectable '\n + ($tabs.tabProps.value.inlineLabel === true ? 'row no-wrap q-tab__content--inline' : 'column')\n + (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')\n )\n\n const tabIndex = computed(() => (\n props.disable === true || isActive.value === true ? -1 : props.tabindex || 0\n ))\n\n function onClick (e, keyboard) {\n keyboard !== true && blurTargetRef.value !== null && blurTargetRef.value.focus()\n\n if (props.disable !== true) {\n if (routerProps !== void 0) {\n if (routerProps.hasLink.value === true) {\n const go = () => {\n e.__qNavigate = true\n routerProps.navigateToLink(e)\n }\n\n emit('click', e, go)\n e.defaultPrevented !== true && go()\n }\n else {\n emit('click', e)\n }\n }\n else {\n emit('click', e)\n $tabs.updateModel({ name: props.name, fromRoute: false })\n }\n }\n }\n\n function onKeyup (e) {\n isKeyCode(e, 13) === true && onClick(e, true)\n emit('keyup', e)\n }\n\n function getContent () {\n const\n narrow = $tabs.tabProps.value.narrowIndicator,\n content = [],\n indicator = h('div', {\n ref: tabIndicatorRef,\n class: [\n 'q-tab__indicator',\n $tabs.tabProps.value.indicatorClass\n ]\n })\n\n props.icon !== void 0 && content.push(\n h(QIcon, {\n class: 'q-tab__icon',\n name: props.icon\n })\n )\n\n props.label !== void 0 && content.push(\n h('div', { class: 'q-tab__label' }, props.label)\n )\n\n props.alert !== false && content.push(\n props.alertIcon !== void 0\n ? h(QIcon, {\n class: 'q-tab__alert-icon',\n color: props.alert !== true\n ? props.alert\n : void 0,\n name: props.alertIcon\n })\n : h('div', {\n class: 'q-tab__alert'\n + (props.alert !== true ? ` text-${ props.alert }` : '')\n })\n )\n\n narrow === true && content.push(indicator)\n\n const node = [\n h('div', { class: 'q-focus-helper', tabindex: -1, ref: blurTargetRef }),\n h('div', { class: innerClass.value }, hMergeSlot(slots.default, content))\n ]\n\n narrow === false && node.push(indicator)\n\n return node\n }\n\n const tabData = {\n name: computed(() => props.name),\n rootRef,\n tabIndicatorRef,\n routerProps\n }\n\n onBeforeUnmount(() => {\n $tabs.unregisterTab(tabData)\n $tabs.recalculateScroll()\n })\n\n onMounted(() => {\n $tabs.registerTab(tabData)\n $tabs.recalculateScroll()\n })\n\n function renderTab (tag, customData) {\n const data = {\n ref: rootRef,\n class: classes.value,\n tabindex: tabIndex.value,\n role: 'tab',\n 'aria-selected': isActive.value,\n 'aria-disabled': props.disable === true ? 'true' : void 0,\n onClick,\n onKeyup,\n ...customData\n }\n\n return hDir(\n tag,\n data,\n getContent(),\n 'main',\n props.ripple !== false && props.disable === false,\n () => [ [ Ripple, props.ripple ] ]\n )\n }\n\n return { renderTab, $tabs }\n}\n","import { defineComponent } from 'vue'\n\nimport useTab, { useTabProps, useTabEmits } from './use-tab.js'\n\nexport default defineComponent({\n name: 'QTab',\n\n props: useTabProps,\n\n emits: useTabEmits,\n\n setup (props, { slots, emit }) {\n const { renderTab } = useTab(props, slots, emit)\n return () => renderTab('div')\n }\n})\n","import { h, defineComponent } from 'vue'\n\nimport { usePanelChildProps } from '../../composables/private/use-panel.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default defineComponent({\n name: 'QTabPanel',\n\n props: usePanelChildProps,\n\n setup (_, { slots }) {\n return () => h('div', { class: 'q-tab-panel' }, hSlot(slots.default))\n }\n})\n","import { defineComponent, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport usePanel, { usePanelProps, usePanelEmits } from '../../composables/private/use-panel.js'\n\nimport { hDir } from '../../utils/private/render.js'\n\nexport default defineComponent({\n name: 'QTabPanels',\n\n props: {\n ...usePanelProps,\n ...useDarkProps\n },\n\n emits: usePanelEmits,\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const { updatePanelsList, getPanelContent, panelDirectives } = usePanel()\n\n const classes = computed(() =>\n 'q-tab-panels q-panel-parent'\n + (isDark.value === true ? ' q-tab-panels--dark q-dark' : '')\n )\n\n return () => {\n updatePanelsList(slots)\n\n return hDir(\n 'div',\n { class: classes.value },\n getPanelContent(),\n 'pan',\n props.swipeable,\n () => panelDirectives.value\n )\n }\n }\n})\n","export default function () {\n const cache = new Map()\n\n return {\n getCache: __QUASAR_SSR_SERVER__\n ? function (_, obj) { return obj }\n : function (key, obj) {\n return cache[ key ] === void 0\n ? (cache[ key ] = obj)\n : cache[ key ]\n },\n\n getCacheWithFn: __QUASAR_SSR_SERVER__\n ? function (_, fn) { return fn() }\n : function (key, fn) {\n return cache[ key ] === void 0\n ? (cache[ key ] = fn())\n : cache[ key ]\n }\n }\n}\n"],"sourceRoot":""}