{"version":3,"file":"BZ4J8-rB.js","sources":["../../../../node_modules/quasar/src/components/item/QItem.js","../../../../node_modules/quasar/src/components/item/QItemSection.js","../../../../node_modules/quasar/src/components/item/QItemLabel.js","../../../../node_modules/quasar/src/components/virtual-scroll/use-virtual-scroll.js"],"sourcesContent":["import { h, ref, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private.use-dark/use-dark.js'\nimport useRouterLink, { useRouterLinkProps } from '../../composables/private.use-router-link/use-router-link.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { hUniqueSlot } from '../../utils/private.render/render.js'\nimport { stopAndPrevent } from '../../utils/event/event.js'\nimport { isKeyCode } from '../../utils/private.keyboard/key-composition.js'\n\nexport default createComponent({\n name: 'QItem',\n\n props: {\n ...useDarkProps,\n ...useRouterLinkProps,\n\n tag: {\n type: String,\n default: 'div'\n },\n\n active: {\n type: Boolean,\n default: null\n },\n\n clickable: Boolean,\n dense: Boolean,\n insetLevel: Number,\n\n tabindex: [ String, Number ],\n\n focused: Boolean,\n manualFocus: Boolean\n },\n\n emits: [ 'click', 'keyup' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const isDark = useDark(props, $q)\n const { hasLink, linkAttrs, linkClass, linkTag, navigateOnClick } = useRouterLink()\n\n const rootRef = ref(null)\n const blurTargetRef = ref(null)\n\n const isActionable = computed(() =>\n props.clickable === true\n || hasLink.value === true\n || props.tag === 'label'\n )\n\n const isClickable = computed(() =>\n props.disable !== true && isActionable.value === true\n )\n\n const classes = computed(() =>\n 'q-item q-item-type row no-wrap'\n + (props.dense === true ? ' q-item--dense' : '')\n + (isDark.value === true ? ' q-item--dark' : '')\n + (\n hasLink.value === true && props.active === null\n ? linkClass.value\n : (\n props.active === true\n ? ` q-item--active${ props.activeClass !== void 0 ? ` ${ props.activeClass }` : '' }`\n : ''\n )\n )\n + (props.disable === true ? ' disabled' : '')\n + (\n isClickable.value === true\n ? ' q-item--clickable q-link cursor-pointer '\n + (props.manualFocus === true ? 'q-manual-focusable' : 'q-focusable q-hoverable')\n + (props.focused === true ? ' q-manual-focusable--focused' : '')\n : ''\n )\n )\n\n const style = computed(() => {\n if (props.insetLevel === void 0) {\n return null\n }\n\n const dir = $q.lang.rtl === true ? 'Right' : 'Left'\n return {\n [ 'padding' + dir ]: (16 + props.insetLevel * 56) + 'px'\n }\n })\n\n function onClick (e) {\n if (isClickable.value === true) {\n if (blurTargetRef.value !== null) {\n if (e.qKeyEvent !== true && document.activeElement === rootRef.value) {\n blurTargetRef.value.focus()\n }\n else if (document.activeElement === blurTargetRef.value) {\n rootRef.value.focus()\n }\n }\n\n navigateOnClick(e)\n }\n }\n\n function onKeyup (e) {\n if (isClickable.value === true && isKeyCode(e, [ 13, 32 ]) === true) {\n stopAndPrevent(e)\n\n // for ripple\n e.qKeyEvent = true\n\n // for click trigger\n const evt = new MouseEvent('click', e)\n evt.qKeyEvent = true\n rootRef.value.dispatchEvent(evt)\n }\n\n emit('keyup', e)\n }\n\n function getContent () {\n const child = hUniqueSlot(slots.default, [])\n\n isClickable.value === true && child.unshift(\n h('div', { class: 'q-focus-helper', tabindex: -1, ref: blurTargetRef })\n )\n\n return child\n }\n\n return () => {\n const data = {\n ref: rootRef,\n class: classes.value,\n style: style.value,\n role: 'listitem',\n onClick,\n onKeyup\n }\n\n if (isClickable.value === true) {\n data.tabindex = props.tabindex || '0'\n Object.assign(data, linkAttrs.value)\n }\n else if (isActionable.value === true) {\n data[ 'aria-disabled' ] = 'true'\n }\n\n return h(\n linkTag.value,\n data,\n getContent()\n )\n }\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { hSlot } from '../../utils/private.render/render.js'\n\nexport default createComponent({\n name: 'QItemSection',\n\n props: {\n avatar: Boolean,\n thumbnail: Boolean,\n side: Boolean,\n top: Boolean,\n noWrap: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() =>\n 'q-item__section column'\n + ` q-item__section--${ props.avatar === true || props.side === true || props.thumbnail === true ? 'side' : 'main' }`\n + (props.top === true ? ' q-item__section--top justify-start' : ' justify-center')\n + (props.avatar === true ? ' q-item__section--avatar' : '')\n + (props.thumbnail === true ? ' q-item__section--thumbnail' : '')\n + (props.noWrap === true ? ' q-item__section--nowrap' : '')\n )\n\n return () => h('div', { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { hSlot } from '../../utils/private.render/render.js'\n\nexport default createComponent({\n name: 'QItemLabel',\n\n props: {\n overline: Boolean,\n caption: Boolean,\n header: Boolean,\n lines: [ Number, String ]\n },\n\n setup (props, { slots }) {\n const parsedLines = computed(() => parseInt(props.lines, 10))\n\n const classes = computed(() =>\n 'q-item__label'\n + (props.overline === true ? ' q-item__label--overline text-overline' : '')\n + (props.caption === true ? ' q-item__label--caption text-caption' : '')\n + (props.header === true ? ' q-item__label--header' : '')\n + (parsedLines.value === 1 ? ' ellipsis' : '')\n )\n\n const style = computed(() => {\n return props.lines !== void 0 && parsedLines.value > 1\n ? {\n overflow: 'hidden',\n display: '-webkit-box',\n '-webkit-box-orient': 'vertical',\n '-webkit-line-clamp': parsedLines.value\n }\n : null\n })\n\n return () => h('div', {\n style: style.value,\n class: classes.value\n }, hSlot(slots.default))\n }\n})\n","import { h, ref, computed, watch, onActivated, onDeactivated, onBeforeMount, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport debounce from '../../utils/debounce/debounce.js'\nimport { noop } from '../../utils/event/event.js'\nimport { rtlHasScrollBug } from '../../utils/private.rtl/rtl.js'\n\nconst aggBucketSize = 1000\n\nconst scrollToEdges = [\n 'start',\n 'center',\n 'end',\n 'start-force',\n 'center-force',\n 'end-force'\n]\n\nconst filterProto = Array.prototype.filter\n\nconst setOverflowAnchor = __QUASAR_SSR__ || window.getComputedStyle(document.body).overflowAnchor === void 0\n ? noop\n : function (contentEl, index) {\n if (contentEl === null) {\n return\n }\n\n if (contentEl._qOverflowAnimationFrame !== void 0) {\n cancelAnimationFrame(contentEl._qOverflowAnimationFrame)\n }\n\n contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {\n if (contentEl === null) {\n return\n }\n\n contentEl._qOverflowAnimationFrame = void 0\n const children = contentEl.children || []\n\n filterProto\n .call(children, el => el.dataset && el.dataset.qVsAnchor !== void 0)\n .forEach(el => {\n delete el.dataset.qVsAnchor\n })\n\n const el = children[ index ]\n\n if (el && el.dataset) {\n el.dataset.qVsAnchor = ''\n }\n })\n }\n\nfunction sumFn (acc, h) {\n return acc + h\n}\n\nfunction getScrollDetails (\n parent,\n child,\n beforeRef,\n afterRef,\n horizontal,\n rtl,\n stickyStart,\n stickyEnd\n) {\n const\n parentCalc = parent === window ? document.scrollingElement || document.documentElement : parent,\n propElSize = horizontal === true ? 'offsetWidth' : 'offsetHeight',\n details = {\n scrollStart: 0,\n scrollViewSize: -stickyStart - stickyEnd,\n scrollMaxSize: 0,\n offsetStart: -stickyStart,\n offsetEnd: -stickyEnd\n }\n\n if (horizontal === true) {\n if (parent === window) {\n details.scrollStart = window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n details.scrollViewSize += document.documentElement.clientWidth\n }\n else {\n details.scrollStart = parentCalc.scrollLeft\n details.scrollViewSize += parentCalc.clientWidth\n }\n details.scrollMaxSize = parentCalc.scrollWidth\n\n if (rtl === true) {\n details.scrollStart = (rtlHasScrollBug === true ? details.scrollMaxSize - details.scrollViewSize : 0) - details.scrollStart\n }\n }\n else {\n if (parent === window) {\n details.scrollStart = window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n details.scrollViewSize += document.documentElement.clientHeight\n }\n else {\n details.scrollStart = parentCalc.scrollTop\n details.scrollViewSize += parentCalc.clientHeight\n }\n details.scrollMaxSize = parentCalc.scrollHeight\n }\n\n if (beforeRef !== null) {\n for (let el = beforeRef.previousElementSibling; el !== null; el = el.previousElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetStart += el[ propElSize ]\n }\n }\n }\n\n if (afterRef !== null) {\n for (let el = afterRef.nextElementSibling; el !== null; el = el.nextElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetEnd += el[ propElSize ]\n }\n }\n }\n\n if (child !== parent) {\n const\n parentRect = parentCalc.getBoundingClientRect(),\n childRect = child.getBoundingClientRect()\n\n if (horizontal === true) {\n details.offsetStart += childRect.left - parentRect.left\n details.offsetEnd -= childRect.width\n }\n else {\n details.offsetStart += childRect.top - parentRect.top\n details.offsetEnd -= childRect.height\n }\n\n if (parent !== window) {\n details.offsetStart += details.scrollStart\n }\n details.offsetEnd += details.scrollMaxSize - details.offsetStart\n }\n\n return details\n}\n\nfunction setScroll (parent, scroll, horizontal, rtl) {\n if (scroll === 'end') {\n scroll = (parent === window ? document.body : parent)[\n horizontal === true ? 'scrollWidth' : 'scrollHeight'\n ]\n }\n\n if (parent === window) {\n if (horizontal === true) {\n if (rtl === true) {\n scroll = (rtlHasScrollBug === true ? document.body.scrollWidth - document.documentElement.clientWidth : 0) - scroll\n }\n window.scrollTo(scroll, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n }\n else {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, scroll)\n }\n }\n else if (horizontal === true) {\n if (rtl === true) {\n scroll = (rtlHasScrollBug === true ? parent.scrollWidth - parent.offsetWidth : 0) - scroll\n }\n parent.scrollLeft = scroll\n }\n else {\n parent.scrollTop = scroll\n }\n}\n\nfunction sumSize (sizeAgg, size, from, to) {\n if (from >= to) { return 0 }\n\n const\n lastTo = size.length,\n fromAgg = Math.floor(from / aggBucketSize),\n toAgg = Math.floor((to - 1) / aggBucketSize) + 1\n\n let total = sizeAgg.slice(fromAgg, toAgg).reduce(sumFn, 0)\n\n if (from % aggBucketSize !== 0) {\n total -= size.slice(fromAgg * aggBucketSize, from).reduce(sumFn, 0)\n }\n if (to % aggBucketSize !== 0 && to !== lastTo) {\n total -= size.slice(to, toAgg * aggBucketSize).reduce(sumFn, 0)\n }\n\n return total\n}\n\nconst commonVirtScrollProps = {\n virtualScrollSliceSize: {\n type: [ Number, String ],\n default: 10\n },\n\n virtualScrollSliceRatioBefore: {\n type: [ Number, String ],\n default: 1\n },\n\n virtualScrollSliceRatioAfter: {\n type: [ Number, String ],\n default: 1\n },\n\n virtualScrollItemSize: {\n type: [ Number, String ],\n default: 24\n },\n\n virtualScrollStickySizeStart: {\n type: [ Number, String ],\n default: 0\n },\n\n virtualScrollStickySizeEnd: {\n type: [ Number, String ],\n default: 0\n },\n\n tableColspan: [ Number, String ]\n}\n\nexport const commonVirtScrollPropsList = Object.keys(commonVirtScrollProps)\n\nexport const useVirtualScrollProps = {\n virtualScrollHorizontal: Boolean,\n onVirtualScroll: Function,\n ...commonVirtScrollProps\n}\n\nexport function useVirtualScroll ({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl,\n virtualScrollItemSizeComputed // optional\n}) {\n const vm = getCurrentInstance()\n\n const { props, emit, proxy } = vm\n const { $q } = proxy\n\n let prevScrollStart, prevToIndex, localScrollViewSize, virtualScrollSizesAgg = [], virtualScrollSizes\n\n const virtualScrollPaddingBefore = ref(0)\n const virtualScrollPaddingAfter = ref(0)\n const virtualScrollSliceSizeComputed = ref({})\n\n const beforeRef = ref(null)\n const afterRef = ref(null)\n const contentRef = ref(null)\n\n const virtualScrollSliceRange = ref({ from: 0, to: 0 })\n\n const colspanAttr = computed(() => (props.tableColspan !== void 0 ? props.tableColspan : 100))\n\n if (virtualScrollItemSizeComputed === void 0) {\n virtualScrollItemSizeComputed = computed(() => props.virtualScrollItemSize)\n }\n\n const needsReset = computed(() => virtualScrollItemSizeComputed.value + ';' + props.virtualScrollHorizontal)\n\n const needsSliceRecalc = computed(() =>\n needsReset.value + ';' + props.virtualScrollSliceRatioBefore + ';' + props.virtualScrollSliceRatioAfter\n )\n\n watch(needsSliceRecalc, () => { setVirtualScrollSize() })\n watch(needsReset, reset)\n\n function reset () {\n localResetVirtualScroll(prevToIndex, true)\n }\n\n function refresh (toIndex) {\n localResetVirtualScroll(toIndex === void 0 ? prevToIndex : toIndex)\n }\n\n function scrollTo (toIndex, edge) {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const scrollDetails = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n )\n\n localScrollViewSize !== scrollDetails.scrollViewSize && setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n Math.min(virtualScrollLength.value - 1, Math.max(0, parseInt(toIndex, 10) || 0)),\n 0,\n scrollToEdges.indexOf(edge) !== -1 ? edge : (prevToIndex !== -1 && toIndex > prevToIndex ? 'end' : 'start')\n )\n }\n\n function localOnVirtualScrollEvt () {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const\n scrollDetails = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n ),\n listLastIndex = virtualScrollLength.value - 1,\n listEndOffset = scrollDetails.scrollMaxSize - scrollDetails.offsetStart - scrollDetails.offsetEnd - virtualScrollPaddingAfter.value\n\n if (prevScrollStart === scrollDetails.scrollStart) {\n return\n }\n\n if (scrollDetails.scrollMaxSize <= 0) {\n setVirtualScrollSliceRange(scrollEl, scrollDetails, 0, 0)\n return\n }\n\n localScrollViewSize !== scrollDetails.scrollViewSize && setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n updateVirtualScrollSizes(virtualScrollSliceRange.value.from)\n\n const scrollMaxStart = Math.floor(scrollDetails.scrollMaxSize\n - Math.max(scrollDetails.scrollViewSize, scrollDetails.offsetEnd)\n - Math.min(virtualScrollSizes[ listLastIndex ], scrollDetails.scrollViewSize / 2))\n\n if (scrollMaxStart > 0 && Math.ceil(scrollDetails.scrollStart) >= scrollMaxStart) {\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n listLastIndex,\n scrollDetails.scrollMaxSize - scrollDetails.offsetEnd - virtualScrollSizesAgg.reduce(sumFn, 0)\n )\n\n return\n }\n\n let\n toIndex = 0,\n listOffset = scrollDetails.scrollStart - scrollDetails.offsetStart,\n offset = listOffset\n\n if (listOffset <= listEndOffset && listOffset + scrollDetails.scrollViewSize >= virtualScrollPaddingBefore.value) {\n listOffset -= virtualScrollPaddingBefore.value\n toIndex = virtualScrollSliceRange.value.from\n offset = listOffset\n }\n else {\n for (let j = 0; listOffset >= virtualScrollSizesAgg[ j ] && toIndex < listLastIndex; j++) {\n listOffset -= virtualScrollSizesAgg[ j ]\n toIndex += aggBucketSize\n }\n }\n\n while (listOffset > 0 && toIndex < listLastIndex) {\n listOffset -= virtualScrollSizes[ toIndex ]\n if (listOffset > -scrollDetails.scrollViewSize) {\n toIndex++\n offset = listOffset\n }\n else {\n offset = virtualScrollSizes[ toIndex ] + listOffset\n }\n }\n\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n toIndex,\n offset\n )\n }\n\n function setVirtualScrollSliceRange (scrollEl, scrollDetails, toIndex, offset, align) {\n const alignForce = typeof align === 'string' && align.indexOf('-force') !== -1\n const alignEnd = alignForce === true ? align.replace('-force', '') : align\n const alignRange = alignEnd !== void 0 ? alignEnd : 'start'\n\n let\n from = Math.max(0, toIndex - virtualScrollSliceSizeComputed.value[ alignRange ]),\n to = from + virtualScrollSliceSizeComputed.value.total\n\n if (to > virtualScrollLength.value) {\n to = virtualScrollLength.value\n from = Math.max(0, to - virtualScrollSliceSizeComputed.value.total)\n }\n\n prevScrollStart = scrollDetails.scrollStart\n\n const rangeChanged = from !== virtualScrollSliceRange.value.from || to !== virtualScrollSliceRange.value.to\n\n if (rangeChanged === false && alignEnd === void 0) {\n emitScroll(toIndex)\n return\n }\n\n const { activeElement } = document\n const contentEl = contentRef.value\n if (\n rangeChanged === true\n && contentEl !== null\n && contentEl !== activeElement\n && contentEl.contains(activeElement) === true\n ) {\n contentEl.addEventListener('focusout', onBlurRefocusFn)\n\n setTimeout(() => {\n contentEl !== null && contentEl.removeEventListener('focusout', onBlurRefocusFn)\n })\n }\n\n setOverflowAnchor(contentEl, toIndex - from)\n\n const sizeBefore = alignEnd !== void 0 ? virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0) : 0\n\n if (rangeChanged === true) {\n // vue key matching algorithm works only if\n // the array of VNodes changes on only one of the ends\n // so we first change one end and then the other\n\n const tempTo = to >= virtualScrollSliceRange.value.from && from <= virtualScrollSliceRange.value.to\n ? virtualScrollSliceRange.value.to\n : to\n\n virtualScrollSliceRange.value = { from, to: tempTo }\n virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, from)\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, to, virtualScrollLength.value)\n\n requestAnimationFrame(() => {\n if (virtualScrollSliceRange.value.to !== to && prevScrollStart === scrollDetails.scrollStart) {\n virtualScrollSliceRange.value = { from: virtualScrollSliceRange.value.from, to }\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, to, virtualScrollLength.value)\n }\n })\n }\n\n requestAnimationFrame(() => {\n // if the scroll was changed give up\n // (another call to setVirtualScrollSliceRange before animation frame)\n if (prevScrollStart !== scrollDetails.scrollStart) {\n return\n }\n\n if (rangeChanged === true) {\n updateVirtualScrollSizes(from)\n }\n\n const\n sizeAfter = virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0),\n posStart = sizeAfter + scrollDetails.offsetStart + virtualScrollPaddingBefore.value,\n posEnd = posStart + virtualScrollSizes[ toIndex ]\n\n let scrollPosition = posStart + offset\n\n if (alignEnd !== void 0) {\n const sizeDiff = sizeAfter - sizeBefore\n const scrollStart = scrollDetails.scrollStart + sizeDiff\n\n scrollPosition = alignForce !== true && scrollStart < posStart && posEnd < scrollStart + scrollDetails.scrollViewSize\n ? scrollStart\n : (\n alignEnd === 'end'\n ? posEnd - scrollDetails.scrollViewSize\n : posStart - (alignEnd === 'start' ? 0 : Math.round((scrollDetails.scrollViewSize - virtualScrollSizes[ toIndex ]) / 2))\n )\n }\n\n prevScrollStart = scrollPosition\n\n setScroll(\n scrollEl,\n scrollPosition,\n props.virtualScrollHorizontal,\n $q.lang.rtl\n )\n\n emitScroll(toIndex)\n })\n }\n\n function updateVirtualScrollSizes (from) {\n const contentEl = contentRef.value\n\n if (contentEl) {\n const\n children = filterProto.call(\n contentEl.children,\n el => el.classList && el.classList.contains('q-virtual-scroll--skip') === false\n ),\n childrenLength = children.length,\n sizeFn = props.virtualScrollHorizontal === true\n ? el => el.getBoundingClientRect().width\n : el => el.offsetHeight\n\n let\n index = from,\n size, diff\n\n for (let i = 0; i < childrenLength;) {\n size = sizeFn(children[ i ])\n i++\n\n while (i < childrenLength && children[ i ].classList.contains('q-virtual-scroll--with-prev') === true) {\n size += sizeFn(children[ i ])\n i++\n }\n\n diff = size - virtualScrollSizes[ index ]\n\n if (diff !== 0) {\n virtualScrollSizes[ index ] += diff\n virtualScrollSizesAgg[ Math.floor(index / aggBucketSize) ] += diff\n }\n\n index++\n }\n }\n }\n\n function onBlurRefocusFn () {\n contentRef.value !== null && contentRef.value !== void 0 && contentRef.value.focus()\n }\n\n function localResetVirtualScroll (toIndex, fullReset) {\n const defaultSize = 1 * virtualScrollItemSizeComputed.value\n\n if (fullReset === true || Array.isArray(virtualScrollSizes) === false) {\n virtualScrollSizes = []\n }\n\n const oldVirtualScrollSizesLength = virtualScrollSizes.length\n\n virtualScrollSizes.length = virtualScrollLength.value\n\n for (let i = virtualScrollLength.value - 1; i >= oldVirtualScrollSizesLength; i--) {\n virtualScrollSizes[ i ] = defaultSize\n }\n\n const jMax = Math.floor((virtualScrollLength.value - 1) / aggBucketSize)\n virtualScrollSizesAgg = []\n for (let j = 0; j <= jMax; j++) {\n let size = 0\n const iMax = Math.min((j + 1) * aggBucketSize, virtualScrollLength.value)\n for (let i = j * aggBucketSize; i < iMax; i++) {\n size += virtualScrollSizes[ i ]\n }\n virtualScrollSizesAgg.push(size)\n }\n\n prevToIndex = -1\n prevScrollStart = void 0\n\n virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, virtualScrollSliceRange.value.from)\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, virtualScrollSliceRange.value.to, virtualScrollLength.value)\n\n if (toIndex >= 0) {\n updateVirtualScrollSizes(virtualScrollSliceRange.value.from)\n nextTick(() => { scrollTo(toIndex) })\n }\n else {\n onVirtualScrollEvt()\n }\n }\n\n function setVirtualScrollSize (scrollViewSize) {\n if (scrollViewSize === void 0 && typeof window !== 'undefined') {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {\n scrollViewSize = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n ).scrollViewSize\n }\n }\n\n localScrollViewSize = scrollViewSize\n\n const virtualScrollSliceRatioBefore = parseFloat(props.virtualScrollSliceRatioBefore) || 0\n const virtualScrollSliceRatioAfter = parseFloat(props.virtualScrollSliceRatioAfter) || 0\n const multiplier = 1 + virtualScrollSliceRatioBefore + virtualScrollSliceRatioAfter\n const view = scrollViewSize === void 0 || scrollViewSize <= 0\n ? 1\n : Math.ceil(scrollViewSize / virtualScrollItemSizeComputed.value)\n\n const baseSize = Math.max(\n 1,\n view,\n Math.ceil((props.virtualScrollSliceSize > 0 ? props.virtualScrollSliceSize : 10) / multiplier)\n )\n\n virtualScrollSliceSizeComputed.value = {\n total: Math.ceil(baseSize * multiplier),\n start: Math.ceil(baseSize * virtualScrollSliceRatioBefore),\n center: Math.ceil(baseSize * (0.5 + virtualScrollSliceRatioBefore)),\n end: Math.ceil(baseSize * (1 + virtualScrollSliceRatioBefore)),\n view\n }\n }\n\n function padVirtualScroll (tag, content) {\n const paddingSize = props.virtualScrollHorizontal === true ? 'width' : 'height'\n const style = {\n [ '--q-virtual-scroll-item-' + paddingSize ]: virtualScrollItemSizeComputed.value + 'px'\n }\n\n return [\n tag === 'tbody'\n ? h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'before',\n ref: beforeRef\n }, [\n h('tr', [\n h('td', {\n style: { [ paddingSize ]: `${ virtualScrollPaddingBefore.value }px`, ...style },\n colspan: colspanAttr.value\n })\n ])\n ])\n : h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'before',\n ref: beforeRef,\n style: { [ paddingSize ]: `${ virtualScrollPaddingBefore.value }px`, ...style }\n }),\n\n h(tag, {\n class: 'q-virtual-scroll__content',\n key: 'content',\n ref: contentRef,\n tabindex: -1\n }, content.flat()),\n\n tag === 'tbody'\n ? h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'after',\n ref: afterRef\n }, [\n h('tr', [\n h('td', {\n style: { [ paddingSize ]: `${ virtualScrollPaddingAfter.value }px`, ...style },\n colspan: colspanAttr.value\n })\n ])\n ])\n : h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'after',\n ref: afterRef,\n style: { [ paddingSize ]: `${ virtualScrollPaddingAfter.value }px`, ...style }\n })\n ]\n }\n\n function emitScroll (index) {\n if (prevToIndex !== index) {\n props.onVirtualScroll !== void 0 && emit('virtualScroll', {\n index,\n from: virtualScrollSliceRange.value.from,\n to: virtualScrollSliceRange.value.to - 1,\n direction: index < prevToIndex ? 'decrease' : 'increase',\n ref: proxy\n })\n\n prevToIndex = index\n }\n }\n\n setVirtualScrollSize()\n const onVirtualScrollEvt = debounce(\n localOnVirtualScrollEvt,\n $q.platform.is.ios === true ? 120 : 35\n )\n\n onBeforeMount(() => {\n setVirtualScrollSize()\n })\n\n let shouldActivate = false\n\n onDeactivated(() => {\n shouldActivate = true\n })\n\n onActivated(() => {\n if (shouldActivate !== true) return\n\n const scrollEl = getVirtualScrollTarget()\n\n if (prevScrollStart !== void 0 && scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {\n setScroll(\n scrollEl,\n prevScrollStart,\n props.virtualScrollHorizontal,\n $q.lang.rtl\n )\n }\n else {\n scrollTo(prevToIndex)\n }\n })\n\n __QUASAR_SSR__ || onBeforeUnmount(() => {\n onVirtualScrollEvt.cancel()\n })\n\n // expose public methods\n Object.assign(proxy, { scrollTo, reset, refresh })\n\n return {\n virtualScrollSliceRange,\n virtualScrollSliceSizeComputed,\n\n setVirtualScrollSize,\n onVirtualScrollEvt,\n localResetVirtualScroll,\n padVirtualScroll,\n\n scrollTo,\n reset,\n refresh\n }\n}\n"],"names":["__nuxt_component_14","createComponent","useDarkProps","useRouterLinkProps","props","slots","emit","$q","getCurrentInstance","isDark","useDark","hasLink","linkAttrs","linkClass","linkTag","navigateOnClick","useRouterLink","rootRef","ref","blurTargetRef","isActionable","computed","isClickable","classes","style","onClick","e","onKeyup","isKeyCode","stopAndPrevent","evt","getContent","child","hUniqueSlot","h","data","__nuxt_component_13","hSlot","__nuxt_component_12","parsedLines","aggBucketSize","scrollToEdges","filterProto","sumFn","acc","getScrollDetails","parent","beforeRef","afterRef","horizontal","rtl","stickyStart","stickyEnd","parentCalc","propElSize","details","el","parentRect","childRect","setScroll","scroll","sumSize","sizeAgg","size","from","to","lastTo","fromAgg","toAgg","total","commonVirtScrollProps","useVirtualScrollProps","useVirtualScroll","virtualScrollLength","getVirtualScrollTarget","getVirtualScrollEl","virtualScrollItemSizeComputed","vm","proxy","prevScrollStart","prevToIndex","localScrollViewSize","virtualScrollSizesAgg","virtualScrollSizes","virtualScrollPaddingBefore","virtualScrollPaddingAfter","virtualScrollSliceSizeComputed","contentRef","virtualScrollSliceRange","colspanAttr","needsReset","needsSliceRecalc","watch","setVirtualScrollSize","reset","localResetVirtualScroll","refresh","toIndex","scrollTo","edge","scrollEl","scrollDetails","setVirtualScrollSliceRange","localOnVirtualScrollEvt","listLastIndex","listEndOffset","updateVirtualScrollSizes","scrollMaxStart","listOffset","offset","j","align","alignForce","alignEnd","alignRange","rangeChanged","emitScroll","activeElement","contentEl","onBlurRefocusFn","sizeBefore","tempTo","sizeAfter","posStart","posEnd","scrollPosition","sizeDiff","scrollStart","children","childrenLength","sizeFn","index","diff","i","fullReset","defaultSize","oldVirtualScrollSizesLength","jMax","iMax","nextTick","onVirtualScrollEvt","scrollViewSize","virtualScrollSliceRatioBefore","virtualScrollSliceRatioAfter","multiplier","view","baseSize","padVirtualScroll","tag","content","paddingSize","debounce","onBeforeMount","shouldActivate","onDeactivated","onActivated"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}