{"version":3,"sources":["webpack:///./node_modules/quasar/src/components/item/QItemLabel.js","webpack:///./node_modules/quasar/src/components/item/QItemSection.js","webpack:///./node_modules/quasar/src/components/virtual-scroll/use-virtual-scroll.js","webpack:///./node_modules/quasar/src/components/field/QField.js","webpack:///./node_modules/quasar/src/components/chip/QChip.js","webpack:///./node_modules/quasar/src/components/select/QSelect.js"],"names":["defineComponent","name","props","overline","Boolean","caption","header","lines","Number","String","setup","slots","parsedLines","computed","parseInt","classes","value","style","overflow","display","h","class","hSlot","default","avatar","thumbnail","side","top","noWrap","aggBucketSize","scrollToEdges","slice","Array","prototype","buggyRTL","scroller","document","createElement","spacer","setAttribute","width","height","body","appendChild","scrollLeft","remove","id","setOverflowAnchor","window","getComputedStyle","overflowAnchor","noop","index","ssId","styleSheet","getElementById","type","head","qChildIndex","innerHTML","sumFn","acc","getScrollDetails","parent","child","beforeRef","afterRef","horizontal","rtl","stickyStart","stickyEnd","parentCalc","scrollingElement","documentElement","propElSize","details","scrollStart","scrollViewSize","scrollMaxSize","offsetStart","offsetEnd","pageXOffset","scrollX","innerWidth","clientWidth","scrollWidth","pageYOffset","scrollY","scrollTop","innerHeight","clientHeight","scrollHeight","el","previousElementSibling","classList","contains","nextElementSibling","parentRect","getBoundingClientRect","childRect","left","setScroll","scroll","scrollTo","offsetWidth","sumSize","sizeAgg","size","from","to","lastTo","length","fromAgg","Math","floor","toAgg","total","reduce","commonVirtScrollProps","virtualScrollSliceSize","virtualScrollSliceRatioBefore","virtualScrollSliceRatioAfter","virtualScrollItemSize","virtualScrollStickySizeStart","virtualScrollStickySizeEnd","tableColspan","commonVirtPropsList","Object","keys","useVirtualScrollProps","virtualScrollHorizontal","onVirtualScroll","Function","useVirtualScroll","virtualScrollLength","getVirtualScrollTarget","getVirtualScrollEl","virtualScrollItemSizeComputed","vm","getCurrentInstance","emit","proxy","$q","prevScrollStart","prevToIndex","localScrollViewSize","virtualScrollSizes","virtualScrollSizesAgg","vsId","virtualScrollPaddingBefore","ref","virtualScrollPaddingAfter","virtualScrollSliceSizeComputed","contentRef","virtualScrollSliceRange","colspanAttr","needsReset","needsSliceRecalc","reset","localResetVirtualScroll","refresh","toIndex","edge","scrollEl","nodeType","scrollDetails","lang","setVirtualScrollSize","setVirtualScrollSliceRange","min","max","indexOf","localOnVirtualScrollEvt","listLastIndex","listEndOffset","updateVirtualScrollSizes","scrollMaxStart","ceil","listOffset","offset","j","align","alignForce","alignEnd","replace","alignRange","rangeChanged","emitScroll","activeElement","onBlurFn","focus","addEventListener","requestAnimationFrame","removeEventListener","sizeBefore","tempTo","sizeAfter","posStart","posEnd","scrollPosition","sizeDiff","round","contentEl","children","call","filter","childrenLength","sizeFn","offsetHeight","diff","i","fullReset","defaultSize","isArray","oldVirtualScrollSizesLength","jMax","iMax","push","nextTick","onVirtualScrollEvt","multiplier","view","baseSize","start","center","end","padVirtualScroll","tag","content","paddingSize","key","colspan","tabindex","flat","direction","watch","debounce","platform","is","ios","onBeforeMount","onBeforeUnmount","assign","inheritAttrs","useFieldProps","emits","useFieldEmits","useField","useFieldState","defaultSizes","xs","sm","md","lg","xl","useDarkProps","useSizeProps","dense","icon","iconRight","iconRemove","iconSelected","label","color","textColor","modelValue","selected","square","outline","clickable","removable","disable","ripple","isDark","useDark","sizeStyle","useSize","hasLeftIcon","leftIcon","iconSet","chip","removeIcon","isClickable","text","attributes","onKeyup","e","keyCode","onClick","onRemove","stopAndPrevent","getContent","QIcon","hMergeSlotSafely","data","hDir","Ripple","validateNewValueMode","v","includes","reEscapeList","fieldPropsList","useFormProps","required","multiple","displayValue","displayValueHtml","dropdownIcon","options","optionValue","optionLabel","optionDisable","hideSelected","hideDropdownIcon","fillInput","maxValues","optionsDense","optionsDark","optionsSelectedClass","optionsHtml","optionsCover","menuShrink","menuAnchor","menuSelf","menuOffset","popupContentClass","popupContentStyle","useInput","useChips","newValueMode","validator","mapOptions","emitValue","inputDebounce","inputClass","inputStyle","autocomplete","transitionShow","transitionHide","transitionDuration","behavior","onNewValue","onFilter","menu","dialog","optionIndex","inputValue","dialogFieldFocused","innerLoadingIndicator","inputTimer","innerValueCache","optionScopeCache","hasDialog","userInputValue","filterId","defaultInputValue","transitionShowComputed","searchBuffer","searchBufferExp","inputRef","targetRef","menuRef","dialogRef","menuContentRef","nameProp","useFormInputNameAttr","onComposition","useKeyComposition","onInput","state","innerValue","mapNull","val","cache","values","map","getOption","innerFieldProps","forEach","isOptionsDark","hasValue","fieldValueIsFilled","computedInputClass","cls","menuContentClass","noOptions","selectedString","opt","getOptionLabel","join","needsHtmlFn","html","valueAsHtml","some","focused","selectedScope","removeAtIndex","removeAtIndexAndFocus","toggleOption","optionScope","optionEls","isOptionDisabled","itemProps","active","activeClass","computedOptionsSelectedClass","manualFocus","dark","isOptionSelected","desktop","onMousemove","setOptionIndex","option","optionWithoutEvents","isDeepEqual","dropdownArrowIcon","arrow","dropdown","squaredMenu","outlined","standout","borderless","rounded","getOptionValue","getPropValueFn","innerOptionsValue","inputControlEvents","evt","onChange","onKeydown","onTargetKeydown","onTargetAutocomplete","onKeypress","onTargetKeypress","onFocus","selectInputText","stop","onCompositionstart","onCompositionupdate","onCompositionend","getEmittingOptionValue","model","splice","add","unique","updateInputValue","keepOpen","editable","optValue","hidePopup","findIndex","moveOptionSelection","skipInputValue","normalizeToInterval","setInputValue","valueCache","fn","find","propValue","defaultVal","select","onTargetKeyup","isKeyCode","resetInputValue","target","clearTimeout","needle","toLocaleLowerCase","clearValue","shouldIgnoreKey","newValueModeValid","tabShouldSelect","shiftKey","prevent","closeMenu","targetUid","innerLoading","showPopup","optionsLength","Date","now","altKey","ctrlKey","char","keyRepeat","searchRe","RegExp","split","l","test","done","mode","__qPortalInnerRef","getSelection","scope","QChip","getAllOptions","optionSlot","QItem","QItemSection","QItemLabel","concat","hMergeSlot","getInput","fromDialog","isTarget","splitAttrs","maxlength","autofocus","disabled","readonly","composing","setTimeout","noFiltering","internal","keepClosed","localFilterId","afterFn","updateMenu","getMenu","QMenu","fit","cover","anchor","self","noParentEvent","noRefocus","noFocus","separateClosePopup","onScrollPassive","onBeforeShow","onControlPopupShow","onBeforeHide","onMenuBeforeHide","onShow","onMenuShow","onControlPopupHide","onDialogFieldFocus","onDialogFieldBlur","getDialog","QField","fieldClass","for","loading","itemAligned","filled","stackLabel","listeners","onBlur","rawControl","getControl","before","after","QDialog","position","onDialogBeforeHide","onHide","onDialogHide","onDialogShow","__updateRefocusTarget","rootRef","querySelector","onControlFocusin","show","updateMenuPosition","updatePosition","hasPopupOpen","onControlFocusout","updatePreState","mobile","immediate","onBeforeUpdate","onUpdated","apply","arguments","floatingLabel","getControlChild","controlEvents","onFocusin","onFocusout","opts","getInnerAppend"],"mappings":"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","file":"js/chunk-e107b382.ae965792.js","sourcesContent":["import { h, defineComponent, computed } from 'vue'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default defineComponent({\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, defineComponent, computed } from 'vue'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default defineComponent({\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, ref, computed, watch, onBeforeMount, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport debounce from '../../utils/debounce.js'\nimport { noop } from '../../utils/event.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 slice = Array.prototype.slice\n\nlet buggyRTL = void 0\n\n// mobile Chrome takes the crown for this\nif (!__QUASAR_SSR__) {\n const scroller = document.createElement('div')\n const spacer = document.createElement('div')\n\n scroller.setAttribute('dir', 'rtl')\n scroller.style.width = '1px'\n scroller.style.height = '1px'\n scroller.style.overflow = 'auto'\n\n spacer.style.width = '1000px'\n spacer.style.height = '1px'\n\n document.body.appendChild(scroller)\n scroller.appendChild(spacer)\n scroller.scrollLeft = -1000\n\n buggyRTL = scroller.scrollLeft >= 0\n\n scroller.remove()\n}\n\nlet id = 1\n\nconst setOverflowAnchor = __QUASAR_SSR__ || window.getComputedStyle(document.body).overflowAnchor === void 0\n ? noop\n : function (id, index) {\n const ssId = id + '_ss'\n\n let styleSheet = document.getElementById(ssId)\n\n if (styleSheet === null) {\n styleSheet = document.createElement('style')\n styleSheet.type = 'text/css'\n styleSheet.id = ssId\n document.head.appendChild(styleSheet)\n }\n\n if (styleSheet.qChildIndex !== index) {\n styleSheet.qChildIndex = index\n styleSheet.innerHTML = `#${ id } > *:nth-child(${ index }) { overflow-anchor: auto }`\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 += window.innerWidth\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 = (buggyRTL === 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 += window.innerHeight\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 (parent === window) {\n if (horizontal === true) {\n if (rtl === true) {\n scroll = (buggyRTL === true ? document.body.scrollWidth - window.innerWidth : 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 = (buggyRTL === 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: null\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 commonVirtPropsList = 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 vsId = 'qvs_' + id++\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 if (\n rangeChanged === true\n && contentRef.value !== null\n && contentRef.value !== activeElement\n && contentRef.value.contains(activeElement) === true\n ) {\n const onBlurFn = () => {\n contentRef.value.focus()\n }\n\n activeElement.addEventListener('blur', onBlurFn, true)\n\n requestAnimationFrame(() => {\n activeElement.removeEventListener('blur', onBlurFn, true)\n })\n }\n\n setOverflowAnchor(vsId, toIndex - from + 1)\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 = slice.call(contentEl.children)\n .filter(el => el.classList.contains('q-virtual-scroll--skip') === false),\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 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 if (toIndex >= 0) {\n updateVirtualScrollSizes(virtualScrollSliceRange.value.from)\n nextTick(() => { scrollTo(toIndex) })\n }\n else {\n virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, virtualScrollSliceRange.value.from)\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, virtualScrollSliceRange.value.to, virtualScrollLength.value)\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 multiplier = 1 + props.virtualScrollSliceRatioBefore + props.virtualScrollSliceRatioAfter\n const view = scrollViewSize === void 0 || scrollViewSize <= 0\n ? 1\n : Math.ceil(scrollViewSize / virtualScrollItemSizeComputed.value)\n\n const baseSize = Math.max(\n 10,\n view,\n Math.ceil(props.virtualScrollSliceSize / multiplier)\n )\n\n virtualScrollSliceSizeComputed.value = {\n total: Math.ceil(baseSize * multiplier),\n start: Math.ceil(baseSize * props.virtualScrollSliceRatioBefore),\n center: Math.ceil(baseSize * (0.5 + props.virtualScrollSliceRatioBefore)),\n end: Math.ceil(baseSize * (1 + props.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 id: vsId,\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('virtual-scroll', {\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(localOnVirtualScrollEvt, $q.platform.is.ios === true ? 120 : 35)\n\n onBeforeMount(() => {\n setVirtualScrollSize()\n })\n\n setOverflowAnchor !== noop && onBeforeUnmount(() => {\n const styleSheet = document.getElementById(vsId + '_ss')\n styleSheet !== null && styleSheet.remove()\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","import { defineComponent } from 'vue'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits } from '../../composables/private/use-field.js'\n\nexport default defineComponent({\n name: 'QField',\n\n inheritAttrs: false,\n\n props: useFieldProps,\n\n emits: useFieldEmits,\n\n setup () {\n return useField(useFieldState())\n }\n})\n","import { h, defineComponent, computed, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport Ripple from '../../directives/Ripple.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\n\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { hMergeSlotSafely, hDir } from '../../utils/private/render.js'\n\nconst defaultSizes = {\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n}\n\nexport default defineComponent({\n name: 'QChip',\n\n props: {\n ...useDarkProps,\n ...useSizeProps,\n\n dense: Boolean,\n\n icon: String,\n iconRight: String,\n iconRemove: String,\n iconSelected: String,\n label: [ String, Number ],\n\n color: String,\n textColor: String,\n\n modelValue: {\n type: Boolean,\n default: true\n },\n selected: {\n type: Boolean,\n default: null\n },\n\n square: Boolean,\n outline: Boolean,\n clickable: Boolean,\n removable: Boolean,\n\n tabindex: [ String, Number ],\n disable: Boolean,\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n }\n },\n\n emits: [ 'update:modelValue', 'update:selected', 'remove', 'click' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const isDark = useDark(props, $q)\n const sizeStyle = useSize(props, defaultSizes)\n\n const hasLeftIcon = computed(() => props.selected === true || props.icon !== void 0)\n\n const leftIcon = computed(() => (\n props.selected === true\n ? props.iconSelected || $q.iconSet.chip.selected\n : props.icon\n ))\n\n const removeIcon = computed(() => props.iconRemove || $q.iconSet.chip.remove)\n\n const isClickable = computed(() =>\n props.disable === false\n && (props.clickable === true || props.selected !== null)\n )\n\n const classes = computed(() => {\n const text = props.outline === true\n ? props.color || props.textColor\n : props.textColor\n\n return 'q-chip row inline no-wrap items-center'\n + (props.outline === false && props.color !== void 0 ? ` bg-${ props.color }` : '')\n + (text ? ` text-${ text } q-chip--colored` : '')\n + (props.disable === true ? ' disabled' : '')\n + (props.dense === true ? ' q-chip--dense' : '')\n + (props.outline === true ? ' q-chip--outline' : '')\n + (props.selected === true ? ' q-chip--selected' : '')\n + (isClickable.value === true ? ' q-chip--clickable cursor-pointer non-selectable q-hoverable' : '')\n + (props.square === true ? ' q-chip--square' : '')\n + (isDark.value === true ? ' q-chip--dark q-dark' : '')\n })\n\n const attributes = computed(() => (\n props.disable === true\n ? { tabindex: -1, 'aria-disabled': 'true' }\n : { tabindex: props.tabindex || 0 }\n ))\n\n function onKeyup (e) {\n e.keyCode === 13 /* ENTER */ && onClick(e)\n }\n\n function onClick (e) {\n if (!props.disable) {\n emit('update:selected', !props.selected)\n emit('click', e)\n }\n }\n\n function onRemove (e) {\n if (e.keyCode === void 0 || e.keyCode === 13) {\n stopAndPrevent(e)\n if (props.disable === false) {\n emit('update:modelValue', false)\n emit('remove')\n }\n }\n }\n\n function getContent () {\n const child = []\n\n isClickable.value === true && child.push(\n h('div', { class: 'q-focus-helper' })\n )\n\n hasLeftIcon.value === true && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--left',\n name: leftIcon.value\n })\n )\n\n const label = props.label !== void 0\n ? [ h('div', { class: 'ellipsis' }, [ props.label ]) ]\n : void 0\n\n child.push(\n h('div', {\n class: 'q-chip__content col row no-wrap items-center q-anchor--skip'\n }, hMergeSlotSafely(slots.default, label))\n )\n\n props.iconRight && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--right',\n name: props.iconRight\n })\n )\n\n props.removable === true && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--remove cursor-pointer',\n name: removeIcon.value,\n ...attributes.value,\n onClick: onRemove,\n onKeyup: onRemove\n })\n )\n\n return child\n }\n\n return () => {\n if (props.modelValue === false) { return }\n\n const data = {\n class: classes.value,\n style: sizeStyle.value\n }\n\n isClickable.value === true && Object.assign(\n data,\n attributes.value,\n { onClick, onKeyup }\n )\n\n return hDir(\n 'div',\n data,\n getContent(),\n 'ripple',\n props.ripple !== false && props.disable !== true,\n () => [ [ Ripple, props.ripple ] ]\n )\n }\n }\n})\n","import { h, defineComponent, ref, computed, watch, onBeforeUpdate, onUpdated, onBeforeMount, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport QField from '../field/QField.js'\nimport QIcon from '../icon/QIcon.js'\nimport QChip from '../chip/QChip.js'\n\nimport QItem from '../item/QItem.js'\nimport QItemSection from '../item/QItemSection.js'\nimport QItemLabel from '../item/QItemLabel.js'\n\nimport QMenu from '../menu/QMenu.js'\nimport QDialog from '../dialog/QDialog.js'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits, fieldValueIsFilled } from '../../composables/private/use-field.js'\nimport { useVirtualScroll, useVirtualScrollProps } from '../virtual-scroll/use-virtual-scroll.js'\nimport { useFormProps, useFormInputNameAttr } from '../../composables/private/use-form.js'\nimport useKeyComposition from '../../composables/private/use-key-composition.js'\n\nimport { isDeepEqual } from '../../utils/private/is.js'\nimport { stop, prevent, stopAndPrevent } from '../../utils/event.js'\nimport { normalizeToInterval } from '../../utils/format.js'\nimport { shouldIgnoreKey, isKeyCode } from '../../utils/private/key-composition.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\n\nconst validateNewValueMode = v => [ 'add', 'add-unique', 'toggle' ].includes(v)\nconst reEscapeList = '.*+?^${}()|[]\\\\'\nconst fieldPropsList = Object.keys(useFieldProps)\n\nexport default defineComponent({\n name: 'QSelect',\n\n inheritAttrs: false,\n\n props: {\n ...useVirtualScrollProps,\n ...useFormProps,\n ...useFieldProps,\n\n modelValue: {\n required: true\n },\n\n multiple: Boolean,\n\n displayValue: [ String, Number ],\n displayValueHtml: Boolean,\n dropdownIcon: String,\n\n options: {\n type: Array,\n default: () => []\n },\n\n optionValue: [ Function, String ],\n optionLabel: [ Function, String ],\n optionDisable: [ Function, String ],\n\n hideSelected: Boolean,\n hideDropdownIcon: Boolean,\n fillInput: Boolean,\n\n maxValues: [ Number, String ],\n\n optionsDense: Boolean,\n optionsDark: {\n type: Boolean,\n default: null\n },\n optionsSelectedClass: String,\n optionsHtml: Boolean,\n\n optionsCover: Boolean,\n\n menuShrink: Boolean,\n menuAnchor: String,\n menuSelf: String,\n menuOffset: Array,\n\n popupContentClass: String,\n popupContentStyle: [ String, Array, Object ],\n\n useInput: Boolean,\n useChips: Boolean,\n\n newValueMode: {\n type: String,\n validator: validateNewValueMode\n },\n\n mapOptions: Boolean,\n emitValue: Boolean,\n\n inputDebounce: {\n type: [ Number, String ],\n default: 500\n },\n\n inputClass: [ Array, String, Object ],\n inputStyle: [ Array, String, Object ],\n\n tabindex: {\n type: [ String, Number ],\n default: 0\n },\n\n autocomplete: String,\n\n transitionShow: String,\n transitionHide: String,\n transitionDuration: [ String, Number ],\n\n behavior: {\n type: String,\n validator: v => [ 'default', 'menu', 'dialog' ].includes(v),\n default: 'default'\n },\n\n virtualScrollItemSize: {\n type: [ Number, String ],\n default: void 0\n },\n\n onNewValue: Function,\n onFilter: Function\n },\n\n emits: [\n ...useFieldEmits,\n 'add', 'remove', 'input-value',\n 'keyup', 'keypress', 'keydown',\n 'filter-abort'\n ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const menu = ref(false)\n const dialog = ref(false)\n const optionIndex = ref(-1)\n const inputValue = ref('')\n const dialogFieldFocused = ref(false)\n const innerLoadingIndicator = ref(false)\n\n let inputTimer, innerValueCache, optionScopeCache,\n hasDialog, userInputValue, filterId, defaultInputValue,\n transitionShowComputed, searchBuffer, searchBufferExp\n\n const inputRef = ref(null)\n const targetRef = ref(null)\n const menuRef = ref(null)\n const dialogRef = ref(null)\n const menuContentRef = ref(null)\n\n const nameProp = useFormInputNameAttr(props)\n\n const onComposition = useKeyComposition(onInput)\n\n const virtualScrollLength = computed(() => (\n Array.isArray(props.options)\n ? props.options.length\n : 0\n ))\n\n const virtualScrollItemSizeComputed = computed(() => (\n props.virtualScrollItemSize === void 0\n ? (props.dense === true ? 24 : 48)\n : props.virtualScrollItemSize\n ))\n\n const {\n virtualScrollSliceRange,\n virtualScrollSliceSizeComputed,\n localResetVirtualScroll,\n padVirtualScroll,\n onVirtualScrollEvt,\n scrollTo,\n setVirtualScrollSize\n } = useVirtualScroll({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl,\n virtualScrollItemSizeComputed\n })\n\n const state = useFieldState()\n\n const innerValue = computed(() => {\n const\n mapNull = props.mapOptions === true && props.multiple !== true,\n val = props.modelValue !== void 0 && (props.modelValue !== null || mapNull === true)\n ? (props.multiple === true && Array.isArray(props.modelValue) ? props.modelValue : [ props.modelValue ])\n : []\n\n if (props.mapOptions === true && Array.isArray(props.options) === true) {\n const cache = props.mapOptions === true && innerValueCache !== void 0\n ? innerValueCache\n : []\n const values = val.map(v => getOption(v, cache))\n\n return props.modelValue === null && mapNull === true\n ? values.filter(v => v !== null)\n : values\n }\n\n return val\n })\n\n const innerFieldProps = computed(() => {\n const acc = {}\n fieldPropsList.forEach(key => props[ key ])\n return acc\n })\n\n const isOptionsDark = computed(() => (\n props.optionsDark === null\n ? state.isDark.value\n : props.optionsDark\n ))\n\n const hasValue = computed(() => fieldValueIsFilled(innerValue.value))\n\n const computedInputClass = computed(() => {\n let cls = 'q-field__input q-placeholder col'\n\n if (props.hideSelected === true || innerValue.value.length === 0) {\n return [ cls, props.inputClass ]\n }\n\n cls += ' q-field__input--padding'\n\n return props.inputClass === void 0\n ? cls\n : [ cls, props.inputClass ]\n })\n\n const menuContentClass = computed(() =>\n (props.virtualScrollHorizontal === true ? 'q-virtual-scroll--horizontal' : '')\n + (props.popupContentClass ? ' ' + props.popupContentClass : '')\n )\n\n const noOptions = computed(() => virtualScrollLength.value === 0)\n\n const selectedString = computed(() =>\n innerValue.value\n .map(opt => getOptionLabel.value(opt))\n .join(', ')\n )\n\n const needsHtmlFn = computed(() => (\n props.optionsHtml === true\n ? () => true\n : opt => opt !== void 0 && opt !== null && opt.html === true\n ))\n\n const valueAsHtml = computed(() => (\n props.displayValueHtml === true || (\n props.displayValue === void 0 && (\n props.optionsHtml === true\n || innerValue.value.some(needsHtmlFn.value)\n )\n )\n ))\n\n const tabindex = computed(() => (state.focused.value === true ? props.tabindex : -1))\n\n const selectedScope = computed(() => {\n return innerValue.value.map((opt, i) => ({\n index: i,\n opt,\n html: needsHtmlFn.value(opt),\n selected: true,\n removeAtIndex: removeAtIndexAndFocus,\n toggleOption,\n tabindex: tabindex.value\n }))\n })\n\n const optionScope = computed(() => {\n if (virtualScrollLength.value === 0) {\n return []\n }\n\n const { from, to } = virtualScrollSliceRange.value\n const { options, optionEls } = optionScopeCache\n\n return props.options.slice(from, to).map((opt, i) => {\n const disable = isOptionDisabled.value(opt) === true\n const index = from + i\n\n const itemProps = {\n clickable: true,\n active: false,\n activeClass: computedOptionsSelectedClass.value,\n manualFocus: true,\n focused: false,\n disable,\n tabindex: -1,\n dense: props.optionsDense,\n dark: isOptionsDark.value,\n onClick: () => { toggleOption(opt) }\n }\n\n if (disable !== true) {\n isOptionSelected(opt) === true && (itemProps.active = true)\n optionIndex.value === index && (itemProps.focused = true)\n\n if ($q.platform.is.desktop === true) {\n itemProps.onMousemove = () => { setOptionIndex(index) }\n }\n }\n\n const option = {\n index,\n opt,\n html: needsHtmlFn.value(opt),\n label: getOptionLabel.value(opt),\n selected: itemProps.active,\n focused: itemProps.focused,\n toggleOption,\n setOptionIndex,\n itemProps\n }\n\n const optionWithoutEvents = {\n ...option,\n itemProps: {\n ...itemProps,\n onClick: void 0,\n onMousemove: void 0\n }\n }\n\n if (options[ i ] === void 0 || isDeepEqual(optionWithoutEvents, options[ i ]) !== true) {\n options[ i ] = optionWithoutEvents\n optionEls[ i ] = void 0\n }\n\n return option\n })\n })\n\n const dropdownArrowIcon = computed(() => (\n props.dropdownIcon !== void 0\n ? props.dropdownIcon\n : $q.iconSet.arrow.dropdown\n ))\n\n const squaredMenu = computed(() =>\n props.optionsCover === false\n && props.outlined !== true\n && props.standout !== true\n && props.borderless !== true\n && props.rounded !== true\n )\n\n const computedOptionsSelectedClass = computed(() => (\n props.optionsSelectedClass !== void 0\n ? props.optionsSelectedClass\n : (props.color !== void 0 ? `text-${ props.color }` : '')\n ))\n\n // returns method to get value of an option;\n // takes into account 'option-value' prop\n const getOptionValue = computed(() => getPropValueFn(props.optionValue, 'value'))\n\n // returns method to get label of an option;\n // takes into account 'option-label' prop\n const getOptionLabel = computed(() => getPropValueFn(props.optionLabel, 'label'))\n\n // returns method to tell if an option is disabled;\n // takes into account 'option-disable' prop\n const isOptionDisabled = computed(() => getPropValueFn(props.optionDisable, 'disable'))\n\n const innerOptionsValue = computed(() => innerValue.value.map(opt => getOptionValue.value(opt)))\n\n const inputControlEvents = computed(() => {\n const evt = {\n onInput,\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n onChange: onComposition,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetAutocomplete,\n onKeypress: onTargetKeypress,\n onFocus: selectInputText,\n onClick (e) { hasDialog === true && stop(e) }\n }\n\n evt.onCompositionstart = evt.onCompositionupdate = evt.onCompositionend = onComposition\n\n return evt\n })\n\n watch(innerValue, val => {\n innerValueCache = val\n\n if (\n props.useInput === true\n && props.fillInput === true\n && props.multiple !== true\n // Prevent re-entering in filter while filtering\n // Also prevent clearing inputValue while filtering\n && state.innerLoading.value !== true\n && ((dialog.value !== true && menu.value !== true) || hasValue.value !== true)\n ) {\n userInputValue !== true && resetInputValue()\n if (dialog.value === true || menu.value === true) {\n filter('')\n }\n }\n }, { immediate: true })\n\n watch(() => props.fillInput, resetInputValue)\n\n watch(menu, updateMenu)\n\n function getEmittingOptionValue (opt) {\n return props.emitValue === true\n ? getOptionValue.value(opt)\n : opt\n }\n\n function removeAtIndex (index) {\n if (index > -1 && index < innerValue.value.length) {\n if (props.multiple === true) {\n const model = props.modelValue.slice()\n emit('remove', { index, value: model.splice(index, 1)[ 0 ] })\n emit('update:modelValue', model)\n }\n else {\n emit('update:modelValue', null)\n }\n }\n }\n\n function removeAtIndexAndFocus (index) {\n removeAtIndex(index)\n state.focus()\n }\n\n function add (opt, unique) {\n const val = getEmittingOptionValue(opt)\n\n if (props.multiple !== true) {\n props.fillInput === true && updateInputValue(\n getOptionLabel.value(opt),\n true,\n true\n )\n\n emit('update:modelValue', val)\n return\n }\n\n if (innerValue.value.length === 0) {\n emit('add', { index: 0, value: val })\n emit('update:modelValue', props.multiple === true ? [ val ] : val)\n return\n }\n\n if (unique === true && isOptionSelected(opt) === true) {\n return\n }\n\n if (props.maxValues !== void 0 && props.modelValue.length >= props.maxValues) {\n return\n }\n\n const model = props.modelValue.slice()\n\n emit('add', { index: model.length, value: val })\n model.push(val)\n emit('update:modelValue', model)\n }\n\n function toggleOption (opt, keepOpen) {\n if (state.editable.value !== true || opt === void 0 || isOptionDisabled.value(opt) === true) {\n return\n }\n\n const optValue = getOptionValue.value(opt)\n\n if (props.multiple !== true) {\n if (keepOpen !== true) {\n updateInputValue(\n props.fillInput === true ? getOptionLabel.value(opt) : '',\n true,\n true\n )\n\n hidePopup()\n }\n\n targetRef.value !== null && targetRef.value.focus()\n\n if (isDeepEqual(getOptionValue.value(innerValue.value[ 0 ]), optValue) !== true) {\n emit('update:modelValue', props.emitValue === true ? optValue : opt)\n }\n return\n }\n\n (hasDialog !== true || dialogFieldFocused.value === true) && state.focus()\n\n selectInputText()\n\n if (innerValue.value.length === 0) {\n const val = props.emitValue === true ? optValue : opt\n emit('add', { index: 0, value: val })\n emit('update:modelValue', props.multiple === true ? [ val ] : val)\n return\n }\n\n const\n model = props.modelValue.slice(),\n index = innerOptionsValue.value.findIndex(v => isDeepEqual(v, optValue))\n\n if (index > -1) {\n emit('remove', { index, value: model.splice(index, 1)[ 0 ] })\n }\n else {\n if (props.maxValues !== void 0 && model.length >= props.maxValues) {\n return\n }\n\n const val = props.emitValue === true ? optValue : opt\n\n emit('add', { index: model.length, value: val })\n model.push(val)\n }\n\n emit('update:modelValue', model)\n }\n\n function setOptionIndex (index) {\n if ($q.platform.is.desktop !== true) { return }\n\n const val = index > -1 && index < virtualScrollLength.value\n ? index\n : -1\n\n if (optionIndex.value !== val) {\n optionIndex.value = val\n }\n }\n\n function moveOptionSelection (offset = 1, skipInputValue) {\n if (menu.value === true) {\n let index = optionIndex.value\n do {\n index = normalizeToInterval(\n index + offset,\n -1,\n virtualScrollLength.value - 1\n )\n }\n while (index !== -1 && index !== optionIndex.value && isOptionDisabled.value(props.options[ index ]) === true)\n\n if (optionIndex.value !== index) {\n setOptionIndex(index)\n scrollTo(index)\n\n if (skipInputValue !== true && props.useInput === true && props.fillInput === true) {\n setInputValue(index >= 0\n ? getOptionLabel.value(props.options[ index ])\n : defaultInputValue\n )\n }\n }\n }\n }\n\n function getOption (value, valueCache) {\n const fn = opt => isDeepEqual(getOptionValue.value(opt), value)\n return props.options.find(fn) || valueCache.find(fn) || value\n }\n\n function getPropValueFn (propValue, defaultVal) {\n const val = propValue !== void 0\n ? propValue\n : defaultVal\n\n return typeof val === 'function'\n ? val\n : opt => (Object(opt) === opt && val in opt ? opt[ val ] : opt)\n }\n\n function isOptionSelected (opt) {\n const val = getOptionValue.value(opt)\n return innerOptionsValue.value.find(v => isDeepEqual(v, val)) !== void 0\n }\n\n function selectInputText () {\n if (props.useInput === true && targetRef.value !== null) {\n targetRef.value.select()\n }\n }\n\n function onTargetKeyup (e) {\n // if ESC and we have an opened menu\n // then stop propagation (might be caught by a QDialog\n // and so it will also close the QDialog, which is wrong)\n if (isKeyCode(e, 27) === true && menu.value === true) {\n stop(e)\n // on ESC we need to close the dialog also\n hidePopup()\n resetInputValue()\n }\n\n emit('keyup', e)\n }\n\n function onTargetAutocomplete (e) {\n const { value } = e.target\n\n if (e.keyCode !== void 0) {\n onTargetKeyup(e)\n return\n }\n\n e.target.value = ''\n clearTimeout(inputTimer)\n resetInputValue()\n\n if (typeof value === 'string' && value.length > 0) {\n const needle = value.toLocaleLowerCase()\n\n let fn = opt => getOptionValue.value(opt).toLocaleLowerCase() === needle\n let option = props.options.find(fn)\n\n if (option !== void 0) {\n if (innerValue.value.indexOf(option) === -1) {\n toggleOption(option)\n }\n else {\n hidePopup()\n }\n }\n else {\n fn = opt => getOptionLabel.value(opt).toLocaleLowerCase() === needle\n option = props.options.find(fn)\n\n if (option !== void 0) {\n if (innerValue.value.indexOf(option) === -1) {\n toggleOption(option)\n }\n else {\n hidePopup()\n }\n }\n else {\n filter(value, true)\n }\n }\n }\n else {\n state.clearValue(e)\n }\n }\n\n function onTargetKeypress (e) {\n emit('keypress', e)\n }\n\n function onTargetKeydown (e) {\n emit('keydown', e)\n\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const newValueModeValid = inputValue.value.length > 0\n && (props.newValueMode !== void 0 || props.onNewValue !== void 0)\n\n const tabShouldSelect = e.shiftKey !== true\n && props.multiple !== true\n && (optionIndex.value > -1 || newValueModeValid === true)\n\n // escape\n if (e.keyCode === 27) {\n prevent(e) // prevent clearing the inputValue\n return\n }\n\n // tab\n if (e.keyCode === 9 && tabShouldSelect === false) {\n closeMenu()\n return\n }\n\n if (e.target === void 0 || e.target.id !== state.targetUid.value) { return }\n\n // down\n if (\n e.keyCode === 40\n && state.innerLoading.value !== true\n && menu.value === false\n ) {\n stopAndPrevent(e)\n showPopup()\n return\n }\n\n // backspace\n if (\n e.keyCode === 8\n && props.hideSelected !== true\n && inputValue.value.length === 0\n ) {\n if (props.multiple === true && Array.isArray(props.modelValue) === true) {\n removeAtIndex(props.modelValue.length - 1)\n }\n else if (props.multiple !== true && props.modelValue !== null) {\n emit('update:modelValue', null)\n }\n return\n }\n\n // home, end - 36, 35\n if (\n (e.keyCode === 35 || e.keyCode === 36)\n && (typeof inputValue.value !== 'string' || inputValue.value.length === 0)\n ) {\n stopAndPrevent(e)\n optionIndex.value = -1\n moveOptionSelection(e.keyCode === 36 ? 1 : -1, props.multiple)\n }\n\n // pg up, pg down - 33, 34\n if (\n (e.keyCode === 33 || e.keyCode === 34)\n && virtualScrollSliceSizeComputed.value !== void 0\n ) {\n stopAndPrevent(e)\n optionIndex.value = Math.max(\n -1,\n Math.min(\n virtualScrollLength.value,\n optionIndex.value + (e.keyCode === 33 ? -1 : 1) * virtualScrollSliceSizeComputed.value.view\n )\n )\n moveOptionSelection(e.keyCode === 33 ? 1 : -1, props.multiple)\n }\n\n // up, down\n if (e.keyCode === 38 || e.keyCode === 40) {\n stopAndPrevent(e)\n moveOptionSelection(e.keyCode === 38 ? -1 : 1, props.multiple)\n }\n\n const optionsLength = virtualScrollLength.value\n\n // clear search buffer if expired\n if (searchBuffer === void 0 || searchBufferExp < Date.now()) {\n searchBuffer = ''\n }\n\n // keyboard search when not having use-input\n if (\n optionsLength > 0\n && props.useInput !== true\n && e.key !== void 0\n && e.key.length === 1 // printable char\n && e.altKey === e.ctrlKey // not kbd shortcut\n && (e.keyCode !== 32 || searchBuffer.length > 0) // space in middle of search\n ) {\n menu.value !== true && showPopup(e)\n\n const\n char = e.key.toLocaleLowerCase(),\n keyRepeat = searchBuffer.length === 1 && searchBuffer[ 0 ] === char\n\n searchBufferExp = Date.now() + 1500\n if (keyRepeat === false) {\n stopAndPrevent(e)\n searchBuffer += char\n }\n\n const searchRe = new RegExp('^' + searchBuffer.split('').map(l => (reEscapeList.indexOf(l) > -1 ? '\\\\' + l : l)).join('.*'), 'i')\n\n let index = optionIndex.value\n\n if (keyRepeat === true || index < 0 || searchRe.test(getOptionLabel.value(props.options[ index ])) !== true) {\n do {\n index = normalizeToInterval(index + 1, -1, optionsLength - 1)\n }\n while (index !== optionIndex.value && (\n isOptionDisabled.value(props.options[ index ]) === true\n || searchRe.test(getOptionLabel.value(props.options[ index ])) !== true\n ))\n }\n\n if (optionIndex.value !== index) {\n nextTick(() => {\n setOptionIndex(index)\n scrollTo(index)\n\n if (index >= 0 && props.useInput === true && props.fillInput === true) {\n setInputValue(getOptionLabel.value(props.options[ index ]))\n }\n })\n }\n\n return\n }\n\n // enter, space (when not using use-input and not in search), or tab (when not using multiple and option selected)\n // same target is checked above\n if (\n e.keyCode !== 13\n && (e.keyCode !== 32 || props.useInput === true || searchBuffer !== '')\n && (e.keyCode !== 9 || tabShouldSelect === false)\n ) { return }\n\n e.keyCode !== 9 && stopAndPrevent(e)\n\n if (optionIndex.value > -1 && optionIndex.value < optionsLength) {\n toggleOption(props.options[ optionIndex.value ])\n return\n }\n\n if (newValueModeValid === true) {\n const done = (val, mode) => {\n if (mode) {\n if (validateNewValueMode(mode) !== true) {\n return\n }\n }\n else {\n mode = props.newValueMode\n }\n\n if (val === void 0 || val === null) {\n return\n }\n\n updateInputValue('', props.multiple !== true, true)\n\n const fn = mode === 'toggle' ? toggleOption : add\n fn(val, mode === 'add-unique')\n\n if (props.multiple !== true) {\n targetRef.value !== null && targetRef.value.focus()\n hidePopup()\n }\n }\n\n if (props.onNewValue !== void 0) {\n emit('new-value', inputValue.value, done)\n }\n else {\n done(inputValue.value)\n }\n\n if (props.multiple !== true) {\n return\n }\n }\n\n if (menu.value === true) {\n closeMenu()\n }\n else if (state.innerLoading.value !== true) {\n showPopup()\n }\n }\n\n function getVirtualScrollEl () {\n return hasDialog === true\n ? menuContentRef.value\n : (\n menuRef.value !== null && menuRef.value.__qPortalInnerRef.value !== null\n ? menuRef.value.__qPortalInnerRef.value\n : void 0\n )\n }\n\n function getVirtualScrollTarget () {\n return getVirtualScrollEl()\n }\n\n function getSelection () {\n if (props.hideSelected === true) {\n return []\n }\n\n if (slots[ 'selected-item' ] !== void 0) {\n return selectedScope.value.map(scope => slots[ 'selected-item' ](scope)).slice()\n }\n\n if (slots.selected !== void 0) {\n return slots.selected().slice()\n }\n\n if (props.useChips === true) {\n return selectedScope.value.map((scope, i) => h(QChip, {\n key: 'option-' + i,\n removable: state.editable.value === true && isOptionDisabled.value(scope.opt) !== true,\n dense: true,\n textColor: props.color,\n tabindex: tabindex.value,\n onRemove () { scope.removeAtIndex(i) }\n }, () => h('span', {\n class: 'ellipsis',\n [ scope.html === true ? 'innerHTML' : 'textContent' ]: getOptionLabel.value(scope.opt)\n })))\n }\n\n return [\n h('span', {\n [ valueAsHtml.value === true ? 'innerHTML' : 'textContent' ]: props.displayValue !== void 0\n ? props.displayValue\n : selectedString.value\n })\n ]\n }\n\n function getAllOptions () {\n if (\n slots.option !== void 0\n && optionScopeCache.optionSlot !== slots.option\n ) {\n optionScopeCache.optionSlot = slots.option\n optionScopeCache.optionEls = []\n }\n\n const fn = slots.option !== void 0\n ? slots.option\n : scope => {\n return h(QItem, {\n key: scope.index,\n ...scope.itemProps\n }, () => {\n return h(\n QItemSection,\n () => h(\n QItemLabel,\n () => h('span', {\n [ scope.html === true ? 'innerHTML' : 'textContent' ]: scope.label\n })\n )\n )\n })\n }\n\n const { optionEls } = optionScopeCache\n\n let options = padVirtualScroll('div', optionScope.value.map((scope, i) => {\n if (optionEls[ i ] === void 0) {\n optionEls[ i ] = fn(scope)\n }\n\n return optionEls[ i ]\n }))\n\n if (slots[ 'before-options' ] !== void 0) {\n options = slots[ 'before-options' ]().concat(options)\n }\n\n return hMergeSlot(slots[ 'after-options' ], options)\n }\n\n function getInput (fromDialog, isTarget) {\n const data = {\n ref: isTarget === true ? targetRef : void 0,\n key: 'i_t',\n class: computedInputClass.value,\n style: props.inputStyle,\n value: inputValue.value !== void 0 ? inputValue.value : '',\n // required for Android in order to show ENTER key when in form\n type: 'search',\n ...state.splitAttrs.attributes.value,\n id: state.targetUid.value,\n maxlength: props.maxlength,\n tabindex: props.tabindex,\n autocomplete: props.autocomplete,\n 'data-autofocus': (fromDialog !== true && props.autofocus === true) || void 0,\n disabled: props.disable === true,\n readonly: props.readonly === true,\n ...inputControlEvents.value\n }\n\n if (fromDialog !== true && hasDialog === true) {\n if (Array.isArray(data.class) === true) {\n data.class[ 0 ] += ' no-pointer-events'\n }\n else {\n data.class += ' no-pointer-events'\n }\n }\n\n return h('input', data)\n }\n\n function onInput (e) {\n clearTimeout(inputTimer)\n\n if (e && e.target && e.target.composing === true) {\n return\n }\n\n setInputValue(e.target.value || '')\n // mark it here as user input so that if updateInputValue is called\n // before filter is called the indicator is reset\n userInputValue = true\n defaultInputValue = inputValue.value\n\n if (\n state.focused.value !== true\n && (hasDialog !== true || dialogFieldFocused.value === true)\n ) {\n state.focus()\n }\n\n if (props.onFilter !== void 0) {\n inputTimer = setTimeout(() => {\n filter(inputValue.value)\n }, props.inputDebounce)\n }\n }\n\n function setInputValue (val) {\n if (inputValue.value !== val) {\n inputValue.value = val\n emit('input-value', val)\n }\n }\n\n function updateInputValue (val, noFiltering, internal) {\n userInputValue = internal !== true\n\n if (props.useInput === true) {\n setInputValue(val)\n\n if (noFiltering === true || internal !== true) {\n defaultInputValue = val\n }\n\n noFiltering !== true && filter(val)\n }\n }\n\n function filter (val, keepClosed) {\n if (props.onFilter === void 0 || (keepClosed !== true && state.focused.value !== true)) {\n return\n }\n\n if (state.innerLoading.value === true) {\n emit('filter-abort')\n }\n else {\n state.innerLoading.value = true\n innerLoadingIndicator.value = true\n }\n\n if (\n val !== ''\n && props.multiple !== true\n && innerValue.value.length > 0\n && userInputValue !== true\n && val === getOptionLabel.value(innerValue.value[ 0 ])\n ) {\n val = ''\n }\n\n const localFilterId = setTimeout(() => {\n menu.value === true && (menu.value = false)\n }, 10)\n\n clearTimeout(filterId)\n filterId = localFilterId\n\n emit(\n 'filter',\n val,\n (fn, afterFn) => {\n if ((keepClosed === true || state.focused.value === true) && filterId === localFilterId) {\n clearTimeout(filterId)\n\n typeof fn === 'function' && fn()\n\n // hide indicator to allow arrow to animate\n innerLoadingIndicator.value = false\n\n nextTick(() => {\n state.innerLoading.value = false\n\n if (state.editable.value === true) {\n if (keepClosed === true) {\n menu.value === true && hidePopup()\n }\n else if (menu.value === true) {\n updateMenu(true)\n }\n else {\n menu.value = true\n }\n }\n\n typeof afterFn === 'function' && nextTick(() => { afterFn(proxy) })\n })\n }\n },\n () => {\n if (state.focused.value === true && filterId === localFilterId) {\n clearTimeout(filterId)\n state.innerLoading.value = false\n innerLoadingIndicator.value = false\n }\n menu.value === true && (menu.value = false)\n }\n )\n }\n\n function getMenu () {\n const child = noOptions.value === true\n ? (\n slots[ 'no-option' ] !== void 0\n ? () => slots[ 'no-option' ]({ inputValue: inputValue.value })\n : void 0\n )\n : getAllOptions\n\n return h(QMenu, {\n ref: menuRef,\n class: menuContentClass.value,\n style: props.popupContentStyle,\n modelValue: menu.value,\n fit: props.menuShrink !== true,\n cover: props.optionsCover === true && noOptions.value !== true && props.useInput !== true,\n anchor: props.menuAnchor,\n self: props.menuSelf,\n offset: props.menuOffset,\n dark: isOptionsDark.value,\n noParentEvent: true,\n noRefocus: true,\n noFocus: true,\n square: squaredMenu.value,\n transitionShow: props.transitionShow,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n separateClosePopup: true,\n onScrollPassive: onVirtualScrollEvt,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onMenuBeforeHide,\n onShow: onMenuShow\n }, child)\n }\n\n function onMenuBeforeHide (e) {\n onControlPopupHide(e)\n closeMenu()\n }\n\n function onMenuShow () {\n setVirtualScrollSize()\n }\n\n function onDialogFieldFocus (e) {\n stop(e)\n targetRef.value !== null && targetRef.value.focus()\n dialogFieldFocused.value = true\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, 0)\n }\n\n function onDialogFieldBlur (e) {\n stop(e)\n nextTick(() => {\n dialogFieldFocused.value = false\n })\n }\n\n function getDialog () {\n const content = [\n h(QField, {\n class: `col-auto ${ state.fieldClass }`,\n ...innerFieldProps.value,\n for: state.targetUid.value,\n dark: isOptionsDark.value,\n square: true,\n loading: innerLoadingIndicator.value,\n itemAligned: false,\n filled: true,\n stackLabel: inputValue.value.length > 0,\n ...state.splitAttrs.listeners.value,\n onFocus: onDialogFieldFocus,\n onBlur: onDialogFieldBlur\n }, {\n ...slots,\n rawControl: () => state.getControl(true),\n before: void 0,\n after: void 0\n })\n ]\n\n menu.value === true && content.push(\n h('div', {\n ref: menuContentRef,\n class: menuContentClass.value + ' scroll',\n style: props.popupContentStyle,\n onClick: prevent,\n onScrollPassive: onVirtualScrollEvt\n }, (\n noOptions.value === true\n ? (\n slots[ 'no-option' ] !== void 0\n ? slots[ 'no-option' ]({ inputValue: inputValue.value })\n : null\n )\n : getAllOptions()\n ))\n )\n\n return h(QDialog, {\n ref: dialogRef,\n modelValue: dialog.value,\n position: props.useInput === true ? 'top' : void 0,\n transitionShow: transitionShowComputed,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onDialogBeforeHide,\n onHide: onDialogHide,\n onShow: onDialogShow\n }, () => h('div', {\n class: 'q-select__dialog'\n + (isOptionsDark.value === true ? ' q-select__dialog--dark q-dark' : '')\n + (dialogFieldFocused.value === true ? ' q-select__dialog--focused' : '')\n }, content))\n }\n\n function onDialogBeforeHide (e) {\n onControlPopupHide(e)\n\n if (dialogRef.value !== null) {\n dialogRef.value.__updateRefocusTarget(\n state.rootRef.value.querySelector('.q-field__native > [tabindex]:last-child')\n )\n }\n\n state.focused.value = false\n }\n\n function onDialogHide (e) {\n hidePopup()\n state.focused.value === false && emit('blur', e)\n resetInputValue()\n }\n\n function onDialogShow () {\n const el = document.activeElement\n if (\n (el === null || el.id !== state.targetUid.value)\n && targetRef.value !== null\n && targetRef.value !== el\n ) {\n targetRef.value.focus()\n }\n\n setVirtualScrollSize()\n }\n\n function closeMenu () {\n if (optionScopeCache !== void 0) {\n optionScopeCache.optionEls = []\n }\n\n if (dialog.value === true) {\n return\n }\n\n optionIndex.value = -1\n\n if (menu.value === true) {\n menu.value = false\n }\n\n if (state.focused.value === false) {\n clearTimeout(filterId)\n filterId = void 0\n\n if (state.innerLoading.value === true) {\n emit('filter-abort')\n state.innerLoading.value = false\n innerLoadingIndicator.value = false\n }\n }\n }\n\n function showPopup (e) {\n if (state.editable.value !== true) {\n return\n }\n\n if (hasDialog === true) {\n state.onControlFocusin(e)\n dialog.value = true\n nextTick(() => {\n state.focus()\n })\n }\n else {\n state.focus()\n }\n\n if (props.onFilter !== void 0) {\n filter(inputValue.value)\n }\n else if (noOptions.value !== true || slots[ 'no-option' ] !== void 0) {\n menu.value = true\n }\n }\n\n function hidePopup () {\n dialog.value = false\n closeMenu()\n }\n\n function resetInputValue () {\n props.useInput === true && updateInputValue(\n props.multiple !== true && props.fillInput === true && innerValue.value.length > 0\n ? getOptionLabel.value(innerValue.value[ 0 ]) || ''\n : '',\n true,\n true\n )\n }\n\n function updateMenu (show) {\n let optionIndex = -1\n\n if (show === true) {\n if (innerValue.value.length > 0) {\n const val = getOptionValue.value(innerValue.value[ 0 ])\n optionIndex = props.options.findIndex(v => isDeepEqual(getOptionValue.value(v), val))\n }\n\n localResetVirtualScroll(optionIndex)\n }\n\n setOptionIndex(optionIndex)\n }\n\n function updateMenuPosition () {\n if (dialog.value === false && menuRef.value !== null) {\n menuRef.value.updatePosition()\n }\n }\n\n function onControlPopupShow (e) {\n e !== void 0 && stop(e)\n emit('popup-show', e)\n state.hasPopupOpen.value = true\n state.onControlFocusin(e)\n }\n\n function onControlPopupHide (e) {\n e !== void 0 && stop(e)\n emit('popup-hide', e)\n state.hasPopupOpen.value = false\n state.onControlFocusout(e)\n }\n\n function updatePreState () {\n hasDialog = $q.platform.is.mobile !== true && props.behavior !== 'dialog'\n ? false\n : props.behavior !== 'menu' && (\n props.useInput === true\n ? slots[ 'no-option' ] !== void 0 || props.onFilter !== void 0 || noOptions.value === false\n : true\n )\n\n transitionShowComputed = $q.platform.is.ios === true && hasDialog === true && props.useInput === true\n ? 'fade'\n : props.transitionShow\n }\n\n onBeforeUpdate(updatePreState)\n onUpdated(updateMenuPosition)\n\n updatePreState()\n\n onBeforeMount(() => {\n optionScopeCache = {\n optionSlot: slots.option,\n options: [],\n optionEls: []\n }\n })\n\n onBeforeUnmount(() => {\n optionScopeCache = void 0\n clearTimeout(inputTimer)\n })\n\n // expose public methods\n Object.assign(proxy, {\n showPopup, hidePopup,\n removeAtIndex, add, toggleOption,\n setOptionIndex, moveOptionSelection,\n filter, updateMenuPosition, updateInputValue,\n isOptionSelected,\n getEmittingOptionValue,\n isOptionDisabled: () => isOptionDisabled.value.apply(null, arguments),\n getOptionValue: () => getOptionValue.value.apply(null, arguments),\n getOptionLabel: () => getOptionLabel.value.apply(null, arguments)\n })\n\n Object.assign(state, {\n innerValue,\n\n fieldClass: computed(() =>\n `q-select q-field--auto-height q-select--with${ props.useInput !== true ? 'out' : '' }-input`\n + ` q-select--with${ props.useChips !== true ? 'out' : '' }-chips`\n + ` q-select--${ props.multiple === true ? 'multiple' : 'single' }`\n ),\n\n inputRef,\n targetRef,\n hasValue,\n showPopup,\n\n floatingLabel: computed(() =>\n (props.hideSelected === true\n ? inputValue.value.length > 0\n : hasValue.value === true\n )\n || fieldValueIsFilled(props.displayValue)\n ),\n\n getControlChild: () => {\n if (\n state.editable.value !== false && (\n dialog.value === true // dialog always has menu displayed, so need to render it\n || noOptions.value !== true\n || slots[ 'no-option' ] !== void 0\n )\n ) {\n return hasDialog === true ? getDialog() : getMenu()\n }\n },\n\n controlEvents: {\n onFocusin (e) { state.onControlFocusin(e) },\n onFocusout (e) {\n state.onControlFocusout(e, () => {\n resetInputValue()\n closeMenu()\n })\n },\n onClick (e) {\n if (hasDialog !== true) {\n // label from QField will propagate click on the input (except IE)\n prevent(e)\n\n if (menu.value === true) {\n closeMenu()\n targetRef.value !== null && targetRef.value.focus()\n return\n }\n }\n\n showPopup(e)\n }\n },\n\n getControl: fromDialog => {\n const child = getSelection()\n const isTarget = fromDialog === true || dialog.value !== true || hasDialog !== true\n\n if (props.useInput === true) {\n child.push(getInput(fromDialog, isTarget))\n }\n // there can be only one (when dialog is opened the control in dialog should be target)\n else if (state.editable.value === true && isTarget === true) {\n child.push(\n h('div', {\n ref: targetRef,\n key: 'd_t',\n class: 'no-outline',\n id: state.targetUid.value,\n tabindex: props.tabindex,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetKeyup,\n onKeypress: onTargetKeypress\n })\n )\n\n if (typeof props.autocomplete === 'string' && props.autocomplete.length > 0) {\n child.push(\n h('input', {\n class: 'q-select__autocomplete-input no-outline',\n autocomplete: props.autocomplete,\n onKeyup: onTargetAutocomplete\n })\n )\n }\n }\n\n if (nameProp.value !== void 0 && props.disable !== true && innerOptionsValue.value.length > 0) {\n const opts = innerOptionsValue.value.map(value => h('option', { value, selected: true }))\n\n child.push(\n h('select', {\n class: 'hidden',\n name: nameProp.value,\n multiple: props.multiple\n }, opts)\n )\n }\n\n return h('div', {\n class: 'q-field__native row items-center',\n ...state.splitAttrs.attributes.value\n }, child)\n },\n\n getInnerAppend: () => (\n props.loading !== true && innerLoadingIndicator.value !== true && props.hideDropdownIcon !== true\n ? [\n h(QIcon, {\n class: 'q-select__dropdown-icon' + (menu.value === true ? ' rotate-180' : ''),\n name: dropdownArrowIcon.value\n })\n ]\n : null\n )\n })\n\n return useField(state)\n }\n})\n"],"sourceRoot":""}