{"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/composables/private/use-can-render.js","webpack:///./node_modules/quasar/src/components/resize-observer/QResizeObserver.js","webpack:///./node_modules/quasar/src/components/tabs/QTabs.js","webpack:///./node_modules/quasar/src/components/tabs/QTab.js","webpack:///./node_modules/quasar/src/utils/private/touch.js","webpack:///./node_modules/quasar/src/components/tab-panels/QTabPanels.js","webpack:///./node_modules/quasar/src/components/tabs/use-tab.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","stopAndPrevent","distX","absX","Math","abs","distY","absY","end","velX","velY","vertical","horizontal","up","down","right","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","props","emit","proxy","getCurrentInstance","getCacheWithFn","useCache","panels","forcedPanelTransition","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","canRender","isRuntimeSsrPreHydration","onMounted","hasObserver","ResizeObserver","resizeProps","style","url","defineComponent","debounce","type","emits","timer","targetEl","size","width","height","trigger","onResize","offsetWidth","offsetHeight","vm","observer","$el","parentNode","observe","onBeforeUnmount","clearTimeout","disconnect","unobserve","useCanRender","curDocView","cleanup","removeEventListener","listenOpts","passive","onObjLoad","contentDocument","defaultView","addEventListener","tabindex","onLoad","getIndicatorClass","color","alignValues","align","validator","includes","breakpoint","shrink","stretch","activeColor","activeBgColor","indicatorColor","leftIcon","rightIcon","outsideArrows","mobileArrows","switchIndicator","narrowIndicator","inlineLabel","noCaps","dense","contentClass","Function","registerTick","prepareTick","useTick","registerTimeout","useTimeout","rootRef","contentRef","currentModel","scrollable","leftArrow","rightArrow","justify","arrowsEnabled","platform","desktop","tabList","animateTimer","scrollTimer","unwatchRoute","localFromRoute","localUpdateArrows","updateArrowsFn","tabProps","indicatorClass","alignClass","classes","innerClass","mobile","domProps","container","content","scroll","updateModel","setCurrent","skipEmit","fromRoute","animate","recalculateScroll","isDeactivated","isUnmounted","updateContainer","domSize","scrollSize","min","prototype","reduce","call","children","acc","localJustify","parseInt","oldName","newName","oldTab","find","tab","newTab","oldEl","tabIndicatorRef","newEl","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","onActivated","child","QResizeObserver","onScroll","QIcon","iconSet","tabs","onMousedown","onTouchstartPassive","onMouseup","onMouseleave","onTouchend","useTabProps","useTabEmits","renderTab","useTab","modifiersAll","directionList","keys","mod","all","draggable","nodeName","toUpperCase","qClonedBy","uid","useDarkProps","isDark","useDark","usePanel","hDir","icon","label","alert","alertIcon","ripple","$tabs","inject","blurTargetRef","isActive","linkClass","tabIndex","onClick","e","keyboard","focus","go","__qNavigate","navigateToLink","defaultPrevented","onKeyup","isKeyCode","getContent","narrow","indicator","node","hMergeSlot","tag","customData","Ripple"],"mappings":"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","file":"js/chunk-3458750d.b1935706.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 { ref, onMounted } from 'vue'\n\n// using it to manage SSR rendering with best performance\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nexport default function () {\n const canRender = ref(!isRuntimeSsrPreHydration.value)\n\n if (canRender.value === false) {\n onMounted(() => {\n canRender.value = true\n })\n }\n\n return canRender\n}\n","import { h, defineComponent, onMounted, onBeforeUnmount, getCurrentInstance, nextTick } from 'vue'\n\nimport useCanRender from '../../composables/private/use-can-render.js'\n\nimport { listenOpts, noop } from '../../utils/event.js'\n\nconst hasObserver = typeof ResizeObserver !== 'undefined'\nconst resizeProps = hasObserver === true\n ? {}\n : {\n style: 'display:block;position:absolute;top:0;left:0;right:0;bottom:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1;',\n url: 'about:blank'\n }\n\nexport default defineComponent({\n name: 'QResizeObserver',\n\n props: {\n debounce: {\n type: [ String, Number ],\n default: 100\n }\n },\n\n emits: [ 'resize' ],\n\n setup (props, { emit }) {\n if (__QUASAR_SSR_SERVER__) { return noop }\n\n let timer, targetEl, size = { width: -1, height: -1 }\n\n function trigger (now) {\n if (now === true || props.debounce === 0 || props.debounce === '0') {\n onResize()\n }\n else if (!timer) {\n timer = setTimeout(onResize, props.debounce)\n }\n }\n\n function onResize () {\n timer = void 0\n\n if (targetEl) {\n const { offsetWidth: width, offsetHeight: height } = targetEl\n\n if (width !== size.width || height !== size.height) {\n size = { width, height }\n emit('resize', size)\n }\n }\n }\n\n const vm = getCurrentInstance()\n\n // expose public methods\n Object.assign(vm.proxy, { trigger })\n\n if (hasObserver === true) {\n let observer\n\n onMounted(() => {\n nextTick(() => {\n targetEl = vm.proxy.$el.parentNode\n\n if (targetEl) {\n observer = new ResizeObserver(trigger)\n observer.observe(targetEl)\n onResize()\n }\n })\n })\n\n onBeforeUnmount(() => {\n clearTimeout(timer)\n\n if (observer !== void 0) {\n if (observer.disconnect !== void 0) {\n observer.disconnect()\n }\n else if (targetEl) { // FF for Android\n observer.unobserve(targetEl)\n }\n }\n })\n\n return noop\n }\n else { // no observer, so fallback to old iframe method\n const canRender = useCanRender()\n\n let curDocView\n\n function cleanup () {\n clearTimeout(timer)\n\n if (curDocView !== void 0) {\n // iOS is fuzzy, need to check it first\n if (curDocView.removeEventListener !== void 0) {\n curDocView.removeEventListener('resize', trigger, listenOpts.passive)\n }\n curDocView = void 0\n }\n }\n\n function onObjLoad () {\n cleanup()\n\n if (targetEl && targetEl.contentDocument) {\n curDocView = targetEl.contentDocument.defaultView\n curDocView.addEventListener('resize', trigger, listenOpts.passive)\n onResize()\n }\n }\n\n onMounted(() => {\n nextTick(() => {\n targetEl = vm.proxy.$el\n targetEl && onObjLoad()\n })\n })\n\n onBeforeUnmount(cleanup)\n\n return () => {\n if (canRender.value === true) {\n return h('object', {\n style: resizeProps.style,\n tabindex: -1, // fix for Firefox\n type: 'text/html',\n data: resizeProps.url,\n 'aria-hidden': 'true',\n onLoad: onObjLoad\n })\n }\n }\n }\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 { 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","const modifiersAll = {\n left: true,\n right: true,\n up: true,\n down: true,\n horizontal: true,\n vertical: true\n}\n\nconst directionList = Object.keys(modifiersAll)\n\nmodifiersAll.all = true\n\nexport function getModifierDirections (mod) {\n const dir = {}\n\n for (const direction of directionList) {\n if (mod[ direction ] === true) {\n dir[ direction ] = true\n }\n }\n\n if (Object.keys(dir).length === 0) {\n return modifiersAll\n }\n\n if (dir.horizontal === true) {\n dir.left = dir.right = true\n }\n else if (dir.left === true && dir.right === true) {\n dir.horizontal = true\n }\n\n if (dir.vertical === true) {\n dir.up = dir.down = true\n }\n else if (dir.up === true && dir.down === true) {\n dir.vertical = true\n }\n\n if (dir.horizontal === true && dir.vertical === true) {\n dir.all = true\n }\n\n return dir\n}\n\nexport function shouldStart (evt, ctx) {\n return ctx.event === void 0\n && evt.target !== void 0\n && evt.target.draggable !== true\n && typeof ctx.handler === 'function'\n && evt.target.nodeName.toUpperCase() !== 'INPUT'\n && (evt.qClonedBy === void 0 || evt.qClonedBy.indexOf(ctx.uid) === -1)\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","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"],"sourceRoot":""}