{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.string.anchor.js","webpack:///./node_modules/quasar/src/utils/private/rtl.js","webpack:///./node_modules/quasar/src/components/dialog/QDialog.js","webpack:///./node_modules/quasar/src/components/virtual-scroll/use-virtual-scroll.js","webpack:///./node_modules/quasar/src/utils/private/portal.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/quasar/src/composables/private/use-portal.js","webpack:///./node_modules/quasar/src/composables/private/use-transition.js","webpack:///./node_modules/core-js/internals/string-html-forced.js","webpack:///./node_modules/quasar/src/utils/private/escape-key.js","webpack:///./node_modules/quasar/src/utils/private/focusout.js","webpack:///./node_modules/quasar/src/utils/private/click-outside.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/item/QItemLabel.js","webpack:///./node_modules/quasar/src/composables/private/use-anchor.js","webpack:///./node_modules/quasar/src/composables/private/use-scroll-target.js","webpack:///./node_modules/quasar/src/utils/private/position-engine.js","webpack:///./node_modules/quasar/src/components/menu/QMenu.js","webpack:///./node_modules/quasar/src/components/select/QSelect.js","webpack:///./node_modules/quasar/src/composables/private/use-tick.js"],"names":["$","createHTML","forcedStringHTMLMethod","target","proto","forced","anchor","name","this","rtlHasScrollBug","scroller","document","createElement","spacer","setAttribute","style","width","height","overflow","body","appendChild","scrollLeft","remove","maximizedModals","positionClass","standard","top","bottom","right","left","transitions","createComponent","inheritAttrs","props","useModelToggleProps","useTransitionProps","transitionShow","String","transitionHide","persistent","Boolean","autoClose","noEscDismiss","noBackdropDismiss","noRouteDismiss","noRefocus","noFocus","noShake","seamless","maximized","fullWidth","fullHeight","square","position","type","default","validator","val","includes","emits","useModelToggleEmits","setup","shakeTimeout","isMaximized","avoidAutoClose","slots","emit","attrs","vm","getCurrentInstance","innerRef","ref","showing","transitionState","animating","refocusTarget","hideOnRouteChange","computed","usePreventScroll","preventBodyScroll","useTimeout","registerTimeout","removeTimeout","useTick","registerTick","removeTick","usePortal","renderPortalContent","showPortal","hidePortal","portalIsActive","renderPortal","useModelToggle","handleShow","handleHide","processOnMount","hide","useHistory","addToHistory","removeFromHistory","classes","value","transition","transitionStyle","transitionDuration","useBackdrop","onEvents","onClick","onAutoClose","rootClasses","class","evt","activeElement","updateMaximized","blur","focus","proxy","$q","platform","is","ios","getBoundingClientRect","window","innerHeight","visualViewport","scrollingElement","scrollTop","Math","min","scrollHeight","Infinity","ceil","scrollIntoView","click","cleanup","addFocusFn","node","contains","querySelector","preventScroll","shake","classList","add","clearTimeout","setTimeout","onEscapeKey","hiding","removeFocusout","onFocusChange","removeEscapeKey","active","e","onBackdropClick","childHasFocus","h","Transition","appear","onMousedown","tabindex","hSlot","watch","nextTick","state","addFocusout","addEscapeKey","Object","assign","__updateRefocusTarget","onBeforeUnmount","aggBucketSize","scrollToEdges","id","filterProto","Array","prototype","filter","setOverflowAnchor","getComputedStyle","overflowAnchor","noop","index","ssId","styleSheet","getElementById","head","qChildIndex","innerHTML","sumFn","acc","getScrollDetails","parent","child","beforeRef","afterRef","horizontal","rtl","stickyStart","stickyEnd","parentCalc","documentElement","propElSize","details","scrollStart","scrollViewSize","scrollMaxSize","offsetStart","offsetEnd","pageXOffset","scrollX","clientWidth","scrollWidth","pageYOffset","scrollY","clientHeight","el","previousElementSibling","nextElementSibling","parentRect","childRect","setScroll","scroll","scrollTo","offsetWidth","sumSize","sizeAgg","size","from","to","lastTo","length","fromAgg","floor","toAgg","total","slice","reduce","commonVirtScrollProps","virtualScrollSliceSize","Number","virtualScrollSliceRatioBefore","virtualScrollSliceRatioAfter","virtualScrollItemSize","virtualScrollStickySizeStart","virtualScrollStickySizeEnd","tableColspan","commonVirtPropsList","keys","useVirtualScrollProps","virtualScrollHorizontal","onVirtualScroll","Function","useVirtualScroll","prevScrollStart","prevToIndex","localScrollViewSize","virtualScrollSizes","virtualScrollLength","getVirtualScrollTarget","getVirtualScrollEl","virtualScrollItemSizeComputed","virtualScrollSizesAgg","vsId","virtualScrollPaddingBefore","virtualScrollPaddingAfter","virtualScrollSliceSizeComputed","contentRef","virtualScrollSliceRange","colspanAttr","needsReset","needsSliceRecalc","reset","localResetVirtualScroll","refresh","toIndex","edge","scrollEl","nodeType","scrollDetails","lang","setVirtualScrollSize","setVirtualScrollSliceRange","max","parseInt","indexOf","localOnVirtualScrollEvt","listLastIndex","listEndOffset","updateVirtualScrollSizes","scrollMaxStart","listOffset","offset","j","align","alignForce","alignEnd","replace","alignRange","rangeChanged","contentEl","addEventListener","onBlurRefocusFn","removeEventListener","sizeBefore","tempTo","requestAnimationFrame","sizeAfter","posStart","posEnd","scrollPosition","sizeDiff","round","emitScroll","diff","children","call","childrenLength","sizeFn","offsetHeight","i","fullReset","defaultSize","isArray","oldVirtualScrollSizesLength","jMax","iMax","push","onVirtualScrollEvt","parseFloat","multiplier","view","baseSize","start","center","end","padVirtualScroll","tag","content","paddingSize","key","colspan","flat","direction","debounce","onBeforeMount","shouldActivate","onDeactivated","onActivated","cancel","portalList","closePortalMenus","$options","$props","separateClosePopup","getParentVm","__qPortalInnerRef","uncurryThis","requireObjectCoercible","toString","quot","module","exports","string","attribute","S","p1","isOnGlobalDialog","checkGlobalDialog","portalEl","focusObj","onGlobalDialog","isReady","createGlobalNode","addFocusWaitFlag","removeFocusWaitFlag","splice","removeGlobalNode","onUnmounted","Teleport","fails","METHOD_NAME","test","toLowerCase","split","escDown","handlers","onKeydown","keyCode","onBlur","onKeyup","isKeyCode","update","action","fn","client","desktop","trigger","timer","useFieldProps","useFieldEmits","useField","useFieldState","defaultSizes","xs","sm","md","lg","xl","useDarkProps","useSizeProps","dense","icon","iconRight","iconRemove","iconSelected","label","color","textColor","modelValue","selected","outline","clickable","removable","disable","ripple","isDark","useDark","sizeStyle","useSize","hasLeftIcon","leftIcon","iconSet","chip","removeIcon","isClickable","text","attributes","onRemove","stopAndPrevent","getContent","QIcon","hMergeSlotSafely","data","hDir","Ripple","overline","caption","header","lines","parsedLines","display","useAnchorProps","noParentEvent","contextMenu","touchTimer","avoidEmit","configureAnchorEl","anchorEl","canShow","touches","anchorEvents","unconfigureAnchorEl","cleanEvt","setAnchorEl","parentNode","pickAnchorEl","$el","err","console","error","toggle","qAnchorHandled","toggleKey","contextClick","prevent","show","mobileTouch","mobileCleanup","addEvt","clearSelection","evts","context","mobile","onMounted","configureScrollTarget","scrollFn","localScrollTarget","changeScrollEvent","scrollTarget","fnProp","fnHandler","listenOpts","passive","unconfigureScrollTarget","noParentEventWatcher","notPassiveCapture","registeredList","globalHandler","portalIndex","qClickOutside","onClickOutside","addClickOutside","clickOutsideProps","removeClickOutside","findIndex","vpLeft","vpTop","validatePosition","pos","parts","validateOffset","horizontalPos","parsePosition","vertical","getAnchorProps","middle","getTargetProps","setPosition","cfg","offsetLeft","offsetTop","setProperty","anchorProps","absoluteOffset","cover","anchorTop","anchorLeft","elStyle","maxHeight","maxWidth","visibility","fit","minWidth","minHeight","targetProps","anchorOrigin","selfOrigin","applyBoundaries","currentHeight","currentWidth","margin","getScrollbarWidth","innerWidth","anchorY","anchorX","forEach","self","touchPosition","unwatchPosition","useTransition","useScrollTarget","useAnchor","menuClass","handlesFocus","onFocusout","screen","updatePosition","anchorCleanup","getScrollTarget","validateNewValueMode","v","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","mapOptions","emitValue","inputDebounce","inputClass","inputStyle","autocomplete","behavior","onNewValue","onFilter","inputTimer","innerValueCache","hasDialog","userInputValue","filterId","defaultInputValue","transitionShowComputed","searchBuffer","searchBufferExp","menu","dialog","optionIndex","inputValue","dialogFieldFocused","innerLoadingIndicator","inputRef","targetRef","menuRef","dialogRef","menuContentRef","nameProp","useFormInputNameAttr","onComposition","useKeyComposition","onInput","innerValue","mapNull","cache","values","map","getOption","innerFieldProps","isOptionsDark","hasValue","fieldValueIsFilled","computedInputClass","cls","menuContentClass","noOptions","selectedString","opt","getOptionLabel","join","needsHtmlFn","html","valueAsHtml","some","focused","comboboxAttrs","role","targetUid","listboxAttrs","selectedScope","removeAtIndex","removeAtIndexAndFocus","toggleOption","optionScope","isOptionDisabled","itemProps","activeClass","computedOptionsSelectedClass","manualFocus","dark","isOptionSelected","onMousemove","setOptionIndex","dropdownArrowIcon","arrow","dropdown","squaredMenu","outlined","standout","borderless","rounded","getOptionValue","getPropValueFn","innerOptionsValue","inputControlEvents","onChange","onTargetKeydown","onTargetAutocomplete","onKeypress","onTargetKeypress","onFocus","selectInputText","stop","onCompositionstart","onCompositionupdate","onCompositionend","getEmittingOptionValue","model","unique","updateInputValue","keepOpen","editable","optValue","hidePopup","isDeepEqual","moveOptionSelection","skipInputValue","normalizeToInterval","setInputValue","valueCache","find","propValue","defaultVal","isPlainObject","select","onTargetKeyup","resetInputValue","needle","toLocaleLowerCase","findFn","extractFn","option","fillFn","afterFilter","clearValue","shouldIgnoreKey","newValueModeValid","tabShouldSelect","shiftKey","innerLoading","showPopup","optionsLength","Date","now","altKey","ctrlKey","char","keyRepeat","searchRe","RegExp","l","done","mode","closeMenu","getSelection","scope","concat","QChip","getAllOptions","QItem","QItemSection","QItemLabel","hMergeSlot","getInput","fromDialog","isTarget","splitAttrs","maxlength","autofocus","disabled","readonly","composing","noFiltering","internal","keepClosed","afterUpdateFn","localFilterId","afterFn","updateMenu","getMenu","QMenu","onScrollPassive","onBeforeShow","onControlPopupShow","onBeforeHide","onMenuBeforeHide","onShow","onMenuShow","onControlPopupHide","onDialogFieldFocus","onDialogFieldBlur","getDialog","QField","fieldClass","for","loading","itemAligned","filled","stackLabel","listeners","rawControl","getControl","before","after","QDialog","onDialogBeforeHide","onHide","onDialogHide","onDialogShow","rootRef","onControlFocusin","updateMenuPosition","hasPopupOpen","onControlFocusout","updatePreState","immediate","onBeforeUpdate","onUpdated","getOptionIndex","args","apply","floatingLabel","getControlChild","controlEvents","onFocusin","opts","getInnerAppend","tickFn"],"mappings":"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","file":"js/chunk-e392db0a.5d42d718.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.anchor` method\n// https://tc39.es/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","let rtlHasScrollBug = false\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 rtlHasScrollBug = scroller.scrollLeft >= 0\n\n scroller.remove()\n}\n\nexport {\n rtlHasScrollBug\n}\n","import { h, ref, computed, watch, onBeforeUnmount, nextTick, Transition, getCurrentInstance } from 'vue'\n\nimport useHistory from '../../composables/private/use-history.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\nimport useTick from '../../composables/private/use-tick.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport { useTransitionProps } from '../../composables/private/use-transition.js'\nimport usePortal from '../../composables/private/use-portal.js'\nimport usePreventScroll from '../../composables/private/use-prevent-scroll.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { childHasFocus } from '../../utils/dom.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { addEscapeKey, removeEscapeKey } from '../../utils/private/escape-key.js'\nimport { addFocusout, removeFocusout } from '../../utils/private/focusout.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\n\nlet maximizedModals = 0\n\nconst positionClass = {\n standard: 'fixed-full flex-center',\n top: 'fixed-top justify-center',\n bottom: 'fixed-bottom justify-center',\n right: 'fixed-right items-center',\n left: 'fixed-left items-center'\n}\n\nconst transitions = {\n standard: [ 'scale', 'scale' ],\n top: [ 'slide-down', 'slide-up' ],\n bottom: [ 'slide-up', 'slide-down' ],\n right: [ 'slide-left', 'slide-right' ],\n left: [ 'slide-right', 'slide-left' ]\n}\n\nexport default createComponent({\n name: 'QDialog',\n\n inheritAttrs: false,\n\n props: {\n ...useModelToggleProps,\n ...useTransitionProps,\n\n transitionShow: String,\n transitionHide: String,\n\n persistent: Boolean,\n autoClose: Boolean,\n\n noEscDismiss: Boolean,\n noBackdropDismiss: Boolean,\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n noShake: Boolean,\n\n seamless: Boolean,\n\n maximized: Boolean,\n fullWidth: Boolean,\n fullHeight: Boolean,\n\n square: Boolean,\n\n position: {\n type: String,\n default: 'standard',\n validator: val => val === 'standard'\n || [ 'top', 'bottom', 'left', 'right' ].includes(val)\n }\n },\n\n emits: [\n ...useModelToggleEmits,\n 'shake', 'click', 'escape-key'\n ],\n\n setup (props, { slots, emit, attrs }) {\n const vm = getCurrentInstance()\n\n const innerRef = ref(null)\n const showing = ref(false)\n const transitionState = ref(false)\n const animating = ref(false)\n\n let shakeTimeout, refocusTarget = null, isMaximized, avoidAutoClose\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && props.noRouteDismiss !== true\n && props.seamless !== true\n )\n\n const { preventBodyScroll } = usePreventScroll()\n const { registerTimeout, removeTimeout } = useTimeout()\n const { registerTick, removeTick } = useTick()\n\n const { showPortal, hidePortal, portalIsActive, renderPortal } = usePortal(\n vm, innerRef, renderPortalContent, /* pls do check if on a global dialog */ true\n )\n\n const { hide } = useModelToggle({\n showing,\n hideOnRouteChange,\n handleShow,\n handleHide,\n processOnMount: true\n })\n\n const { addToHistory, removeFromHistory } = useHistory(showing, hide, hideOnRouteChange)\n\n const classes = computed(() =>\n 'q-dialog__inner flex no-pointer-events'\n + ` q-dialog__inner--${ props.maximized === true ? 'maximized' : 'minimized' }`\n + ` q-dialog__inner--${ props.position } ${ positionClass[ props.position ] }`\n + (animating.value === true ? ' q-dialog__inner--animating' : '')\n + (props.fullWidth === true ? ' q-dialog__inner--fullwidth' : '')\n + (props.fullHeight === true ? ' q-dialog__inner--fullheight' : '')\n + (props.square === true ? ' q-dialog__inner--square' : '')\n )\n\n const transitionShow = computed(() =>\n 'q-transition--'\n + (props.transitionShow === void 0 ? transitions[ props.position ][ 0 ] : props.transitionShow)\n )\n\n const transitionHide = computed(() =>\n 'q-transition--'\n + (props.transitionHide === void 0 ? transitions[ props.position ][ 1 ] : props.transitionHide)\n )\n\n const transition = computed(() => (\n transitionState.value === true\n ? transitionHide.value\n : transitionShow.value\n ))\n\n const transitionStyle = computed(\n () => `--q-transition-duration: ${ props.transitionDuration }ms`\n )\n\n const useBackdrop = computed(() => showing.value === true && props.seamless !== true)\n\n const onEvents = computed(() => (\n props.autoClose === true\n ? { onClick: onAutoClose }\n : {}\n ))\n\n const rootClasses = computed(() => [\n 'q-dialog fullscreen no-pointer-events '\n + `q-dialog--${ useBackdrop.value === true ? 'modal' : 'seamless' }`,\n attrs.class\n ])\n\n watch(showing, val => {\n nextTick(() => {\n transitionState.value = val\n })\n })\n\n watch(() => props.maximized, state => {\n showing.value === true && updateMaximized(state)\n })\n\n watch(useBackdrop, val => {\n preventBodyScroll(val)\n\n if (val === true) {\n addFocusout(onFocusChange)\n addEscapeKey(onEscapeKey)\n }\n else {\n removeFocusout(onFocusChange)\n removeEscapeKey(onEscapeKey)\n }\n })\n\n function handleShow (evt) {\n removeTimeout()\n removeTick()\n addToHistory()\n\n refocusTarget = props.noRefocus === false && document.activeElement !== null\n ? document.activeElement\n : null\n\n updateMaximized(props.maximized)\n showPortal()\n animating.value = true\n\n if (props.noFocus !== true) {\n document.activeElement !== null && document.activeElement.blur()\n registerTick(focus)\n }\n\n registerTimeout(() => {\n if (vm.proxy.$q.platform.is.ios === true) {\n if (props.seamless !== true && document.activeElement) {\n const\n { top, bottom } = document.activeElement.getBoundingClientRect(),\n { innerHeight } = window,\n height = window.visualViewport !== void 0\n ? window.visualViewport.height\n : innerHeight\n\n if (top > 0 && bottom > height / 2) {\n document.scrollingElement.scrollTop = Math.min(\n document.scrollingElement.scrollHeight - height,\n bottom >= innerHeight\n ? Infinity\n : Math.ceil(document.scrollingElement.scrollTop + bottom - height / 2)\n )\n }\n\n document.activeElement.scrollIntoView()\n }\n\n // required in order to avoid the \"double-tap needed\" issue\n avoidAutoClose = true\n innerRef.value.click()\n avoidAutoClose = false\n }\n\n showPortal(true) // done showing portal\n animating.value = false\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTimeout()\n removeTick()\n removeFromHistory()\n cleanup(true)\n animating.value = true\n\n if (refocusTarget !== null) {\n refocusTarget.focus()\n refocusTarget = null\n }\n\n registerTimeout(() => {\n hidePortal()\n animating.value = false\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function focus () {\n addFocusFn(() => {\n let node = innerRef.value\n\n if (node === null || node.contains(document.activeElement) === true) {\n return\n }\n\n node = node.querySelector('[autofocus], [data-autofocus]') || node\n node.focus({ preventScroll: true })\n })\n }\n\n function shake () {\n focus()\n emit('shake')\n\n const node = innerRef.value\n\n if (node !== null) {\n node.classList.remove('q-animate--scale')\n node.classList.add('q-animate--scale')\n clearTimeout(shakeTimeout)\n shakeTimeout = setTimeout(() => {\n if (innerRef.value !== null) {\n node.classList.remove('q-animate--scale')\n // some platforms (like desktop Chrome)\n // require calling focus() again\n focus()\n }\n }, 170)\n }\n }\n\n function onEscapeKey () {\n if (props.seamless !== true) {\n if (props.persistent === true || props.noEscDismiss === true) {\n props.maximized !== true && props.noShake !== true && shake()\n }\n else {\n emit('escape-key')\n hide()\n }\n }\n }\n\n function cleanup (hiding) {\n clearTimeout(shakeTimeout)\n\n if (hiding === true || showing.value === true) {\n updateMaximized(false)\n\n if (props.seamless !== true) {\n preventBodyScroll(false)\n removeFocusout(onFocusChange)\n removeEscapeKey(onEscapeKey)\n }\n }\n\n if (hiding !== true) {\n refocusTarget = null\n }\n }\n\n function updateMaximized (active) {\n if (active === true) {\n if (isMaximized !== true) {\n maximizedModals < 1 && document.body.classList.add('q-body--dialog')\n maximizedModals++\n\n isMaximized = true\n }\n }\n else if (isMaximized === true) {\n if (maximizedModals < 2) {\n document.body.classList.remove('q-body--dialog')\n }\n\n maximizedModals--\n isMaximized = false\n }\n }\n\n function onAutoClose (e) {\n if (avoidAutoClose !== true) {\n hide(e)\n emit('click', e)\n }\n }\n\n function onBackdropClick (e) {\n if (props.persistent !== true && props.noBackdropDismiss !== true) {\n hide(e)\n }\n else if (props.noShake !== true) {\n shake()\n }\n }\n\n function onFocusChange (evt) {\n // the focus is not in a vue child component\n if (\n showing.value === true\n && portalIsActive.value === true\n && childHasFocus(innerRef.value, evt.target) !== true\n ) {\n focus()\n }\n }\n\n Object.assign(vm.proxy, {\n // expose public methods\n focus, shake,\n\n // private but needed by QSelect\n __updateRefocusTarget (target) {\n refocusTarget = target || null\n }\n })\n\n onBeforeUnmount(cleanup)\n\n function renderPortalContent () {\n return h('div', {\n ...attrs,\n class: rootClasses.value\n }, [\n h(Transition, {\n name: 'q-transition--fade',\n appear: true\n }, () => (\n useBackdrop.value === true\n ? h('div', {\n class: 'q-dialog__backdrop fixed-full',\n style: transitionStyle.value,\n 'aria-hidden': 'true',\n onMousedown: onBackdropClick\n })\n : null\n )),\n\n h(\n Transition,\n { name: transition.value, appear: true },\n () => (\n showing.value === true\n ? h('div', {\n ref: innerRef,\n class: classes.value,\n style: transitionStyle.value,\n tabindex: -1,\n ...onEvents.value\n }, hSlot(slots.default))\n : null\n )\n )\n ])\n }\n\n return renderPortal\n }\n})\n","import { h, ref, computed, watch, onActivated, onDeactivated, onBeforeMount, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport debounce from '../../utils/debounce.js'\nimport { noop } from '../../utils/event.js'\nimport { rtlHasScrollBug } from '../../utils/private/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\nlet id = 1\nconst filterProto = Array.prototype.filter\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 += 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: 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 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 !== void 0 && contentEl.removeEventListener('focusout', onBlurRefocusFn)\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 = 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 !== 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 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(\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 setOverflowAnchor !== noop && onBeforeUnmount(() => {\n const styleSheet = document.getElementById(vsId + '_ss')\n styleSheet !== null && styleSheet.remove()\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","import { getParentVm } from './vm.js'\n\nexport const portalList = []\n\nexport function getPortalVm (el) {\n return portalList.find(vm =>\n vm.__qPortalInnerRef.value !== null\n && vm.__qPortalInnerRef.value.contains(el)\n )\n}\n\nexport function closePortalMenus (vm, evt) {\n do {\n if (vm.$options.name === 'QMenu') {\n vm.hide(evt)\n\n // is this a point of separation?\n if (vm.$props.separateClosePopup === true) {\n return getParentVm(vm)\n }\n }\n else if (vm.__qPortalInnerRef !== void 0) {\n // treat it as point of separation if parent is QPopupProxy\n // (so mobile matches desktop behavior)\n // and hide it too\n const parent = getParentVm(vm)\n\n if (parent !== void 0 && parent.$options.name === 'QPopupProxy') {\n vm.hide(evt)\n return parent\n }\n else {\n return vm\n }\n }\n\n vm = getParentVm(vm)\n } while (vm !== void 0 && vm !== null)\n}\n\nexport function closePortals (vm, evt, depth) {\n while (depth !== 0 && vm !== void 0 && vm !== null) {\n if (vm.__qPortalInnerRef !== void 0) {\n depth--\n\n if (vm.$options.name === 'QMenu') {\n vm = closePortalMenus(vm, evt)\n continue\n }\n\n vm.hide(evt)\n }\n\n vm = getParentVm(vm)\n }\n}\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = toString(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","import { h, ref, onUnmounted, Teleport } from 'vue'\n\nimport { noop } from '../../utils/event.js'\nimport { addFocusWaitFlag, removeFocusWaitFlag } from '../../utils/private/focus-manager.js'\nimport { createGlobalNode, removeGlobalNode } from '../../utils/private/global-nodes.js'\nimport { portalList } from '../../utils/private/portal.js'\n\nfunction isOnGlobalDialog (vm) {\n vm = vm.parent\n\n while (vm !== void 0 && vm !== null) {\n if (vm.type.name === 'QGlobalDialog') {\n return true\n }\n if (vm.type.name === 'QDialog' || vm.type.name === 'QMenu') {\n return false\n }\n\n vm = vm.parent\n }\n\n return false\n}\n\n// Warning!\n// You MUST specify \"inheritAttrs: false\" in your component\n\nexport default function (vm, innerRef, renderPortalContent, checkGlobalDialog) {\n const portalIsActive = ref(false)\n\n if (__QUASAR_SSR_SERVER__) {\n return {\n portalIsActive,\n\n showPortal: noop,\n hidePortal: noop,\n renderPortal: noop\n }\n }\n\n let portalEl = null\n const focusObj = {}\n const onGlobalDialog = checkGlobalDialog === true && isOnGlobalDialog(vm)\n\n function showPortal (isReady) {\n if (isReady === true) {\n removeFocusWaitFlag(focusObj)\n return\n }\n\n if (portalIsActive.value === false) {\n if (onGlobalDialog === false && portalEl === null) {\n portalEl = createGlobalNode()\n }\n\n portalIsActive.value = true\n\n // register portal\n portalList.push(vm.proxy)\n\n addFocusWaitFlag(focusObj)\n }\n }\n\n function hidePortal () {\n removeFocusWaitFlag(focusObj)\n portalIsActive.value = false\n\n // unregister portal\n const index = portalList.indexOf(vm.proxy)\n if (index > -1) {\n portalList.splice(index, 1)\n }\n\n if (portalEl !== null) {\n removeGlobalNode(portalEl)\n portalEl = null\n }\n }\n\n onUnmounted(hidePortal)\n\n // expose publicly needed stuff for portal utils\n Object.assign(vm.proxy, { __qPortalInnerRef: innerRef })\n\n return {\n showPortal,\n hidePortal,\n\n portalIsActive,\n\n renderPortal: () => (\n onGlobalDialog === true\n ? renderPortalContent()\n : (\n portalIsActive.value === true\n ? [ h(Teleport, { to: portalEl }, renderPortalContent()) ]\n : void 0\n )\n )\n }\n}\n","import { ref, computed, watch, nextTick } from 'vue'\n\nexport const useTransitionProps = {\n transitionShow: {\n type: String,\n default: 'fade'\n },\n\n transitionHide: {\n type: String,\n default: 'fade'\n },\n\n transitionDuration: {\n type: [ String, Number ],\n default: 300\n }\n}\n\nexport default function (props, showing) {\n const transitionState = ref(showing.value)\n\n watch(showing, val => {\n nextTick(() => { transitionState.value = val })\n })\n\n // return transition\n return {\n transition: computed(() => 'q-transition--' + (\n transitionState.value === true ? props.transitionHide : props.transitionShow\n )),\n\n transitionStyle: computed(() => `--q-transition-duration: ${ props.transitionDuration }ms`)\n }\n}\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","import { client } from '../../plugins/Platform.js'\nimport { isKeyCode } from './key-composition.js'\n\nconst handlers = []\nlet escDown\n\nfunction onKeydown (evt) {\n escDown = evt.keyCode === 27\n}\n\nfunction onBlur () {\n if (escDown === true) {\n escDown = false\n }\n}\n\nfunction onKeyup (evt) {\n if (escDown === true) {\n escDown = false\n\n if (isKeyCode(evt, 27) === true) {\n handlers[ handlers.length - 1 ](evt)\n }\n }\n}\n\nfunction update (action) {\n window[ action ]('keydown', onKeydown)\n window[ action ]('blur', onBlur)\n window[ action ]('keyup', onKeyup)\n escDown = false\n}\n\nexport function addEscapeKey (fn) {\n if (client.is.desktop === true) {\n handlers.push(fn)\n\n if (handlers.length === 1) {\n update('addEventListener')\n }\n }\n}\n\nexport function removeEscapeKey (fn) {\n const index = handlers.indexOf(fn)\n if (index > -1) {\n handlers.splice(index, 1)\n\n if (handlers.length === 0) {\n update('removeEventListener')\n }\n }\n}\n","import { client } from '../../plugins/Platform.js'\n\nconst handlers = []\n\nfunction trigger (e) {\n handlers[ handlers.length - 1 ](e)\n}\n\nexport function addFocusout (fn) {\n if (client.is.desktop === true) {\n handlers.push(fn)\n\n if (handlers.length === 1) {\n document.body.addEventListener('focusin', trigger)\n }\n }\n}\n\nexport function removeFocusout (fn) {\n const index = handlers.indexOf(fn)\n if (index > -1) {\n handlers.splice(index, 1)\n\n if (handlers.length === 0) {\n document.body.removeEventListener('focusin', trigger)\n }\n }\n}\n","import { listenOpts } from '../event.js'\nimport { portalList } from '../private/portal.js'\n\nlet timer\n\nconst\n { notPassiveCapture } = listenOpts,\n registeredList = []\n\nfunction globalHandler (evt) {\n clearTimeout(timer)\n\n const target = evt.target\n\n if (\n target === void 0\n || target.nodeType === 8\n || target.classList.contains('no-pointer-events') === true\n ) {\n return\n }\n\n // check last portal vm if it's\n // a QDialog and not in seamless mode\n let portalIndex = portalList.length - 1\n\n while (portalIndex >= 0) {\n const proxy = portalList[ portalIndex ].$\n\n if (proxy.type.name !== 'QDialog') {\n break\n }\n\n if (proxy.props.seamless !== true) {\n return\n }\n\n portalIndex--\n }\n\n for (let i = registeredList.length - 1; i >= 0; i--) {\n const state = registeredList[ i ]\n\n if (\n (\n state.anchorEl.value === null\n || state.anchorEl.value.contains(target) === false\n )\n && (\n target === document.body\n || (\n state.innerRef.value !== null\n && state.innerRef.value.contains(target) === false\n )\n )\n ) {\n // mark the event as being processed by clickOutside\n // used to prevent refocus after menu close\n evt.qClickOutside = true\n state.onClickOutside(evt)\n }\n else {\n return\n }\n }\n}\n\nexport function addClickOutside (clickOutsideProps) {\n registeredList.push(clickOutsideProps)\n\n if (registeredList.length === 1) {\n document.addEventListener('mousedown', globalHandler, notPassiveCapture)\n document.addEventListener('touchstart', globalHandler, notPassiveCapture)\n }\n}\n\nexport function removeClickOutside (clickOutsideProps) {\n const index = registeredList.findIndex(h => h === clickOutsideProps)\n\n if (index > -1) {\n registeredList.splice(index, 1)\n\n if (registeredList.length === 0) {\n clearTimeout(timer)\n document.removeEventListener('mousedown', globalHandler, notPassiveCapture)\n document.removeEventListener('touchstart', globalHandler, notPassiveCapture)\n }\n }\n}\n","import useField, { useFieldState, useFieldProps, useFieldEmits } from '../../composables/private/use-field.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\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, 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 { createComponent } from '../../utils/private/create.js'\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 createComponent({\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, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/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 { ref, watch, onMounted, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport { clearSelection } from '../../utils/private/selection.js'\nimport { addEvt, cleanEvt, prevent } from '../../utils/event.js'\nimport { isKeyCode } from '../../utils/private/key-composition.js'\n\nexport const useAnchorProps = {\n target: {\n default: true\n },\n noParentEvent: Boolean,\n contextMenu: Boolean\n}\n\nexport default function ({\n showing,\n avoidEmit, // required for QPopupProxy (true)\n configureAnchorEl // optional\n}) {\n const { props, proxy, emit } = getCurrentInstance()\n\n const anchorEl = ref(null)\n\n let touchTimer\n\n function canShow (evt) {\n // abort with no parent configured or on multi-touch\n return anchorEl.value === null\n ? false\n : (evt === void 0 || evt.touches === void 0 || evt.touches.length <= 1)\n }\n\n const anchorEvents = {}\n\n if (configureAnchorEl === void 0) {\n // default configureAnchorEl is designed for\n // QMenu & QPopupProxy (which is why it's handled here)\n\n Object.assign(anchorEvents, {\n hide (evt) {\n proxy.hide(evt)\n },\n\n toggle (evt) {\n proxy.toggle(evt)\n evt.qAnchorHandled = true\n },\n\n toggleKey (evt) {\n isKeyCode(evt, 13) === true && anchorEvents.toggle(evt)\n },\n\n contextClick (evt) {\n proxy.hide(evt)\n prevent(evt)\n nextTick(() => {\n proxy.show(evt)\n evt.qAnchorHandled = true\n })\n },\n\n prevent,\n\n mobileTouch (evt) {\n anchorEvents.mobileCleanup(evt)\n\n if (canShow(evt) !== true) {\n return\n }\n\n proxy.hide(evt)\n anchorEl.value.classList.add('non-selectable')\n\n const target = evt.target\n addEvt(anchorEvents, 'anchor', [\n [ target, 'touchmove', 'mobileCleanup', 'passive' ],\n [ target, 'touchend', 'mobileCleanup', 'passive' ],\n [ target, 'touchcancel', 'mobileCleanup', 'passive' ],\n [ anchorEl.value, 'contextmenu', 'prevent', 'notPassive' ]\n ])\n\n touchTimer = setTimeout(() => {\n proxy.show(evt)\n evt.qAnchorHandled = true\n }, 300)\n },\n\n mobileCleanup (evt) {\n anchorEl.value.classList.remove('non-selectable')\n clearTimeout(touchTimer)\n\n if (showing.value === true && evt !== void 0) {\n clearSelection()\n }\n }\n })\n\n configureAnchorEl = function (context = props.contextMenu) {\n if (props.noParentEvent === true || anchorEl.value === null) { return }\n\n let evts\n\n if (context === true) {\n if (proxy.$q.platform.is.mobile === true) {\n evts = [\n [ anchorEl.value, 'touchstart', 'mobileTouch', 'passive' ]\n ]\n }\n else {\n evts = [\n [ anchorEl.value, 'mousedown', 'hide', 'passive' ],\n [ anchorEl.value, 'contextmenu', 'contextClick', 'notPassive' ]\n ]\n }\n }\n else {\n evts = [\n [ anchorEl.value, 'click', 'toggle', 'passive' ],\n [ anchorEl.value, 'keyup', 'toggleKey', 'passive' ]\n ]\n }\n\n addEvt(anchorEvents, 'anchor', evts)\n }\n }\n\n function unconfigureAnchorEl () {\n cleanEvt(anchorEvents, 'anchor')\n }\n\n function setAnchorEl (el) {\n anchorEl.value = el\n while (anchorEl.value.classList.contains('q-anchor--skip')) {\n anchorEl.value = anchorEl.value.parentNode\n }\n configureAnchorEl()\n }\n\n function pickAnchorEl () {\n if (props.target === false || props.target === '') {\n anchorEl.value = null\n }\n else if (props.target === true) {\n setAnchorEl(proxy.$el.parentNode)\n }\n else {\n let el = props.target\n\n if (typeof props.target === 'string') {\n try {\n el = document.querySelector(props.target)\n }\n catch (err) {\n el = void 0\n }\n }\n\n if (el !== void 0 && el !== null) {\n anchorEl.value = el.$el || el\n configureAnchorEl()\n }\n else {\n anchorEl.value = null\n console.error(`Anchor: target \"${ props.target }\" not found`)\n }\n }\n }\n\n watch(() => props.contextMenu, val => {\n if (anchorEl.value !== null) {\n unconfigureAnchorEl()\n configureAnchorEl(val)\n }\n })\n\n watch(() => props.target, () => {\n if (anchorEl.value !== null) {\n unconfigureAnchorEl()\n }\n\n pickAnchorEl()\n })\n\n watch(() => props.noParentEvent, val => {\n if (anchorEl.value !== null) {\n if (val === true) {\n unconfigureAnchorEl()\n }\n else {\n configureAnchorEl()\n }\n }\n })\n\n onMounted(() => {\n pickAnchorEl()\n\n if (avoidEmit !== true && props.modelValue === true && anchorEl.value === null) {\n emit('update:modelValue', false)\n }\n })\n\n onBeforeUnmount(() => {\n clearTimeout(touchTimer)\n unconfigureAnchorEl()\n })\n\n return {\n anchorEl,\n canShow,\n anchorEvents\n }\n}\n","import { ref, watch, onBeforeUnmount } from 'vue'\n\nimport { listenOpts } from '../../utils/event.js'\n\nexport default function (\n props,\n configureScrollTarget\n) {\n const localScrollTarget = ref(null)\n let scrollFn\n\n function changeScrollEvent (scrollTarget, fn) {\n const fnProp = `${ fn !== void 0 ? 'add' : 'remove' }EventListener`\n const fnHandler = fn !== void 0 ? fn : scrollFn\n\n if (scrollTarget !== window) {\n scrollTarget[ fnProp ]('scroll', fnHandler, listenOpts.passive)\n }\n\n window[ fnProp ]('scroll', fnHandler, listenOpts.passive)\n\n scrollFn = fn\n }\n\n function unconfigureScrollTarget () {\n if (localScrollTarget.value !== null) {\n changeScrollEvent(localScrollTarget.value)\n localScrollTarget.value = null\n }\n }\n\n const noParentEventWatcher = watch(() => props.noParentEvent, () => {\n if (localScrollTarget.value !== null) {\n unconfigureScrollTarget()\n configureScrollTarget()\n }\n })\n\n onBeforeUnmount(noParentEventWatcher)\n\n return {\n localScrollTarget,\n unconfigureScrollTarget,\n changeScrollEvent\n }\n}\n","import { getScrollbarWidth } from '../scroll.js'\nimport { client } from '../../plugins/Platform.js'\n\nlet vpLeft, vpTop\n\nexport function validatePosition (pos) {\n const parts = pos.split(' ')\n if (parts.length !== 2) {\n return false\n }\n if ([ 'top', 'center', 'bottom' ].includes(parts[ 0 ]) !== true) {\n console.error('Anchor/Self position must start with one of top/center/bottom')\n return false\n }\n if ([ 'left', 'middle', 'right', 'start', 'end' ].includes(parts[ 1 ]) !== true) {\n console.error('Anchor/Self position must end with one of left/middle/right/start/end')\n return false\n }\n return true\n}\n\nexport function validateOffset (val) {\n if (!val) { return true }\n if (val.length !== 2) { return false }\n if (typeof val[ 0 ] !== 'number' || typeof val[ 1 ] !== 'number') {\n return false\n }\n return true\n}\n\nconst horizontalPos = {\n 'start#ltr': 'left',\n 'start#rtl': 'right',\n 'end#ltr': 'right',\n 'end#rtl': 'left'\n}\n\n;[ 'left', 'middle', 'right' ].forEach(pos => {\n horizontalPos[ `${ pos }#ltr` ] = pos\n horizontalPos[ `${ pos }#rtl` ] = pos\n})\n\nexport function parsePosition (pos, rtl) {\n const parts = pos.split(' ')\n return {\n vertical: parts[ 0 ],\n horizontal: horizontalPos[ `${ parts[ 1 ] }#${ rtl === true ? 'rtl' : 'ltr' }` ]\n }\n}\n\nexport function validateCover (val) {\n if (val === true || val === false) { return true }\n return validatePosition(val)\n}\n\nexport function getAnchorProps (el, offset) {\n let { top, left, right, bottom, width, height } = el.getBoundingClientRect()\n\n if (offset !== void 0) {\n top -= offset[ 1 ]\n left -= offset[ 0 ]\n bottom += offset[ 1 ]\n right += offset[ 0 ]\n\n width += offset[ 0 ]\n height += offset[ 1 ]\n }\n\n return {\n top,\n left,\n right,\n bottom,\n width,\n height,\n middle: left + (right - left) / 2,\n center: top + (bottom - top) / 2\n }\n}\n\nexport function getTargetProps (el) {\n return {\n top: 0,\n center: el.offsetHeight / 2,\n bottom: el.offsetHeight,\n left: 0,\n middle: el.offsetWidth / 2,\n right: el.offsetWidth\n }\n}\n\n// cfg: { el, anchorEl, anchorOrigin, selfOrigin, offset, absoluteOffset, cover, fit, maxHeight, maxWidth }\nexport function setPosition (cfg) {\n if (client.is.ios === true && window.visualViewport !== void 0) {\n // uses the q-position-engine CSS class\n\n const el = document.body.style\n const { offsetLeft: left, offsetTop: top } = window.visualViewport\n\n if (left !== vpLeft) {\n el.setProperty('--q-pe-left', left + 'px')\n vpLeft = left\n }\n if (top !== vpTop) {\n el.setProperty('--q-pe-top', top + 'px')\n vpTop = top\n }\n }\n\n let anchorProps\n\n // scroll position might change\n // if max-height/-width changes, so we\n // need to restore it after we calculate\n // the new positioning\n const { scrollLeft, scrollTop } = cfg.el\n\n if (cfg.absoluteOffset === void 0) {\n anchorProps = getAnchorProps(cfg.anchorEl, cfg.cover === true ? [ 0, 0 ] : cfg.offset)\n }\n else {\n const\n { top: anchorTop, left: anchorLeft } = cfg.anchorEl.getBoundingClientRect(),\n top = anchorTop + cfg.absoluteOffset.top,\n left = anchorLeft + cfg.absoluteOffset.left\n\n anchorProps = { top, left, width: 1, height: 1, right: left + 1, center: top, middle: left, bottom: top + 1 }\n }\n\n let elStyle = {\n maxHeight: cfg.maxHeight,\n maxWidth: cfg.maxWidth,\n visibility: 'visible'\n }\n\n if (cfg.fit === true || cfg.cover === true) {\n elStyle.minWidth = anchorProps.width + 'px'\n if (cfg.cover === true) {\n elStyle.minHeight = anchorProps.height + 'px'\n }\n }\n\n Object.assign(cfg.el.style, elStyle)\n\n const\n targetProps = getTargetProps(cfg.el),\n props = {\n top: anchorProps[ cfg.anchorOrigin.vertical ] - targetProps[ cfg.selfOrigin.vertical ],\n left: anchorProps[ cfg.anchorOrigin.horizontal ] - targetProps[ cfg.selfOrigin.horizontal ]\n }\n\n applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)\n\n elStyle = {\n top: props.top + 'px',\n left: props.left + 'px'\n }\n\n if (props.maxHeight !== void 0) {\n elStyle.maxHeight = props.maxHeight + 'px'\n\n if (anchorProps.height > props.maxHeight) {\n elStyle.minHeight = elStyle.maxHeight\n }\n }\n if (props.maxWidth !== void 0) {\n elStyle.maxWidth = props.maxWidth + 'px'\n\n if (anchorProps.width > props.maxWidth) {\n elStyle.minWidth = elStyle.maxWidth\n }\n }\n\n Object.assign(cfg.el.style, elStyle)\n\n // restore scroll position\n if (cfg.el.scrollTop !== scrollTop) {\n cfg.el.scrollTop = scrollTop\n }\n if (cfg.el.scrollLeft !== scrollLeft) {\n cfg.el.scrollLeft = scrollLeft\n }\n}\n\nfunction applyBoundaries (props, anchorProps, targetProps, anchorOrigin, selfOrigin) {\n const\n currentHeight = targetProps.bottom,\n currentWidth = targetProps.right,\n margin = getScrollbarWidth(),\n innerHeight = window.innerHeight - margin,\n innerWidth = document.body.clientWidth\n\n if (props.top < 0 || props.top + currentHeight > innerHeight) {\n if (selfOrigin.vertical === 'center') {\n props.top = anchorProps[ anchorOrigin.vertical ] > innerHeight / 2\n ? Math.max(0, innerHeight - currentHeight)\n : 0\n props.maxHeight = Math.min(currentHeight, innerHeight)\n }\n else if (anchorProps[ anchorOrigin.vertical ] > innerHeight / 2) {\n const anchorY = Math.min(\n innerHeight,\n anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.bottom : anchorProps.top)\n )\n props.maxHeight = Math.min(currentHeight, anchorY)\n props.top = Math.max(0, anchorY - currentHeight)\n }\n else {\n props.top = Math.max(0, anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.top : anchorProps.bottom)\n )\n props.maxHeight = Math.min(currentHeight, innerHeight - props.top)\n }\n }\n\n if (props.left < 0 || props.left + currentWidth > innerWidth) {\n props.maxWidth = Math.min(currentWidth, innerWidth)\n if (selfOrigin.horizontal === 'middle') {\n props.left = anchorProps[ anchorOrigin.horizontal ] > innerWidth / 2\n ? Math.max(0, innerWidth - currentWidth)\n : 0\n }\n else if (anchorProps[ anchorOrigin.horizontal ] > innerWidth / 2) {\n const anchorX = Math.min(\n innerWidth,\n anchorOrigin.horizontal === 'middle'\n ? anchorProps.middle\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.right : anchorProps.left)\n )\n props.maxWidth = Math.min(currentWidth, anchorX)\n props.left = Math.max(0, anchorX - props.maxWidth)\n }\n else {\n props.left = Math.max(0, anchorOrigin.horizontal === 'middle'\n ? anchorProps.middle\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.left : anchorProps.right)\n )\n props.maxWidth = Math.min(currentWidth, innerWidth - props.left)\n }\n }\n}\n","import { h, ref, computed, watch, Transition, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useAnchor, { useAnchorProps } from '../../composables/private/use-anchor.js'\nimport useScrollTarget from '../../composables/private/use-scroll-target.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport usePortal from '../../composables/private/use-portal.js'\nimport useTransition, { useTransitionProps } from '../../composables/private/use-transition.js'\nimport useTick from '../../composables/private/use-tick.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { closePortalMenus } from '../../utils/private/portal.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { position, stopAndPrevent } from '../../utils/event.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { addEscapeKey, removeEscapeKey } from '../../utils/private/escape-key.js'\nimport { addFocusout, removeFocusout } from '../../utils/private/focusout.js'\nimport { childHasFocus } from '../../utils/dom.js'\nimport { addClickOutside, removeClickOutside } from '../../utils/private/click-outside.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\n\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/private/position-engine.js'\n\nexport default createComponent({\n name: 'QMenu',\n\n inheritAttrs: false,\n\n props: {\n ...useAnchorProps,\n ...useModelToggleProps,\n ...useDarkProps,\n ...useTransitionProps,\n\n persistent: Boolean,\n autoClose: Boolean,\n separateClosePopup: Boolean,\n\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n\n fit: Boolean,\n cover: Boolean,\n\n square: Boolean,\n\n anchor: {\n type: String,\n validator: validatePosition\n },\n self: {\n type: String,\n validator: validatePosition\n },\n offset: {\n type: Array,\n validator: validateOffset\n },\n\n scrollTarget: {\n default: void 0\n },\n\n touchPosition: Boolean,\n\n maxHeight: {\n type: String,\n default: null\n },\n maxWidth: {\n type: String,\n default: null\n }\n },\n\n emits: [\n ...useModelToggleEmits,\n 'click', 'escape-key'\n ],\n\n setup (props, { slots, emit, attrs }) {\n let refocusTarget = null, absoluteOffset, unwatchPosition, avoidAutoClose\n\n const vm = getCurrentInstance()\n const { proxy } = vm\n const { $q } = proxy\n\n const innerRef = ref(null)\n const showing = ref(false)\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && props.noRouteDismiss !== true\n )\n\n const isDark = useDark(props, $q)\n const { registerTick, removeTick } = useTick()\n const { registerTimeout, removeTimeout } = useTimeout()\n const { transition, transitionStyle } = useTransition(props, showing)\n const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget)\n\n const { anchorEl, canShow } = useAnchor({ showing })\n\n const { hide } = useModelToggle({\n showing, canShow, handleShow, handleHide,\n hideOnRouteChange,\n processOnMount: true\n })\n\n const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent)\n\n const clickOutsideProps = {\n anchorEl,\n innerRef,\n onClickOutside (e) {\n if (props.persistent !== true && showing.value === true) {\n hide(e)\n\n if (\n // always prevent touch event\n e.type === 'touchstart'\n // prevent click if it's on a dialog backdrop\n || e.target.classList.contains('q-dialog__backdrop')\n ) {\n stopAndPrevent(e)\n }\n\n return true\n }\n }\n }\n\n const anchorOrigin = computed(() =>\n parsePosition(\n props.anchor || (\n props.cover === true ? 'center middle' : 'bottom start'\n ),\n $q.lang.rtl\n )\n )\n\n const selfOrigin = computed(() => (\n props.cover === true\n ? anchorOrigin.value\n : parsePosition(props.self || 'top start', $q.lang.rtl)\n ))\n\n const menuClass = computed(() =>\n (props.square === true ? ' q-menu--square' : '')\n + (isDark.value === true ? ' q-menu--dark q-dark' : '')\n )\n\n const onEvents = computed(() => (\n props.autoClose === true\n ? { onClick: onAutoClose }\n : {}\n ))\n\n const handlesFocus = computed(() =>\n showing.value === true && props.persistent !== true\n )\n\n watch(handlesFocus, val => {\n if (val === true) {\n addEscapeKey(onEscapeKey)\n addClickOutside(clickOutsideProps)\n }\n else {\n removeEscapeKey(onEscapeKey)\n removeClickOutside(clickOutsideProps)\n }\n })\n\n function focus () {\n addFocusFn(() => {\n let node = innerRef.value\n\n if (node && node.contains(document.activeElement) !== true) {\n node = node.querySelector('[autofocus], [data-autofocus]') || node\n node.focus({ preventScroll: true })\n }\n })\n }\n\n function handleShow (evt) {\n removeTick()\n removeTimeout()\n\n refocusTarget = props.noRefocus === false\n ? document.activeElement\n : null\n\n addFocusout(onFocusout)\n\n showPortal()\n configureScrollTarget()\n\n absoluteOffset = void 0\n\n if (evt !== void 0 && (props.touchPosition || props.contextMenu)) {\n const pos = position(evt)\n\n if (pos.left !== void 0) {\n const { top, left } = anchorEl.value.getBoundingClientRect()\n absoluteOffset = { left: pos.left - left, top: pos.top - top }\n }\n }\n\n if (unwatchPosition === void 0) {\n unwatchPosition = watch(\n () => $q.screen.width + '|' + $q.screen.height + '|' + props.self + '|' + props.anchor + '|' + $q.lang.rtl,\n updatePosition\n )\n }\n\n if (props.noFocus !== true) {\n document.activeElement.blur()\n }\n\n registerTick(() => {\n updatePosition()\n props.noFocus !== true && focus()\n })\n\n registerTimeout(() => {\n // required in order to avoid the \"double-tap needed\" issue\n if ($q.platform.is.ios === true) {\n // if auto-close, then this click should\n // not close the menu\n avoidAutoClose = props.autoClose\n innerRef.value.click()\n }\n\n updatePosition()\n showPortal(true) // done showing portal\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTick()\n removeTimeout()\n\n anchorCleanup(true)\n\n if (\n refocusTarget !== null\n && (\n // menu was hidden from code or ESC plugin\n evt === void 0\n // menu was not closed from a mouse or touch clickOutside\n || evt.qClickOutside !== true\n )\n ) {\n refocusTarget.focus()\n refocusTarget = null\n }\n\n registerTimeout(() => {\n hidePortal()\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function anchorCleanup (hiding) {\n absoluteOffset = void 0\n\n if (unwatchPosition !== void 0) {\n unwatchPosition()\n unwatchPosition = void 0\n }\n\n if (hiding === true || showing.value === true) {\n removeFocusout(onFocusout)\n unconfigureScrollTarget()\n removeClickOutside(clickOutsideProps)\n removeEscapeKey(onEscapeKey)\n }\n\n if (hiding !== true) {\n refocusTarget = null\n }\n }\n\n function configureScrollTarget () {\n if (anchorEl.value !== null || props.scrollTarget !== void 0) {\n localScrollTarget.value = getScrollTarget(anchorEl.value, props.scrollTarget)\n changeScrollEvent(localScrollTarget.value, updatePosition)\n }\n }\n\n function onAutoClose (e) {\n // if auto-close, then the ios double-tap fix which\n // issues a click should not close the menu\n if (avoidAutoClose !== true) {\n closePortalMenus(proxy, e)\n emit('click', e)\n }\n else {\n avoidAutoClose = false\n }\n }\n\n function onFocusout (evt) {\n // the focus is not in a vue child component\n if (\n handlesFocus.value === true\n && props.noFocus !== true\n && childHasFocus(innerRef.value, evt.target) !== true\n ) {\n focus()\n }\n }\n\n function onEscapeKey (evt) {\n emit('escape-key')\n hide(evt)\n }\n\n function updatePosition () {\n const el = innerRef.value\n\n if (el === null || anchorEl.value === null) {\n return\n }\n\n setPosition({\n el,\n offset: props.offset,\n anchorEl: anchorEl.value,\n anchorOrigin: anchorOrigin.value,\n selfOrigin: selfOrigin.value,\n absoluteOffset,\n fit: props.fit,\n cover: props.cover,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth\n })\n }\n\n function renderPortalContent () {\n return h(\n Transition,\n { name: transition.value, appear: true },\n () => (\n showing.value === true\n ? h('div', {\n ...attrs,\n ref: innerRef,\n tabindex: -1,\n class: [\n 'q-menu q-position-engine scroll' + menuClass.value,\n attrs.class\n ],\n style: [\n attrs.style,\n transitionStyle.value\n ],\n ...onEvents.value\n }, hSlot(slots.default))\n : null\n )\n )\n }\n\n onBeforeUnmount(anchorCleanup)\n\n // expose public methods\n Object.assign(proxy, { focus, updatePosition })\n\n return renderPortal\n }\n})\n","import { h, ref, computed, watch, onBeforeUpdate, onUpdated, 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 { createComponent } from '../../utils/private/create.js'\nimport { isDeepEqual, isPlainObject } 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 createComponent({\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,\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 => {\n const val = props[ key ]\n if (val !== void 0) {\n acc[ key ] = val\n }\n })\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 comboboxAttrs = computed(() => ({\n tabindex: props.tabindex,\n role: 'combobox',\n 'aria-label': props.label,\n 'aria-autocomplete': props.useInput === true ? 'list' : 'none',\n 'aria-expanded': menu.value === true ? 'true' : 'false',\n 'aria-owns': `${ state.targetUid.value }_lb`,\n 'aria-controls': `${ state.targetUid.value }_lb`\n }))\n\n const listboxAttrs = computed(() => {\n const attrs = {\n id: `${ state.targetUid.value }_lb`,\n role: 'listbox',\n 'aria-multiselectable': props.multiple === true ? 'true' : 'false'\n }\n\n if (optionIndex.value >= 0) {\n attrs[ 'aria-activedescendant' ] = `${ state.targetUid.value }_${ optionIndex.value }`\n }\n\n return attrs\n })\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\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 role: 'option',\n id: `${ state.targetUid.value }_${ index }`,\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 itemProps[ 'aria-selected' ] = itemProps.active === true ? 'true' : 'false'\n\n if ($q.platform.is.desktop === true) {\n itemProps.onMousemove = () => { menu.value === true && setOptionIndex(index) }\n }\n }\n\n return {\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 })\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 (\n innerValue.value.length === 0\n || isDeepEqual(getOptionValue.value(innerValue.value[ 0 ]), optValue) !== true\n ) {\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 => (isPlainObject(opt) === true && 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 (e) {\n if (\n props.useInput === true\n && targetRef.value !== null\n && (e === void 0 || (targetRef.value === e.target && e.target.value === selectedString.value))\n ) {\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 const findFn = extractFn => {\n const option = props.options.find(opt => extractFn.value(opt).toLocaleLowerCase() === needle)\n\n if (option === void 0) {\n return false\n }\n\n if (innerValue.value.indexOf(option) === -1) {\n toggleOption(option)\n }\n else {\n hidePopup()\n }\n\n return true\n }\n const fillFn = afterFilter => {\n if (findFn(getOptionValue) === true) {\n return\n }\n if (findFn(getOptionLabel) === true || afterFilter === true) {\n return\n }\n\n filter(value, true, () => fillFn(true))\n }\n\n fillFn()\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 [].concat(slots.selected())\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 (noOptions.value === true) {\n return slots[ 'no-option' ] !== void 0\n ? slots[ 'no-option' ]({ inputValue: inputValue.value })\n : void 0\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 let options = padVirtualScroll('div', optionScope.value.map(fn))\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 ...comboboxAttrs.value,\n ...state.splitAttrs.attributes.value,\n id: isTarget === true ? state.targetUid.value : void 0,\n maxlength: props.maxlength,\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 = [ ...data.class, '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, afterUpdateFn) {\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 typeof afterUpdateFn === 'function' && nextTick(() => { afterUpdateFn(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 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 ...listboxAttrs.value,\n onScrollPassive: onVirtualScrollEvt,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onMenuBeforeHide,\n onShow: onMenuShow\n }, getAllOptions)\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.value }`,\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 ...listboxAttrs.value,\n onClick: prevent,\n onScrollPassive: onVirtualScrollEvt\n }, getAllOptions())\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 (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 = 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 = 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 onBeforeUnmount(() => {\n clearTimeout(inputTimer)\n })\n\n // expose public methods\n Object.assign(proxy, {\n showPopup, hidePopup,\n removeAtIndex, add, toggleOption,\n getOptionIndex: () => optionIndex.value,\n setOptionIndex, moveOptionSelection,\n filter, updateMenuPosition, updateInputValue,\n isOptionSelected,\n getEmittingOptionValue,\n isOptionDisabled: (...args) => isOptionDisabled.value.apply(null, args) === true,\n getOptionValue: (...args) => getOptionValue.value.apply(null, args),\n getOptionLabel: (...args) => getOptionLabel.value.apply(null, args)\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 else if (state.hasPopupOpen === true) {\n // explicitly set it otherwise TAB will not blur component\n state.hasPopupOpen = false\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 // label from QField will propagate click on the input\n prevent(e)\n\n if (hasDialog !== true && menu.value === true) {\n closeMenu()\n targetRef.value !== null && targetRef.value.focus()\n return\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) {\n child.push(\n h('div', {\n ref: isTarget === true ? targetRef : void 0,\n key: 'd_t',\n class: 'q-select__focus-target',\n id: isTarget === true ? state.targetUid.value : void 0,\n ...comboboxAttrs.value,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetKeyup,\n onKeypress: onTargetKeypress\n })\n )\n\n if (isTarget === true && typeof props.autocomplete === 'string' && props.autocomplete.length > 0) {\n child.push(\n h('input', {\n class: 'q-select__autocomplete-input',\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","import { nextTick, onBeforeUnmount } from 'vue'\n\n/*\n * Usage:\n * registerTick(fn)\n * registerTick(fn)\n */\n\nexport default function () {\n let tickFn\n\n onBeforeUnmount(() => {\n tickFn = void 0\n })\n\n return {\n registerTick (fn) {\n tickFn = fn\n\n nextTick(() => {\n if (tickFn === fn) {\n tickFn()\n tickFn = void 0\n }\n })\n },\n\n removeTick () {\n tickFn = void 0\n }\n }\n}\n"],"sourceRoot":""}