{"version":3,"sources":["webpack:///./node_modules/quasar/src/components/menu/ClickOutside.js","webpack:///./node_modules/quasar/src/utils/vm.js","webpack:///./node_modules/quasar/src/components/menu/QMenu.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/modules/es.regexp.flags.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/quasar/src/utils/is.js","webpack:///./node_modules/core-js/modules/es.set.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./node_modules/quasar/src/components/page/QPage.js","webpack:///./node_modules/quasar/src/components/chip/QChip.js","webpack:///./node_modules/core-js/modules/es.array-buffer.constructor.js","webpack:///./node_modules/quasar/src/components/select/QSelect.js","webpack:///./node_modules/quasar/src/mixins/virtual-scroll.js"],"names":["timer","getVmOfNode","el","node","parentNode","__vue__","isVmChildOf","childVm","parentVm","vm","$parent","notPassiveCapture","listenOpts","passiveCapture","handlers","click","focus","hasModalsAbove","nextElementSibling","classList","contains","execHandlers","list","evt","i","length","globalHandler","clearTimeout","type","client","is","ie","target","document","body","hasAttribute","setTimeout","name","bind","vnode","value","arg","vmEl","componentInstance","context","ctx","trigger","toggleEl","handler","qClickOutside","nodeType","documentElement","__qclickoutside","__qclickoutside_old","addEventListener","push","timerFocusin","update","oldValue","unbind","indexClick","findIndex","h","indexFocus","splice","removeEventListener","Vue","extend","mixins","AttrsMixin","DarkMixin","AnchorMixin","ModelToggleMixin","PortalMixin","TransitionMixin","directives","ClickOutside","props","persistent","Boolean","autoClose","separateClosePopup","noRouteDismiss","noRefocus","noFocus","fit","cover","square","anchor","String","validator","validatePosition","self","offset","Array","validateOffset","scrollTarget","default","touchPosition","maxHeight","maxWidth","computed","anchorOrigin","parsePosition","this","$q","lang","rtl","selfOrigin","menuClass","isDark","hideOnRouteChange","onEvents","on","qListeners","input","stop","__onAutoClose","attrs","tabindex","qAttrs","methods","addFocusFn","__portal","$refs","inner","activeElement","querySelector","__show","__refocusTarget","EscapeKey","register","$emit","hide","__showPortal","__configureScrollTarget","absoluteOffset","contextMenu","pos","position","left","anchorEl","getBoundingClientRect","top","unwatch","$watch","screen","width","height","updatePosition","$el","dispatchEvent","create","bubbles","blur","__nextTick","__setTimeout","platform","ios","__avoidAutoClose","__hide","__anchorCleanup","__hidePortal","hiding","showing","pop","__unconfigureScrollTarget","__scrollTarget","__changeScrollEvent","getScrollTarget","e","closePortalMenus","setPosition","__onClickOutside","targetClassList","stopAndPreventClick","__renderPortal","transition","ref","staticClass","class","contentClass","style","contentStyle","slot","mounted","__processModelChange","beforeDestroy","collection","collectionStrong","module","exports","init","arguments","undefined","DESCRIPTORS","objectDefinePropertyModule","regExpFlags","fails","FORCED","Object","getOwnPropertyDescriptor","RegExp","prototype","get","call","dotAll","sticky","f","configurable","_typeof","obj","Symbol","iterator","constructor","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isDeepEqual","a","b","size","entries","next","done","has","buffer","source","flags","valueOf","toString","keys","key","isDate","v","isNumber","isFinite","defineProperty","redefineAll","anInstance","iterate","defineIterator","setSpecies","fastKey","InternalStateModule","setInternalState","set","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","C","that","iterable","index","first","last","AS_ENTRIES","getInternalState","define","previous","state","entry","getEntry","removed","clear","data","prev","forEach","callbackfn","boundFunction","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","$","global","isForced","redefine","InternalMetadataModule","isObject","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","indexOf","IS_WEAK","NativeConstructor","NativePrototype","Constructor","exported","fixMethod","KEY","nativeMethod","REPLACE","REQUIRED","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","forced","ListenersMixin","inject","pageContainer","console","error","layout","padding","styleFn","Function","header","space","footer","container","containerHeight","minHeight","classes","render","RippleMixin","getSizeMixin","xs","sm","md","lg","xl","model","event","dense","icon","iconRight","iconRemove","iconSelected","label","Number","color","textColor","selected","outline","clickable","removable","disable","text","isClickable","hasLeftIcon","leftIcon","iconSet","chip","removeIcon","remove","__onKeyup","keyCode","__onClick","__onRemove","stopAndPrevent","__getContent","child","QIcon","mergeSlotSafely","cache","keyup","sizeStyle","assign","ripple","arrayBufferModule","ARRAY_BUFFER","NativeArrayBuffer","validateNewValueMode","includes","reEscapeList","QField","VirtualScroll","CompositionMixin","FormFieldMixin","required","multiple","displayValue","displayValueSanitize","dropdownIcon","options","optionValue","optionLabel","optionDisable","hideSelected","hideDropdownIcon","fillInput","maxValues","optionsDense","optionsDark","optionsSelectedClass","optionsSanitize","optionsCover","menuShrink","menuAnchor","menuSelf","menuOffset","popupContentClass","popupContentStyle","useInput","useChips","newValueMode","mapOptions","emitValue","inputDebounce","inputClass","inputStyle","autocomplete","transitionShow","transitionHide","behavior","virtualScrollItemSize","menu","dialog","optionIndex","inputValue","dialogFieldFocused","watch","innerValue","val","innerValueCache","innerLoading","hasValue","userInputValue","__resetInputValue","filter","immediate","show","__updateMenu","isOptionsDark","virtualScrollLength","isArray","fieldClass","computedInputClass","menuContentClass","virtualScrollHorizontal","mapNull","values","map","__getOption","noOptions","selectedString","opt","getOptionLabel","join","sanitizeFn","sanitize","displayAsText","some","computedTabindex","focused","selectedScope","removeAtIndex","__removeAtIndexAndFocus","toggleOption","optionScope","virtualScrollSliceRange","from","to","__optionScopeCache","optionEls","slice","isOptionDisabled","itemProps","active","activeClass","computedOptionsSelectedClass","manualFocus","dark","isOptionSelected","itemEvents","desktop","mousemove","setOptionIndex","option","dropdownArrowIcon","arrow","dropdown","squaredMenu","outlined","standout","borderless","rounded","innerOptionsValue","getOptionValue","__getPropValueFn","inputControlEvents","__onInput","change","__onChange","keydown","__onTargetKeydown","__onTargetAutocomplete","keypress","__onTargetKeypress","__selectInputText","hasDialog","compositionstart","compositionupdate","compositionend","__onComposition","virtualScrollItemSizeComputed","getEmittingOptionValue","__focus","unique","updateInputValue","keepOpen","editable","optValue","hidePopup","moveOptionSelection","skipInputValue","normalizeToInterval","scrollTo","__setInputValue","defaultInputValue","fn","find","propName","defaultVal","select","__onTargetKeyup","isKeyCode","inputTimer","needle","toLocaleLowerCase","__clearValue","shouldIgnoreKey","newValueModeValid","tabShouldSelect","shiftKey","id","targetUid","showPopup","virtualScrollSliceSizeComputed","Math","max","min","view","optionsLength","searchBuffer","searchBufferExp","Date","now","altKey","ctrlKey","char","keyRepeat","searchRe","split","l","test","$nextTick","mode","__closeMenu","prevent","__getVirtualScrollEl","menuContent","__getVirtualScrollTarget","__getSelection","$scopedSlots","scope","QChip","domProps","__getControl","fromDialog","isTarget","__getInput","nameProp","opts","__getOptions","optionSlot","QItem","QItemSection","QItemLabel","__padVirtualScroll","concat","mergeSlot","__getInnerAppend","loading","innerLoadingIndicator","maxlength","autofocus","disabled","readonly","composing","noFiltering","internal","keepClosed","filterId","afterFn","__getControlEvents","focusout","__onControlFocusout","focusin","__onControlFocusin","__onControlPopupShow","hasPopupOpen","__getControlChild","__getMenu","QMenu","noParentEvent","__onVirtualScrollEvt","__onMenuShow","__setVirtualScrollSize","__onDialogFieldFocus","window","pageXOffset","scrollX","scrollLeft","__onDialogFieldBlur","__getDialog","content","$props","for","filled","itemAligned","stackLabel","scopedSlots","rawControl","before","after","QDialog","transitionShowComputed","__onDialogBeforeHide","__onDialogHide","__onDialogShow","__resetVirtualScroll","__onPreRender","mobile","__onPostRender","updateMenuPosition","beforeMount","aggBucketSize","scrollToEdges","buggyRTL","detectBuggyRTL","scroller","createElement","spacer","setAttribute","overflow","appendChild","sumFn","acc","getScrollDetails","parent","beforeRef","afterRef","horizontal","stickyStart","stickyEnd","parentCalc","scrollingElement","propElSize","details","scrollStart","scrollViewSize","scrollMaxSize","offsetStart","offsetEnd","innerWidth","clientWidth","scrollWidth","pageYOffset","scrollY","scrollTop","innerHeight","clientHeight","scrollHeight","previousElementSibling","parentRect","childRect","setScroll","scroll","offsetWidth","sumSize","sizeAgg","lastTo","fromAgg","floor","toAgg","total","reduce","commonVirtScrollProps","virtualScrollSliceSize","virtualScrollSliceRatioBefore","virtualScrollSliceRatioAfter","virtualScrollStickySizeStart","virtualScrollStickySizeEnd","tableColspan","setOverflowAnchor","isSupported","getComputedStyle","overflowAnchor","ssId","styleSheet","getElementById","head","qChildIndex","innerHTML","commonVirtPropsList","needsSliceRecalc","needsReset","reset","p","colspanAttr","colspan","prevToIndex","refresh","toIndex","edge","scrollEl","scrollDetails","__scrollViewSize","__setVirtualScrollSliceRange","parseInt","listLastIndex","listEndOffset","virtualScrollPaddingAfter","prevScrollStart","__updateVirtualScrollSizes","scrollMaxStart","virtualScrollSizes","ceil","virtualScrollSizesAgg","listOffset","virtualScrollPaddingBefore","j","align","alignForce","alignEnd","replace","alignRange","rangeChanged","onBlurFn","requestAnimationFrame","sizeBefore","tempTo","sizeAfter","posStart","posEnd","scrollPosition","sizeDiff","round","__emitScroll","contentEl","diff","children","childrenLength","sizeFn","offsetHeight","fullReset","defaultSize","oldVirtualScrollSizesLength","jMax","iMax","multiplier","baseSize","start","center","end","tag","paddingSize","direction","created","debounce"],"mappings":"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","file":"js/applications~dashboard~deployments~deviceStatus~deviceTypes~devices~eventLogs~events~organizations~o~44fccb86.43bd742b.js","sourcesContent":["import { client } from '../../plugins/Platform.js'\nimport { listenOpts } from '../../utils/event.js'\nimport { getVmOfNode, isVmChildOf } from '../../utils/vm.js'\n\nlet timer\n\nconst\n { notPassiveCapture, passiveCapture } = listenOpts,\n handlers = {\n click: [],\n focus: []\n }\n\nfunction hasModalsAbove (node) {\n while ((node = node.nextElementSibling) !== null) {\n if (node.classList.contains('q-dialog--modal')) {\n return true\n }\n }\n\n return false\n}\n\nfunction execHandlers (list, evt) {\n for (let i = list.length - 1; i >= 0; i--) {\n if (list[i](evt) === void 0) {\n return\n }\n }\n}\n\nfunction globalHandler (evt) {\n clearTimeout(timer)\n\n // prevent autofocus on body resulting from blur\n if (\n evt.type === 'focusin' && (\n (client.is.ie === true && evt.target === document.body) ||\n evt.target.hasAttribute('tabindex') === true\n )\n ) {\n timer = setTimeout(() => {\n execHandlers(handlers.focus, evt)\n }, client.is.ie === true ? 500 : 200)\n }\n else {\n execHandlers(handlers.click, evt)\n }\n}\n\nexport default {\n name: 'click-outside',\n\n bind (el, { value, arg }, vnode) {\n const vmEl = vnode.componentInstance || vnode.context\n\n const ctx = {\n trigger: value,\n toggleEl: arg,\n\n handler (evt) {\n const target = evt.target\n\n if (\n evt.qClickOutside !== true &&\n document.body.contains(target) === true &&\n target.nodeType !== 8 &&\n // directives that prevent click by using pointer-events none generate click on html element\n target !== document.documentElement &&\n target.classList.contains('no-pointer-events') === false &&\n hasModalsAbove(el) !== true &&\n (\n ctx.toggleEl === void 0 ||\n ctx.toggleEl.contains(target) === false\n ) &&\n (\n target === document.body ||\n isVmChildOf(getVmOfNode(target), vmEl) === false\n )\n ) {\n // mark the event as being processed by clickOutside\n // used to prevent refocus after menu close\n evt.qClickOutside = true\n\n return ctx.trigger(evt)\n }\n }\n }\n\n if (el.__qclickoutside) {\n el.__qclickoutside_old = el.__qclickoutside\n }\n\n el.__qclickoutside = ctx\n\n if (handlers.click.length === 0) {\n document.addEventListener('mousedown', globalHandler, notPassiveCapture)\n document.addEventListener('touchstart', globalHandler, notPassiveCapture)\n document.addEventListener('focusin', globalHandler, passiveCapture)\n }\n\n handlers.click.push(ctx.handler)\n\n ctx.timerFocusin = setTimeout(() => {\n handlers.focus.push(ctx.handler)\n }, 500)\n },\n\n update (el, { value, oldValue, arg }) {\n const ctx = el.__qclickoutside\n\n if (value !== oldValue) {\n ctx.trigger = value\n }\n if (arg !== ctx.arg) {\n ctx.toggleEl = arg\n }\n },\n\n unbind (el) {\n const ctx = el.__qclickoutside_old || el.__qclickoutside\n if (ctx !== void 0) {\n clearTimeout(ctx.timerFocusin)\n\n const\n indexClick = handlers.click.findIndex(h => h === ctx.handler),\n indexFocus = handlers.focus.findIndex(h => h === ctx.handler)\n\n indexClick > -1 && handlers.click.splice(indexClick, 1)\n indexFocus > -1 && handlers.focus.splice(indexFocus, 1)\n\n if (handlers.click.length === 0) {\n clearTimeout(timer)\n document.removeEventListener('mousedown', globalHandler, notPassiveCapture)\n document.removeEventListener('touchstart', globalHandler, notPassiveCapture)\n document.removeEventListener('focusin', globalHandler, passiveCapture)\n }\n\n delete el[el.__qclickoutside_old ? '__qclickoutside_old' : '__qclickoutside']\n }\n }\n}\n","export function getVmOfNode (el) {\n for (let node = el; node !== null; node = node.parentNode) {\n // node.__vue__ can be null if the instance was destroyed\n if (node.__vue__ !== void 0) {\n return node.__vue__\n }\n }\n}\n\nexport function isVmChildOf (childVm, parentVm) {\n // node.__vue__ can be null if the instance was destroyed\n if (childVm === null || parentVm === null) {\n return null\n }\n\n for (let vm = childVm; vm !== void 0; vm = vm.$parent) {\n if (vm === parentVm) {\n return true\n }\n }\n return false\n}\n","import Vue from 'vue'\n\nimport AnchorMixin from '../../mixins/anchor.js'\nimport ModelToggleMixin from '../../mixins/model-toggle.js'\nimport DarkMixin from '../../mixins/dark.js'\nimport PortalMixin, { closePortalMenus } from '../../mixins/portal.js'\nimport TransitionMixin from '../../mixins/transition.js'\nimport AttrsMixin from '../../mixins/attrs.js'\n\nimport ClickOutside from './ClickOutside.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { create, stop, position, stopAndPreventClick } from '../../utils/event.js'\nimport EscapeKey from '../../utils/escape-key.js'\n\nimport { slot } from '../../utils/slot.js'\nimport { addFocusFn } from '../../utils/focus-manager.js'\n\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/position-engine.js'\n\nexport default Vue.extend({\n name: 'QMenu',\n\n mixins: [\n AttrsMixin,\n DarkMixin,\n AnchorMixin,\n ModelToggleMixin,\n PortalMixin,\n TransitionMixin\n ],\n\n directives: {\n ClickOutside\n },\n\n props: {\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 computed: {\n anchorOrigin () {\n return parsePosition(\n this.anchor || (\n this.cover === true ? 'center middle' : 'bottom start'\n ),\n this.$q.lang.rtl\n )\n },\n\n selfOrigin () {\n return this.cover === true\n ? this.anchorOrigin\n : parsePosition(this.self || 'top start', this.$q.lang.rtl)\n },\n\n menuClass () {\n return (this.square === true ? ' q-menu--square' : '') +\n (this.isDark === true ? ' q-menu--dark q-dark' : '')\n },\n\n hideOnRouteChange () {\n return this.persistent !== true &&\n this.noRouteDismiss !== true\n },\n\n onEvents () {\n const on = {\n ...this.qListeners,\n // stop propagating these events from children\n input: stop,\n 'popup-show': stop,\n 'popup-hide': stop\n }\n\n if (this.autoClose === true) {\n on.click = this.__onAutoClose\n }\n\n return on\n },\n\n attrs () {\n return {\n tabindex: -1,\n ...this.qAttrs\n }\n }\n },\n\n methods: {\n focus () {\n addFocusFn(() => {\n let node = this.__portal !== void 0 && this.__portal.$refs !== void 0\n ? this.__portal.$refs.inner\n : void 0\n\n if (node !== void 0 && node.contains(document.activeElement) !== true) {\n node = node.querySelector('[autofocus], [data-autofocus]') || node\n node.focus()\n }\n })\n },\n\n __show (evt) {\n // IE can have null document.activeElement\n this.__refocusTarget = this.noRefocus === false && document.activeElement !== null\n ? document.activeElement\n : void 0\n\n EscapeKey.register(this, () => {\n if (this.persistent !== true) {\n this.$emit('escape-key')\n this.hide()\n }\n })\n\n this.__showPortal()\n this.__configureScrollTarget()\n\n this.absoluteOffset = void 0\n\n if (evt !== void 0 && (this.touchPosition || this.contextMenu)) {\n const pos = position(evt)\n\n if (pos.left !== void 0) {\n const { top, left } = this.anchorEl.getBoundingClientRect()\n this.absoluteOffset = { left: pos.left - left, top: pos.top - top }\n }\n }\n\n if (this.unwatch === void 0) {\n this.unwatch = this.$watch(\n () => this.$q.screen.width + '|' + this.$q.screen.height + '|' + this.self + '|' + this.anchor + '|' + this.$q.lang.rtl,\n this.updatePosition\n )\n }\n\n this.$el.dispatchEvent(create('popup-show', { bubbles: true }))\n\n // IE can have null document.activeElement\n if (this.noFocus !== true && document.activeElement !== null) {\n document.activeElement.blur()\n }\n\n this.__nextTick(() => {\n this.updatePosition()\n this.noFocus !== true && this.focus()\n })\n\n this.__setTimeout(() => {\n // required in order to avoid the \"double-tap needed\" issue\n if (this.$q.platform.is.ios === true) {\n // if auto-close, then this click should\n // not close the menu\n this.__avoidAutoClose = this.autoClose\n this.__portal.$el.click()\n }\n\n this.updatePosition()\n this.__showPortal(true)\n this.$emit('show', evt)\n }, 300)\n },\n\n __hide (evt) {\n this.__anchorCleanup(true)\n\n // check null for IE\n if (\n this.__refocusTarget !== void 0 &&\n this.__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 this.__refocusTarget.focus()\n }\n\n this.$el.dispatchEvent(create('popup-hide', { bubbles: true }))\n\n this.__setTimeout(() => {\n this.__hidePortal()\n this.$emit('hide', evt)\n }, 300)\n },\n\n __anchorCleanup (hiding) {\n this.absoluteOffset = void 0\n\n if (this.unwatch !== void 0) {\n this.unwatch()\n this.unwatch = void 0\n }\n\n if (hiding === true || this.showing === true) {\n EscapeKey.pop(this)\n this.__unconfigureScrollTarget()\n }\n },\n\n __unconfigureScrollTarget () {\n if (this.__scrollTarget !== void 0) {\n this.__changeScrollEvent(this.__scrollTarget)\n this.__scrollTarget = void 0\n }\n },\n\n __configureScrollTarget () {\n if (this.anchorEl !== void 0 || this.scrollTarget !== void 0) {\n this.__scrollTarget = getScrollTarget(this.anchorEl, this.scrollTarget)\n this.__changeScrollEvent(this.__scrollTarget, this.updatePosition)\n }\n },\n\n __onAutoClose (e) {\n // if auto-close, then the ios double-tap fix which\n // issues a click should not close the menu\n if (this.__avoidAutoClose !== true) {\n closePortalMenus(this, e)\n this.qListeners.click !== void 0 && this.$emit('click', e)\n }\n else {\n this.__avoidAutoClose = false\n }\n },\n\n updatePosition () {\n if (this.anchorEl === void 0 || this.__portal === void 0) {\n return\n }\n\n const el = this.__portal.$el\n\n if (el.nodeType === 8) { // IE replaces the comment with delay\n setTimeout(this.updatePosition, 25)\n return\n }\n\n setPosition({\n el,\n offset: this.offset,\n anchorEl: this.anchorEl,\n anchorOrigin: this.anchorOrigin,\n selfOrigin: this.selfOrigin,\n absoluteOffset: this.absoluteOffset,\n fit: this.fit,\n cover: this.cover,\n maxHeight: this.maxHeight,\n maxWidth: this.maxWidth\n })\n },\n\n __onClickOutside (e) {\n if (this.persistent !== true && this.showing === true) {\n const targetClassList = e.target.classList\n\n closePortalMenus(this, e)\n if (\n // always prevent touch event\n e.type === 'touchstart' ||\n // prevent click if it's on a dialog backdrop\n targetClassList.contains('q-dialog__backdrop')\n ) {\n stopAndPreventClick(e)\n }\n return true\n }\n },\n\n __renderPortal (h) {\n return h('transition', {\n props: { name: this.transition }\n }, [\n this.showing === true ? h('div', {\n ref: 'inner',\n staticClass: 'q-menu q-position-engine scroll' + this.menuClass,\n class: this.contentClass,\n style: this.contentStyle,\n attrs: this.attrs,\n on: this.onEvents,\n directives: [{\n name: 'click-outside',\n value: this.__onClickOutside,\n arg: this.anchorEl\n }]\n }, slot(this, 'default')) : null\n ])\n }\n },\n\n mounted () {\n this.__processModelChange(this.value)\n },\n\n beforeDestroy () {\n // When the menu is destroyed while open we can only emit the event on anchorEl\n if (this.showing === true && this.anchorEl !== void 0) {\n this.anchorEl.dispatchEvent(\n create('popup-hide', { bubbles: true })\n )\n }\n }\n})\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModule = require('../internals/object-define-property');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\nvar FORCED = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) objectDefinePropertyModule.f(RegExp.prototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","const\n hasMap = typeof Map === 'function',\n hasSet = typeof Set === 'function',\n hasArrayBuffer = typeof ArrayBuffer === 'function'\n\nexport function isDeepEqual (a, b) {\n if (a === b) {\n return true\n }\n\n if (a !== null && b !== null && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false\n }\n\n let length, i\n\n if (a.constructor === Array) {\n length = a.length\n\n if (length !== b.length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n if (isDeepEqual(a[i], b[i]) !== true) {\n return false\n }\n }\n\n return true\n }\n\n if (hasMap === true && a.constructor === Map) {\n if (a.size !== b.size) {\n return false\n }\n\n i = a.entries().next()\n while (i.done !== true) {\n if (b.has(i.value[0]) !== true) {\n return false\n }\n i = i.next()\n }\n\n i = a.entries().next()\n while (i.done !== true) {\n if (isDeepEqual(i.value[1], b.get(i.value[0])) !== true) {\n return false\n }\n i = i.next()\n }\n\n return true\n }\n\n if (hasSet === true && a.constructor === Set) {\n if (a.size !== b.size) {\n return false\n }\n\n i = a.entries().next()\n while (i.done !== true) {\n if (b.has(i.value[0]) !== true) {\n return false\n }\n i = i.next()\n }\n\n return true\n }\n\n if (hasArrayBuffer === true && a.buffer != null && a.buffer.constructor === ArrayBuffer) {\n length = a.length\n\n if (length !== b.length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n\n return true\n }\n\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags\n }\n\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf()\n }\n\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString()\n }\n\n const keys = Object.keys(a)\n length = keys.length\n\n if (length !== Object.keys(b).length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n const key = keys[i]\n if (isDeepEqual(a[key], b[key]) !== true) {\n return false\n }\n }\n\n return true\n }\n\n // true if both NaN, false otherwise\n return a !== a && b !== b // eslint-disable-line no-self-compare\n}\n\nexport function isPrintableChar (v) {\n return (v > 47 && v < 58) || // number keys\n v === 32 || v === 13 || // spacebar & return key(s) (if you want to allow carriage returns)\n (v > 64 && v < 91) || // letter keys\n (v > 95 && v < 112) || // numpad keys\n (v > 185 && v < 193) || // ;=,-./` (in order)\n (v > 218 && v < 223)\n}\n\nexport function isObject (v) {\n return Object(v) === v\n}\n\nexport function isDate (v) {\n return Object.prototype.toString.call(v) === '[object Date]'\n}\n\nexport function isRegexp (v) {\n return Object.prototype.toString.call(v) === '[object RegExp]'\n}\n\nexport function isNumber (v) {\n return typeof v === 'number' && isFinite(v)\n}\n\nexport function isString (v) {\n return typeof v === 'string'\n}\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QPage',\n\n mixins: [ ListenersMixin ],\n\n inject: {\n pageContainer: {\n default () {\n console.error('QPage needs to be child of QPageContainer')\n }\n },\n layout: {}\n },\n\n props: {\n padding: Boolean,\n styleFn: Function\n },\n\n computed: {\n style () {\n const offset =\n (this.layout.header.space === true ? this.layout.header.size : 0) +\n (this.layout.footer.space === true ? this.layout.footer.size : 0)\n\n if (typeof this.styleFn === 'function') {\n const height = this.layout.container === true\n ? this.layout.containerHeight\n : this.$q.screen.height\n\n return this.styleFn(offset, height)\n }\n\n return {\n minHeight: this.layout.container === true\n ? (this.layout.containerHeight - offset) + 'px'\n : (\n this.$q.screen.height === 0\n ? `calc(100vh - ${offset}px)`\n : (this.$q.screen.height - offset) + 'px'\n )\n }\n },\n\n classes () {\n if (this.padding === true) {\n return 'q-layout-padding'\n }\n }\n },\n\n render (h) {\n return h('main', {\n staticClass: 'q-page',\n style: this.style,\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport RippleMixin from '../../mixins/ripple.js'\nimport { getSizeMixin } from '../../mixins/size.js'\n\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { mergeSlotSafely } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QChip',\n\n mixins: [\n RippleMixin,\n DarkMixin,\n getSizeMixin({\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n })\n ],\n\n model: {\n event: 'remove'\n },\n\n props: {\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 value: {\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\n computed: {\n classes () {\n const text = this.outline === true\n ? this.color || this.textColor\n : this.textColor\n\n return {\n [`bg-${this.color}`]: this.outline === false && this.color !== void 0,\n [`text-${text} q-chip--colored`]: text,\n disabled: this.disable,\n 'q-chip--dense': this.dense,\n 'q-chip--outline': this.outline,\n 'q-chip--selected': this.selected,\n 'q-chip--clickable cursor-pointer non-selectable q-hoverable': this.isClickable,\n 'q-chip--square': this.square,\n 'q-chip--dark q-dark': this.isDark\n }\n },\n\n hasLeftIcon () {\n return this.selected === true || this.icon !== void 0\n },\n\n leftIcon () {\n return this.selected === true\n ? this.iconSelected || this.$q.iconSet.chip.selected\n : this.icon\n },\n\n removeIcon () {\n return this.iconRemove || this.$q.iconSet.chip.remove\n },\n\n isClickable () {\n return this.disable === false && (this.clickable === true || this.selected !== null)\n },\n\n attrs () {\n return this.disable === true\n ? { tabindex: -1, 'aria-disabled': 'true' }\n : { tabindex: this.tabindex || 0 }\n }\n },\n\n methods: {\n __onKeyup (e) {\n e.keyCode === 13 /* ENTER */ && this.__onClick(e)\n },\n\n __onClick (e) {\n if (!this.disable) {\n this.$emit('update:selected', !this.selected)\n this.$emit('click', e)\n }\n },\n\n __onRemove (e) {\n if (e.keyCode === void 0 || e.keyCode === 13) {\n stopAndPrevent(e)\n !this.disable && this.$emit('remove', false)\n }\n },\n\n __getContent (h) {\n const child = []\n\n this.isClickable === true && child.push(\n h('div', { staticClass: 'q-focus-helper' })\n )\n\n this.hasLeftIcon === true && child.push(\n h(QIcon, {\n staticClass: 'q-chip__icon q-chip__icon--left',\n props: { name: this.leftIcon }\n })\n )\n\n const label = this.label !== void 0\n ? [ h('div', { staticClass: 'ellipsis' }, [ this.label ]) ]\n : void 0\n\n child.push(\n h('div', {\n staticClass: 'q-chip__content col row no-wrap items-center q-anchor--skip'\n }, mergeSlotSafely(label, this, 'default'))\n )\n\n this.iconRight && child.push(\n h(QIcon, {\n staticClass: 'q-chip__icon q-chip__icon--right',\n props: { name: this.iconRight }\n })\n )\n\n this.removable === true && child.push(\n h(QIcon, {\n staticClass: 'q-chip__icon q-chip__icon--remove cursor-pointer',\n props: { name: this.removeIcon },\n attrs: this.attrs,\n on: cache(this, 'non', {\n click: this.__onRemove,\n keyup: this.__onRemove\n })\n })\n )\n\n return child\n }\n },\n\n render (h) {\n if (this.value === false) { return }\n\n const data = {\n staticClass: 'q-chip row inline no-wrap items-center',\n class: this.classes,\n style: this.sizeStyle\n }\n\n this.isClickable === true && Object.assign(data, {\n attrs: this.attrs,\n on: cache(this, 'click', {\n click: this.__onClick,\n keyup: this.__onKeyup\n }),\n directives: cache(this, 'dir#' + this.ripple, [\n { name: 'ripple', value: this.ripple }\n ])\n })\n\n return h('div', data, this.__getContent(h))\n }\n})\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","import Vue 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 { isDeepEqual } from '../../utils/is.js'\nimport { stop, prevent, stopAndPrevent } from '../../utils/event.js'\nimport { normalizeToInterval } from '../../utils/format.js'\nimport { shouldIgnoreKey, isKeyCode } from '../../utils/key-composition.js'\nimport { mergeSlot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nimport { FormFieldMixin } from '../../mixins/form.js'\nimport VirtualScroll from '../../mixins/virtual-scroll.js'\nimport CompositionMixin from '../../mixins/composition.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nconst validateNewValueMode = v => ['add', 'add-unique', 'toggle'].includes(v)\nconst reEscapeList = '.*+?^${}()|[]\\\\'\n\nexport default Vue.extend({\n name: 'QSelect',\n\n mixins: [\n QField,\n VirtualScroll,\n CompositionMixin,\n FormFieldMixin,\n ListenersMixin\n ],\n\n props: {\n value: {\n required: true\n },\n\n multiple: Boolean,\n\n displayValue: [String, Number],\n displayValueSanitize: 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 optionsSanitize: 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\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\n data () {\n return {\n menu: false,\n dialog: false,\n optionIndex: -1,\n inputValue: '',\n dialogFieldFocused: false\n }\n },\n\n watch: {\n innerValue: {\n handler (val) {\n this.innerValueCache = val\n\n if (\n this.useInput === true &&\n this.fillInput === true &&\n this.multiple !== true &&\n // Prevent re-entering in filter while filtering\n // Also prevent clearing inputValue while filtering\n this.innerLoading !== true &&\n ((this.dialog !== true && this.menu !== true) || this.hasValue !== true)\n ) {\n this.userInputValue !== true && this.__resetInputValue()\n if (this.dialog === true || this.menu === true) {\n this.filter('')\n }\n }\n },\n immediate: true\n },\n\n fillInput () {\n this.__resetInputValue()\n },\n\n menu (show) {\n this.__updateMenu(show)\n }\n },\n\n computed: {\n isOptionsDark () {\n return this.optionsDark === null\n ? this.isDark\n : this.optionsDark\n },\n\n virtualScrollLength () {\n return Array.isArray(this.options)\n ? this.options.length\n : 0\n },\n\n fieldClass () {\n return `q-select q-field--auto-height q-select--with${this.useInput !== true ? 'out' : ''}-input` +\n ` q-select--with${this.useChips !== true ? 'out' : ''}-chips` +\n ` q-select--${this.multiple === true ? 'multiple' : 'single'}`\n },\n\n computedInputClass () {\n if (this.hideSelected === true || this.innerValue.length === 0) {\n return this.inputClass\n }\n\n return this.inputClass === void 0\n ? 'q-field__input--padding'\n : [this.inputClass, 'q-field__input--padding']\n },\n\n menuContentClass () {\n return (this.virtualScrollHorizontal === true ? 'q-virtual-scroll--horizontal' : '') +\n (this.popupContentClass ? ' ' + this.popupContentClass : '')\n },\n\n innerValue () {\n const\n mapNull = this.mapOptions === true && this.multiple !== true,\n val = this.value !== void 0 && (this.value !== null || mapNull === true)\n ? (this.multiple === true && Array.isArray(this.value) ? this.value : [ this.value ])\n : []\n\n if (this.mapOptions === true && Array.isArray(this.options) === true) {\n const cache = this.mapOptions === true && this.innerValueCache !== void 0\n ? this.innerValueCache\n : []\n const values = val.map(v => this.__getOption(v, cache))\n\n return this.value === null && mapNull === true\n ? values.filter(v => v !== null)\n : values\n }\n\n return val\n },\n\n noOptions () {\n return this.virtualScrollLength === 0\n },\n\n selectedString () {\n return this.innerValue\n .map(opt => this.getOptionLabel(opt))\n .join(', ')\n },\n\n sanitizeFn () {\n return this.optionsSanitize === true\n ? () => true\n : opt => opt !== void 0 && opt !== null && opt.sanitize === true\n },\n\n displayAsText () {\n return this.displayValueSanitize === true || (\n this.displayValue === void 0 && (\n this.optionsSanitize === true ||\n this.innerValue.some(this.sanitizeFn)\n )\n )\n },\n\n computedTabindex () {\n return this.focused === true ? this.tabindex : -1\n },\n\n selectedScope () {\n return this.innerValue.map((opt, i) => ({\n index: i,\n opt,\n sanitize: this.sanitizeFn(opt),\n selected: true,\n removeAtIndex: this.__removeAtIndexAndFocus,\n toggleOption: this.toggleOption,\n tabindex: this.computedTabindex\n }))\n },\n\n optionScope () {\n if (this.virtualScrollLength === 0) {\n return []\n }\n\n const { from, to } = this.virtualScrollSliceRange\n const { options, optionEls } = this.__optionScopeCache\n\n return this.options.slice(from, to).map((opt, i) => {\n const disable = this.isOptionDisabled(opt) === true\n const index = from + i\n\n const itemProps = {\n clickable: true,\n active: false,\n activeClass: this.computedOptionsSelectedClass,\n manualFocus: true,\n focused: false,\n disable,\n tabindex: -1,\n dense: this.optionsDense,\n dark: this.isOptionsDark\n }\n\n if (disable !== true) {\n this.isOptionSelected(opt) === true && (itemProps.active = true)\n this.optionIndex === index && (itemProps.focused = true)\n }\n\n const itemEvents = {\n click: () => { this.toggleOption(opt) }\n }\n\n if (this.$q.platform.is.desktop === true) {\n itemEvents.mousemove = () => { this.setOptionIndex(index) }\n }\n\n const option = {\n index,\n opt,\n sanitize: this.sanitizeFn(opt),\n selected: itemProps.active,\n focused: itemProps.focused,\n toggleOption: this.toggleOption,\n setOptionIndex: this.setOptionIndex,\n itemProps\n }\n\n if (options[i] === void 0 || isDeepEqual(option, options[i]) !== true) {\n options[i] = option\n optionEls[i] = void 0\n }\n\n return {\n ...option,\n itemEvents\n }\n })\n },\n\n dropdownArrowIcon () {\n return this.dropdownIcon !== void 0\n ? this.dropdownIcon\n : this.$q.iconSet.arrow.dropdown\n },\n\n squaredMenu () {\n return this.optionsCover === false &&\n this.outlined !== true &&\n this.standout !== true &&\n this.borderless !== true &&\n this.rounded !== true\n },\n\n computedOptionsSelectedClass () {\n return this.optionsSelectedClass !== void 0\n ? this.optionsSelectedClass\n : (this.color !== void 0 ? `text-${this.color}` : '')\n },\n\n innerOptionsValue () {\n return this.innerValue.map(opt => this.getOptionValue(opt))\n },\n\n // returns method to get value of an option;\n // takes into account 'option-value' prop\n getOptionValue () {\n return this.__getPropValueFn('optionValue', 'value')\n },\n\n // returns method to get label of an option;\n // takes into account 'option-label' prop\n getOptionLabel () {\n return this.__getPropValueFn('optionLabel', 'label')\n },\n\n // returns method to tell if an option is disabled;\n // takes into account 'option-disable' prop\n isOptionDisabled () {\n return this.__getPropValueFn('optionDisable', 'disable')\n },\n\n inputControlEvents () {\n const on = {\n input: this.__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 change: this.__onChange,\n keydown: this.__onTargetKeydown,\n keyup: this.__onTargetAutocomplete,\n keypress: this.__onTargetKeypress,\n focus: this.__selectInputText,\n click: e => {\n this.hasDialog === true && stop(e)\n }\n }\n\n on.compositionstart = on.compositionupdate = on.compositionend = this.__onComposition\n\n return on\n },\n\n virtualScrollItemSizeComputed () {\n return this.virtualScrollItemSize === void 0\n ? (this.dense === true ? 24 : 48)\n : this.virtualScrollItemSize\n }\n },\n\n methods: {\n getEmittingOptionValue (opt) {\n return this.emitValue === true\n ? this.getOptionValue(opt)\n : opt\n },\n\n removeAtIndex (index) {\n if (index > -1 && index < this.innerValue.length) {\n if (this.multiple === true) {\n const model = this.value.slice()\n this.$emit('remove', { index, value: model.splice(index, 1)[0] })\n this.$emit('input', model)\n }\n else {\n this.$emit('input', null)\n }\n }\n },\n\n __removeAtIndexAndFocus (index) {\n this.removeAtIndex(index)\n this.__focus()\n },\n\n add (opt, unique) {\n const val = this.getEmittingOptionValue(opt)\n\n if (this.multiple !== true) {\n this.fillInput === true && this.updateInputValue(\n this.getOptionLabel(opt),\n true,\n true\n )\n\n this.$emit('input', val)\n return\n }\n\n if (this.innerValue.length === 0) {\n this.$emit('add', { index: 0, value: val })\n this.$emit('input', this.multiple === true ? [ val ] : val)\n return\n }\n\n if (unique === true && this.isOptionSelected(opt) === true) {\n return\n }\n\n if (this.maxValues !== void 0 && this.value.length >= this.maxValues) {\n return\n }\n\n const model = this.value.slice()\n\n this.$emit('add', { index: model.length, value: val })\n model.push(val)\n this.$emit('input', model)\n },\n\n toggleOption (opt, keepOpen) {\n if (this.editable !== true || opt === void 0 || this.isOptionDisabled(opt) === true) {\n return\n }\n\n const optValue = this.getOptionValue(opt)\n\n if (this.multiple !== true) {\n if (keepOpen !== true) {\n this.updateInputValue(\n this.fillInput === true ? this.getOptionLabel(opt) : '',\n true,\n true\n )\n\n this.hidePopup()\n }\n\n this.$refs.target !== void 0 && this.$refs.target.focus()\n\n if (isDeepEqual(this.getOptionValue(this.innerValue[0]), optValue) !== true) {\n this.$emit('input', this.emitValue === true ? optValue : opt)\n }\n return\n }\n\n (this.hasDialog !== true || this.dialogFieldFocused === true) && this.__focus()\n\n this.__selectInputText()\n\n if (this.innerValue.length === 0) {\n const val = this.emitValue === true ? optValue : opt\n this.$emit('add', { index: 0, value: val })\n this.$emit('input', this.multiple === true ? [ val ] : val)\n return\n }\n\n const\n model = this.value.slice(),\n index = this.innerOptionsValue.findIndex(v => isDeepEqual(v, optValue))\n\n if (index > -1) {\n this.$emit('remove', { index, value: model.splice(index, 1)[0] })\n }\n else {\n if (this.maxValues !== void 0 && model.length >= this.maxValues) {\n return\n }\n\n const val = this.emitValue === true ? optValue : opt\n\n this.$emit('add', { index: model.length, value: val })\n model.push(val)\n }\n\n this.$emit('input', model)\n },\n\n setOptionIndex (index) {\n if (this.$q.platform.is.desktop !== true) { return }\n\n const val = index > -1 && index < this.virtualScrollLength\n ? index\n : -1\n\n if (this.optionIndex !== val) {\n this.optionIndex = val\n }\n },\n\n moveOptionSelection (offset = 1, skipInputValue) {\n if (this.menu === true) {\n let index = this.optionIndex\n do {\n index = normalizeToInterval(\n index + offset,\n -1,\n this.virtualScrollLength - 1\n )\n }\n while (index !== -1 && index !== this.optionIndex && this.isOptionDisabled(this.options[index]) === true)\n\n if (this.optionIndex !== index) {\n this.setOptionIndex(index)\n this.scrollTo(index)\n\n if (skipInputValue !== true && this.useInput === true && this.fillInput === true) {\n this.__setInputValue(index >= 0\n ? this.getOptionLabel(this.options[index])\n : this.defaultInputValue\n )\n }\n }\n }\n },\n\n __getOption (value, innerValueCache) {\n const fn = opt => isDeepEqual(this.getOptionValue(opt), value)\n return this.options.find(fn) || innerValueCache.find(fn) || value\n },\n\n __getPropValueFn (propName, defaultVal) {\n const val = this[propName] !== void 0\n ? this[propName]\n : defaultVal\n\n return typeof val === 'function'\n ? val\n : opt => Object(opt) === opt && val in opt\n ? opt[val]\n : opt\n },\n\n isOptionSelected (opt) {\n const val = this.getOptionValue(opt)\n return this.innerOptionsValue.find(v => isDeepEqual(v, val)) !== void 0\n },\n\n __selectInputText () {\n if (this.useInput === true && this.$refs.target !== void 0) {\n this.$refs.target.select()\n }\n },\n\n __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 && this.menu === true) {\n stop(e)\n // on ESC we need to close the dialog also\n this.hidePopup()\n this.__resetInputValue()\n }\n\n this.$emit('keyup', e)\n },\n\n __onTargetAutocomplete (e) {\n const { value } = e.target\n\n if (e.keyCode !== void 0) {\n this.__onTargetKeyup(e)\n return\n }\n\n e.target.value = ''\n clearTimeout(this.inputTimer)\n this.__resetInputValue()\n\n if (typeof value === 'string' && value.length > 0) {\n const needle = value.toLocaleLowerCase()\n\n let fn = opt => this.getOptionValue(opt).toLocaleLowerCase() === needle\n let option = this.options.find(fn)\n\n if (option !== void 0) {\n if (this.innerValue.indexOf(option) === -1) {\n this.toggleOption(option)\n }\n else {\n this.hidePopup()\n }\n }\n else {\n fn = opt => this.getOptionLabel(opt).toLocaleLowerCase() === needle\n option = this.options.find(fn)\n\n if (option !== void 0) {\n if (this.innerValue.indexOf(option) === -1) {\n this.toggleOption(option)\n }\n else {\n this.hidePopup()\n }\n }\n else {\n this.filter(value, true)\n }\n }\n }\n else {\n this.__clearValue(e)\n }\n },\n\n __onTargetKeypress (e) {\n this.$emit('keypress', e)\n },\n\n __onTargetKeydown (e) {\n this.$emit('keydown', e)\n\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const newValueModeValid = this.inputValue.length > 0 &&\n (this.newValueMode !== void 0 || this.qListeners['new-value'] !== void 0)\n const tabShouldSelect = e.shiftKey !== true &&\n this.multiple !== true &&\n (this.optionIndex > -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 this.__closeMenu()\n return\n }\n\n if (e.target === void 0 || e.target.id !== this.targetUid) { return }\n\n // down\n if (\n e.keyCode === 40 &&\n this.innerLoading !== true &&\n this.menu === false\n ) {\n stopAndPrevent(e)\n this.showPopup()\n return\n }\n\n // backspace\n if (\n e.keyCode === 8 &&\n this.hideSelected !== true &&\n this.inputValue.length === 0\n ) {\n if (this.multiple === true && Array.isArray(this.value)) {\n this.removeAtIndex(this.value.length - 1)\n }\n else if (this.multiple !== true && this.value !== null) {\n this.$emit('input', null)\n }\n return\n }\n\n // home, end - 36, 35\n if (\n (e.keyCode === 35 || e.keyCode === 36) &&\n (typeof this.inputValue !== 'string' || this.inputValue.length === 0)\n ) {\n stopAndPrevent(e)\n this.optionIndex = -1\n this.moveOptionSelection(e.keyCode === 36 ? 1 : -1, this.multiple)\n }\n\n // pg up, pg down - 33, 34\n if (\n (e.keyCode === 33 || e.keyCode === 34) &&\n this.virtualScrollSliceSizeComputed !== void 0\n ) {\n stopAndPrevent(e)\n this.optionIndex = Math.max(\n -1,\n Math.min(\n this.virtualScrollLength,\n this.optionIndex + (e.keyCode === 33 ? -1 : 1) * this.virtualScrollSliceSizeComputed.view\n )\n )\n this.moveOptionSelection(e.keyCode === 33 ? 1 : -1, this.multiple)\n }\n\n // up, down\n if (e.keyCode === 38 || e.keyCode === 40) {\n stopAndPrevent(e)\n this.moveOptionSelection(e.keyCode === 38 ? -1 : 1, this.multiple)\n }\n\n const optionsLength = this.virtualScrollLength\n\n // clear search buffer if expired\n if (this.searchBuffer === void 0 || this.searchBufferExp < Date.now()) {\n this.searchBuffer = ''\n }\n\n // keyboard search when not having use-input\n if (\n optionsLength > 0 &&\n this.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 || this.searchBuffer.length > 0) // space in middle of search\n ) {\n this.menu !== true && this.showPopup(e)\n\n const\n char = e.key.toLocaleLowerCase(),\n keyRepeat = this.searchBuffer.length === 1 && this.searchBuffer[0] === char\n\n this.searchBufferExp = Date.now() + 1500\n if (keyRepeat === false) {\n stopAndPrevent(e)\n this.searchBuffer += char\n }\n\n const searchRe = new RegExp('^' + this.searchBuffer.split('').map(l => reEscapeList.indexOf(l) > -1 ? '\\\\' + l : l).join('.*'), 'i')\n\n let index = this.optionIndex\n\n if (keyRepeat === true || index < 0 || searchRe.test(this.getOptionLabel(this.options[index])) !== true) {\n do {\n index = normalizeToInterval(index + 1, -1, optionsLength - 1)\n }\n while (index !== this.optionIndex && (\n this.isOptionDisabled(this.options[index]) === true ||\n searchRe.test(this.getOptionLabel(this.options[index])) !== true\n ))\n }\n\n if (this.optionIndex !== index) {\n this.$nextTick(() => {\n this.setOptionIndex(index)\n this.scrollTo(index)\n\n if (index >= 0 && this.useInput === true && this.fillInput === true) {\n this.__setInputValue(this.getOptionLabel(this.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 || this.useInput === true || this.searchBuffer !== '') &&\n (e.keyCode !== 9 || tabShouldSelect === false)\n ) { return }\n\n e.keyCode !== 9 && stopAndPrevent(e)\n\n if (this.optionIndex > -1 && this.optionIndex < optionsLength) {\n this.toggleOption(this.options[this.optionIndex])\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 = this.newValueMode\n }\n\n if (val === void 0 || val === null) {\n return\n }\n\n this.updateInputValue('', this.multiple !== true, true)\n\n this[mode === 'toggle' ? 'toggleOption' : 'add'](\n val,\n mode === 'add-unique'\n )\n\n if (this.multiple !== true) {\n this.$refs.target !== void 0 && this.$refs.target.focus()\n this.hidePopup()\n }\n }\n\n if (this.qListeners['new-value'] !== void 0) {\n this.$emit('new-value', this.inputValue, done)\n }\n else {\n done(this.inputValue)\n }\n\n if (this.multiple !== true) {\n return\n }\n }\n\n if (this.menu === true) {\n this.__closeMenu()\n }\n else if (this.innerLoading !== true) {\n this.showPopup()\n }\n },\n\n __getVirtualScrollEl () {\n return this.hasDialog === true\n ? this.$refs.menuContent\n : (\n this.$refs.menu !== void 0 && this.$refs.menu.__portal !== void 0\n ? this.$refs.menu.__portal.$el\n : void 0\n )\n },\n\n __getVirtualScrollTarget () {\n return this.__getVirtualScrollEl()\n },\n\n __getSelection (h) {\n if (this.hideSelected === true) {\n return []\n }\n\n if (this.$scopedSlots['selected-item'] !== void 0) {\n return this.selectedScope.map(scope => this.$scopedSlots['selected-item'](scope)).slice()\n }\n\n if (this.$scopedSlots.selected !== void 0) {\n return this.$scopedSlots.selected().slice()\n }\n\n if (this.useChips === true) {\n return this.selectedScope.map((scope, i) => h(QChip, {\n key: 'option-' + i,\n props: {\n removable: this.editable === true && this.isOptionDisabled(scope.opt) !== true,\n dense: true,\n textColor: this.color,\n tabindex: this.computedTabindex\n },\n on: cache(this, 'rem#' + i, {\n remove () { scope.removeAtIndex(i) }\n })\n }, [\n h('span', {\n staticClass: 'ellipsis',\n domProps: {\n [scope.sanitize === true ? 'textContent' : 'innerHTML']: this.getOptionLabel(scope.opt)\n }\n })\n ]))\n }\n\n return [\n h('span', {\n domProps: {\n [this.displayAsText ? 'textContent' : 'innerHTML']: this.displayValue !== void 0\n ? this.displayValue\n : this.selectedString\n }\n })\n ]\n },\n\n __getControl (h, fromDialog) {\n const child = this.__getSelection(h)\n const isTarget = fromDialog === true || this.dialog !== true || this.hasDialog !== true\n\n if (this.useInput === true) {\n child.push(this.__getInput(h, fromDialog, isTarget))\n }\n // there can be only one (when dialog is opened the control in dialog should be target)\n else if (this.editable === true && isTarget === true) {\n child.push(\n h('div', {\n ref: 'target',\n key: 'd_t',\n staticClass: 'no-outline',\n attrs: {\n id: this.targetUid,\n tabindex: this.tabindex\n },\n on: cache(this, 'f-tget', {\n keydown: this.__onTargetKeydown,\n keyup: this.__onTargetKeyup,\n keypress: this.__onTargetKeypress\n })\n })\n )\n\n if (typeof this.autocomplete === 'string' && this.autocomplete.length > 0) {\n child.push(\n h('input', {\n staticClass: 'q-select__autocomplete-input no-outline',\n attrs: { autocomplete: this.autocomplete },\n on: cache(this, 'autoinp', {\n keyup: this.__onTargetAutocomplete\n })\n })\n )\n }\n }\n\n if (this.nameProp !== void 0 && this.disable !== true && this.innerOptionsValue.length > 0) {\n const opts = this.innerOptionsValue.map(value => h('option', {\n attrs: { value, selected: true }\n }))\n\n child.push(\n h('select', {\n staticClass: 'hidden',\n attrs: {\n name: this.nameProp,\n multiple: this.multiple\n }\n }, opts)\n )\n }\n\n return h('div', { staticClass: 'q-field__native row items-center', attrs: this.qAttrs }, child)\n },\n\n __getOptions (h) {\n if (this.menu !== true) {\n return void 0\n }\n\n if (\n this.$scopedSlots.option !== void 0 &&\n this.__optionScopeCache.optionSlot !== this.$scopedSlots.option\n ) {\n this.__optionScopeCache.optionSlot = this.$scopedSlots.option\n this.__optionScopeCache.optionEls = []\n }\n\n const fn = this.$scopedSlots.option !== void 0\n ? this.$scopedSlots.option\n : scope => h(QItem, {\n key: scope.index,\n props: scope.itemProps,\n on: scope.itemEvents\n }, [\n h(QItemSection, [\n h(QItemLabel, {\n domProps: {\n [scope.sanitize === true ? 'textContent' : 'innerHTML']: this.getOptionLabel(scope.opt)\n }\n })\n ])\n ])\n\n const { optionEls } = this.__optionScopeCache\n\n let options = this.__padVirtualScroll(h, 'div', this.optionScope.map((scope, i) => {\n if (optionEls[i] === void 0) {\n optionEls[i] = fn(scope)\n }\n\n return optionEls[i]\n }))\n\n if (this.$scopedSlots['before-options'] !== void 0) {\n options = this.$scopedSlots['before-options']().concat(options)\n }\n\n return mergeSlot(options, this, 'after-options')\n },\n\n __getInnerAppend (h) {\n return this.loading !== true && this.innerLoadingIndicator !== true && this.hideDropdownIcon !== true\n ? [\n h(QIcon, {\n staticClass: 'q-select__dropdown-icon' + (this.menu === true ? ' rotate-180' : ''),\n props: { name: this.dropdownArrowIcon }\n })\n ]\n : null\n },\n\n __getInput (h, fromDialog, isTarget) {\n const options = {\n ref: isTarget === true ? 'target' : void 0,\n key: 'i_t',\n staticClass: 'q-field__input q-placeholder col',\n style: this.inputStyle,\n class: this.computedInputClass,\n domProps: { value: this.inputValue !== void 0 ? this.inputValue : '' },\n attrs: {\n // required for Android in order to show ENTER key when in form\n type: 'search',\n ...this.qAttrs,\n id: this.targetUid,\n maxlength: this.maxlength, // this is converted to prop by QField\n tabindex: this.tabindex,\n autocomplete: this.autocomplete,\n 'data-autofocus': fromDialog === true ? false : this.autofocus,\n disabled: this.disable === true,\n readonly: this.readonly === true\n },\n on: this.inputControlEvents\n }\n\n if (fromDialog !== true && this.hasDialog === true) {\n options.staticClass += ' no-pointer-events'\n }\n\n return h('input', options)\n },\n\n __onChange (e) {\n this.__onComposition(e)\n },\n\n __onInput (e) {\n clearTimeout(this.inputTimer)\n\n if (e && e.target && e.target.composing === true) {\n return\n }\n\n this.__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 this.userInputValue = true\n this.defaultInputValue = this.inputValue\n\n if (\n this.focused !== true &&\n (this.hasDialog !== true || this.dialogFieldFocused === true)\n ) {\n this.__focus()\n }\n\n if (this.qListeners.filter !== void 0) {\n this.inputTimer = setTimeout(() => {\n this.filter(this.inputValue)\n }, this.inputDebounce)\n }\n },\n\n __setInputValue (inputValue) {\n if (this.inputValue !== inputValue) {\n this.inputValue = inputValue\n this.$emit('input-value', inputValue)\n }\n },\n\n updateInputValue (val, noFiltering, internal) {\n this.userInputValue = internal !== true\n\n if (this.useInput === true) {\n this.__setInputValue(val)\n\n if (noFiltering === true || internal !== true) {\n this.defaultInputValue = val\n }\n\n noFiltering !== true && this.filter(val)\n }\n },\n\n filter (val, keepClosed) {\n if (this.qListeners.filter === void 0 || (keepClosed !== true && this.focused !== true)) {\n return\n }\n\n if (this.innerLoading === true) {\n this.$emit('filter-abort')\n }\n else {\n this.innerLoading = true\n this.innerLoadingIndicator = true\n }\n\n if (\n val !== '' &&\n this.multiple !== true &&\n this.innerValue.length > 0 &&\n this.userInputValue !== true &&\n val === this.getOptionLabel(this.innerValue[0])\n ) {\n val = ''\n }\n\n const filterId = setTimeout(() => {\n this.menu === true && (this.menu = false)\n }, 10)\n clearTimeout(this.filterId)\n this.filterId = filterId\n\n this.$emit(\n 'filter',\n val,\n (fn, afterFn) => {\n if ((keepClosed === true || this.focused === true) && this.filterId === filterId) {\n clearTimeout(this.filterId)\n\n typeof fn === 'function' && fn()\n\n // hide indicator to allow arrow to animate\n this.innerLoadingIndicator = false\n\n this.$nextTick(() => {\n this.innerLoading = false\n\n if (this.editable === true) {\n if (keepClosed === true) {\n this.menu === true && this.hidePopup()\n }\n else if (this.menu === true) {\n this.__updateMenu(true)\n }\n else {\n this.menu = true\n }\n }\n\n typeof afterFn === 'function' && this.$nextTick(() => { afterFn(this) })\n })\n }\n },\n () => {\n if (this.focused === true && this.filterId === filterId) {\n clearTimeout(this.filterId)\n this.innerLoading = false\n this.innerLoadingIndicator = false\n }\n this.menu === true && (this.menu = false)\n }\n )\n },\n\n __getControlEvents () {\n const focusout = e => {\n this.__onControlFocusout(e, () => {\n this.__resetInputValue()\n this.__closeMenu()\n })\n }\n\n return {\n focusin: this.__onControlFocusin,\n focusout,\n 'popup-show': this.__onControlPopupShow,\n 'popup-hide': e => {\n e !== void 0 && stop(e)\n this.$emit('popup-hide', e)\n this.hasPopupOpen = false\n focusout(e)\n },\n click: e => {\n if (this.hasDialog !== true) {\n // label from QField will propagate click on the input (except IE)\n prevent(e)\n\n if (this.menu === true) {\n this.__closeMenu()\n this.$refs.target !== void 0 && this.$refs.target.focus()\n return\n }\n }\n\n this.showPopup(e)\n }\n }\n },\n\n __getControlChild (h) {\n if (\n this.editable !== false && (\n this.dialog === true || // dialog always has menu displayed, so need to render it\n this.noOptions !== true ||\n this.$scopedSlots['no-option'] !== void 0\n )\n ) {\n return this[`__get${this.hasDialog === true ? 'Dialog' : 'Menu'}`](h)\n }\n },\n\n __getMenu (h) {\n const child = this.noOptions === true\n ? (\n this.$scopedSlots['no-option'] !== void 0\n ? this.$scopedSlots['no-option']({ inputValue: this.inputValue })\n : null\n )\n : this.__getOptions(h)\n\n return h(QMenu, {\n ref: 'menu',\n props: {\n value: this.menu,\n fit: this.menuShrink !== true,\n cover: this.optionsCover === true && this.noOptions !== true && this.useInput !== true,\n anchor: this.menuAnchor,\n self: this.menuSelf,\n offset: this.menuOffset,\n contentClass: this.menuContentClass,\n contentStyle: this.popupContentStyle,\n dark: this.isOptionsDark,\n noParentEvent: true,\n noRefocus: true,\n noFocus: true,\n square: this.squaredMenu,\n transitionShow: this.transitionShow,\n transitionHide: this.transitionHide,\n separateClosePopup: true\n },\n on: cache(this, 'menu', {\n '&scroll': this.__onVirtualScrollEvt,\n 'before-hide': this.__closeMenu,\n show: this.__onMenuShow\n })\n }, child)\n },\n\n __onMenuShow () {\n this.__setVirtualScrollSize()\n },\n\n __onDialogFieldFocus (e) {\n stop(e)\n this.$refs.target !== void 0 && this.$refs.target.focus()\n this.dialogFieldFocused = true\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, 0)\n },\n\n __onDialogFieldBlur (e) {\n stop(e)\n this.$nextTick(() => {\n this.dialogFieldFocused = false\n })\n },\n\n __getDialog (h) {\n const content = [\n h(QField, {\n staticClass: `col-auto ${this.fieldClass}`,\n props: {\n ...this.$props,\n for: this.targetUid,\n dark: this.isOptionsDark,\n square: true,\n filled: true,\n itemAligned: false,\n loading: this.innerLoadingIndicator,\n stackLabel: this.inputValue.length > 0\n },\n on: {\n ...this.qListeners,\n focus: this.__onDialogFieldFocus,\n blur: this.__onDialogFieldBlur\n },\n scopedSlots: {\n ...this.$scopedSlots,\n rawControl: () => this.__getControl(h, true),\n before: void 0,\n after: void 0\n }\n })\n ]\n\n this.menu === true && content.push(\n h('div', {\n ref: 'menuContent',\n staticClass: 'scroll',\n class: this.menuContentClass,\n style: this.popupContentStyle,\n on: cache(this, 'virtMenu', {\n click: prevent,\n '&scroll': this.__onVirtualScrollEvt\n })\n }, (\n this.noOptions === true\n ? (\n this.$scopedSlots['no-option'] !== void 0\n ? this.$scopedSlots['no-option']({ inputValue: this.inputValue })\n : null\n )\n : this.__getOptions(h)\n ))\n )\n\n return h(QDialog, {\n ref: 'dialog',\n props: {\n value: this.dialog,\n dark: this.isOptionsDark,\n position: this.useInput === true ? 'top' : void 0,\n transitionShow: this.transitionShowComputed,\n transitionHide: this.transitionHide\n },\n on: cache(this, 'dialog', {\n 'before-hide': this.__onDialogBeforeHide,\n hide: this.__onDialogHide,\n show: this.__onDialogShow\n })\n }, [\n h('div', {\n staticClass: 'q-select__dialog' +\n (this.isOptionsDark === true ? ' q-select__dialog--dark q-dark' : '') +\n (this.dialogFieldFocused === true ? ' q-select__dialog--focused' : '')\n }, content)\n ])\n },\n\n __onDialogBeforeHide () {\n this.$refs.dialog.__refocusTarget = this.$el.querySelector('.q-field__native > [tabindex]:last-child')\n this.focused = false\n },\n\n __onDialogHide (e) {\n this.hidePopup()\n this.focused === false && this.$emit('blur', e)\n this.__resetInputValue()\n },\n\n __onDialogShow () {\n const el = document.activeElement\n // IE can have null document.activeElement\n if (\n (el === null || el.id !== this.targetUid) &&\n this.$refs.target !== el &&\n this.$refs.target !== void 0\n ) {\n this.$refs.target.focus()\n }\n\n this.__setVirtualScrollSize()\n },\n\n __closeMenu () {\n if (this.__optionScopeCache !== void 0) {\n this.__optionScopeCache.optionEls = []\n }\n\n if (this.dialog === true) {\n return\n }\n\n this.optionIndex = -1\n\n if (this.menu === true) {\n this.menu = false\n }\n\n if (this.focused === false) {\n clearTimeout(this.filterId)\n this.filterId = void 0\n\n if (this.innerLoading === true) {\n this.$emit('filter-abort')\n this.innerLoading = false\n this.innerLoadingIndicator = false\n }\n }\n },\n\n showPopup (e) {\n if (this.editable !== true) {\n return\n }\n\n if (this.hasDialog === true) {\n this.__onControlFocusin(e)\n this.dialog = true\n this.$nextTick(() => {\n this.__focus()\n })\n }\n else {\n this.__focus()\n }\n\n if (this.qListeners.filter !== void 0) {\n this.filter(this.inputValue)\n }\n else if (this.noOptions !== true || this.$scopedSlots['no-option'] !== void 0) {\n this.menu = true\n }\n },\n\n hidePopup () {\n this.dialog = false\n this.__closeMenu()\n },\n\n __resetInputValue () {\n this.useInput === true && this.updateInputValue(\n this.multiple !== true && this.fillInput === true && this.innerValue.length > 0\n ? this.getOptionLabel(this.innerValue[0]) || ''\n : '',\n true,\n true\n )\n },\n\n __updateMenu (show) {\n let optionIndex = -1\n\n if (show === true) {\n if (this.innerValue.length > 0) {\n const val = this.getOptionValue(this.innerValue[0])\n optionIndex = this.options.findIndex(v => isDeepEqual(this.getOptionValue(v), val))\n }\n\n this.__resetVirtualScroll(optionIndex)\n }\n\n this.setOptionIndex(optionIndex)\n },\n\n __onPreRender () {\n this.hasDialog = this.$q.platform.is.mobile !== true && this.behavior !== 'dialog'\n ? false\n : this.behavior !== 'menu' && (\n this.useInput === true\n ? this.$scopedSlots['no-option'] !== void 0 || this.qListeners.filter !== void 0 || this.noOptions === false\n : true\n )\n\n this.transitionShowComputed = this.hasDialog === true && this.useInput === true && this.$q.platform.is.ios === true\n ? 'fade'\n : this.transitionShow\n },\n\n __onPostRender () {\n if (this.dialog === false && this.$refs.menu !== void 0) {\n this.$refs.menu.updatePosition()\n }\n },\n\n updateMenuPosition () {\n this.__onPostRender()\n }\n },\n\n beforeMount () {\n this.__optionScopeCache = {\n optionSlot: this.$scopedSlots.option,\n options: [],\n optionEls: []\n }\n },\n\n beforeDestroy () {\n this.__optionScopeCache = void 0\n clearTimeout(this.inputTimer)\n }\n})\n","import debounce from '../utils/debounce.js'\n\nconst aggBucketSize = 1000\n\nconst scrollToEdges = [\n 'start',\n 'center',\n 'end',\n 'start-force',\n 'center-force',\n 'end-force'\n]\n\nconst slice = Array.prototype.slice\n\nlet buggyRTL = void 0\n\n// mobile Chrome takes the crown for this\nfunction detectBuggyRTL () {\n const scroller = document.createElement('div')\n const spacer = document.createElement('div')\n\n scroller.setAttribute('dir', 'rtl')\n scroller.style.width = '1px'\n scroller.style.height = '1px'\n scroller.style.overflow = 'auto'\n\n spacer.style.width = '1000px'\n spacer.style.height = '1px'\n\n document.body.appendChild(scroller)\n scroller.appendChild(spacer)\n scroller.scrollLeft = -1000\n\n buggyRTL = scroller.scrollLeft >= 0\n\n scroller.remove()\n}\n\nfunction sumFn (acc, h) {\n return acc + h\n}\n\nfunction getScrollDetails (\n parent,\n child,\n beforeRef,\n afterRef,\n horizontal,\n rtl,\n stickyStart,\n stickyEnd\n) {\n const\n parentCalc = parent === window ? document.scrollingElement || document.documentElement : parent,\n propElSize = horizontal === true ? 'offsetWidth' : 'offsetHeight',\n details = {\n scrollStart: 0,\n scrollViewSize: -stickyStart - stickyEnd,\n scrollMaxSize: 0,\n offsetStart: -stickyStart,\n offsetEnd: -stickyEnd\n }\n\n if (horizontal === true) {\n if (parent === window) {\n details.scrollStart = window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n details.scrollViewSize += window.innerWidth\n }\n else {\n details.scrollStart = parentCalc.scrollLeft\n details.scrollViewSize += parentCalc.clientWidth\n }\n details.scrollMaxSize = parentCalc.scrollWidth\n\n if (rtl === true) {\n details.scrollStart = (buggyRTL === true ? details.scrollMaxSize - details.scrollViewSize : 0) - details.scrollStart\n }\n }\n else {\n if (parent === window) {\n details.scrollStart = window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n details.scrollViewSize += window.innerHeight\n }\n else {\n details.scrollStart = parentCalc.scrollTop\n details.scrollViewSize += parentCalc.clientHeight\n }\n details.scrollMaxSize = parentCalc.scrollHeight\n }\n\n if (beforeRef !== void 0) {\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 if (afterRef !== void 0) {\n for (let el = afterRef.nextElementSibling; el !== null; el = el.nextElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetEnd += el[propElSize]\n }\n }\n }\n\n if (child !== parent) {\n const\n parentRect = parentCalc.getBoundingClientRect(),\n childRect = child.getBoundingClientRect()\n\n if (horizontal === true) {\n details.offsetStart += childRect.left - parentRect.left\n details.offsetEnd -= childRect.width\n }\n else {\n details.offsetStart += childRect.top - parentRect.top\n details.offsetEnd -= childRect.height\n }\n\n if (parent !== window) {\n details.offsetStart += details.scrollStart\n }\n details.offsetEnd += details.scrollMaxSize - details.offsetStart\n }\n\n return details\n}\n\nfunction setScroll (parent, scroll, horizontal, rtl) {\n if (parent === window) {\n if (horizontal === true) {\n if (rtl === true) {\n scroll = (buggyRTL === true ? document.body.scrollWidth - window.innerWidth : 0) - scroll\n }\n window.scrollTo(scroll, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n }\n else {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, scroll)\n }\n }\n else if (horizontal === true) {\n if (rtl === true) {\n scroll = (buggyRTL === true ? parent.scrollWidth - parent.offsetWidth : 0) - scroll\n }\n parent.scrollLeft = scroll\n }\n else {\n parent.scrollTop = scroll\n }\n}\n\nfunction sumSize (sizeAgg, size, from, to) {\n if (from >= to) { return 0 }\n\n const\n lastTo = size.length,\n fromAgg = Math.floor(from / aggBucketSize),\n toAgg = Math.floor((to - 1) / aggBucketSize) + 1\n\n let total = sizeAgg.slice(fromAgg, toAgg).reduce(sumFn, 0)\n\n if (from % aggBucketSize !== 0) {\n total -= size.slice(fromAgg * aggBucketSize, from).reduce(sumFn, 0)\n }\n if (to % aggBucketSize !== 0 && to !== lastTo) {\n total -= size.slice(to, toAgg * aggBucketSize).reduce(sumFn, 0)\n }\n\n return total\n}\n\nconst commonVirtScrollProps = {\n virtualScrollSliceSize: {\n type: [ Number, String ],\n default: null\n },\n\n virtualScrollSliceRatioBefore: {\n type: [ Number, String ],\n default: 1\n },\n\n virtualScrollSliceRatioAfter: {\n type: [ Number, String ],\n default: 1\n },\n\n virtualScrollItemSize: {\n type: [ Number, String ],\n default: 24\n },\n\n virtualScrollStickySizeStart: {\n type: [ Number, String ],\n default: 0\n },\n\n virtualScrollStickySizeEnd: {\n type: [ Number, String ],\n default: 0\n },\n\n tableColspan: [ Number, String ]\n}\n\nlet id = 1\n\nfunction setOverflowAnchor (id, index) {\n if (setOverflowAnchor.isSupported === void 0) {\n setOverflowAnchor.isSupported = window.getComputedStyle(document.body).overflowAnchor !== void 0\n }\n\n if (setOverflowAnchor.isSupported === false) {\n return\n }\n\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\nexport const commonVirtPropsList = Object.keys(commonVirtScrollProps)\n\nexport default {\n props: {\n virtualScrollHorizontal: Boolean,\n ...commonVirtScrollProps\n },\n\n data () {\n return {\n virtualScrollSliceRange: { from: 0, to: 0 },\n id: 'qvs_' + id++\n }\n },\n\n watch: {\n needsSliceRecalc () {\n this.__setVirtualScrollSize()\n },\n\n needsReset () {\n this.reset()\n }\n },\n\n computed: {\n needsReset () {\n return ['virtualScrollItemSizeComputed', 'virtualScrollHorizontal']\n .map(p => this[p]).join(';')\n },\n\n needsSliceRecalc () {\n return this.needsReset + ';' + ['virtualScrollSliceRatioBefore', 'virtualScrollSliceRatioAfter']\n .map(p => this[p]).join(';')\n },\n\n colspanAttr () {\n return this.tableColspan !== void 0\n ? { colspan: this.tableColspan }\n : { colspan: 100 }\n },\n\n virtualScrollItemSizeComputed () {\n return this.virtualScrollItemSize\n }\n },\n\n methods: {\n reset () {\n this.__resetVirtualScroll(this.prevToIndex, true)\n },\n\n refresh (toIndex) {\n this.__resetVirtualScroll(toIndex === void 0 ? this.prevToIndex : toIndex)\n },\n\n scrollTo (toIndex, edge) {\n const scrollEl = this.__getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const scrollDetails = getScrollDetails(\n scrollEl,\n this.__getVirtualScrollEl(),\n this.$refs.before,\n this.$refs.after,\n this.virtualScrollHorizontal,\n this.$q.lang.rtl,\n this.virtualScrollStickySizeStart,\n this.virtualScrollStickySizeEnd\n )\n\n this.__scrollViewSize !== scrollDetails.scrollViewSize && this.__setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n this.__setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n Math.min(this.virtualScrollLength - 1, Math.max(0, parseInt(toIndex, 10) || 0)),\n 0,\n scrollToEdges.indexOf(edge) > -1 ? edge : (this.prevToIndex > -1 && toIndex > this.prevToIndex ? 'end' : 'start')\n )\n },\n\n __onVirtualScrollEvt () {\n const scrollEl = this.__getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const\n scrollDetails = getScrollDetails(\n scrollEl,\n this.__getVirtualScrollEl(),\n this.$refs.before,\n this.$refs.after,\n this.virtualScrollHorizontal,\n this.$q.lang.rtl,\n this.virtualScrollStickySizeStart,\n this.virtualScrollStickySizeEnd\n ),\n listLastIndex = this.virtualScrollLength - 1,\n listEndOffset = scrollDetails.scrollMaxSize - scrollDetails.offsetStart - scrollDetails.offsetEnd - this.virtualScrollPaddingAfter\n\n if (this.prevScrollStart === scrollDetails.scrollStart) {\n return\n }\n\n if (scrollDetails.scrollMaxSize <= 0) {\n this.__setVirtualScrollSliceRange(scrollEl, scrollDetails, 0, 0)\n\n return\n }\n\n this.__scrollViewSize !== scrollDetails.scrollViewSize && this.__setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n this.__updateVirtualScrollSizes(this.virtualScrollSliceRange.from)\n\n const scrollMaxStart = Math.floor(scrollDetails.scrollMaxSize -\n Math.max(scrollDetails.scrollViewSize, scrollDetails.offsetEnd) -\n Math.min(this.virtualScrollSizes[listLastIndex], scrollDetails.scrollViewSize / 2))\n\n if (scrollMaxStart > 0 && Math.ceil(scrollDetails.scrollStart) >= scrollMaxStart) {\n this.__setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n listLastIndex,\n scrollDetails.scrollMaxSize - scrollDetails.offsetEnd - this.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 >= this.virtualScrollPaddingBefore) {\n listOffset -= this.virtualScrollPaddingBefore\n toIndex = this.virtualScrollSliceRange.from\n offset = listOffset\n }\n else {\n for (let j = 0; listOffset >= this.virtualScrollSizesAgg[j] && toIndex < listLastIndex; j++) {\n listOffset -= this.virtualScrollSizesAgg[j]\n toIndex += aggBucketSize\n }\n }\n\n while (listOffset > 0 && toIndex < listLastIndex) {\n listOffset -= this.virtualScrollSizes[toIndex]\n if (listOffset > -scrollDetails.scrollViewSize) {\n toIndex++\n offset = listOffset\n }\n else {\n offset = this.virtualScrollSizes[toIndex] + listOffset\n }\n }\n\n this.__setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n toIndex,\n offset\n )\n },\n\n __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 - this.virtualScrollSliceSizeComputed[alignRange]),\n to = from + this.virtualScrollSliceSizeComputed.total\n\n if (to > this.virtualScrollLength) {\n to = this.virtualScrollLength\n from = Math.max(0, to - this.virtualScrollSliceSizeComputed.total)\n }\n\n this.prevScrollStart = scrollDetails.scrollStart\n\n const rangeChanged = from !== this.virtualScrollSliceRange.from || to !== this.virtualScrollSliceRange.to\n\n if (rangeChanged === false && alignEnd === void 0) {\n this.__emitScroll(toIndex)\n\n return\n }\n\n const { activeElement } = document\n if (\n rangeChanged === true &&\n this.$refs.content !== void 0 &&\n this.$refs.content !== activeElement &&\n this.$refs.content.contains(activeElement) === true\n ) {\n const onBlurFn = () => {\n this.$refs.content.focus()\n }\n\n activeElement.addEventListener('blur', onBlurFn, true)\n\n requestAnimationFrame(() => {\n activeElement.removeEventListener('blur', onBlurFn, true)\n })\n }\n\n setOverflowAnchor(this.id, toIndex - from + 1)\n\n const sizeBefore = alignEnd !== void 0 ? this.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 >= this.virtualScrollSliceRange.from && from <= this.virtualScrollSliceRange.to\n ? this.virtualScrollSliceRange.to\n : to\n this.virtualScrollSliceRange = { from, to: tempTo }\n this.virtualScrollPaddingBefore = sumSize(this.virtualScrollSizesAgg, this.virtualScrollSizes, 0, from)\n this.virtualScrollPaddingAfter = sumSize(this.virtualScrollSizesAgg, this.virtualScrollSizes, this.virtualScrollSliceRange.to, this.virtualScrollLength)\n\n requestAnimationFrame(() => {\n if (this.virtualScrollSliceRange.to !== to && this.prevScrollStart === scrollDetails.scrollStart) {\n this.virtualScrollSliceRange = { from: this.virtualScrollSliceRange.from, to }\n this.virtualScrollPaddingAfter = sumSize(this.virtualScrollSizesAgg, this.virtualScrollSizes, to, this.virtualScrollLength)\n }\n })\n }\n\n requestAnimationFrame(() => {\n // if the scroll was changed give up\n // (another call to __setVirtualScrollSliceRange before animation frame)\n if (this.prevScrollStart !== scrollDetails.scrollStart) {\n return\n }\n\n if (rangeChanged === true) {\n this.__updateVirtualScrollSizes(from)\n }\n\n const\n sizeAfter = this.virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0),\n posStart = sizeAfter + scrollDetails.offsetStart + this.virtualScrollPaddingBefore,\n posEnd = posStart + this.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 - this.virtualScrollSizes[toIndex]) / 2))\n )\n }\n\n this.prevScrollStart = scrollPosition\n\n setScroll(\n scrollEl,\n scrollPosition,\n this.virtualScrollHorizontal,\n this.$q.lang.rtl\n )\n\n this.__emitScroll(toIndex)\n })\n },\n\n __updateVirtualScrollSizes (from) {\n const contentEl = this.$refs.content\n\n if (contentEl !== void 0) {\n const\n children = slice.call(contentEl.children).filter(el => el.classList.contains('q-virtual-scroll--skip') === false),\n childrenLength = children.length,\n sizeFn = this.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 - this.virtualScrollSizes[index]\n\n if (diff !== 0) {\n this.virtualScrollSizes[index] += diff\n this.virtualScrollSizesAgg[Math.floor(index / aggBucketSize)] += diff\n }\n\n index++\n }\n }\n },\n\n __resetVirtualScroll (toIndex, fullReset) {\n const defaultSize = 1 * this.virtualScrollItemSizeComputed\n\n if (fullReset === true || Array.isArray(this.virtualScrollSizes) === false) {\n this.virtualScrollSizes = []\n }\n\n const oldVirtualScrollSizesLength = this.virtualScrollSizes.length\n\n this.virtualScrollSizes.length = this.virtualScrollLength\n\n for (let i = this.virtualScrollLength - 1; i >= oldVirtualScrollSizesLength; i--) {\n this.virtualScrollSizes[i] = defaultSize\n }\n\n const jMax = Math.floor((this.virtualScrollLength - 1) / aggBucketSize)\n this.virtualScrollSizesAgg = []\n for (let j = 0; j <= jMax; j++) {\n let size = 0\n const iMax = Math.min((j + 1) * aggBucketSize, this.virtualScrollLength)\n for (let i = j * aggBucketSize; i < iMax; i++) {\n size += this.virtualScrollSizes[i]\n }\n this.virtualScrollSizesAgg.push(size)\n }\n\n this.prevToIndex = -1\n this.prevScrollStart = void 0\n\n if (toIndex >= 0) {\n this.__updateVirtualScrollSizes(this.virtualScrollSliceRange.from)\n\n this.$nextTick(() => {\n this.scrollTo(toIndex)\n })\n }\n else {\n this.virtualScrollPaddingBefore = sumSize(this.virtualScrollSizesAgg, this.virtualScrollSizes, 0, this.virtualScrollSliceRange.from)\n this.virtualScrollPaddingAfter = sumSize(this.virtualScrollSizesAgg, this.virtualScrollSizes, this.virtualScrollSliceRange.to, this.virtualScrollLength)\n\n this.__onVirtualScrollEvt()\n }\n },\n\n __setVirtualScrollSize (scrollViewSize) {\n if (scrollViewSize === void 0 && typeof window !== 'undefined') {\n const scrollEl = this.__getVirtualScrollTarget()\n\n if (scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {\n scrollViewSize = getScrollDetails(\n scrollEl,\n this.__getVirtualScrollEl(),\n this.$refs.before,\n this.$refs.after,\n this.virtualScrollHorizontal,\n this.$q.lang.rtl,\n this.virtualScrollStickySizeStart,\n this.virtualScrollStickySizeEnd\n ).scrollViewSize\n }\n }\n\n this.__scrollViewSize = scrollViewSize\n\n const multiplier = 1 + this.virtualScrollSliceRatioBefore + this.virtualScrollSliceRatioAfter\n const view = scrollViewSize === void 0 || scrollViewSize <= 0\n ? 1\n : Math.ceil(scrollViewSize / this.virtualScrollItemSizeComputed)\n const baseSize = Math.max(\n 10,\n view,\n Math.ceil(this.virtualScrollSliceSize / multiplier)\n )\n\n this.virtualScrollSliceSizeComputed = {\n total: Math.ceil(baseSize * multiplier),\n start: Math.ceil(baseSize * this.virtualScrollSliceRatioBefore),\n center: Math.ceil(baseSize * (0.5 + this.virtualScrollSliceRatioBefore)),\n end: Math.ceil(baseSize * (1 + this.virtualScrollSliceRatioBefore)),\n view\n }\n },\n\n __padVirtualScroll (h, tag, content) {\n const paddingSize = this.virtualScrollHorizontal === true ? 'width' : 'height'\n const style = {\n ['--q-virtual-scroll-item-' + paddingSize]: this.virtualScrollItemSizeComputed + 'px'\n }\n\n return [\n tag === 'tbody'\n ? h(tag, {\n staticClass: 'q-virtual-scroll__padding',\n key: 'before',\n ref: 'before'\n }, [\n h('tr', [\n h('td', {\n style: { [paddingSize]: `${this.virtualScrollPaddingBefore}px`, ...style },\n attrs: this.colspanAttr\n })\n ])\n ])\n : h(tag, {\n staticClass: 'q-virtual-scroll__padding',\n key: 'before',\n ref: 'before',\n style: { [paddingSize]: `${this.virtualScrollPaddingBefore}px`, ...style }\n }),\n\n h(tag, {\n staticClass: 'q-virtual-scroll__content',\n key: 'content',\n ref: 'content',\n attrs: { id: this.id, tabindex: -1 }\n }, content),\n\n tag === 'tbody'\n ? h(tag, {\n staticClass: 'q-virtual-scroll__padding',\n key: 'after',\n ref: 'after'\n }, [\n h('tr', [\n h('td', {\n style: { [paddingSize]: `${this.virtualScrollPaddingAfter}px`, ...style },\n attrs: this.colspanAttr\n })\n ])\n ])\n : h(tag, {\n staticClass: 'q-virtual-scroll__padding',\n key: 'after',\n ref: 'after',\n style: { [paddingSize]: `${this.virtualScrollPaddingAfter}px`, ...style }\n })\n ]\n },\n\n __emitScroll (index) {\n if (this.prevToIndex !== index) {\n this.qListeners['virtual-scroll'] !== void 0 && this.$emit('virtual-scroll', {\n index,\n from: this.virtualScrollSliceRange.from,\n to: this.virtualScrollSliceRange.to - 1,\n direction: index < this.prevToIndex ? 'decrease' : 'increase',\n ref: this\n })\n\n this.prevToIndex = index\n }\n }\n },\n\n created () {\n this.__setVirtualScrollSize()\n },\n\n beforeMount () {\n buggyRTL === void 0 && detectBuggyRTL()\n this.__onVirtualScrollEvt = debounce(this.__onVirtualScrollEvt, this.$q.platform.is.ios === true ? 120 : 35)\n this.__setVirtualScrollSize()\n },\n\n beforeDestroy () {\n const styleSheet = document.getElementById(this.id + '_ss')\n styleSheet !== null && styleSheet.remove()\n }\n}\n"],"sourceRoot":""}