{"version":3,"sources":["webpack:///./node_modules/quasar/src/components/icon/QIcon.js","webpack:///./node_modules/quasar/src/components/item/QItemLabel.js","webpack:///./node_modules/quasar/src/components/form/QForm.js","webpack:///./node_modules/quasar/src/utils/private/create.js","webpack:///./node_modules/quasar/src/directives/TouchSwipe.js","webpack:///./node_modules/quasar/src/composables/private/use-panel.js","webpack:///./node_modules/quasar/src/components/tooltip/QTooltip.js","webpack:///./node_modules/quasar/src/composables/private/use-ratio.js","webpack:///./node_modules/quasar/src/components/img/QImg.js","webpack:///./node_modules/quasar/src/utils/scroll.js","webpack:///./node_modules/quasar/src/plugins/Platform.js","webpack:///./node_modules/quasar/src/components/page/QPageContainer.js","webpack:///./node_modules/quasar/src/components/spinner/use-spinner.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinner.js","webpack:///./node_modules/quasar/src/components/btn/use-btn.js","webpack:///./node_modules/quasar/src/utils/uid.js","webpack:///./node_modules/quasar/src/utils/private/rtl.js","webpack:///./node_modules/quasar/src/utils/debounce.js","webpack:///./node_modules/quasar/src/components/item/QList.js","webpack:///./node_modules/quasar/src/composables/private/use-form.js","webpack:///./node_modules/quasar/src/utils/private/global-config.js","webpack:///./node_modules/quasar/src/composables/private/use-history.js","webpack:///./node_modules/quasar/src/composables/private/use-prevent-scroll.js","webpack:///./node_modules/quasar/src/components/dialog/QDialog.js","webpack:///./node_modules/quasar/src/utils/private/option-sizes.js","webpack:///./node_modules/quasar/src/components/input/use-mask.js","webpack:///./node_modules/quasar/src/composables/private/use-file-dom-props.js","webpack:///./node_modules/quasar/src/components/input/QInput.js","webpack:///./node_modules/quasar/src/components/avatar/QAvatar.js","webpack:///./node_modules/quasar/src/plugins/Notify.js","webpack:///./node_modules/quasar/src/components/space/QSpace.js","webpack:///./node_modules/quasar/src/utils/private/position-engine.js","webpack:///./node_modules/quasar/src/composables/private/use-key-composition.js","webpack:///./node_modules/quasar/src/components/radio/QRadio.js","webpack:///./node_modules/quasar/src/composables/private/use-timeout.js","webpack:///./node_modules/quasar/src/composables/private/use-can-render.js","webpack:///./node_modules/quasar/src/components/resize-observer/QResizeObserver.js","webpack:///./node_modules/quasar/src/plugins/Screen.js","webpack:///./node_modules/quasar/src/plugins/Dark.js","webpack:///./node_modules/quasar/src/utils/set-css-var.js","webpack:///./node_modules/quasar/src/body.js","webpack:///./node_modules/quasar/src/install-quasar.js","webpack:///./node_modules/quasar/src/components/pagination/QPagination.js","webpack:///./node_modules/quasar/src/components/slide-transition/QSlideTransition.js","webpack:///./node_modules/quasar/src/components/expansion-item/QExpansionItem.js","webpack:///./node_modules/quasar/src/composables/private/use-dark.js","webpack:///./node_modules/quasar/src/components/item/QItemSection.js","webpack:///./node_modules/quasar/src/components/tabs/QTabs.js","webpack:///./node_modules/quasar/src/components/dialog-plugin/DialogPlugin.js","webpack:///./node_modules/quasar/src/utils/private/global-dialog.js","webpack:///./node_modules/quasar/src/plugins/Dialog.js","webpack:///./node_modules/quasar/src/components/scroll-area/QScrollArea.js","webpack:///./node_modules/quasar/src/components/card/QCardActions.js","webpack:///./node_modules/quasar/src/components/layout/QLayout.js","webpack:///./node_modules/quasar/src/components/menu/QMenu.js","webpack:///./node_modules/quasar/src/utils/private/date-persian.js","webpack:///./node_modules/quasar/src/components/date/use-datetime.js","webpack:///./node_modules/quasar/src/utils/date.js","webpack:///./node_modules/quasar/src/components/date/QDate.js","webpack:///./node_modules/quasar/src/utils/private/portal.js","webpack:///./node_modules/quasar/src/composables/private/use-scroll-target.js","webpack:///./node_modules/quasar/lang/en-US.js","webpack:///./node_modules/quasar/src/history.js","webpack:///./node_modules/quasar/src/composables/private/use-anchor.js","webpack:///./node_modules/quasar/src/utils/is.js","webpack:///./node_modules/quasar/src/components/item/QItem.js","webpack:///./node_modules/quasar/src/composables/use-form-child.js","webpack:///./node_modules/quasar/src/utils/patterns.js","webpack:///./node_modules/quasar/src/composables/private/use-validate.js","webpack:///./node_modules/quasar/src/composables/private/use-split-attrs.js","webpack:///./node_modules/quasar/src/composables/private/use-field.js","webpack:///./node_modules/quasar/src/utils/throttle.js","webpack:///./node_modules/quasar/src/directives/Ripple.js","webpack:///./node_modules/quasar/src/components/tabs/use-tab.js","webpack:///./node_modules/quasar/src/components/tabs/QTab.js","webpack:///./node_modules/quasar/src/components/inner-loading/QInnerLoading.js","webpack:///./node_modules/quasar/src/directives/TouchPan.js","webpack:///./node_modules/quasar/src/utils/private/global-nodes.js","webpack:///./node_modules/quasar/src/utils/format.js","webpack:///./node_modules/quasar/src/utils/private/click-outside.js","webpack:///./node_modules/quasar/src/components/slider/use-slider.js","webpack:///./node_modules/quasar/src/components/range/QRange.js","webpack:///./node_modules/quasar/src/utils/private/touch.js","webpack:///./node_modules/quasar/src/components/popup-proxy/QPopupProxy.js","webpack:///./node_modules/quasar/src/directives/ClosePopup.js","webpack:///./node_modules/quasar/src/components/footer/QFooter.js","webpack:///./node_modules/quasar/src/components/tab-panels/QTabPanel.js","webpack:///./node_modules/quasar/src/components/field/QField.js","webpack:///./node_modules/quasar/src/components/checkbox/QCheckbox.js","webpack:///./node_modules/quasar/src/utils/prevent-scroll.js","webpack:///./node_modules/quasar/src/composables/private/use-align.js","webpack:///./node_modules/quasar/icon-set/material-icons.mjs","webpack:///./node_modules/quasar/src/icon-set.js","webpack:///./node_modules/quasar/src/composables/private/use-size.js","webpack:///./node_modules/quasar/src/components/btn/QBtn.js","webpack:///./node_modules/quasar/src/utils/private/inject-obj-prop.js","webpack:///./node_modules/quasar/src/components/toggle/QToggle.js","webpack:///./node_modules/quasar/src/components/option-group/QOptionGroup.js","webpack:///./node_modules/quasar/src/composables/private/use-portal.js","webpack:///./node_modules/quasar/src/components/card/QCardSection.js","webpack:///./node_modules/quasar/src/composables/private/use-transition.js","webpack:///./node_modules/quasar/lang/zh-CN.js","webpack:///./node_modules/quasar/src/components/tab-panels/QTabPanels.js","webpack:///./node_modules/quasar/src/utils/private/escape-key.js","webpack:///./node_modules/quasar/src/vue-plugin.js","webpack:///./node_modules/quasar/src/composables/use-quasar.js","webpack:///./node_modules/quasar/src/utils/private/vm.js","webpack:///./node_modules/quasar/src/components/checkbox/use-checkbox.js","webpack:///./node_modules/quasar/src/utils/private/render.js","webpack:///./node_modules/quasar/src/utils/private/define-reactive-plugin.js","webpack:///./node_modules/quasar/src/composables/private/use-router-link.js","webpack:///./node_modules/quasar/src/composables/private/use-model-toggle.js","webpack:///./node_modules/quasar/src/utils/private/focusout.js","webpack:///./node_modules/quasar/src/utils/event.js","webpack:///./node_modules/quasar/src/utils/private/key-composition.js","webpack:///./node_modules/quasar/src/components/chip/QChip.js","webpack:///./node_modules/quasar/src/components/virtual-scroll/use-virtual-scroll.js","webpack:///./node_modules/quasar/src/components/select/QSelect.js","webpack:///./node_modules/quasar/src/utils/private/symbols.js","webpack:///./node_modules/quasar/src/composables/private/use-tick.js","webpack:///./node_modules/quasar/src/components/header/QHeader.js","webpack:///./node_modules/quasar/src/composables/private/use-refocus-target.js","webpack:///./node_modules/quasar/src/components/separator/QSeparator.js","webpack:///./node_modules/quasar/lang/en-US.mjs","webpack:///./node_modules/quasar/src/lang.js","webpack:///./node_modules/quasar/src/components/scroll-observer/QScrollObserver.js","webpack:///./node_modules/quasar/src/components/card/QCard.js","webpack:///./node_modules/quasar/src/components/btn-group/QBtnGroup.js","webpack:///./node_modules/quasar/src/components/btn-dropdown/QBtnDropdown.js","webpack:///./node_modules/quasar/src/utils/private/selection.js","webpack:///./node_modules/quasar/src/utils/dom.js","webpack:///./node_modules/quasar/src/plugins/Loading.js","webpack:///./node_modules/quasar/src/utils/private/focus-manager.js","webpack:///./node_modules/quasar/src/composables/private/use-cache.js"],"names":["defaultViewBox","sameFn","i","ionFn","libMap","matMap","o_","r_","s_","symMap","sym_o_","sym_r_","sym_s_","libRE","RegExp","Object","keys","join","matRE","symRE","mRE","imgRE","svgUseRE","ionRE","faRE","createComponent","name","props","useSizeProps","tag","type","String","default","color","left","Boolean","right","setup","slots","proxy","$q","getCurrentInstance","sizeStyle","useSize","classes","computed","cls","icon","none","iconMapFn","res","content","test","def","viewBox","split","svg","nodes","map","path","d","style","transform","h","img","src","substring","svguse","matches","match","platform","is","ios","data","class","value","role","hSlot","hMergeSlot","overline","caption","header","lines","Number","parsedLines","parseInt","overflow","display","autofocus","noErrorFocus","noResetFocus","greedy","onSubmit","Function","emits","emit","vm","rootRef","ref","validateIndex","registeredComponents","validate","shouldFocus","focus","index","emitEvent","validateComponent","comp","valid","then","err","Promise","resolve","errorsPromise","all","filter","r","reduce","acc","reject","catch","error","errors","length","console","activeError","find","vmIsDestroyed","$","resetValidation","forEach","submit","evt","stopAndPrevent","val","target","reset","nextTick","addFocusFn","querySelector","Array","prototype","call","querySelectorAll","el","tabIndex","preventScroll","provide","formKey","bindComponent","vmProxy","push","unbindComponent","indexOf","splice","shouldActivate","onDeactivated","onActivated","onMounted","assign","getValidationComponents","onReset","raw","markRaw","defineComponent","createDirective","parseArg","arg","v","parseFloat","beforeMount","modifiers","mouse","client","has","touch","mouseCapture","ctx","handler","sensitivity","direction","getModifierDirections","noop","mouseStart","shouldStart","leftClick","addEvt","document","start","touchStart","mouseEvent","firefox","preventDraggable","pos","position","event","x","y","top","time","Date","now","dir","move","distX","absX","Math","abs","distY","absY","end","velX","velY","vertical","horizontal","up","down","body","classList","add","clearSelection","styleCleanup","withDelay","remove","setTimeout","duration","distance","cleanEvt","__qtouchswipe","capture","mousecapture","updated","bindings","oldValue","beforeUnmount","usePanelChildProps","required","disable","PanelWrapper","_","usePanelProps","modelValue","animated","infinite","swipeable","transitionPrev","transitionNext","transitionDuration","keepAlive","keepAliveInclude","keepAliveExclude","keepAliveMax","usePanelEmits","getCacheWithFn","useCache","panels","forcedPanelTransition","panelIndex","panelTransition","onSwipe","goToPanelByOffset","lang","rtl","panelDirectives","TouchSwipe","transitionStyle","contentKey","keepAliveProps","include","exclude","max","needsUniqueKeepAliveWrapper","nextPanel","previousPanel","goToPanel","isValidPanelName","getPanelIndex","findIndex","panel","getEnabledPanels","updatePanelTransition","startIndex","opt","updatePanelIndex","getPanelContentChild","KeepAlive","key","getPanelContent","Transition","updatePanelsList","getNormalizedVNodes","slot","getPanels","watch","newVal","oldVal","next","previous","goTo","inheritAttrs","useAnchorProps","useModelToggleProps","useTransitionProps","maxHeight","maxWidth","transitionShow","transitionHide","anchor","validator","validatePosition","self","offset","validateOffset","scrollTarget","delay","hideDelay","useModelToggleEmits","attrs","unwatchPosition","observer","innerRef","showing","anchorOrigin","parsePosition","selfOrigin","hideOnRouteChange","persistent","registerTick","removeTick","useTick","registerTimeout","useTimeout","transitionProps","useTransition","localScrollTarget","changeScrollEvent","unconfigureScrollTarget","useScrollTarget","configureScrollTarget","anchorEl","canShow","anchorEvents","useAnchor","configureAnchorEl","show","hide","useModelToggle","handleShow","handleHide","processOnMount","delayShow","delayHide","showPortal","hidePortal","renderPortal","usePortal","renderPortalContent","mobile","clickOutsideProps","onClickOutside","e","contains","hasClickOutside","fn","addClickOutside","removeClickOutside","onBeforeUnmount","MutationObserver","updatePosition","observe","attributes","childList","characterData","subtree","screen","width","height","anchorCleanup","disconnect","setPosition","evts","noParentEvent","getScrollTarget","getTooltipContent","useRatioProps","ratio","naturalRatio","isNaN","paddingBottom","defaultRatio","srcset","sizes","alt","crossorigin","decoding","referrerpolicy","draggable","loading","fetchpriority","initialRatio","placeholderSrc","fit","imgClass","imgStyle","noSpinner","noNativeMenu","noTransition","spinnerColor","spinnerSize","ratioStyle","useRatio","loadTimer","images","getPlaceholderSrc","isLoading","hasError","objectFit","objectPosition","getCurrentSrc","addImage","imgProps","clearTimeout","onLoad","naturalHeight","naturalWidth","waitForCompleteness","count","complete","onReady","currentSrc","onError","getImage","getContent","QSpinner","size","scrollTargets","scrollingElement","documentElement","targetEl","getElement","window","closest","includes","getVerticalScrollPosition","pageYOffset","scrollY","scrollTop","getHorizontalScrollPosition","pageXOffset","scrollX","scrollLeft","animVerticalScrollTo","to","prevTime","arguments","performance","setScroll","requestAnimationFrame","nowTime","frameTime","newPos","animHorizontalScrollTo","setHorizontalScroll","scrollTo","setVerticalScrollPosition","setHorizontalScrollPosition","getScrollbarWidth","undefined","inner","createElement","outer","css","visibility","appendChild","w1","offsetWidth","w2","clientWidth","hasScrollbar","onY","nodeType","Node","ELEMENT_NODE","scrollHeight","clientHeight","getComputedStyle","scrollWidth","isRuntimeSsrPreHydration","__QUASAR_SSR_CLIENT__","iosCorrection","iosEmulated","getMatch","userAgent","platformMatch","exec","browser","version","versionNumber","getPlatformMatch","hasTouch","navigator","maxTouchPoints","applyIosCorrection","mac","desktop","min","innerHeight","innerWidth","getPlatform","UA","toLowerCase","matched","knownMobiles","android","bb","blackberry","ipad","iphone","ipod","kindle","playbook","silk","edga","edgios","edge","crios","chrome","fxios","winphone","opr","safari","vivaldi","webkit","edg","edgeChromium","opera","electron","location","href","bex","Capacitor","capacitor","nativeMobile","nativeMobileWrapper","_cordovaNative","cordova","vendor","ssrClient","webStorage","within","iframe","Platform","install","opts","onSSRHydrated","reactive","this","hasWebStorage","injectProp","localStorage","$layout","inject","layoutKey","emptyRenderFn","pageContainerKey","space","paddingTop","footer","useSpinnerProps","useSpinner","cSize","useSizeDefaults","thickness","cx","cy","fill","stroke","btnPadding","xs","sm","md","lg","xl","defaultSizes","formTypes","mediaTypeRE","btnDesignOptions","getBtnDesign","defaultValue","flat","outline","unelevated","getBtnDesignAttr","design","useBtnProps","useRouterLinkProps","label","iconRight","square","round","rounded","glossy","fab","fabMini","padding","textColor","noCaps","noWrap","dense","tabindex","ripple","align","useAlignProps","stack","stretch","alignClass","useAlign","hasRouterLink","hasLink","linkTag","linkAttrs","navigateOnClick","useRouterLink","fallbackTag","obj","minWidth","minHeight","isRounded","isActionable","disabled","percentage","colors","shape","innerClasses","buf","bufIdx","hexBytes","toString","randomBytes","lib","crypto","msCrypto","getRandomValues","n","bytes","Uint8Array","floor","random","BUFFER_SIZE","b","slice","rtlHasScrollBug","scroller","setAttribute","spacer","wait","immediate","timeout","debounced","args","later","apply","cancel","useDarkProps","bordered","separator","isDark","useDark","useFormProps","useFormAttrs","useFormInject","formAttrs","child","action","className","useFormInputNameAttr","for","globalConfig","globalConfigIsFrozen","freezeGlobalConfig","historyEntry","removeFromHistory","History","addToHistory","condition","currentState","preventBodyScroll","state","maximizedModals","positionClass","standard","bottom","defaultTransitions","autoClose","allowFocusOutside","noEscDismiss","noBackdropDismiss","noRouteDismiss","noRefocus","noFocus","noShake","seamless","maximized","fullWidth","fullHeight","animating","shakeTimeout","isMaximized","avoidAutoClose","refocusTarget","usePreventScroll","portalIsAccessible","useHistory","useBackdrop","onEvents","onClick","onAutoClose","rootClasses","activeElement","updateMaximized","blur","getBoundingClientRect","visualViewport","Infinity","ceil","scrollIntoView","click","cleanup","selector","node","shake","focusTarget","onEscapeKey","hiding","removeFocusout","onFocusChange","removeEscapeKey","active","onBackdropClick","relatedTarget","childHasFocus","appear","onFocusin","addFocusout","addEscapeKey","__updateRefocusTarget","NAMED_MASKS","date","datetime","fulltime","phone","card","TOKENS","pattern","negate","S","N","A","toLocaleUpperCase","a","toLocaleLowerCase","X","KEYS","regex","tokenRegexMask","escRegex","MARKER","fromCharCode","useMaskProps","mask","reverseFillMask","fillMask","unmaskedValue","emitValue","inputRef","maskMarked","maskReplaced","computedMask","computedUnmask","hasMask","innerValue","getInitialMaskedValue","getIsTypeText","autogrow","updateMaskInternals","masked","maskValue","unmaskValue","fillWithMask","getPaddedMaskMarked","pad","localMaskMarked","padPos","localComputedMask","fillChar","fillCharEscaped","replace","unmask","extract","firstMatch","unmaskChar","negateChar","char1","esc","token","char2","c","unmaskMatcher","extractLast","extractMatcher","re","unmaskMatch","extractMatch","extractMatcherLength","str","m","shift","updateMaskValue","rawVal","updateMaskInternalsFlag","inputType","inp","selectionEnd","endReverse","unmasked","preMasked","changed","cursor","setSelectionRange","moveCursor","rightReverse","moveCursorForPaste","selection","noMarkBefore","limit","leftReverse","onMaskedKeydown","shouldIgnoreKey","selectionStart","keyCode","preventDefault","shiftKey","maskValueReverse","valIndex","output","maskIndex","valChar","maskDef","firstTokenIndex","typeGuard","getFormDomProps","model","dt","DataTransfer","ClipboardEvent","clipboardData","from","file","items","files","useFieldProps","shadowText","debounce","inputClass","inputStyle","useFieldEmits","temp","typedNumber","stopValueWatcher","emitTimer","emitValueFn","emitCachedValue","NaN","nameProp","useMask","formDomProps","useFileFormDomProps","hasValue","fieldValueIsFilled","onComposition","useKeyComposition","onInput","useFieldState","isTextarea","isTypeText","splitAttrs","listeners","onPaste","onChange","onBlur","onFinishEditing","onFocus","stop","onCompositionstart","onCompositionupdate","onCompositionend","onKeydown","onAnimationend","inputAttrs","rows","id","targetUid","maxlength","readonly","select","qComposing","adjustHeight","stopWatcher","hasOwnProperty","parentStyle","parentNode","marginBottom","getCurValue","fieldClass","hasShadow","floatingLabel","displayValue","getControl","getShadowControl","renderFn","useField","getNativeElement","fontSize","contentStyle","QIcon","hMergeSlotSafely","uid","defaults","groups","notificationsList","emptyRE","notifRefs","positionList","badgePositions","notifTypes","positive","iconSet","negative","warning","info","ongoing","group","spinner","addNotification","config","originalApi","logError","Api","notif","ignoreDefaults","isObject","message","meta","hasMedia","avatar","hasText","hasContent","t","progress","progressClass","progressStyle","animationDuration","actions","isArray","concat","closeBtn","close","noDismiss","item","dismiss","multiLine","wrapperClass","contentClass","leftClass","multiline","actionsClass","timer","original","badge","badgePosition","badgeClass","badgeColor","badgeTextColor","removeNotification","newNotif","offsetLeft","onDismiss","getComponent","devtools","TransitionGroup","mainChild","iconColor","iconSize","QAvatar","msgChild","msgData","html","innerHTML","msgNode","QBtn","badgeStyle","setDefaults","registerType","typeName","typeOpts","parentApp","notify","create","__installed","vert","createGlobalNode","createChildApp","mount","vpLeft","vpTop","parts","horizontalPos","getAnchorProps","middle","center","getTargetProps","offsetHeight","cfg","offsetTop","setProperty","anchorProps","absoluteOffset","cover","anchorTop","anchorLeft","elStyle","targetProps","applyBoundaries","currentHeight","currentWidth","margin","anchorY","anchorX","isJapanese","isChinese","isKorean","isPlainText","isComposing","leftLabel","checkedIcon","uncheckedIcon","keepColor","optionSizes","refocusTargetEl","useRefocusTarget","isTrue","toRaw","innerClass","prop","injectFormInput","onKeyup","set","removeTimeout","canRender","hasObserver","ResizeObserver","resizeProps","url","trigger","immediately","init","$el","unobserve","useCanRender","curDocView","removeEventListener","listenOpts","passive","onObjLoad","contentDocument","defaultView","addEventListener","SIZE_LIST","defineReactivePlugin","lt","gt","setSizes","setDebounce","bodyClasses","__update","getSize","scale","force","w","s","updateEvt","updateSizes","updateDebounce","deb","getPropertyValue","Plugin","isActive","mode","__media","matchMedia","__updateMedia","addListener","removeListener","toggle","ssrContext","dark","initialVal","ssrSet","__fromSSR","originalSet","setCssVar","propName","element","TypeError","Element","getMobilePlatform","getBodyClasses","iosStatusBarPadding","applyClientSsrCorrections","newCls","setColors","brand","onKeyDownComposition","autoInstalledPlugins","Body","Dark","Screen","Lang","IconSet","appCfg","app","createApp","globalProperties","reload","appContext","_context","installPlugins","pluginOpts","pluginList","prepareApp","uiOpts","quasarKey","components","values","component","directives","directive","plugins","p","__QUASAR_SSR_SERVER__","__QUASAR_VERSION__","getBool","otherwise","maxPages","input","iconPrev","iconNext","iconFirst","iconLast","toFn","boundaryLinks","boundaryNumbers","directionLinks","ellipses","activeDesign","activeColor","activeTextColor","gutter","minProp","maxProp","maxPagesProp","inputPlaceholder","boundaryLinksProp","boundaryNumbersProp","directionLinksProp","ellipsesProp","newPage","get","between","gutterProp","gutterStyle","icons","ico","pagination","first","prev","last","reverse","btnDesignProp","btnProps","btnActiveDesignProp","activeBtnProps","btnConfig","pgFrom","pgTo","ellipsesStart","ellipsesEnd","boundaryStart","boundaryEnd","marginalStyle","setByOffset","inputEvents","updateModel","isKeyCode","getBtn","page","contentStart","contentEnd","contentMiddle","unshift","QInput","borderless","placeholder","doneFn","timerFallback","animListener","lastEvent","begin","done","overflowY","transition","onEnter","onLeave","itemGroups","shallowReactive","LINK_PROPS","labelLines","captionLines","toggleAriaLabel","expandIcon","expandedIcon","expandIconClass","headerInsetLevel","contentInsetLevel","expandSeparator","defaultOpened","hideExpandIcon","expandIconToggle","switchToggleSide","denseToggle","popup","headerStyle","headerClass","blurTargetRef","uniqueId","exitGroup","linkProps","isClickable","expansionIcon","expansionItem","activeToggleIcon","headerSlotScope","expanded","detailsId","toggleAriaAttrs","onHeaderClick","toggleIconKeyboard","toggleIcon","keyboard","onShow","onHide","enterGroup","getToggleIcon","side","QItemSection","getHeaderChild","QItemLabel","getHeader","insetLevel","clickable","QItem","getTransitionChild","withDirectives","vShow","QSlideTransition","QSeparator","thumbnail","getIndicatorClass","alignValues","breakpoint","shrink","activeClass","activeBgColor","indicatorColor","leftIcon","rightIcon","outsideArrows","mobileArrows","switchIndicator","narrowIndicator","inlineLabel","registerScrollTick","registerUpdateArrowsTick","registerAnimateTick","registerFocusTimeout","removeFocusTimeout","registerScrollToTabTimeout","removeScrollToTabTimeout","contentRef","currentModel","scrollable","leftArrow","rightArrow","justify","arrowsEnabled","tabDataList","tabDataListLen","hasFocus","animateTimer","scrollTimer","unwatchRoute","localUpdateArrows","updateArrowsFn","tabProps","indicatorClass","hasActiveTab","len","domProps","container","scroll","isRTL","rtlPosCorrection","setCurrent","skipEmit","fromRoute","animate","recalculateScroll","updateContainer","domSize","scrollSize","children","oldName","newName","oldTab","tab","newTab","oldEl","tabIndicatorRef","newEl","oldPos","scrollToTabEl","rect","animScrollTo","stopAnimScroll","setInterval","scrollTowards","scrollToStart","MAX_SAFE_INTEGER","scrollToEnd","clearInterval","onKbdNavigate","fromEl","tabs","dirPrev","dirNext","rtlDir","posFn","hasQueryIncluded","targetQuery","matchingQuery","updateActiveRoute","bestScore","matchedLen","queryDiff","hrefLen","list","routeData","hash","currentHash","query","currentQuery","$route","currentQueryLen","exact","resolvedLink","queryLen","newScore","some","onFocusout","verifyRouteModel","$tabs","avoidRouteWatcher","watchRoute","unwatch","fullPath","registerTab","tabData","unregisterTab","every","hadRouteWatcher","tabsKey","QResizeObserver","onResize","onScroll","onMousedownPassive","onTouchstartPassive","onMouseupPassive","onMouseleavePassive","onTouchendPassive","title","prompt","options","ok","stackButtons","cardClass","cardStyle","dialogRef","vmColor","hasForm","formProps","isValid","okLabel","cancelLabel","okDisabled","okProps","onOk","cancelProps","onCancel","onDialogHide","onUpdateModel","onInputKeyup","getSection","text","QCardSection","getPrompt","getOptions","QOptionGroup","getButtons","QCardActions","getCardContent","QCard","QDialog","merge","source","DefaultComponent","supportsCustomComponent","pluginProps","DialogComponent","isCustom","componentProps","klass","otherProps","emittedOK","applyState","cmd","subTree","okFns","cancelFns","API","update","$forceUpdate","unmount","removeGlobalNode","onVnodeMounted","dialog","globalDialog","DialogPlugin","axisList","dirProps","dist","panOpts","prevent","mouseAllDir","getMinThumbSize","thumbStyle","verticalThumbStyle","horizontalThumbStyle","barStyle","verticalBarStyle","horizontalBarStyle","contentActiveStyle","visible","tempShowing","panning","hover","panRefPos","targetRef","diff","thumbHidden","thumbStart","thumbSize","thumbClass","barClass","mainStyle","thumbVertDir","TouchPan","onPanThumb","thumbHorizDir","getScroll","axis","emitScroll","localSetScrollPosition","change","startTimer","updateScroll","updateScrollSize","isFirst","isFinal","dProp","containerSize","multiplier","onMousedown","dispatchEvent","MouseEvent","onVerticalMousedown","onHorizontalMousedown","onMouseenter","onMouseleave","scrollPosition","getScrollPosition","getScrollPercentage","setScrollPosition","setScrollPercentage","QScrollObserver","view","onScrollHeight","inflectionPoint","containerHeight","scrollbarWidth","targetStyle","targetChildStyle","onPageScroll","qScrollPrevented","directionChanged","delta","onPageResize","newHeight","newWidth","resized","updateScrollbarWidth","onContainerResize","instances","isContainer","totalWidth","part","restoreScrollbar","hideScrollbar","updateScrollEvent","onUnmounted","layout","separateClosePopup","touchPosition","menuClass","handlesFocus","contextMenu","qClickOutside","closePortalMenus","breaks","toJalaali","gy","gm","gd","getDate","getMonth","getFullYear","d2j","g2d","toGregorian","jy","jm","jd","d2g","j2d","isLeapJalaaliYear","jalCalLeap","jalaaliMonthLength","bl","jump","leap","jp","Error","div","mod","jalCal","withoutLeap","leapJ","leapG","march","jdn","k","jdn1f","j","calendars","useDatetimeProps","locale","calendar","landscape","useDatetimeEmits","getDayHash","year","month","day","editable","getLocale","getCurrentDate","dateOnly","timeFill","jDate","hour","minute","second","millisecond","MILLISECONDS_IN_DAY","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","defaultMask","reverseToken","regexStore","getRegexData","dateLocale","days","daysShort","months","monthsShort","regexText","YY","YYYY","M","MMM","MMMM","D","H","aa","Z","ZZ","getDateLocale","paramDateLocale","langProps","defaultLang","formatTimezone","delimeter","sign","absOffset","hours","minutes","__splitDate","defaultModel","timezoneOffset","dateHash","timeHash","langOpts","tzString","stamp","getHours","getMinutes","getSeconds","getMilliseconds","maxDay","getWeekOfYear","thursday","setDate","getDay","firstThursday","ds","getTimezoneOffset","setHours","weekDiff","startOfDate","unit","utc","prefix","getDiff","sub","interval","getTime","getDateDiff","subtract","getDayOfYear","getOrdinal","formatter","forcedYear","_dateLocale","MM","Q","Qo","Do","DD","DDD","DDDD","dd","dddd","ddd","E","ww","HH","hh","mm","ss","SS","SSS","_forcedYear","forcedTimezoneOffset","tzOffset","formatDate","__forcedYear","__forcedTimezoneOffset","yearsInterval","views","viewIsValid","yearMonthValidator","lineStr","getMonthHash","multiple","range","subtitle","defaultYearMonth","yearsInMonthView","events","eventColor","emitImmediately","navigationMinYearMonth","navigationMaxYearMonth","noUnset","firstDayOfWeek","todayBtn","minimal","getCache","useDatetime","lastEmitValue","innerMask","getMask","innerLocale","today","viewModel","getViewModel","monthDirection","yearDirection","startYear","editRange","computedColor","computedTextColor","isImmediate","normalizedModel","daysModel","decodeString","rangeModel","getNativeDateFn","gDate","encodeObjectFn","daysInModel","headerTitle","pluralDay","valueOf","minSelectedModel","sort","maxSelectedModel","headerSubtitle","dateArrow","arrowLeft","arrowRight","computedFirstDayOfWeek","daysOfWeek","daysInMonth","evtColor","minNav","maxNav","navBoundaries","daysMap","entry","rangeMap","hashFrom","hashTo","cur","rangeView","initHash","final","finalHash","fromHash","toHash","viewMonthHash","includeFrom","includeTo","selectionDaysMap","dayHash","eventDaysMap","viewDays","endDay","prevJM","prevJY","in","selected","rangeFrom","rangeTo","editRangeFrom","editRangeTo","afterDays","setToday","addToModel","setCalendarTo","setView","viewMode","offsetCalendar","descending","goToMonth","goToYear","updateViewModel","setEditingRange","getDefaultViewModel","decoded","setYear","setMonth","toggleDate","monthHash","removeFromModel","getShortDate","newHash","reason","details","getEmitParams","encodeEntry","ranges","updateValue","getNavigation","boundaries","renderViews","Calendar","onDayClick","onMouseover","onDayMouseover","Months","currentYear","isDisabled","Years","years","dayIndex","dayProps","payload","portalProxyList","getPortalProxy","contentEl","$options","$props","getParentProxy","__qPortal","parent","closePortals","depth","scrollFn","fnProp","fnHandler","noParentEventWatcher","module","exports","isoName","nativeName","clear","search","refresh","expand","collapse","format24h","table","noData","noResults","selectedRecords","recordsPerPage","allRows","total","columns","editor","bold","italic","strikethrough","underline","unorderedList","orderedList","subscript","superscript","hyperlink","toggleFullscreen","quote","print","outdent","indent","removeFormat","formatting","hr","undo","redo","heading1","heading2","heading3","heading4","heading5","heading6","paragraph","code","size1","size2","size3","size4","size5","size6","size7","defaultFont","viewSource","tree","noNodes","getTrue","filterInvalidPath","normalizeExitPath","startsWith","endsWith","getShouldExitFn","backButtonExit","exitPaths","__history","qConf","backButton","Plugins","App","shouldExit","backHandler","pop","exitApp","history","back","avoidEmit","touchTimer","touches","unconfigureAnchorEl","setAnchorEl","pickAnchorEl","qAnchorHandled","toggleKey","contextClick","mobileTouch","mobileCleanup","context","isDeepEqual","constructor","Map","entries","Set","buffer","ArrayBuffer","flags","isDate","isNumber","isFinite","focused","manualFocus","linkClass","qKeyEvent","hUniqueSlot","requiresQForm","$form","hex","hexa","hexOrHexa","rgb","rgba","testPattern","timeOrFulltime","email","hexColor","hexaColor","hexOrHexaColor","rgbColor","rgbaColor","rgbOrRgbaColor","hexOrRgbColor","hexaOrRgbaColor","anyColor","lazyRulesValues","useValidateProps","errorMessage","noErrorIcon","rules","reactiveRules","lazyRules","innerLoading","innerError","innerErrorMessage","isDirtyModel","useFormChild","unwatchRules","hasRules","hasActiveRules","debouncedValidate","setDirty","msg","promises","rule","validateIfNeeded","changedRules","listenerRE","vnode","onBeforeUpdate","getTargetUid","stackLabel","hint","hideHint","suffix","labelColor","bgColor","filled","outlined","standout","labelSlot","bottomSlots","hideBottomSpace","itemAligned","counter","clearable","clearIcon","hasPopupOpen","useSplitAttrs","controlRef","focusoutTimer","controlEvents","onControlFocusin","onControlFocusout","clearValue","computedCounter","maxValues","useValidate","shouldRenderBottom","styleType","hasLabel","labelClass","controlSlotScope","focusHandler","hasAttribute","removeFocusFn","prepend","getControlContainer","getInnerAppendNode","field","append","getInnerAppend","getControlChild","rawControl","control","getBottom","hasCounter","main","labelAttrs","before","after","result","showRipple","forceCenter","innerNode","diameter","sqrt","radius","centerX","centerY","opacity","abort","updateModifiers","early","keyCodes","binding","instance","enabled","qSkipRipple","keystart","throttle","__qripple","_qripple","useTabEmits","useTabProps","alert","alertIcon","go","hardError","reqId","navigateToRouterLink","returnRouterError","softError","defaultPrevented","altKey","metaKey","narrow","indicator","renderTab","customData","Ripple","useTab","labelStyle","getInner","getChanges","synthetic","lastDir","lastX","lastY","handleEvent","lastEvt","mousealldir","clone","TouchEvent","cancelBubble","qClonedBy","initialEvent","detected","isMouseEvt","preserveCursor","preservecursor","withDelayedFn","__qtouchpan","globalNodes","capitalize","charAt","toUpperCase","normalizeToInterval","char","notPassiveCapture","registeredList","globalHandler","portalIndex","markerPrefixClass","defaultMarkerConvertFn","defaultMarkerLabelRenderFn","marker","useSliderProps","innerMin","innerMax","step","snap","hideSelection","markerLabelsClass","labelTextColor","labelAlways","switchLabelSide","markers","markerLabels","switchMarkerLabelsSide","trackImg","trackColor","innerTrackImg","innerTrackColor","selectionColor","selectionImg","trackSize","thumbColor","thumbPath","useSliderEmits","getDragging","preventFocus","dragging","labelSide","isReversed","decimals","trim","trackLen","innerBarLen","innerMinRatio","convertModelToRatio","innerMaxRatio","positionProp","sizeProp","thicknessProp","orientation","getPositionClass","getAxisClass","selectionBarClass","markerClass","trackContainerClass","pinClass","textContainerClass","markerLabelsContainerClass","trackClass","trackStyle","backgroundImage","innerBarClass","innerBarStyle","convertRatioToModel","modulo","toFixed","getDraggingRatio","markerStep","markerTicks","markerLabelClass","markerLabelsList","getMarkerList","getMarkerLabelStyle","markerScope","markerList","markerMap","markerLabelsMap","getStyle","markerStyle","backgroundSize","filterFn","getMarkerLabelsContent","panDirective","onPan","onActivate","onDeactivate","onMobileClick","getTextContainerStyle","getThumbRenderFn","thumb","focusClass","focusValue","zIndex","pinColor","textContainerStyle","textClass","thumbContent","getNodeData","selectionBarStyle","trackContainerTabindex","trackContainerEvents","injectThumb","trackContent","hDir","methods","dragType","MIN","RANGE","MAX","dragRange","dragOnlyRange","leftLabelColor","leftLabelTextColor","rightLabelColor","rightLabelTextColor","leftLabelValue","rightLabelValue","leftThumbColor","rightThumbColor","useSlider","curMinRatio","curMaxRatio","normalizeModel","modelMinRatio","modelMaxRatio","ratioMin","ratioMax","getEvents","thumbTabindex","minThumbRef","minEvents","getMinThumb","maxEvents","getMaxThumb","valueMin","valueMax","offsetRatio","offsetModel","rangeValue","rangeRatio","localModel","minR","maxR","ratioDelta","modelDelta","stepVal","which","modifiersAll","directionList","nodeName","popupRef","getType","popupProps","QMenu","getDepth","handlerKey","__qclosepopup","reveal","elevated","heightHint","revealed","windowHeight","fixed","hidden","revealOnFocus","updateLayout","updateLocal","updateRevealed","bgNode","useCheckboxProps","useCheckboxEmits","isIndeterminate","indeterminateIcon","useCheckbox","scrollPositionX","scrollPositionY","maxScrollTop","bodyLeft","bodyTop","closeTimer","registered","vpPendingUpdate","onWheel","shouldPreventScroll","getEventPath","deltaX","deltaY","onAppleScroll","onAppleResize","hasViewport","overflowX","passiveCapture","notPassive","alignMap","around","evenly","arrow","dropdown","chevron","colorPicker","spectrum","tune","palette","pullToRefresh","carousel","navigationIcon","chip","heading","font","denseIcon","activeIcon","rating","stepper","arrowUp","firstPage","prevPage","nextPage","lastPage","uploader","upload","removeQueue","removeUploaded","__icons","setObject","materialIcons","touchTarget","keyboardTarget","mouseTarget","darkPercentage","onTouchstart","useBtn","avoidMouseRipple","mouseTimer","localTouchTargetEl","rippleProps","percentageStyle","onLoadingEvt","nodeProps","onClickCleanup","onPressEnd","destroying","blurTarget","defineProperty","enumerable","radio","QRadio","checkbox","QCheckbox","QToggle","typeValues","inline","arrayModel","onUpdateModelValue","isOnGlobalDialog","checkGlobalDialog","portalIsActive","portalEl","focusObj","onGlobalDialog","isReady","removeFocusWaitFlag","addFocusWaitFlag","Teleport","defaultShowFn","defaultHideFn","enterFromClass","enterActiveClass","enterToClass","leaveFromClass","leaveActiveClass","leaveToClass","Intl","DateTimeFormat","weekday","format","usePanel","handlers","escDown","installQuasar","useQuasar","$parent","fillNormalizedVNodes","vnodes","vmHasRouter","$router","isUnmounted","isDeactivated","trueValue","falseValue","indeterminateValue","toggleOrder","toggleIndeterminate","modelIsArray","isFalse","getNextValue","getInnerContent","getDirsFn","plugin","reactiveState","getOriginalPath","record","aliasOf","isSameRouteRecord","includesParams","outerValue","isEquivalentArray","isSameRouteLocationParamsValue","isSameRouteLocationParams","exactActiveClass","useDisableForRouterLinkProps","hasRouter","hasHrefLink","hasRouterLinkProps","getLink","linkActiveIndex","routeMatched","currentMatched","bind","parentRecordPath","linkIsActive","params","linkIsExactActive","ctrlKey","button","promise","listener","processShow","processHide","processModelChange","publicMethods","hasPassive","changedTouches","targetTouches","clientY","clientX","composedPath","tagName","parentElement","stopPropagation","cancelable","status","__dragPrevented","targetName","lastKeyCompositionStatus","iconRemove","iconSelected","removable","removeAriaLabel","hasLeftIcon","removeIcon","onRemove","aggBucketSize","scrollToEdges","filterProto","setOverflowAnchor","overflowAnchor","cancelAnimationFrame","_qOverflowAnimationFrame","dataset","qVsAnchor","sumFn","getScrollDetails","beforeRef","afterRef","stickyStart","stickyEnd","parentCalc","propElSize","scrollStart","scrollViewSize","scrollMaxSize","offsetStart","offsetEnd","previousElementSibling","nextElementSibling","parentRect","childRect","sumSize","sizeAgg","lastTo","fromAgg","toAgg","commonVirtScrollProps","virtualScrollSliceSize","virtualScrollSliceRatioBefore","virtualScrollSliceRatioAfter","virtualScrollItemSize","virtualScrollStickySizeStart","virtualScrollStickySizeEnd","tableColspan","useVirtualScrollProps","virtualScrollHorizontal","onVirtualScroll","useVirtualScroll","virtualScrollLength","getVirtualScrollTarget","getVirtualScrollEl","virtualScrollItemSizeComputed","prevScrollStart","prevToIndex","localScrollViewSize","virtualScrollSizes","virtualScrollSizesAgg","virtualScrollPaddingBefore","virtualScrollPaddingAfter","virtualScrollSliceSizeComputed","virtualScrollSliceRange","colspanAttr","needsReset","needsSliceRecalc","localResetVirtualScroll","toIndex","scrollEl","scrollDetails","setVirtualScrollSize","setVirtualScrollSliceRange","localOnVirtualScrollEvt","listLastIndex","listEndOffset","updateVirtualScrollSizes","scrollMaxStart","listOffset","alignForce","alignEnd","alignRange","rangeChanged","onBlurRefocusFn","sizeBefore","tempTo","sizeAfter","posStart","posEnd","sizeDiff","childrenLength","sizeFn","fullReset","defaultSize","oldVirtualScrollSizesLength","jMax","iMax","onVirtualScrollEvt","baseSize","padVirtualScroll","paddingSize","colspan","onBeforeMount","validateNewValueMode","reEscapeList","fieldPropsList","displayValueHtml","dropdownIcon","optionValue","optionLabel","optionDisable","hideSelected","hideDropdownIcon","fillInput","optionsDense","optionsDark","optionsSelectedClass","optionsHtml","optionsCover","menuShrink","menuAnchor","menuSelf","menuOffset","popupContentClass","popupContentStyle","useInput","useChips","newValueMode","mapOptions","inputDebounce","autocomplete","behavior","onNewValue","onFilter","menu","optionIndex","inputValue","dialogFieldFocused","innerLoadingIndicator","inputTimer","innerValueCache","hasDialog","userInputValue","filterId","defaultInputValue","transitionShowComputed","searchBuffer","searchBufferExp","menuRef","menuContentRef","mapNull","cache","getOption","innerFieldProps","isOptionsDark","computedInputClass","menuContentClass","noOptions","selectedString","getOptionLabel","ariaCurrentValue","needsHtmlFn","valueAsHtml","comboboxAttrs","listboxAttrs","selectedScope","removeAtIndex","removeAtIndexAndFocus","toggleOption","optionScope","isOptionDisabled","itemProps","computedOptionsSelectedClass","isOptionSelected","onMousemove","setOptionIndex","dropdownArrowIcon","squaredMenu","getOptionValue","getPropValueFn","innerOptionsValue","inputControlEvents","onTargetKeydown","onTargetAutocomplete","onKeypress","onTargetKeypress","selectInputText","getEmittingOptionValue","unique","updateInputValue","keepOpen","optValue","hidePopup","moveOptionSelection","skipInputValue","setInputValue","valueCache","propValue","defaultVal","onTargetKeyup","resetInputValue","needle","findFn","extractFn","option","fillFn","afterFilter","newValueModeValid","tabShouldSelect","closeMenu","showPopup","optionsLength","keyRepeat","searchRe","l","getSelection","scope","QChip","getAllOptions","getInput","fromDialog","isTarget","noFiltering","internal","keepClosed","afterUpdateFn","localFilterId","afterFn","updateMenu","getMenu","onScrollPassive","onBeforeShow","onControlPopupShow","onBeforeHide","onMenuBeforeHide","onMenuShow","onControlPopupHide","onDialogFieldFocus","onDialogFieldBlur","getDialog","QField","onDialogBeforeHide","onDialogShow","rerenderMenu","newLength","oldLength","updateMenuPosition","updatePreState","onUpdated","getOptionIndex","tickFn","revealOffset","refocusRef","root","insetMap","true","margins","spaced","inset","orientClass","insetClass","languages","language","__langPack","langObject","axisValues","parentEl","clearTimer","curDir","getPosition","spread","btnPropsList","passBtnProps","disableMainBtn","disableDropdown","noIconAnimation","ariaAttrs","iconClass","btnDesignAttr","onClickHide","Arrow","QBtnGroup","empty","removeAllRanges","addRange","createRange","unref","focusedEl","activeGroups","originalDefaults","messageColor","backgroundColor","boxClass","customClass","registerProps","newProps","onAfterLeave","paramProps","lastGroup","queue","waitFlags","clearFlag","flag"],"mappings":"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","file":"vueDist/js/quasar.dc9f464b.js","sourcesContent":["import { h, computed, getCurrentInstance } from 'vue'\n\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot, hMergeSlot } from '../../utils/private/render.js'\n\nconst defaultViewBox = '0 0 24 24'\n\nconst sameFn = i => i\nconst ionFn = i => `ionicons ${ i }`\n\nconst libMap = {\n 'mdi-': i => `mdi ${ i }`,\n 'icon-': sameFn, // fontawesome equiv\n 'bt-': i => `bt ${ i }`,\n 'eva-': i => `eva ${ i }`,\n 'ion-md': ionFn,\n 'ion-ios': ionFn,\n 'ion-logo': ionFn,\n 'iconfont ': sameFn,\n 'ti-': i => `themify-icon ${ i }`,\n 'bi-': i => `bootstrap-icons ${ i }`\n}\n\nconst matMap = {\n o_: '-outlined',\n r_: '-round',\n s_: '-sharp'\n}\n\nconst symMap = {\n sym_o_: '-outlined',\n sym_r_: '-rounded',\n sym_s_: '-sharp'\n}\n\nconst libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')')\nconst matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')')\nconst symRE = new RegExp('^(' + Object.keys(symMap).join('|') + ')')\nconst mRE = /^[Mm]\\s?[-+]?\\.?\\d/\nconst imgRE = /^img:/\nconst svgUseRE = /^svguse:/\nconst ionRE = /^ion-/\nconst faRE = /^(fa-(solid|regular|light|brands|duotone|thin)|[lf]a[srlbdk]?) /\n\nexport default createComponent({\n name: 'QIcon',\n\n props: {\n ...useSizeProps,\n\n tag: {\n type: String,\n default: 'i'\n },\n\n name: String,\n color: String,\n left: Boolean,\n right: Boolean\n },\n\n setup (props, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n const sizeStyle = useSize(props)\n\n const classes = computed(() =>\n 'q-icon'\n + (props.left === true ? ' on-left' : '') // TODO Qv3: drop this\n + (props.right === true ? ' on-right' : '')\n + (props.color !== void 0 ? ` text-${ props.color }` : '')\n )\n\n const type = computed(() => {\n let cls\n let icon = props.name\n\n if (icon === 'none' || !icon) {\n return { none: true }\n }\n\n if ($q.iconMapFn !== null) {\n const res = $q.iconMapFn(icon)\n if (res !== void 0) {\n if (res.icon !== void 0) {\n icon = res.icon\n if (icon === 'none' || !icon) {\n return { none: true }\n }\n }\n else {\n return {\n cls: res.cls,\n content: res.content !== void 0\n ? res.content\n : ' '\n }\n }\n }\n }\n\n if (mRE.test(icon) === true) {\n const [ def, viewBox = defaultViewBox ] = icon.split('|')\n\n return {\n svg: true,\n viewBox,\n nodes: def.split('&&').map(path => {\n const [ d, style, transform ] = path.split('@@')\n return h('path', { style, d, transform })\n })\n }\n }\n\n if (imgRE.test(icon) === true) {\n return {\n img: true,\n src: icon.substring(4)\n }\n }\n\n if (svgUseRE.test(icon) === true) {\n const [ def, viewBox = defaultViewBox ] = icon.split('|')\n\n return {\n svguse: true,\n src: def.substring(7),\n viewBox\n }\n }\n\n let content = ' '\n const matches = icon.match(libRE)\n\n if (matches !== null) {\n cls = libMap[ matches[ 1 ] ](icon)\n }\n else if (faRE.test(icon) === true) {\n cls = icon\n }\n else if (ionRE.test(icon) === true) {\n cls = `ionicons ion-${ $q.platform.is.ios === true ? 'ios' : 'md' }${ icon.substring(3) }`\n }\n else if (symRE.test(icon) === true) {\n // \"notranslate\" class is for Google Translate\n // to avoid tampering with Material Symbols ligature font\n //\n // Caution: To be able to add suffix to the class name,\n // keep the 'material-symbols' at the end of the string.\n cls = 'notranslate material-symbols'\n\n const matches = icon.match(symRE)\n if (matches !== null) {\n icon = icon.substring(6)\n cls += symMap[ matches[ 1 ] ]\n }\n\n content = icon\n }\n else {\n // \"notranslate\" class is for Google Translate\n // to avoid tampering with Material Icons ligature font\n //\n // Caution: To be able to add suffix to the class name,\n // keep the 'material-icons' at the end of the string.\n cls = 'notranslate material-icons'\n\n const matches = icon.match(matRE)\n if (matches !== null) {\n icon = icon.substring(2)\n cls += matMap[ matches[ 1 ] ]\n }\n\n content = icon\n }\n\n return {\n cls,\n content\n }\n })\n\n return () => {\n const data = {\n class: classes.value,\n style: sizeStyle.value,\n 'aria-hidden': 'true',\n role: 'presentation'\n }\n\n if (type.value.none === true) {\n return h(props.tag, data, hSlot(slots.default))\n }\n\n if (type.value.img === true) {\n return h('span', data, hMergeSlot(slots.default, [\n h('img', { src: type.value.src })\n ]))\n }\n\n if (type.value.svg === true) {\n return h('span', data, hMergeSlot(slots.default, [\n h('svg', {\n viewBox: type.value.viewBox || '0 0 24 24'\n }, type.value.nodes)\n ]))\n }\n\n if (type.value.svguse === true) {\n return h('span', data, hMergeSlot(slots.default, [\n h('svg', {\n viewBox: type.value.viewBox\n }, [\n h('use', { 'xlink:href': type.value.src })\n ])\n ]))\n }\n\n if (type.value.cls !== void 0) {\n data.class += ' ' + type.value.cls\n }\n\n return h(props.tag, data, hMergeSlot(slots.default, [\n type.value.content\n ]))\n }\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QItemLabel',\n\n props: {\n overline: Boolean,\n caption: Boolean,\n header: Boolean,\n lines: [ Number, String ]\n },\n\n setup (props, { slots }) {\n const parsedLines = computed(() => parseInt(props.lines, 10))\n\n const classes = computed(() =>\n 'q-item__label'\n + (props.overline === true ? ' q-item__label--overline text-overline' : '')\n + (props.caption === true ? ' q-item__label--caption text-caption' : '')\n + (props.header === true ? ' q-item__label--header' : '')\n + (parsedLines.value === 1 ? ' ellipsis' : '')\n )\n\n const style = computed(() => {\n return props.lines !== void 0 && parsedLines.value > 1\n ? {\n overflow: 'hidden',\n display: '-webkit-box',\n '-webkit-box-orient': 'vertical',\n '-webkit-line-clamp': parsedLines.value\n }\n : null\n })\n\n return () => h('div', {\n style: style.value,\n class: classes.value\n }, hSlot(slots.default))\n }\n})\n","import { h, ref, onActivated, onDeactivated, onMounted, getCurrentInstance, nextTick, provide } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { formKey } from '../../utils/private/symbols.js'\nimport { vmIsDestroyed } from '../../utils/private/vm.js'\n\nexport default createComponent({\n name: 'QForm',\n\n props: {\n autofocus: Boolean,\n noErrorFocus: Boolean,\n noResetFocus: Boolean,\n greedy: Boolean,\n\n onSubmit: Function\n },\n\n emits: [ 'reset', 'validationSuccess', 'validationError' ],\n\n setup (props, { slots, emit }) {\n const vm = getCurrentInstance()\n const rootRef = ref(null)\n\n let validateIndex = 0\n const registeredComponents = []\n\n function validate (shouldFocus) {\n const focus = typeof shouldFocus === 'boolean'\n ? shouldFocus\n : props.noErrorFocus !== true\n\n const index = ++validateIndex\n\n const emitEvent = (res, ref) => {\n emit('validation' + (res === true ? 'Success' : 'Error'), ref)\n }\n\n const validateComponent = comp => {\n const valid = comp.validate()\n\n return typeof valid.then === 'function'\n ? valid.then(\n valid => ({ valid, comp }),\n err => ({ valid: false, comp, err })\n )\n : Promise.resolve({ valid, comp })\n }\n\n const errorsPromise = props.greedy === true\n ? Promise\n .all(registeredComponents.map(validateComponent))\n .then(res => res.filter(r => r.valid !== true))\n : registeredComponents\n .reduce(\n (acc, comp) => acc.then(() => {\n return validateComponent(comp).then(r => {\n if (r.valid === false) { return Promise.reject(r) }\n })\n }),\n Promise.resolve()\n )\n .catch(error => [ error ])\n\n return errorsPromise.then(errors => {\n if (errors === void 0 || errors.length === 0) {\n index === validateIndex && emitEvent(true)\n return true\n }\n\n // if not outdated already\n if (index === validateIndex) {\n const { comp, err } = errors[ 0 ]\n\n err !== void 0 && console.error(err)\n emitEvent(false, comp)\n\n if (focus === true) {\n // Try to focus first mounted and active component\n const activeError = errors.find(({ comp }) => (\n typeof comp.focus === 'function'\n && vmIsDestroyed(comp.$) === false\n ))\n\n if (activeError !== void 0) {\n activeError.comp.focus()\n }\n }\n }\n\n return false\n })\n }\n\n function resetValidation () {\n validateIndex++\n\n registeredComponents.forEach(comp => {\n typeof comp.resetValidation === 'function' && comp.resetValidation()\n })\n }\n\n function submit (evt) {\n evt !== void 0 && stopAndPrevent(evt)\n\n const index = validateIndex + 1\n\n validate().then(val => {\n // if not outdated && validation succeeded\n if (index === validateIndex && val === true) {\n if (props.onSubmit !== void 0) {\n emit('submit', evt)\n }\n else if (evt !== void 0 && evt.target !== void 0 && typeof evt.target.submit === 'function') {\n evt.target.submit()\n }\n }\n })\n }\n\n function reset (evt) {\n evt !== void 0 && stopAndPrevent(evt)\n\n emit('reset')\n\n nextTick(() => { // allow userland to reset values before\n resetValidation()\n if (props.autofocus === true && props.noResetFocus !== true) {\n focus()\n }\n })\n }\n\n function focus () {\n addFocusFn(() => {\n if (rootRef.value === null) { return }\n\n const target = rootRef.value.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')\n || rootRef.value.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')\n || rootRef.value.querySelector('[autofocus], [data-autofocus]')\n || Array.prototype.find.call(rootRef.value.querySelectorAll('[tabindex]'), el => el.tabIndex > -1)\n\n target !== null && target !== void 0 && target.focus({ preventScroll: true })\n })\n }\n\n provide(formKey, {\n bindComponent (vmProxy) {\n registeredComponents.push(vmProxy)\n },\n\n unbindComponent (vmProxy) {\n const index = registeredComponents.indexOf(vmProxy)\n if (index > -1) {\n registeredComponents.splice(index, 1)\n }\n }\n })\n\n let shouldActivate = false\n\n onDeactivated(() => {\n shouldActivate = true\n })\n\n onActivated(() => {\n shouldActivate === true && props.autofocus === true && focus()\n })\n\n onMounted(() => {\n props.autofocus === true && focus()\n })\n\n // expose public methods\n Object.assign(vm.proxy, {\n validate,\n resetValidation,\n submit,\n reset,\n focus,\n getValidationComponents: () => registeredComponents\n })\n\n return () => h('form', {\n class: 'q-form',\n ref: rootRef,\n onSubmit: submit,\n onReset: reset\n }, hSlot(slots.default))\n }\n})\n","import { defineComponent, markRaw } from 'vue'\n\nexport const createComponent = raw => markRaw(defineComponent(raw))\nexport const createDirective = raw => markRaw(raw)\n","import { client } from '../plugins/Platform.js'\n\nimport { createDirective } from '../utils/private/create.js'\nimport { getModifierDirections, shouldStart } from '../utils/private/touch.js'\nimport { addEvt, cleanEvt, position, leftClick, stopAndPrevent, preventDraggable, noop } from '../utils/event.js'\nimport { clearSelection } from '../utils/private/selection.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.js'\n\nfunction parseArg (arg) {\n // delta (min velocity -- dist / time)\n // mobile min distance on first move\n // desktop min distance until deciding if it's a swipe or not\n const data = [ 0.06, 6, 50 ]\n\n if (typeof arg === 'string' && arg.length) {\n arg.split(':').forEach((val, index) => {\n const v = parseFloat(val)\n v && (data[ index ] = v)\n })\n }\n\n return data\n}\n\nexport default createDirective(__QUASAR_SSR_SERVER__\n ? { name: 'touch-swipe', getSSRProps }\n : {\n name: 'touch-swipe',\n\n beforeMount (el, { value, arg, modifiers }) {\n // early return, we don't need to do anything\n if (modifiers.mouse !== true && client.has.touch !== true) {\n return\n }\n\n const mouseCapture = modifiers.mouseCapture === true ? 'Capture' : ''\n\n const ctx = {\n handler: value,\n sensitivity: parseArg(arg),\n direction: getModifierDirections(modifiers),\n\n noop,\n\n mouseStart (evt) {\n if (shouldStart(evt, ctx) && leftClick(evt)) {\n addEvt(ctx, 'temp', [\n [ document, 'mousemove', 'move', `notPassive${ mouseCapture }` ],\n [ document, 'mouseup', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt, true)\n }\n },\n\n touchStart (evt) {\n if (shouldStart(evt, ctx)) {\n const target = evt.target\n addEvt(ctx, 'temp', [\n [ target, 'touchmove', 'move', 'notPassiveCapture' ],\n [ target, 'touchcancel', 'end', 'notPassiveCapture' ],\n [ target, 'touchend', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt)\n }\n },\n\n start (evt, mouseEvent) {\n client.is.firefox === true && preventDraggable(el, true)\n\n const pos = position(evt)\n\n ctx.event = {\n x: pos.left,\n y: pos.top,\n time: Date.now(),\n mouse: mouseEvent === true,\n dir: false\n }\n },\n\n move (evt) {\n if (ctx.event === void 0) {\n return\n }\n\n if (ctx.event.dir !== false) {\n stopAndPrevent(evt)\n return\n }\n\n const time = Date.now() - ctx.event.time\n\n if (time === 0) {\n return\n }\n\n const\n pos = position(evt),\n distX = pos.left - ctx.event.x,\n absX = Math.abs(distX),\n distY = pos.top - ctx.event.y,\n absY = Math.abs(distY)\n\n if (ctx.event.mouse !== true) {\n if (absX < ctx.sensitivity[ 1 ] && absY < ctx.sensitivity[ 1 ]) {\n ctx.end(evt)\n return\n }\n }\n else if (absX < ctx.sensitivity[ 2 ] && absY < ctx.sensitivity[ 2 ]) {\n return\n }\n\n const\n velX = absX / time,\n velY = absY / time\n\n if (\n ctx.direction.vertical === true\n && absX < absY\n && absX < 100\n && velY > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = distY < 0 ? 'up' : 'down'\n }\n\n if (\n ctx.direction.horizontal === true\n && absX > absY\n && absY < 100\n && velX > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = distX < 0 ? 'left' : 'right'\n }\n\n if (\n ctx.direction.up === true\n && absX < absY\n && distY < 0\n && absX < 100\n && velY > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'up'\n }\n\n if (\n ctx.direction.down === true\n && absX < absY\n && distY > 0\n && absX < 100\n && velY > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'down'\n }\n\n if (\n ctx.direction.left === true\n && absX > absY\n && distX < 0\n && absY < 100\n && velX > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'left'\n }\n\n if (\n ctx.direction.right === true\n && absX > absY\n && distX > 0\n && absY < 100\n && velX > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'right'\n }\n\n if (ctx.event.dir !== false) {\n stopAndPrevent(evt)\n\n if (ctx.event.mouse === true) {\n document.body.classList.add('no-pointer-events--children')\n document.body.classList.add('non-selectable')\n clearSelection()\n\n ctx.styleCleanup = withDelay => {\n ctx.styleCleanup = void 0\n\n document.body.classList.remove('non-selectable')\n\n const remove = () => {\n document.body.classList.remove('no-pointer-events--children')\n }\n\n if (withDelay === true) { setTimeout(remove, 50) }\n else { remove() }\n }\n }\n\n ctx.handler({\n evt,\n touch: ctx.event.mouse !== true,\n mouse: ctx.event.mouse,\n direction: ctx.event.dir,\n duration: time,\n distance: {\n x: absX,\n y: absY\n }\n })\n }\n else {\n ctx.end(evt)\n }\n },\n\n end (evt) {\n if (ctx.event === void 0) {\n return\n }\n\n cleanEvt(ctx, 'temp')\n client.is.firefox === true && preventDraggable(el, false)\n ctx.styleCleanup !== void 0 && ctx.styleCleanup(true)\n evt !== void 0 && ctx.event.dir !== false && stopAndPrevent(evt)\n\n ctx.event = void 0\n }\n }\n\n el.__qtouchswipe = ctx\n\n if (modifiers.mouse === true) {\n // account for UMD too where modifiers will be lowercased to work\n const capture = modifiers.mouseCapture === true || modifiers.mousecapture === true\n ? 'Capture'\n : ''\n\n addEvt(ctx, 'main', [\n [ el, 'mousedown', 'mouseStart', `passive${ capture }` ]\n ])\n }\n\n client.has.touch === true && addEvt(ctx, 'main', [\n [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],\n [ el, 'touchmove', 'noop', 'notPassiveCapture' ] // cannot be passive (ex: iOS scroll)\n ])\n },\n\n updated (el, bindings) {\n const ctx = el.__qtouchswipe\n\n if (ctx !== void 0) {\n if (bindings.oldValue !== bindings.value) {\n typeof bindings.value !== 'function' && ctx.end()\n ctx.handler = bindings.value\n }\n\n ctx.direction = getModifierDirections(bindings.modifiers)\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qtouchswipe\n\n if (ctx !== void 0) {\n cleanEvt(ctx, 'main')\n cleanEvt(ctx, 'temp')\n\n client.is.firefox === true && preventDraggable(el, false)\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n delete el.__qtouchswipe\n }\n }\n }\n)\n","import { h, ref, computed, watch, nextTick, getCurrentInstance, Transition, KeepAlive } from 'vue'\n\nimport TouchSwipe from '../../directives/TouchSwipe.js'\n\nimport useCache from '../../composables/private/use-cache.js'\n\nimport { hSlot } from '../../utils/private/render.js'\nimport { getNormalizedVNodes } from '../../utils/private/vm.js'\n\nexport const usePanelChildProps = {\n name: { required: true },\n disable: Boolean\n}\n\nconst PanelWrapper = {\n setup (_, { slots }) {\n return () => h('div', {\n class: 'q-panel scroll',\n role: 'tabpanel'\n }, hSlot(slots.default))\n }\n}\n\nexport const usePanelProps = {\n modelValue: {\n required: true\n },\n\n animated: Boolean,\n infinite: Boolean,\n swipeable: Boolean,\n vertical: Boolean,\n\n transitionPrev: String,\n transitionNext: String,\n transitionDuration: {\n type: [ String, Number ],\n default: 300\n },\n\n keepAlive: Boolean,\n keepAliveInclude: [ String, Array, RegExp ],\n keepAliveExclude: [ String, Array, RegExp ],\n keepAliveMax: Number\n}\n\nexport const usePanelEmits = [ 'update:modelValue', 'beforeTransition', 'transition' ]\n\nexport default function () {\n const { props, emit, proxy } = getCurrentInstance()\n const { getCacheWithFn } = useCache()\n\n let panels, forcedPanelTransition\n\n const panelIndex = ref(null)\n const panelTransition = ref(null)\n\n function onSwipe (evt) {\n const dir = props.vertical === true ? 'up' : 'left'\n goToPanelByOffset((proxy.$q.lang.rtl === true ? -1 : 1) * (evt.direction === dir ? 1 : -1))\n }\n\n const panelDirectives = computed(() => {\n // if props.swipeable\n return [ [\n TouchSwipe,\n onSwipe,\n void 0,\n {\n horizontal: props.vertical !== true,\n vertical: props.vertical,\n mouse: true\n }\n ] ]\n })\n\n const transitionPrev = computed(() =>\n props.transitionPrev || `slide-${ props.vertical === true ? 'down' : 'right' }`\n )\n\n const transitionNext = computed(() =>\n props.transitionNext || `slide-${ props.vertical === true ? 'up' : 'left' }`\n )\n\n const transitionStyle = computed(\n () => `--q-transition-duration: ${ props.transitionDuration }ms`\n )\n\n const contentKey = computed(() => (\n typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? props.modelValue\n : String(props.modelValue)\n ))\n\n const keepAliveProps = computed(() => ({\n include: props.keepAliveInclude,\n exclude: props.keepAliveExclude,\n max: props.keepAliveMax\n }))\n\n const needsUniqueKeepAliveWrapper = computed(() =>\n props.keepAliveInclude !== void 0\n || props.keepAliveExclude !== void 0\n )\n\n watch(() => props.modelValue, (newVal, oldVal) => {\n const index = isValidPanelName(newVal) === true\n ? getPanelIndex(newVal)\n : -1\n\n if (forcedPanelTransition !== true) {\n updatePanelTransition(\n index === -1 ? 0 : (index < getPanelIndex(oldVal) ? -1 : 1)\n )\n }\n\n if (panelIndex.value !== index) {\n panelIndex.value = index\n emit('beforeTransition', newVal, oldVal)\n nextTick(() => {\n emit('transition', newVal, oldVal)\n })\n }\n })\n\n function nextPanel () { goToPanelByOffset(1) }\n function previousPanel () { goToPanelByOffset(-1) }\n\n function goToPanel (name) {\n emit('update:modelValue', name)\n }\n\n function isValidPanelName (name) {\n return name !== void 0 && name !== null && name !== ''\n }\n\n function getPanelIndex (name) {\n return panels.findIndex(panel => {\n return panel.props.name === name\n && panel.props.disable !== ''\n && panel.props.disable !== true\n })\n }\n\n function getEnabledPanels () {\n return panels.filter(panel => {\n return panel.props.disable !== ''\n && panel.props.disable !== true\n })\n }\n\n function updatePanelTransition (direction) {\n const val = direction !== 0 && props.animated === true && panelIndex.value !== -1\n ? 'q-transition--' + (direction === -1 ? transitionPrev.value : transitionNext.value)\n : null\n\n if (panelTransition.value !== val) {\n panelTransition.value = val\n }\n }\n\n function goToPanelByOffset (direction, startIndex = panelIndex.value) {\n let index = startIndex + direction\n\n while (index > -1 && index < panels.length) {\n const opt = panels[ index ]\n\n if (\n opt !== void 0\n && opt.props.disable !== ''\n && opt.props.disable !== true\n ) {\n updatePanelTransition(direction)\n forcedPanelTransition = true\n emit('update:modelValue', opt.props.name)\n setTimeout(() => {\n forcedPanelTransition = false\n })\n return\n }\n\n index += direction\n }\n\n if (props.infinite === true && panels.length > 0 && startIndex !== -1 && startIndex !== panels.length) {\n goToPanelByOffset(direction, direction === -1 ? panels.length : -1)\n }\n }\n\n function updatePanelIndex () {\n const index = getPanelIndex(props.modelValue)\n\n if (panelIndex.value !== index) {\n panelIndex.value = index\n }\n\n return true\n }\n\n function getPanelContentChild () {\n const panel = isValidPanelName(props.modelValue) === true\n && updatePanelIndex()\n && panels[ panelIndex.value ]\n\n return props.keepAlive === true\n ? [\n h(KeepAlive, keepAliveProps.value, [\n h(\n needsUniqueKeepAliveWrapper.value === true\n ? getCacheWithFn(contentKey.value, () => ({ ...PanelWrapper, name: contentKey.value }))\n : PanelWrapper,\n { key: contentKey.value, style: transitionStyle.value },\n () => panel\n )\n ])\n ]\n : [\n h('div', {\n class: 'q-panel scroll',\n style: transitionStyle.value,\n key: contentKey.value,\n role: 'tabpanel'\n }, [ panel ])\n ]\n }\n\n function getPanelContent () {\n if (panels.length === 0) {\n return\n }\n\n return props.animated === true\n ? [ h(Transition, { name: panelTransition.value }, getPanelContentChild) ]\n : getPanelContentChild()\n }\n\n function updatePanelsList (slots) {\n panels = getNormalizedVNodes(\n hSlot(slots.default, [])\n ).filter(\n panel => panel.props !== null\n && panel.props.slot === void 0\n && isValidPanelName(panel.props.name) === true\n )\n\n return panels.length\n }\n\n function getPanels () {\n return panels\n }\n\n // expose public methods\n Object.assign(proxy, {\n next: nextPanel,\n previous: previousPanel,\n goTo: goToPanel\n })\n\n return {\n panelIndex,\n panelDirectives,\n\n updatePanelsList,\n updatePanelIndex,\n\n getPanelContent,\n getEnabledPanels,\n getPanels,\n\n isValidPanelName,\n\n keepAliveProps,\n needsUniqueKeepAliveWrapper,\n\n goToPanelByOffset,\n goToPanel,\n\n nextPanel,\n previousPanel\n }\n}\n","import { h, ref, computed, watch, onBeforeUnmount, Transition, getCurrentInstance } from 'vue'\n\nimport useAnchor, { useAnchorProps } from '../../composables/private/use-anchor.js'\nimport useScrollTarget from '../../composables/private/use-scroll-target.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport usePortal from '../../composables/private/use-portal.js'\nimport useTransition, { useTransitionProps } from '../../composables/private/use-transition.js'\nimport useTick from '../../composables/private/use-tick.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { stopAndPrevent, addEvt, cleanEvt } from '../../utils/event.js'\nimport { clearSelection } from '../../utils/private/selection.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { addClickOutside, removeClickOutside } from '../../utils/private/click-outside.js'\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/private/position-engine.js'\n\nexport default createComponent({\n name: 'QTooltip',\n\n inheritAttrs: false,\n\n props: {\n ...useAnchorProps,\n ...useModelToggleProps,\n ...useTransitionProps,\n\n maxHeight: {\n type: String,\n default: null\n },\n maxWidth: {\n type: String,\n default: null\n },\n\n transitionShow: {\n default: 'jump-down'\n },\n transitionHide: {\n default: 'jump-up'\n },\n\n anchor: {\n type: String,\n default: 'bottom middle',\n validator: validatePosition\n },\n self: {\n type: String,\n default: 'top middle',\n validator: validatePosition\n },\n offset: {\n type: Array,\n default: () => [ 14, 14 ],\n validator: validateOffset\n },\n\n scrollTarget: {\n default: void 0\n },\n\n delay: {\n type: Number,\n default: 0\n },\n\n hideDelay: {\n type: Number,\n default: 0\n }\n },\n\n emits: [\n ...useModelToggleEmits\n ],\n\n setup (props, { slots, emit, attrs }) {\n let unwatchPosition, observer\n\n const vm = getCurrentInstance()\n const { proxy: { $q } } = vm\n\n const innerRef = ref(null)\n const showing = ref(false)\n\n const anchorOrigin = computed(() => parsePosition(props.anchor, $q.lang.rtl))\n const selfOrigin = computed(() => parsePosition(props.self, $q.lang.rtl))\n const hideOnRouteChange = computed(() => props.persistent !== true)\n\n const { registerTick, removeTick } = useTick()\n const { registerTimeout } = useTimeout()\n const { transitionProps, transitionStyle } = useTransition(props)\n const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget)\n\n const { anchorEl, canShow, anchorEvents } = useAnchor({ showing, configureAnchorEl })\n\n const { show, hide } = useModelToggle({\n showing, canShow, handleShow, handleHide,\n hideOnRouteChange,\n processOnMount: true\n })\n\n Object.assign(anchorEvents, { delayShow, delayHide })\n\n const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent)\n\n // if we're on mobile, let's improve the experience\n // by closing it when user taps outside of it\n if ($q.platform.is.mobile === true) {\n const clickOutsideProps = {\n anchorEl,\n innerRef,\n onClickOutside (e) {\n hide(e)\n\n // prevent click if it's on a dialog backdrop\n if (e.target.classList.contains('q-dialog__backdrop')) {\n stopAndPrevent(e)\n }\n\n return true\n }\n }\n\n const hasClickOutside = computed(() =>\n // it doesn't has external model\n // (null is the default value)\n props.modelValue === null\n // and it's not persistent\n && props.persistent !== true\n && showing.value === true\n )\n\n watch(hasClickOutside, val => {\n const fn = val === true ? addClickOutside : removeClickOutside\n fn(clickOutsideProps)\n })\n\n onBeforeUnmount(() => {\n removeClickOutside(clickOutsideProps)\n })\n }\n\n function handleShow (evt) {\n showPortal()\n\n // should removeTick() if this gets removed\n registerTick(() => {\n observer = new MutationObserver(() => updatePosition())\n observer.observe(innerRef.value, { attributes: false, childList: true, characterData: true, subtree: true })\n updatePosition()\n configureScrollTarget()\n })\n\n if (unwatchPosition === void 0) {\n unwatchPosition = watch(\n () => $q.screen.width + '|' + $q.screen.height + '|' + props.self + '|' + props.anchor + '|' + $q.lang.rtl,\n updatePosition\n )\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n showPortal(true) // done showing portal\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTick()\n hidePortal()\n\n anchorCleanup()\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n hidePortal(true) // done hiding, now destroy\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function anchorCleanup () {\n if (observer !== void 0) {\n observer.disconnect()\n observer = void 0\n }\n\n if (unwatchPosition !== void 0) {\n unwatchPosition()\n unwatchPosition = void 0\n }\n\n unconfigureScrollTarget()\n cleanEvt(anchorEvents, 'tooltipTemp')\n }\n\n function updatePosition () {\n const el = innerRef.value\n\n if (anchorEl.value === null || !el) {\n return\n }\n\n setPosition({\n el,\n offset: props.offset,\n anchorEl: anchorEl.value,\n anchorOrigin: anchorOrigin.value,\n selfOrigin: selfOrigin.value,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth\n })\n }\n\n function delayShow (evt) {\n if ($q.platform.is.mobile === true) {\n clearSelection()\n document.body.classList.add('non-selectable')\n\n const target = anchorEl.value\n const evts = [ 'touchmove', 'touchcancel', 'touchend', 'click' ]\n .map(e => ([ target, e, 'delayHide', 'passiveCapture' ]))\n\n addEvt(anchorEvents, 'tooltipTemp', evts)\n }\n\n registerTimeout(() => { show(evt) }, props.delay)\n }\n\n function delayHide (evt) {\n if ($q.platform.is.mobile === true) {\n cleanEvt(anchorEvents, 'tooltipTemp')\n clearSelection()\n // delay needed otherwise selection still occurs\n setTimeout(() => {\n document.body.classList.remove('non-selectable')\n }, 10)\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => { hide(evt) }, props.hideDelay)\n }\n\n function configureAnchorEl () {\n if (props.noParentEvent === true || anchorEl.value === null) { return }\n\n const evts = $q.platform.is.mobile === true\n ? [\n [ anchorEl.value, 'touchstart', 'delayShow', 'passive' ]\n ]\n : [\n [ anchorEl.value, 'mouseenter', 'delayShow', 'passive' ],\n [ anchorEl.value, 'mouseleave', 'delayHide', 'passive' ]\n ]\n\n addEvt(anchorEvents, 'anchor', evts)\n }\n\n function configureScrollTarget () {\n if (anchorEl.value !== null || props.scrollTarget !== void 0) {\n localScrollTarget.value = getScrollTarget(anchorEl.value, props.scrollTarget)\n const fn = props.noParentEvent === true\n ? updatePosition\n : hide\n\n changeScrollEvent(localScrollTarget.value, fn)\n }\n }\n\n function getTooltipContent () {\n return showing.value === true\n ? h('div', {\n ...attrs,\n ref: innerRef,\n class: [\n 'q-tooltip q-tooltip--style q-position-engine no-pointer-events',\n attrs.class\n ],\n style: [\n attrs.style,\n transitionStyle.value\n ],\n role: 'tooltip'\n }, hSlot(slots.default))\n : null\n }\n\n function renderPortalContent () {\n return h(Transition, transitionProps.value, getTooltipContent)\n }\n\n onBeforeUnmount(anchorCleanup)\n\n // expose public methods\n Object.assign(vm.proxy, { updatePosition })\n\n return renderPortal\n }\n})\n","import { computed } from 'vue'\n\nexport const useRatioProps = {\n ratio: [ String, Number ]\n}\n\nexport default function (props, naturalRatio) {\n // return ratioStyle\n return computed(() => {\n const ratio = Number(\n props.ratio || (naturalRatio !== void 0 ? naturalRatio.value : void 0)\n )\n\n return isNaN(ratio) !== true && ratio > 0\n ? { paddingBottom: `${ 100 / ratio }%` }\n : null\n })\n}\n","import { h, ref, computed, watch, onMounted, onBeforeUnmount, Transition } from 'vue'\n\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport useRatio, { useRatioProps } from '../../composables/private/use-ratio.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nconst defaultRatio = 16 / 9\n\nexport default createComponent({\n name: 'QImg',\n\n props: {\n ...useRatioProps,\n\n src: String,\n srcset: String,\n sizes: String,\n\n alt: String,\n crossorigin: String,\n decoding: String,\n referrerpolicy: String,\n\n draggable: Boolean,\n\n loading: {\n type: String,\n default: 'lazy'\n },\n fetchpriority: {\n type: String,\n default: 'auto'\n },\n width: String,\n height: String,\n initialRatio: {\n type: [ Number, String ],\n default: defaultRatio\n },\n\n placeholderSrc: String,\n\n fit: {\n type: String,\n default: 'cover'\n },\n position: {\n type: String,\n default: '50% 50%'\n },\n\n imgClass: String,\n imgStyle: Object,\n\n noSpinner: Boolean,\n noNativeMenu: Boolean,\n noTransition: Boolean,\n\n spinnerColor: String,\n spinnerSize: String\n },\n\n emits: [ 'load', 'error' ],\n\n setup (props, { slots, emit }) {\n const naturalRatio = ref(props.initialRatio)\n const ratioStyle = useRatio(props, naturalRatio)\n\n let loadTimer\n\n const images = [\n ref(null),\n ref(getPlaceholderSrc())\n ]\n\n const position = ref(0)\n\n const isLoading = ref(false)\n const hasError = ref(false)\n\n const classes = computed(() =>\n `q-img q-img--${ props.noNativeMenu === true ? 'no-' : '' }menu`\n )\n\n const style = computed(() => ({\n width: props.width,\n height: props.height\n }))\n\n const imgClass = computed(() =>\n `q-img__image ${ props.imgClass !== void 0 ? props.imgClass + ' ' : '' }`\n + `q-img__image--with${ props.noTransition === true ? 'out' : '' }-transition`\n )\n\n const imgStyle = computed(() => ({\n ...props.imgStyle,\n objectFit: props.fit,\n objectPosition: props.position\n }))\n\n watch(() => getCurrentSrc(), addImage)\n\n function getCurrentSrc () {\n return props.src || props.srcset || props.sizes\n ? {\n src: props.src,\n srcset: props.srcset,\n sizes: props.sizes\n }\n : null\n }\n\n function getPlaceholderSrc () {\n return props.placeholderSrc !== void 0\n ? { src: props.placeholderSrc }\n : null\n }\n\n function addImage (imgProps) {\n clearTimeout(loadTimer)\n hasError.value = false\n\n if (imgProps === null) {\n isLoading.value = false\n images[ position.value ^ 1 ].value = getPlaceholderSrc()\n }\n else {\n isLoading.value = true\n }\n\n images[ position.value ].value = imgProps\n }\n\n function onLoad ({ target }) {\n // if component has been already destroyed\n if (loadTimer === null) { return }\n\n clearTimeout(loadTimer)\n\n naturalRatio.value = target.naturalHeight === 0\n ? 0.5\n : target.naturalWidth / target.naturalHeight\n\n waitForCompleteness(target, 1)\n }\n\n function waitForCompleteness (target, count) {\n // protect against running forever\n if (loadTimer === null || count === 1000) { return }\n\n if (target.complete === true) {\n onReady(target)\n }\n else {\n loadTimer = setTimeout(() => {\n waitForCompleteness(target, count + 1)\n }, 50)\n }\n }\n\n function onReady (img) {\n // if component has been already destroyed\n if (loadTimer === null) { return }\n\n position.value = position.value ^ 1\n images[ position.value ].value = null\n isLoading.value = false\n hasError.value = false\n emit('load', img.currentSrc || img.src)\n }\n\n function onError (err) {\n clearTimeout(loadTimer)\n isLoading.value = false\n hasError.value = true\n images[ position.value ].value = null\n images[ position.value ^ 1 ].value = getPlaceholderSrc()\n emit('error', err)\n }\n\n function getImage (index) {\n const img = images[ index ].value\n\n const data = {\n key: 'img_' + index,\n class: imgClass.value,\n style: imgStyle.value,\n crossorigin: props.crossorigin,\n decoding: props.decoding,\n referrerpolicy: props.referrerpolicy,\n height: props.height,\n width: props.width,\n loading: props.loading,\n fetchpriority: props.fetchpriority,\n 'aria-hidden': 'true',\n draggable: props.draggable,\n ...img\n }\n\n if (position.value === index) {\n data.class += ' q-img__image--waiting'\n Object.assign(data, { onLoad, onError })\n }\n else {\n data.class += ' q-img__image--loaded'\n }\n\n return h(\n 'div',\n { class: 'q-img__container absolute-full', key: 'img' + index },\n h('img', data)\n )\n }\n\n function getContent () {\n if (isLoading.value !== true) {\n return h('div', {\n key: 'content',\n class: 'q-img__content absolute-full q-anchor--skip'\n }, hSlot(slots[ hasError.value === true ? 'error' : 'default' ]))\n }\n\n return h('div', {\n key: 'loading',\n class: 'q-img__loading absolute-full flex flex-center'\n }, (\n slots.loading !== void 0\n ? slots.loading()\n : (\n props.noSpinner === true\n ? void 0\n : [\n h(QSpinner, {\n color: props.spinnerColor,\n size: props.spinnerSize\n })\n ]\n )\n ))\n }\n\n if (__QUASAR_SSR_SERVER__ !== true) {\n if (__QUASAR_SSR_CLIENT__) {\n onMounted(() => {\n addImage(getCurrentSrc())\n })\n }\n else {\n addImage(getCurrentSrc())\n }\n\n onBeforeUnmount(() => {\n clearTimeout(loadTimer)\n loadTimer = null\n })\n }\n\n return () => {\n const content = []\n\n if (ratioStyle.value !== null) {\n content.push(\n h('div', { key: 'filler', style: ratioStyle.value })\n )\n }\n\n if (hasError.value !== true) {\n if (images[ 0 ].value !== null) {\n content.push(getImage(0))\n }\n\n if (images[ 1 ].value !== null) {\n content.push(getImage(1))\n }\n }\n\n content.push(\n h(Transition, { name: 'q-transition--fade' }, getContent)\n )\n\n return h('div', {\n class: classes.value,\n style: style.value,\n role: 'img',\n 'aria-label': props.alt\n }, content)\n }\n }\n})\n","import { css, getElement } from './dom.js'\n\nconst scrollTargets = __QUASAR_SSR_SERVER__\n ? []\n : [ null, document, document.body, document.scrollingElement, document.documentElement ]\n\nexport function getScrollTarget (el, targetEl) {\n let target = getElement(targetEl)\n\n if (target === void 0) {\n if (el === void 0 || el === null) {\n return window\n }\n\n target = el.closest('.scroll,.scroll-y,.overflow-auto')\n }\n\n return scrollTargets.includes(target)\n ? window\n : target\n}\n\nexport function getScrollHeight (el) {\n return (el === window ? document.body : el).scrollHeight\n}\n\nexport function getScrollWidth (el) {\n return (el === window ? document.body : el).scrollWidth\n}\n\nexport function getVerticalScrollPosition (scrollTarget) {\n return scrollTarget === window\n ? window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n : scrollTarget.scrollTop\n}\n\nexport function getHorizontalScrollPosition (scrollTarget) {\n return scrollTarget === window\n ? window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n : scrollTarget.scrollLeft\n}\n\nexport function animVerticalScrollTo (el, to, duration = 0 /* , prevTime */) {\n const prevTime = arguments[ 3 ] === void 0 ? performance.now() : arguments[ 3 ]\n const pos = getVerticalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(nowTime => {\n const frameTime = nowTime - prevTime\n const newPos = pos + (to - pos) / Math.max(frameTime, duration) * frameTime\n setScroll(el, newPos)\n if (newPos !== to) {\n animVerticalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nexport function animHorizontalScrollTo (el, to, duration = 0 /* , prevTime */) {\n const prevTime = arguments[ 3 ] === void 0 ? performance.now() : arguments[ 3 ]\n const pos = getHorizontalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setHorizontalScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(nowTime => {\n const frameTime = nowTime - prevTime\n const newPos = pos + (to - pos) / Math.max(frameTime, duration) * frameTime\n setHorizontalScroll(el, newPos)\n if (newPos !== to) {\n animHorizontalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nfunction setScroll (scrollTarget, offset) {\n if (scrollTarget === window) {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, offset)\n return\n }\n scrollTarget.scrollTop = offset\n}\n\nfunction setHorizontalScroll (scrollTarget, offset) {\n if (scrollTarget === window) {\n window.scrollTo(offset, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n return\n }\n scrollTarget.scrollLeft = offset\n}\n\nexport function setVerticalScrollPosition (scrollTarget, offset, duration) {\n if (duration) {\n animVerticalScrollTo(scrollTarget, offset, duration)\n return\n }\n setScroll(scrollTarget, offset)\n}\n\nexport function setHorizontalScrollPosition (scrollTarget, offset, duration) {\n if (duration) {\n animHorizontalScrollTo(scrollTarget, offset, duration)\n return\n }\n setHorizontalScroll(scrollTarget, offset)\n}\n\nlet size\nexport function getScrollbarWidth () {\n if (size !== undefined) {\n return size\n }\n\n const\n inner = document.createElement('p'),\n outer = document.createElement('div')\n\n css(inner, {\n width: '100%',\n height: '200px'\n })\n css(outer, {\n position: 'absolute',\n top: '0px',\n left: '0px',\n visibility: 'hidden',\n width: '200px',\n height: '150px',\n overflow: 'hidden'\n })\n\n outer.appendChild(inner)\n\n document.body.appendChild(outer)\n\n const w1 = inner.offsetWidth\n outer.style.overflow = 'scroll'\n let w2 = inner.offsetWidth\n\n if (w1 === w2) {\n w2 = outer.clientWidth\n }\n\n outer.remove()\n size = w1 - w2\n\n return size\n}\n\nexport function hasScrollbar (el, onY = true) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n return onY\n ? (\n el.scrollHeight > el.clientHeight && (\n el.classList.contains('scroll')\n || el.classList.contains('overflow-auto')\n || [ 'auto', 'scroll' ].includes(window.getComputedStyle(el)[ 'overflow-y' ])\n )\n )\n : (\n el.scrollWidth > el.clientWidth && (\n el.classList.contains('scroll')\n || el.classList.contains('overflow-auto')\n || [ 'auto', 'scroll' ].includes(window.getComputedStyle(el)[ 'overflow-x' ])\n )\n )\n}\n\nexport default {\n getScrollTarget,\n\n getScrollHeight,\n getScrollWidth,\n\n getVerticalScrollPosition,\n getHorizontalScrollPosition,\n\n animVerticalScrollTo,\n animHorizontalScrollTo,\n\n setVerticalScrollPosition,\n setHorizontalScrollPosition,\n\n getScrollbarWidth,\n hasScrollbar\n}\n","/* eslint-disable no-useless-escape */\n\nimport { ref, reactive } from 'vue'\nimport { injectProp } from '../utils/private/inject-obj-prop'\n\n/**\n * __ QUASAR_SSR __ -> runs on SSR on client or server\n * __ QUASAR_SSR_SERVER __ -> runs on SSR on server\n * __ QUASAR_SSR_CLIENT __ -> runs on SSR on client\n * __ QUASAR_SSR_PWA __ -> built with SSR+PWA; may run on SSR on client or on PWA client\n * (needs runtime detection)\n */\n\nexport const isRuntimeSsrPreHydration = __QUASAR_SSR_SERVER__\n ? { value: true }\n : ref(\n __QUASAR_SSR_CLIENT__ && (\n __QUASAR_SSR_PWA__ ? document.body.getAttribute('data-server-rendered') !== null : true\n )\n )\n\nexport let iosEmulated = false\nexport let iosCorrection\n\nfunction getMatch (userAgent, platformMatch) {\n const match = /(edg|edge|edga|edgios)\\/([\\w.]+)/.exec(userAgent)\n || /(opr)[\\/]([\\w.]+)/.exec(userAgent)\n || /(vivaldi)[\\/]([\\w.]+)/.exec(userAgent)\n || /(chrome|crios)[\\/]([\\w.]+)/.exec(userAgent)\n || /(version)(applewebkit)[\\/]([\\w.]+).*(safari)[\\/]([\\w.]+)/.exec(userAgent)\n || /(webkit)[\\/]([\\w.]+).*(version)[\\/]([\\w.]+).*(safari)[\\/]([\\w.]+)/.exec(userAgent)\n || /(firefox|fxios)[\\/]([\\w.]+)/.exec(userAgent)\n || /(webkit)[\\/]([\\w.]+)/.exec(userAgent)\n || /(opera)(?:.*version|)[\\/]([\\w.]+)/.exec(userAgent)\n || []\n\n return {\n browser: match[ 5 ] || match[ 3 ] || match[ 1 ] || '',\n version: match[ 2 ] || match[ 4 ] || '0',\n versionNumber: match[ 4 ] || match[ 2 ] || '0',\n platform: platformMatch[ 0 ] || ''\n }\n}\n\nfunction getPlatformMatch (userAgent) {\n return /(ipad)/.exec(userAgent)\n || /(ipod)/.exec(userAgent)\n || /(windows phone)/.exec(userAgent)\n || /(iphone)/.exec(userAgent)\n || /(kindle)/.exec(userAgent)\n || /(silk)/.exec(userAgent)\n || /(android)/.exec(userAgent)\n || /(win)/.exec(userAgent)\n || /(mac)/.exec(userAgent)\n || /(linux)/.exec(userAgent)\n || /(cros)/.exec(userAgent)\n // TODO: Remove BlackBerry detection. BlackBerry OS, BlackBerry 10, and BlackBerry PlayBook OS\n // is officially dead as of January 4, 2022 (https://www.blackberry.com/us/en/support/devices/end-of-life)\n || /(playbook)/.exec(userAgent)\n || /(bb)/.exec(userAgent)\n || /(blackberry)/.exec(userAgent)\n || []\n}\n\nconst hasTouch = __QUASAR_SSR_SERVER__\n ? false\n : 'ontouchstart' in window || window.navigator.maxTouchPoints > 0\n\nfunction applyIosCorrection (is) {\n iosCorrection = { is: { ...is } }\n\n delete is.mac\n delete is.desktop\n\n const platform = Math.min(window.innerHeight, window.innerWidth) > 414\n ? 'ipad'\n : 'iphone'\n\n Object.assign(is, {\n mobile: true,\n ios: true,\n platform,\n [ platform ]: true\n })\n}\n\nfunction getPlatform (UA) {\n const\n userAgent = UA.toLowerCase(),\n platformMatch = getPlatformMatch(userAgent),\n matched = getMatch(userAgent, platformMatch),\n browser = {}\n\n if (matched.browser) {\n browser[ matched.browser ] = true\n browser.version = matched.version\n browser.versionNumber = parseInt(matched.versionNumber, 10)\n }\n\n if (matched.platform) {\n browser[ matched.platform ] = true\n }\n\n const knownMobiles = browser.android\n || browser.ios\n || browser.bb\n || browser.blackberry\n || browser.ipad\n || browser.iphone\n || browser.ipod\n || browser.kindle\n || browser.playbook\n || browser.silk\n || browser[ 'windows phone' ]\n\n // These are all considered mobile platforms, meaning they run a mobile browser\n if (knownMobiles === true || userAgent.indexOf('mobile') > -1) {\n browser.mobile = true\n\n if (browser.edga || browser.edgios) {\n browser.edge = true\n matched.browser = 'edge'\n }\n else if (browser.crios) {\n browser.chrome = true\n matched.browser = 'chrome'\n }\n else if (browser.fxios) {\n browser.firefox = true\n matched.browser = 'firefox'\n }\n }\n // If it's not mobile we should consider it's desktop platform, meaning it runs a desktop browser\n // It's a workaround for anonymized user agents\n // (browser.cros || browser.mac || browser.linux || browser.win)\n else {\n browser.desktop = true\n }\n\n // Set iOS if on iPod, iPad or iPhone\n if (browser.ipod || browser.ipad || browser.iphone) {\n browser.ios = true\n }\n\n if (browser[ 'windows phone' ]) {\n browser.winphone = true\n delete browser[ 'windows phone' ]\n }\n\n // TODO: The assumption about WebKit based browsers below is not completely accurate.\n // Google released Blink(a fork of WebKit) engine on April 3, 2013, which is really different than WebKit today.\n // Today, one might want to check for WebKit to deal with its bugs, which is used on all browsers on iOS, and Safari browser on all platforms.\n\n // Chrome, Opera 15+, Vivaldi and Safari are webkit based browsers\n if (\n browser.chrome\n || browser.opr\n || browser.safari\n || browser.vivaldi\n // we expect unknown, non iOS mobile browsers to be webkit based\n || (\n browser.mobile === true\n && browser.ios !== true\n && knownMobiles !== true\n )\n ) {\n browser.webkit = true\n }\n\n // TODO: (Qv3) rename the terms 'edge' to 'edge legacy'(or remove it) then 'edge chromium' to 'edge' to match with the known up-to-date terms\n // Microsoft Edge is the new Chromium-based browser. Microsoft Edge Legacy is the old EdgeHTML-based browser (EOL: March 9, 2021).\n if (browser.edg) {\n matched.browser = 'edgechromium'\n browser.edgeChromium = true\n }\n\n // Blackberry browsers are marked as Safari on BlackBerry\n if ((browser.safari && browser.blackberry) || browser.bb) {\n matched.browser = 'blackberry'\n browser.blackberry = true\n }\n\n // Playbook browsers are marked as Safari on Playbook\n if (browser.safari && browser.playbook) {\n matched.browser = 'playbook'\n browser.playbook = true\n }\n\n // Opera 15+ are identified as opr\n if (browser.opr) {\n matched.browser = 'opera'\n browser.opera = true\n }\n\n // Stock Android browsers are marked as Safari on Android.\n if (browser.safari && browser.android) {\n matched.browser = 'android'\n browser.android = true\n }\n\n // Kindle browsers are marked as Safari on Kindle\n if (browser.safari && browser.kindle) {\n matched.browser = 'kindle'\n browser.kindle = true\n }\n\n // Kindle Silk browsers are marked as Safari on Kindle\n if (browser.safari && browser.silk) {\n matched.browser = 'silk'\n browser.silk = true\n }\n\n if (browser.vivaldi) {\n matched.browser = 'vivaldi'\n browser.vivaldi = true\n }\n\n // Assign the name and platform variable\n browser.name = matched.browser\n browser.platform = matched.platform\n\n if (__QUASAR_SSR_SERVER__ !== true) {\n if (userAgent.indexOf('electron') > -1) {\n browser.electron = true\n }\n else if (document.location.href.indexOf('-extension://') > -1) {\n browser.bex = true\n }\n else {\n if (window.Capacitor !== void 0) {\n browser.capacitor = true\n browser.nativeMobile = true\n browser.nativeMobileWrapper = 'capacitor'\n }\n else if (window._cordovaNative !== void 0 || window.cordova !== void 0) {\n browser.cordova = true\n browser.nativeMobile = true\n browser.nativeMobileWrapper = 'cordova'\n }\n\n if (\n hasTouch === true\n && browser.mac === true\n && (\n (browser.desktop === true && browser.safari === true)\n || (\n browser.nativeMobile === true\n && browser.android !== true\n && browser.ios !== true\n && browser.ipad !== true\n )\n )\n ) {\n /*\n * Correction needed for iOS since the default\n * setting on iPad is to request desktop view; if we have\n * touch support and the user agent says it's a\n * desktop, we infer that it's an iPhone/iPad with desktop view\n * so we must fix the false positives\n */\n applyIosCorrection(browser)\n }\n }\n }\n\n return browser\n}\n\nconst userAgent = __QUASAR_SSR_SERVER__\n ? ''\n : navigator.userAgent || navigator.vendor || window.opera\n\nconst ssrClient = {\n has: {\n touch: false,\n webStorage: false\n },\n within: { iframe: false }\n}\n\n// We export \"client\" for hydration error-free parts,\n// like touch directives who do not (and must NOT) wait\n// for the client takeover;\n// Do NOT import this directly in your app, unless you really know\n// what you are doing.\nexport const client = __QUASAR_SSR_SERVER__\n ? ssrClient\n : {\n userAgent,\n is: getPlatform(userAgent),\n has: {\n touch: hasTouch\n },\n within: {\n iframe: window.self !== window.top\n }\n }\n\nconst Platform = {\n install (opts) {\n const { $q } = opts\n\n if (__QUASAR_SSR_SERVER__) {\n $q.platform = this.parseSSR(opts.ssrContext)\n }\n else if (isRuntimeSsrPreHydration.value === true) {\n // takeover should increase accuracy for\n // the rest of the props; we also avoid\n // hydration errors\n opts.onSSRHydrated.push(() => {\n isRuntimeSsrPreHydration.value = false\n Object.assign($q.platform, client)\n iosCorrection = void 0\n })\n\n // we need to make platform reactive\n // for the takeover phase\n $q.platform = reactive(this)\n }\n else {\n $q.platform = this\n }\n }\n}\n\nif (__QUASAR_SSR_SERVER__) {\n Platform.parseSSR = (ssrContext) => {\n const userAgent = ssrContext.req.headers[ 'user-agent' ] || ssrContext.req.headers[ 'User-Agent' ] || ''\n return {\n ...client,\n userAgent,\n is: getPlatform(userAgent)\n }\n }\n}\nelse {\n // do not access window.localStorage without\n // devland actually using it as this will get\n // reported under \"Cookies\" in Google Chrome\n let hasWebStorage\n\n injectProp(client.has, 'webStorage', () => {\n if (hasWebStorage !== void 0) {\n return hasWebStorage\n }\n\n try {\n if (window.localStorage) {\n hasWebStorage = true\n return true\n }\n }\n catch (e) {}\n\n hasWebStorage = false\n return false\n })\n\n iosEmulated = client.is.ios === true\n && window.navigator.vendor.toLowerCase().indexOf('apple') === -1\n\n if (isRuntimeSsrPreHydration.value === true) {\n // must match with server-side before\n // client taking over in order to prevent\n // hydration errors\n Object.assign(Platform, client, iosCorrection, ssrClient)\n }\n else {\n Object.assign(Platform, client)\n }\n}\n\nexport default Platform\n","import { h, computed, provide, inject, getCurrentInstance } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { pageContainerKey, layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'\n\nexport default createComponent({\n name: 'QPageContainer',\n\n setup (_, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const $layout = inject(layoutKey, emptyRenderFn)\n if ($layout === emptyRenderFn) {\n console.error('QPageContainer needs to be child of QLayout')\n return emptyRenderFn\n }\n\n provide(pageContainerKey, true)\n\n const style = computed(() => {\n const css = {}\n\n if ($layout.header.space === true) {\n css.paddingTop = `${ $layout.header.size }px`\n }\n if ($layout.right.space === true) {\n css[ `padding${ $q.lang.rtl === true ? 'Left' : 'Right' }` ] = `${ $layout.right.size }px`\n }\n if ($layout.footer.space === true) {\n css.paddingBottom = `${ $layout.footer.size }px`\n }\n if ($layout.left.space === true) {\n css[ `padding${ $q.lang.rtl === true ? 'Right' : 'Left' }` ] = `${ $layout.left.size }px`\n }\n\n return css\n })\n\n return () => h('div', {\n class: 'q-page-container',\n style: style.value\n }, hSlot(slots.default))\n }\n})\n","import { computed } from 'vue'\nimport { useSizeDefaults } from '../../composables/private/use-size.js'\n\nexport const useSpinnerProps = {\n size: {\n type: [ Number, String ],\n default: '1em'\n },\n color: String\n}\n\nexport default function useSpinner (props) {\n return {\n cSize: computed(() => (\n props.size in useSizeDefaults\n ? `${ useSizeDefaults[ props.size ] }px`\n : props.size\n )),\n\n classes: computed(() =>\n 'q-spinner' + (props.color ? ` text-${ props.color }` : '')\n )\n }\n}\n","import { h } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'QSpinner',\n\n props: {\n ...useSpinnerProps,\n\n thickness: {\n type: Number,\n default: 5\n }\n },\n\n setup (props) {\n const { cSize, classes } = useSpinner(props)\n\n return () => h('svg', {\n class: classes.value + ' q-spinner-mat',\n width: cSize.value,\n height: cSize.value,\n viewBox: '25 25 50 50'\n }, [\n h('circle', {\n class: 'path',\n cx: '50',\n cy: '50',\n r: '20',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': props.thickness,\n 'stroke-miterlimit': '10'\n })\n ])\n }\n})\n","import { computed } from 'vue'\n\nimport useAlign, { useAlignProps } from '../../composables/private/use-align.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\nimport useRouterLink, { useRouterLinkProps } from '../../composables/private/use-router-link.js'\n\nexport const btnPadding = {\n none: 0,\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32\n}\n\nconst defaultSizes = {\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n}\n\nconst formTypes = [ 'button', 'submit', 'reset' ]\nconst mediaTypeRE = /[^\\s]\\/[^\\s]/\n\nexport const btnDesignOptions = [ 'flat', 'outline', 'push', 'unelevated' ]\nexport const getBtnDesign = (props, defaultValue) => {\n if (props.flat === true) return 'flat'\n if (props.outline === true) return 'outline'\n if (props.push === true) return 'push'\n if (props.unelevated === true) return 'unelevated'\n return defaultValue\n}\nexport const getBtnDesignAttr = props => {\n const design = getBtnDesign(props)\n return design !== void 0\n ? { [ design ]: true }\n : {}\n}\n\nexport const useBtnProps = {\n ...useSizeProps,\n ...useRouterLinkProps,\n\n type: {\n type: String,\n default: 'button'\n },\n\n label: [ Number, String ],\n icon: String,\n iconRight: String,\n\n ...btnDesignOptions.reduce(\n (acc, val) => (acc[ val ] = Boolean) && acc,\n {}\n ),\n\n square: Boolean,\n round: Boolean,\n rounded: Boolean,\n glossy: Boolean,\n\n size: String,\n fab: Boolean,\n fabMini: Boolean,\n padding: String,\n\n color: String,\n textColor: String,\n noCaps: Boolean,\n noWrap: Boolean,\n dense: Boolean,\n\n tabindex: [ Number, String ],\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n },\n\n align: {\n ...useAlignProps.align,\n default: 'center'\n },\n stack: Boolean,\n stretch: Boolean,\n loading: {\n type: Boolean,\n default: null\n },\n disable: Boolean\n}\n\nexport default function (props) {\n const sizeStyle = useSize(props, defaultSizes)\n const alignClass = useAlign(props)\n const { hasRouterLink, hasLink, linkTag, linkAttrs, navigateOnClick } = useRouterLink({\n fallbackTag: 'button'\n })\n\n const style = computed(() => {\n const obj = props.fab === false && props.fabMini === false\n ? sizeStyle.value\n : {}\n\n return props.padding !== void 0\n ? Object.assign({}, obj, {\n padding: props.padding\n .split(/\\s+/)\n .map(v => (v in btnPadding ? btnPadding[ v ] + 'px' : v))\n .join(' '),\n minWidth: '0',\n minHeight: '0'\n })\n : obj\n })\n\n const isRounded = computed(() =>\n props.rounded === true || props.fab === true || props.fabMini === true\n )\n\n const isActionable = computed(() =>\n props.disable !== true && props.loading !== true\n )\n\n const tabIndex = computed(() => (\n isActionable.value === true ? props.tabindex || 0 : -1\n ))\n\n const design = computed(() => getBtnDesign(props, 'standard'))\n\n const attributes = computed(() => {\n const acc = { tabindex: tabIndex.value }\n\n if (hasLink.value === true) {\n Object.assign(acc, linkAttrs.value)\n }\n else if (formTypes.includes(props.type) === true) {\n acc.type = props.type\n }\n\n if (linkTag.value === 'a') {\n if (props.disable === true) {\n acc[ 'aria-disabled' ] = 'true'\n }\n else if (acc.href === void 0) {\n acc.role = 'button'\n }\n\n if (hasRouterLink.value !== true && mediaTypeRE.test(props.type) === true) {\n acc.type = props.type\n }\n }\n else if (props.disable === true) {\n acc.disabled = ''\n acc[ 'aria-disabled' ] = 'true'\n }\n\n if (props.loading === true && props.percentage !== void 0) {\n Object.assign(acc, {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': props.percentage\n })\n }\n\n return acc\n })\n\n const classes = computed(() => {\n let colors\n\n if (props.color !== void 0) {\n if (props.flat === true || props.outline === true) {\n colors = `text-${ props.textColor || props.color }`\n }\n else {\n colors = `bg-${ props.color } text-${ props.textColor || 'white' }`\n }\n }\n else if (props.textColor) {\n colors = `text-${ props.textColor }`\n }\n\n const shape = props.round === true\n ? 'round'\n : `rectangle${ isRounded.value === true ? ' q-btn--rounded' : (props.square === true ? ' q-btn--square' : '') }`\n\n return `q-btn--${ design.value } q-btn--${ shape }`\n + (colors !== void 0 ? ' ' + colors : '')\n + (isActionable.value === true ? ' q-btn--actionable q-focusable q-hoverable' : (props.disable === true ? ' disabled' : ''))\n + (props.fab === true ? ' q-btn--fab' : (props.fabMini === true ? ' q-btn--fab-mini' : ''))\n + (props.noCaps === true ? ' q-btn--no-uppercase' : '')\n + (props.dense === true ? ' q-btn--dense' : '')\n + (props.stretch === true ? ' no-border-radius self-stretch' : '')\n + (props.glossy === true ? ' glossy' : '')\n + (props.square ? ' q-btn--square' : '')\n })\n\n const innerClasses = computed(() =>\n alignClass.value + (props.stack === true ? ' column' : ' row')\n + (props.noWrap === true ? ' no-wrap text-no-wrap' : '')\n + (props.loading === true ? ' q-btn__content--hidden' : '')\n )\n\n return {\n classes,\n style,\n innerClasses,\n attributes,\n hasLink,\n linkTag,\n navigateOnClick,\n isActionable\n }\n}\n","/**\n * Based on the work of https://github.com/jchook/uuid-random\n */\n\nlet\n buf,\n bufIdx = 0\nconst hexBytes = new Array(256)\n\n// Pre-calculate toString(16) for speed\nfor (let i = 0; i < 256; i++) {\n hexBytes[ i ] = (i + 0x100).toString(16).substring(1)\n}\n\n// Use best available PRNG\nconst randomBytes = (() => {\n // Node & Browser support\n const lib = typeof crypto !== 'undefined'\n ? crypto\n : (\n typeof window !== 'undefined'\n ? window.crypto || window.msCrypto\n : void 0\n )\n\n if (lib !== void 0) {\n if (lib.randomBytes !== void 0) {\n return lib.randomBytes\n }\n if (lib.getRandomValues !== void 0) {\n return n => {\n const bytes = new Uint8Array(n)\n lib.getRandomValues(bytes)\n return bytes\n }\n }\n }\n\n return n => {\n const r = []\n for (let i = n; i > 0; i--) {\n r.push(Math.floor(Math.random() * 256))\n }\n return r\n }\n})()\n\n// Buffer random numbers for speed\n// Reduce memory usage by decreasing this number (min 16)\n// or improve speed by increasing this number (try 16384)\nconst BUFFER_SIZE = 4096\n\nexport default function () {\n // Buffer some random bytes for speed\n if (buf === void 0 || (bufIdx + 16 > BUFFER_SIZE)) {\n bufIdx = 0\n buf = randomBytes(BUFFER_SIZE)\n }\n\n const b = Array.prototype.slice.call(buf, bufIdx, (bufIdx += 16))\n b[ 6 ] = (b[ 6 ] & 0x0f) | 0x40\n b[ 8 ] = (b[ 8 ] & 0x3f) | 0x80\n\n return hexBytes[ b[ 0 ] ] + hexBytes[ b[ 1 ] ]\n + hexBytes[ b[ 2 ] ] + hexBytes[ b[ 3 ] ] + '-'\n + hexBytes[ b[ 4 ] ] + hexBytes[ b[ 5 ] ] + '-'\n + hexBytes[ b[ 6 ] ] + hexBytes[ b[ 7 ] ] + '-'\n + hexBytes[ b[ 8 ] ] + hexBytes[ b[ 9 ] ] + '-'\n + hexBytes[ b[ 10 ] ] + hexBytes[ b[ 11 ] ]\n + hexBytes[ b[ 12 ] ] + hexBytes[ b[ 13 ] ]\n + hexBytes[ b[ 14 ] ] + hexBytes[ b[ 15 ] ]\n}\n","let rtlHasScrollBug = false\n\n// mobile Chrome takes the crown for this\nif (!__QUASAR_SSR__) {\n const scroller = document.createElement('div')\n scroller.setAttribute('dir', 'rtl')\n Object.assign(scroller.style, {\n width: '1px',\n height: '1px',\n overflow: 'auto'\n })\n\n const spacer = document.createElement('div')\n Object.assign(spacer.style, {\n width: '1000px',\n height: '1px'\n })\n\n document.body.appendChild(scroller)\n scroller.appendChild(spacer)\n scroller.scrollLeft = -1000\n\n rtlHasScrollBug = scroller.scrollLeft >= 0\n\n scroller.remove()\n}\n\nexport {\n rtlHasScrollBug\n}\n","export default function (fn, wait = 250, immediate) {\n let timeout\n\n function debounced (/* ...args */) {\n const args = arguments\n\n const later = () => {\n timeout = void 0\n if (immediate !== true) {\n fn.apply(this, args)\n }\n }\n\n clearTimeout(timeout)\n if (immediate === true && timeout === void 0) {\n fn.apply(this, args)\n }\n timeout = setTimeout(later, wait)\n }\n\n debounced.cancel = () => {\n clearTimeout(timeout)\n }\n\n return debounced\n}\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QList',\n\n props: {\n ...useDarkProps,\n\n bordered: Boolean,\n dense: Boolean,\n separator: Boolean,\n padding: Boolean,\n\n tag: {\n type: String,\n default: 'div'\n }\n },\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const classes = computed(() =>\n 'q-list'\n + (props.bordered === true ? ' q-list--bordered' : '')\n + (props.dense === true ? ' q-list--dense' : '')\n + (props.separator === true ? ' q-list--separator' : '')\n + (isDark.value === true ? ' q-list--dark' : '')\n + (props.padding === true ? ' q-list--padding' : '')\n )\n\n return () => h(props.tag, { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, computed } from 'vue'\n\nexport const useFormProps = {\n name: String\n}\n\nexport function useFormAttrs (props) {\n return computed(() => ({\n type: 'hidden',\n name: props.name,\n value: props.modelValue\n }))\n}\n\nexport function useFormInject (formAttrs = {}) {\n return (child, action, className) => {\n child[ action ](\n h('input', {\n class: 'hidden' + (className || ''),\n ...formAttrs.value\n })\n )\n }\n}\n\nexport function useFormInputNameAttr (props) {\n return computed(() => props.name || props.for)\n}\n","\nexport const globalConfig = {}\nexport let globalConfigIsFrozen = false\n\nexport function freezeGlobalConfig () {\n globalConfigIsFrozen = true\n}\n","import { onBeforeUnmount } from 'vue'\n\nimport History from '../../history.js'\n\nexport default function (showing, hide, hideOnRouteChange) {\n let historyEntry\n\n function removeFromHistory () {\n if (historyEntry !== void 0) {\n History.remove(historyEntry)\n historyEntry = void 0\n }\n }\n\n onBeforeUnmount(() => {\n showing.value === true && removeFromHistory()\n })\n\n return {\n removeFromHistory,\n\n addToHistory () {\n historyEntry = {\n condition: () => hideOnRouteChange.value === true,\n handler: hide\n }\n\n History.add(historyEntry)\n }\n }\n}\n","import preventScroll from '../../utils/prevent-scroll.js'\n\nexport default function () {\n let currentState\n\n return {\n preventBodyScroll (state) {\n if (\n state !== currentState\n && (currentState !== void 0 || state === true)\n ) {\n currentState = state\n preventScroll(state)\n }\n }\n }\n}\n","import { h, ref, computed, watch, onBeforeUnmount, Transition, getCurrentInstance } from 'vue'\n\nimport useHistory from '../../composables/private/use-history.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\nimport useTick from '../../composables/private/use-tick.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport useTransition, { useTransitionProps } from '../../composables/private/use-transition.js'\nimport usePortal from '../../composables/private/use-portal.js'\nimport usePreventScroll from '../../composables/private/use-prevent-scroll.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { childHasFocus } from '../../utils/dom.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { addEscapeKey, removeEscapeKey } from '../../utils/private/escape-key.js'\nimport { addFocusout, removeFocusout } from '../../utils/private/focusout.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\n\nlet maximizedModals = 0\n\nconst positionClass = {\n standard: 'fixed-full flex-center',\n top: 'fixed-top justify-center',\n bottom: 'fixed-bottom justify-center',\n right: 'fixed-right items-center',\n left: 'fixed-left items-center'\n}\n\nconst defaultTransitions = {\n standard: [ 'scale', 'scale' ],\n top: [ 'slide-down', 'slide-up' ],\n bottom: [ 'slide-up', 'slide-down' ],\n right: [ 'slide-left', 'slide-right' ],\n left: [ 'slide-right', 'slide-left' ]\n}\n\nexport default createComponent({\n name: 'QDialog',\n\n inheritAttrs: false,\n\n props: {\n ...useModelToggleProps,\n ...useTransitionProps,\n\n transitionShow: String, // override useTransitionProps\n transitionHide: String, // override useTransitionProps\n\n persistent: Boolean,\n autoClose: Boolean,\n allowFocusOutside: Boolean,\n\n noEscDismiss: Boolean,\n noBackdropDismiss: Boolean,\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n noShake: Boolean,\n\n seamless: Boolean,\n\n maximized: Boolean,\n fullWidth: Boolean,\n fullHeight: Boolean,\n\n square: Boolean,\n\n position: {\n type: String,\n default: 'standard',\n validator: val => val === 'standard'\n || [ 'top', 'bottom', 'left', 'right' ].includes(val)\n }\n },\n\n emits: [\n ...useModelToggleEmits,\n 'shake', 'click', 'escapeKey'\n ],\n\n setup (props, { slots, emit, attrs }) {\n const vm = getCurrentInstance()\n\n const innerRef = ref(null)\n const showing = ref(false)\n const animating = ref(false)\n\n let shakeTimeout, refocusTarget = null, isMaximized, avoidAutoClose\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && props.noRouteDismiss !== true\n && props.seamless !== true\n )\n\n const { preventBodyScroll } = usePreventScroll()\n const { registerTimeout } = useTimeout()\n const { registerTick, removeTick } = useTick()\n\n const { transitionProps, transitionStyle } = useTransition(\n props,\n () => defaultTransitions[ props.position ][ 0 ],\n () => defaultTransitions[ props.position ][ 1 ]\n )\n\n const { showPortal, hidePortal, portalIsAccessible, renderPortal } = usePortal(\n vm, innerRef, renderPortalContent, /* pls do check if on a global dialog */ true\n )\n\n const { hide } = useModelToggle({\n showing,\n hideOnRouteChange,\n handleShow,\n handleHide,\n processOnMount: true\n })\n\n const { addToHistory, removeFromHistory } = useHistory(showing, hide, hideOnRouteChange)\n\n const classes = computed(() =>\n 'q-dialog__inner flex no-pointer-events'\n + ` q-dialog__inner--${ props.maximized === true ? 'maximized' : 'minimized' }`\n + ` q-dialog__inner--${ props.position } ${ positionClass[ props.position ] }`\n + (animating.value === true ? ' q-dialog__inner--animating' : '')\n + (props.fullWidth === true ? ' q-dialog__inner--fullwidth' : '')\n + (props.fullHeight === true ? ' q-dialog__inner--fullheight' : '')\n + (props.square === true ? ' q-dialog__inner--square' : '')\n )\n\n const useBackdrop = computed(() => showing.value === true && props.seamless !== true)\n\n const onEvents = computed(() => (\n props.autoClose === true\n ? { onClick: onAutoClose }\n : {}\n ))\n\n const rootClasses = computed(() => [\n 'q-dialog fullscreen no-pointer-events '\n + `q-dialog--${ useBackdrop.value === true ? 'modal' : 'seamless' }`,\n attrs.class\n ])\n\n watch(() => props.maximized, state => {\n showing.value === true && updateMaximized(state)\n })\n\n watch(useBackdrop, val => {\n preventBodyScroll(val)\n\n if (val === true) {\n addFocusout(onFocusChange)\n addEscapeKey(onEscapeKey)\n }\n else {\n removeFocusout(onFocusChange)\n removeEscapeKey(onEscapeKey)\n }\n })\n\n function handleShow (evt) {\n addToHistory()\n\n refocusTarget = props.noRefocus === false && document.activeElement !== null\n ? document.activeElement\n : null\n\n updateMaximized(props.maximized)\n showPortal()\n animating.value = true\n\n if (props.noFocus !== true) {\n document.activeElement !== null && document.activeElement.blur()\n registerTick(focus)\n }\n else {\n removeTick()\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n if (vm.proxy.$q.platform.is.ios === true) {\n if (props.seamless !== true && document.activeElement) {\n const\n { top, bottom } = document.activeElement.getBoundingClientRect(),\n { innerHeight } = window,\n height = window.visualViewport !== void 0\n ? window.visualViewport.height\n : innerHeight\n\n if (top > 0 && bottom > height / 2) {\n document.scrollingElement.scrollTop = Math.min(\n document.scrollingElement.scrollHeight - height,\n bottom >= innerHeight\n ? Infinity\n : Math.ceil(document.scrollingElement.scrollTop + bottom - height / 2)\n )\n }\n\n document.activeElement.scrollIntoView()\n }\n\n // required in order to avoid the \"double-tap needed\" issue\n avoidAutoClose = true\n innerRef.value.click()\n avoidAutoClose = false\n }\n\n showPortal(true) // done showing portal\n animating.value = false\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTick()\n removeFromHistory()\n cleanup(true)\n animating.value = true\n hidePortal()\n\n if (refocusTarget !== null) {\n ((evt && evt.type.indexOf('key') === 0\n ? refocusTarget.closest('[tabindex]:not([tabindex^=\"-\"])')\n : void 0\n ) || refocusTarget).focus()\n refocusTarget = null\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n hidePortal(true) // done hiding, now destroy\n animating.value = false\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function focus (selector) {\n addFocusFn(() => {\n let node = innerRef.value\n\n if (node === null || node.contains(document.activeElement) === true) {\n return\n }\n\n node = (selector !== '' ? node.querySelector(selector) : null)\n || node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')\n || node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')\n || node.querySelector('[autofocus], [data-autofocus]')\n || node\n node.focus({ preventScroll: true })\n })\n }\n\n function shake (focusTarget) {\n if (focusTarget && typeof focusTarget.focus === 'function') {\n focusTarget.focus({ preventScroll: true })\n }\n else {\n focus()\n }\n\n emit('shake')\n\n const node = innerRef.value\n\n if (node !== null) {\n node.classList.remove('q-animate--scale')\n node.classList.add('q-animate--scale')\n clearTimeout(shakeTimeout)\n shakeTimeout = setTimeout(() => {\n if (innerRef.value !== null) {\n node.classList.remove('q-animate--scale')\n // some platforms (like desktop Chrome)\n // require calling focus() again\n focus()\n }\n }, 170)\n }\n }\n\n function onEscapeKey () {\n if (props.seamless !== true) {\n if (props.persistent === true || props.noEscDismiss === true) {\n props.maximized !== true && props.noShake !== true && shake()\n }\n else {\n emit('escapeKey')\n hide()\n }\n }\n }\n\n function cleanup (hiding) {\n clearTimeout(shakeTimeout)\n\n if (hiding === true || showing.value === true) {\n updateMaximized(false)\n\n if (props.seamless !== true) {\n preventBodyScroll(false)\n removeFocusout(onFocusChange)\n removeEscapeKey(onEscapeKey)\n }\n }\n\n if (hiding !== true) {\n refocusTarget = null\n }\n }\n\n function updateMaximized (active) {\n if (active === true) {\n if (isMaximized !== true) {\n maximizedModals < 1 && document.body.classList.add('q-body--dialog')\n maximizedModals++\n\n isMaximized = true\n }\n }\n else if (isMaximized === true) {\n if (maximizedModals < 2) {\n document.body.classList.remove('q-body--dialog')\n }\n\n maximizedModals--\n isMaximized = false\n }\n }\n\n function onAutoClose (e) {\n if (avoidAutoClose !== true) {\n hide(e)\n emit('click', e)\n }\n }\n\n function onBackdropClick (e) {\n if (props.persistent !== true && props.noBackdropDismiss !== true) {\n hide(e)\n }\n else if (props.noShake !== true) {\n shake(e.relatedTarget)\n }\n }\n\n function onFocusChange (evt) {\n // the focus is not in a vue child component\n if (\n props.allowFocusOutside !== true\n && portalIsAccessible.value === true\n && childHasFocus(innerRef.value, evt.target) !== true\n ) {\n focus('[tabindex]:not([tabindex=\"-1\"])')\n }\n }\n\n Object.assign(vm.proxy, {\n // expose public methods\n focus, shake,\n\n // private but needed by QSelect\n __updateRefocusTarget (target) {\n refocusTarget = target || null\n }\n })\n\n onBeforeUnmount(cleanup)\n\n function renderPortalContent () {\n return h('div', {\n role: 'dialog',\n 'aria-modal': useBackdrop.value === true ? 'true' : 'false',\n ...attrs,\n class: rootClasses.value\n }, [\n h(Transition, {\n name: 'q-transition--fade',\n appear: true\n }, () => (\n useBackdrop.value === true\n ? h('div', {\n class: 'q-dialog__backdrop fixed-full',\n style: transitionStyle.value,\n 'aria-hidden': 'true',\n tabindex: -1,\n onFocusin: onBackdropClick\n })\n : null\n )),\n\n h(\n Transition,\n transitionProps.value,\n () => (\n showing.value === true\n ? h('div', {\n ref: innerRef,\n class: classes.value,\n style: transitionStyle.value,\n tabindex: -1,\n ...onEvents.value\n }, hSlot(slots.default))\n : null\n )\n )\n ])\n }\n\n return renderPortal\n }\n})\n","export default {\n xs: 30,\n sm: 35,\n md: 40,\n lg: 50,\n xl: 60\n}\n","import { ref, watch, nextTick } from 'vue'\n\nimport { shouldIgnoreKey } from '../../utils/private/key-composition.js'\n\n// leave NAMED_MASKS at top of file (code referenced from docs)\nconst NAMED_MASKS = {\n date: '####/##/##',\n datetime: '####/##/## ##:##',\n time: '##:##',\n fulltime: '##:##:##',\n phone: '(###) ### - ####',\n card: '#### #### #### ####'\n}\n\nconst TOKENS = {\n '#': { pattern: '[\\\\d]', negate: '[^\\\\d]' },\n\n S: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]' },\n N: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]' },\n\n A: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]', transform: v => v.toLocaleUpperCase() },\n a: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]', transform: v => v.toLocaleLowerCase() },\n\n X: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]', transform: v => v.toLocaleUpperCase() },\n x: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]', transform: v => v.toLocaleLowerCase() }\n}\n\nconst KEYS = Object.keys(TOKENS)\nKEYS.forEach(key => {\n TOKENS[ key ].regex = new RegExp(TOKENS[ key ].pattern)\n})\n\nconst\n tokenRegexMask = new RegExp('\\\\\\\\([^.*+?^${}()|([\\\\]])|([.*+?^${}()|[\\\\]])|([' + KEYS.join('') + '])|(.)', 'g'),\n escRegex = /[.*+?^${}()|[\\]\\\\]/g\n\nconst MARKER = String.fromCharCode(1)\n\nexport const useMaskProps = {\n mask: String,\n reverseFillMask: Boolean,\n fillMask: [ Boolean, String ],\n unmaskedValue: Boolean\n}\n\nexport default function (props, emit, emitValue, inputRef) {\n let maskMarked, maskReplaced, computedMask, computedUnmask\n\n const hasMask = ref(null)\n const innerValue = ref(getInitialMaskedValue())\n\n function getIsTypeText () {\n return props.autogrow === true\n || [ 'textarea', 'text', 'search', 'url', 'tel', 'password' ].includes(props.type)\n }\n\n watch(() => props.type + props.autogrow, updateMaskInternals)\n\n watch(() => props.mask, v => {\n if (v !== void 0) {\n updateMaskValue(innerValue.value, true)\n }\n else {\n const val = unmaskValue(innerValue.value)\n updateMaskInternals()\n props.modelValue !== val && emit('update:modelValue', val)\n }\n })\n\n watch(() => props.fillMask + props.reverseFillMask, () => {\n hasMask.value === true && updateMaskValue(innerValue.value, true)\n })\n\n watch(() => props.unmaskedValue, () => {\n hasMask.value === true && updateMaskValue(innerValue.value)\n })\n\n function getInitialMaskedValue () {\n updateMaskInternals()\n\n if (hasMask.value === true) {\n const masked = maskValue(unmaskValue(props.modelValue))\n\n return props.fillMask !== false\n ? fillWithMask(masked)\n : masked\n }\n\n return props.modelValue\n }\n\n function getPaddedMaskMarked (size) {\n if (size < maskMarked.length) {\n return maskMarked.slice(-size)\n }\n\n let pad = '', localMaskMarked = maskMarked\n const padPos = localMaskMarked.indexOf(MARKER)\n\n if (padPos > -1) {\n for (let i = size - localMaskMarked.length; i > 0; i--) {\n pad += MARKER\n }\n\n localMaskMarked = localMaskMarked.slice(0, padPos) + pad + localMaskMarked.slice(padPos)\n }\n\n return localMaskMarked\n }\n\n function updateMaskInternals () {\n hasMask.value = props.mask !== void 0\n && props.mask.length > 0\n && getIsTypeText()\n\n if (hasMask.value === false) {\n computedUnmask = void 0\n maskMarked = ''\n maskReplaced = ''\n return\n }\n\n const\n localComputedMask = NAMED_MASKS[ props.mask ] === void 0\n ? props.mask\n : NAMED_MASKS[ props.mask ],\n fillChar = typeof props.fillMask === 'string' && props.fillMask.length > 0\n ? props.fillMask.slice(0, 1)\n : '_',\n fillCharEscaped = fillChar.replace(escRegex, '\\\\$&'),\n unmask = [],\n extract = [],\n mask = []\n\n let\n firstMatch = props.reverseFillMask === true,\n unmaskChar = '',\n negateChar = ''\n\n localComputedMask.replace(tokenRegexMask, (_, char1, esc, token, char2) => {\n if (token !== void 0) {\n const c = TOKENS[ token ]\n mask.push(c)\n negateChar = c.negate\n if (firstMatch === true) {\n extract.push('(?:' + negateChar + '+)?(' + c.pattern + '+)?(?:' + negateChar + '+)?(' + c.pattern + '+)?')\n firstMatch = false\n }\n extract.push('(?:' + negateChar + '+)?(' + c.pattern + ')?')\n }\n else if (esc !== void 0) {\n unmaskChar = '\\\\' + (esc === '\\\\' ? '' : esc)\n mask.push(esc)\n unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')\n }\n else {\n const c = char1 !== void 0 ? char1 : char2\n unmaskChar = c === '\\\\' ? '\\\\\\\\\\\\\\\\' : c.replace(escRegex, '\\\\\\\\$&')\n mask.push(c)\n unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')\n }\n })\n\n const\n unmaskMatcher = new RegExp(\n '^'\n + unmask.join('')\n + '(' + (unmaskChar === '' ? '.' : '[^' + unmaskChar + ']') + '+)?'\n + (unmaskChar === '' ? '' : '[' + unmaskChar + ']*') + '$'\n ),\n extractLast = extract.length - 1,\n extractMatcher = extract.map((re, index) => {\n if (index === 0 && props.reverseFillMask === true) {\n return new RegExp('^' + fillCharEscaped + '*' + re)\n }\n else if (index === extractLast) {\n return new RegExp(\n '^' + re\n + '(' + (negateChar === '' ? '.' : negateChar) + '+)?'\n + (props.reverseFillMask === true ? '$' : fillCharEscaped + '*')\n )\n }\n\n return new RegExp('^' + re)\n })\n\n computedMask = mask\n computedUnmask = val => {\n const unmaskMatch = unmaskMatcher.exec(props.reverseFillMask === true ? val : val.slice(0, mask.length))\n if (unmaskMatch !== null) {\n val = unmaskMatch.slice(1).join('')\n }\n\n const\n extractMatch = [],\n extractMatcherLength = extractMatcher.length\n\n for (let i = 0, str = val; i < extractMatcherLength; i++) {\n const m = extractMatcher[ i ].exec(str)\n\n if (m === null) {\n break\n }\n\n str = str.slice(m.shift().length)\n extractMatch.push(...m)\n }\n if (extractMatch.length > 0) {\n return extractMatch.join('')\n }\n\n return val\n }\n maskMarked = mask.map(v => (typeof v === 'string' ? v : MARKER)).join('')\n maskReplaced = maskMarked.split(MARKER).join(fillChar)\n }\n\n function updateMaskValue (rawVal, updateMaskInternalsFlag, inputType) {\n const\n inp = inputRef.value,\n end = inp.selectionEnd,\n endReverse = inp.value.length - end,\n unmasked = unmaskValue(rawVal)\n\n // Update here so unmask uses the original fillChar\n updateMaskInternalsFlag === true && updateMaskInternals()\n\n const\n preMasked = maskValue(unmasked),\n masked = props.fillMask !== false\n ? fillWithMask(preMasked)\n : preMasked,\n changed = innerValue.value !== masked\n\n // We want to avoid \"flickering\" so we set value immediately\n inp.value !== masked && (inp.value = masked)\n\n changed === true && (innerValue.value = masked)\n\n document.activeElement === inp && nextTick(() => {\n if (masked === maskReplaced) {\n const cursor = props.reverseFillMask === true ? maskReplaced.length : 0\n inp.setSelectionRange(cursor, cursor, 'forward')\n\n return\n }\n\n if (inputType === 'insertFromPaste' && props.reverseFillMask !== true) {\n const cursor = end - 1\n moveCursor.right(inp, cursor, cursor)\n\n return\n }\n\n if ([ 'deleteContentBackward', 'deleteContentForward' ].indexOf(inputType) > -1) {\n const cursor = props.reverseFillMask === true\n ? (\n end === 0\n ? (masked.length > preMasked.length ? 1 : 0)\n : Math.max(0, masked.length - (masked === maskReplaced ? 0 : Math.min(preMasked.length, endReverse) + 1)) + 1\n )\n : end\n\n inp.setSelectionRange(cursor, cursor, 'forward')\n return\n }\n\n if (props.reverseFillMask === true) {\n if (changed === true) {\n const cursor = Math.max(0, masked.length - (masked === maskReplaced ? 0 : Math.min(preMasked.length, endReverse + 1)))\n\n if (cursor === 1 && end === 1) {\n inp.setSelectionRange(cursor, cursor, 'forward')\n }\n else {\n moveCursor.rightReverse(inp, cursor, cursor)\n }\n }\n else {\n const cursor = masked.length - endReverse\n inp.setSelectionRange(cursor, cursor, 'backward')\n }\n }\n else {\n if (changed === true) {\n const cursor = Math.max(0, maskMarked.indexOf(MARKER), Math.min(preMasked.length, end) - 1)\n moveCursor.right(inp, cursor, cursor)\n }\n else {\n const cursor = end - 1\n moveCursor.right(inp, cursor, cursor)\n }\n }\n })\n\n const val = props.unmaskedValue === true\n ? unmaskValue(masked)\n : masked\n\n String(props.modelValue) !== val && emitValue(val, true)\n }\n\n function moveCursorForPaste (inp, start, end) {\n const preMasked = maskValue(unmaskValue(inp.value))\n\n start = Math.max(0, maskMarked.indexOf(MARKER), Math.min(preMasked.length, start))\n\n inp.setSelectionRange(start, end, 'forward')\n }\n\n const moveCursor = {\n left (inp, start, end, selection) {\n const noMarkBefore = maskMarked.slice(start - 1).indexOf(MARKER) === -1\n let i = Math.max(0, start - 1)\n\n for (; i >= 0; i--) {\n if (maskMarked[ i ] === MARKER) {\n start = i\n noMarkBefore === true && start++\n break\n }\n }\n\n if (\n i < 0\n && maskMarked[ start ] !== void 0\n && maskMarked[ start ] !== MARKER\n ) {\n return moveCursor.right(inp, 0, 0)\n }\n\n start >= 0 && inp.setSelectionRange(\n start,\n selection === true ? end : start, 'backward'\n )\n },\n\n right (inp, start, end, selection) {\n const limit = inp.value.length\n let i = Math.min(limit, end + 1)\n\n for (; i <= limit; i++) {\n if (maskMarked[ i ] === MARKER) {\n end = i\n break\n }\n else if (maskMarked[ i - 1 ] === MARKER) {\n end = i\n }\n }\n\n if (\n i > limit\n && maskMarked[ end - 1 ] !== void 0\n && maskMarked[ end - 1 ] !== MARKER\n ) {\n return moveCursor.left(inp, limit, limit)\n }\n\n inp.setSelectionRange(selection ? start : end, end, 'forward')\n },\n\n leftReverse (inp, start, end, selection) {\n const\n localMaskMarked = getPaddedMaskMarked(inp.value.length)\n let i = Math.max(0, start - 1)\n\n for (; i >= 0; i--) {\n if (localMaskMarked[ i - 1 ] === MARKER) {\n start = i\n break\n }\n else if (localMaskMarked[ i ] === MARKER) {\n start = i\n if (i === 0) {\n break\n }\n }\n }\n\n if (\n i < 0\n && localMaskMarked[ start ] !== void 0\n && localMaskMarked[ start ] !== MARKER\n ) {\n return moveCursor.rightReverse(inp, 0, 0)\n }\n\n start >= 0 && inp.setSelectionRange(\n start,\n selection === true ? end : start, 'backward'\n )\n },\n\n rightReverse (inp, start, end, selection) {\n const\n limit = inp.value.length,\n localMaskMarked = getPaddedMaskMarked(limit),\n noMarkBefore = localMaskMarked.slice(0, end + 1).indexOf(MARKER) === -1\n let i = Math.min(limit, end + 1)\n\n for (; i <= limit; i++) {\n if (localMaskMarked[ i - 1 ] === MARKER) {\n end = i\n end > 0 && noMarkBefore === true && end--\n break\n }\n }\n\n if (\n i > limit\n && localMaskMarked[ end - 1 ] !== void 0\n && localMaskMarked[ end - 1 ] !== MARKER\n ) {\n return moveCursor.leftReverse(inp, limit, limit)\n }\n\n inp.setSelectionRange(selection === true ? start : end, end, 'forward')\n }\n }\n\n function onMaskedKeydown (e) {\n emit('keydown', e)\n\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const\n inp = inputRef.value,\n start = inp.selectionStart,\n end = inp.selectionEnd\n\n if (e.keyCode === 37 || e.keyCode === 39) { // Left / Right\n const fn = moveCursor[ (e.keyCode === 39 ? 'right' : 'left') + (props.reverseFillMask === true ? 'Reverse' : '') ]\n\n e.preventDefault()\n fn(inp, start, end, e.shiftKey)\n }\n else if (\n e.keyCode === 8 // Backspace\n && props.reverseFillMask !== true\n && start === end\n ) {\n moveCursor.left(inp, start, end, true)\n }\n else if (\n e.keyCode === 46 // Delete\n && props.reverseFillMask === true\n && start === end\n ) {\n moveCursor.rightReverse(inp, start, end, true)\n }\n }\n\n function maskValue (val) {\n if (val === void 0 || val === null || val === '') { return '' }\n\n if (props.reverseFillMask === true) {\n return maskValueReverse(val)\n }\n\n const mask = computedMask\n\n let valIndex = 0, output = ''\n\n for (let maskIndex = 0; maskIndex < mask.length; maskIndex++) {\n const\n valChar = val[ valIndex ],\n maskDef = mask[ maskIndex ]\n\n if (typeof maskDef === 'string') {\n output += maskDef\n valChar === maskDef && valIndex++\n }\n else if (valChar !== void 0 && maskDef.regex.test(valChar)) {\n output += maskDef.transform !== void 0\n ? maskDef.transform(valChar)\n : valChar\n valIndex++\n }\n else {\n return output\n }\n }\n\n return output\n }\n\n function maskValueReverse (val) {\n const\n mask = computedMask,\n firstTokenIndex = maskMarked.indexOf(MARKER)\n\n let valIndex = val.length - 1, output = ''\n\n for (let maskIndex = mask.length - 1; maskIndex >= 0 && valIndex > -1; maskIndex--) {\n const maskDef = mask[ maskIndex ]\n\n let valChar = val[ valIndex ]\n\n if (typeof maskDef === 'string') {\n output = maskDef + output\n valChar === maskDef && valIndex--\n }\n else if (valChar !== void 0 && maskDef.regex.test(valChar)) {\n do {\n output = (maskDef.transform !== void 0 ? maskDef.transform(valChar) : valChar) + output\n valIndex--\n valChar = val[ valIndex ]\n // eslint-disable-next-line no-unmodified-loop-condition\n } while (firstTokenIndex === maskIndex && valChar !== void 0 && maskDef.regex.test(valChar))\n }\n else {\n return output\n }\n }\n\n return output\n }\n\n function unmaskValue (val) {\n return typeof val !== 'string' || computedUnmask === void 0\n ? (typeof val === 'number' ? computedUnmask('' + val) : val)\n : computedUnmask(val)\n }\n\n function fillWithMask (val) {\n if (maskReplaced.length - val.length <= 0) {\n return val\n }\n\n return props.reverseFillMask === true && val.length > 0\n ? maskReplaced.slice(0, -val.length) + val\n : val + maskReplaced.slice(val.length)\n }\n\n return {\n innerValue,\n hasMask,\n moveCursorForPaste,\n updateMaskValue,\n onMaskedKeydown\n }\n}\n","import { computed } from 'vue'\n\nexport default function (props, typeGuard) {\n function getFormDomProps () {\n const model = props.modelValue\n\n try {\n const dt = 'DataTransfer' in window\n ? new DataTransfer()\n : ('ClipboardEvent' in window\n ? new ClipboardEvent('').clipboardData\n : void 0\n )\n\n if (Object(model) === model) {\n ('length' in model\n ? Array.from(model)\n : [ model ]\n ).forEach(file => {\n dt.items.add(file)\n })\n }\n\n return {\n files: dt.files\n }\n }\n catch (e) {\n return {\n files: void 0\n }\n }\n }\n\n return typeGuard === true\n ? computed(() => {\n if (props.type !== 'file') {\n return\n }\n\n return getFormDomProps()\n })\n : computed(getFormDomProps)\n}\n","import { h, ref, computed, watch, onBeforeUnmount, onMounted, nextTick, getCurrentInstance } from 'vue'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits, fieldValueIsFilled } from '../../composables/private/use-field.js'\nimport useMask, { useMaskProps } from './use-mask.js'\nimport { useFormProps, useFormInputNameAttr } from '../../composables/private/use-form.js'\nimport useFileFormDomProps from '../../composables/private/use-file-dom-props.js'\nimport useKeyComposition from '../../composables/private/use-key-composition.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stop } from '../../utils/event.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\nimport { injectProp } from '../../utils/private/inject-obj-prop.js'\n\nexport default createComponent({\n name: 'QInput',\n\n inheritAttrs: false,\n\n props: {\n ...useFieldProps,\n ...useMaskProps,\n ...useFormProps,\n\n modelValue: { required: false },\n\n shadowText: String,\n\n type: {\n type: String,\n default: 'text'\n },\n\n debounce: [ String, Number ],\n\n autogrow: Boolean, // makes a textarea\n\n inputClass: [ Array, String, Object ],\n inputStyle: [ Array, String, Object ]\n },\n\n emits: [\n ...useFieldEmits,\n 'paste', 'change',\n 'keydown', 'animationend'\n ],\n\n setup (props, { emit, attrs }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const temp = {}\n let emitCachedValue = NaN, typedNumber, stopValueWatcher, emitTimer, emitValueFn\n\n const inputRef = ref(null)\n const nameProp = useFormInputNameAttr(props)\n\n const {\n innerValue,\n hasMask,\n moveCursorForPaste,\n updateMaskValue,\n onMaskedKeydown\n } = useMask(props, emit, emitValue, inputRef)\n\n const formDomProps = useFileFormDomProps(props, /* type guard */ true)\n const hasValue = computed(() => fieldValueIsFilled(innerValue.value))\n\n const onComposition = useKeyComposition(onInput)\n\n const state = useFieldState()\n\n const isTextarea = computed(() =>\n props.type === 'textarea' || props.autogrow === true\n )\n\n const isTypeText = computed(() =>\n isTextarea.value === true\n || [ 'text', 'search', 'url', 'tel', 'password' ].includes(props.type)\n )\n\n const onEvents = computed(() => {\n const evt = {\n ...state.splitAttrs.listeners.value,\n onInput,\n onPaste,\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n onChange,\n onBlur: onFinishEditing,\n onFocus: stop\n }\n\n evt.onCompositionstart = evt.onCompositionupdate = evt.onCompositionend = onComposition\n\n if (hasMask.value === true) {\n evt.onKeydown = onMaskedKeydown\n }\n\n if (props.autogrow === true) {\n evt.onAnimationend = onAnimationend\n }\n\n return evt\n })\n\n const inputAttrs = computed(() => {\n const attrs = {\n tabindex: 0,\n 'data-autofocus': props.autofocus === true || void 0,\n rows: props.type === 'textarea' ? 6 : void 0,\n 'aria-label': props.label,\n name: nameProp.value,\n ...state.splitAttrs.attributes.value,\n id: state.targetUid.value,\n maxlength: props.maxlength,\n disabled: props.disable === true,\n readonly: props.readonly === true\n }\n\n if (isTextarea.value === false) {\n attrs.type = props.type\n }\n\n if (props.autogrow === true) {\n attrs.rows = 1\n }\n\n return attrs\n })\n\n // some browsers lose the native input value\n // so we need to reattach it dynamically\n // (like type=\"password\" <-> type=\"text\"; see #12078)\n watch(() => props.type, () => {\n if (inputRef.value) {\n inputRef.value.value = props.modelValue\n }\n })\n\n watch(() => props.modelValue, v => {\n if (hasMask.value === true) {\n if (stopValueWatcher === true) {\n stopValueWatcher = false\n\n if (String(v) === emitCachedValue) {\n return\n }\n }\n\n updateMaskValue(v)\n }\n else if (innerValue.value !== v) {\n innerValue.value = v\n\n if (\n props.type === 'number'\n && temp.hasOwnProperty('value') === true\n ) {\n if (typedNumber === true) {\n typedNumber = false\n }\n else {\n delete temp.value\n }\n }\n }\n\n // textarea only\n props.autogrow === true && nextTick(adjustHeight)\n })\n\n watch(() => props.autogrow, val => {\n // textarea only\n if (val === true) {\n nextTick(adjustHeight)\n }\n // if it has a number of rows set respect it\n else if (inputRef.value !== null && attrs.rows > 0) {\n inputRef.value.style.height = 'auto'\n }\n })\n\n watch(() => props.dense, () => {\n props.autogrow === true && nextTick(adjustHeight)\n })\n\n function focus () {\n addFocusFn(() => {\n const el = document.activeElement\n if (\n inputRef.value !== null\n && inputRef.value !== el\n && (el === null || el.id !== state.targetUid.value)\n ) {\n inputRef.value.focus({ preventScroll: true })\n }\n })\n }\n\n function select () {\n inputRef.value !== null && inputRef.value.select()\n }\n\n function onPaste (e) {\n if (hasMask.value === true && props.reverseFillMask !== true) {\n const inp = e.target\n moveCursorForPaste(inp, inp.selectionStart, inp.selectionEnd)\n }\n\n emit('paste', e)\n }\n\n function onInput (e) {\n if (!e || !e.target) {\n return\n }\n\n if (props.type === 'file') {\n emit('update:modelValue', e.target.files)\n return\n }\n\n const val = e.target.value\n\n if (e.target.qComposing === true) {\n temp.value = val\n\n return\n }\n\n if (hasMask.value === true) {\n updateMaskValue(val, false, e.inputType)\n }\n else {\n emitValue(val)\n\n if (isTypeText.value === true && e.target === document.activeElement) {\n const { selectionStart, selectionEnd } = e.target\n\n if (selectionStart !== void 0 && selectionEnd !== void 0) {\n nextTick(() => {\n if (e.target === document.activeElement && val.indexOf(e.target.value) === 0) {\n e.target.setSelectionRange(selectionStart, selectionEnd)\n }\n })\n }\n }\n }\n\n // we need to trigger it immediately too,\n // to avoid \"flickering\"\n props.autogrow === true && adjustHeight()\n }\n\n function onAnimationend (e) {\n emit('animationend', e)\n adjustHeight()\n }\n\n function emitValue (val, stopWatcher) {\n emitValueFn = () => {\n if (\n props.type !== 'number'\n && temp.hasOwnProperty('value') === true\n ) {\n delete temp.value\n }\n\n if (props.modelValue !== val && emitCachedValue !== val) {\n emitCachedValue = val\n\n stopWatcher === true && (stopValueWatcher = true)\n emit('update:modelValue', val)\n\n nextTick(() => {\n emitCachedValue === val && (emitCachedValue = NaN)\n })\n }\n\n emitValueFn = void 0\n }\n\n if (props.type === 'number') {\n typedNumber = true\n temp.value = val\n }\n\n if (props.debounce !== void 0) {\n clearTimeout(emitTimer)\n temp.value = val\n emitTimer = setTimeout(emitValueFn, props.debounce)\n }\n else {\n emitValueFn()\n }\n }\n\n // textarea only\n function adjustHeight () {\n requestAnimationFrame(() => {\n const inp = inputRef.value\n if (inp !== null) {\n const parentStyle = inp.parentNode.style\n const { overflow } = inp.style\n\n // reset height of textarea to a small size to detect the real height\n // but keep the total control size the same\n // Firefox rulez #14263, #14344\n $q.platform.is.firefox !== true && (inp.style.overflow = 'hidden')\n inp.style.height = '1px'\n parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'\n\n inp.style.height = inp.scrollHeight + 'px'\n inp.style.overflow = overflow\n parentStyle.marginBottom = ''\n }\n })\n }\n\n function onChange (e) {\n onComposition(e)\n\n clearTimeout(emitTimer)\n emitValueFn !== void 0 && emitValueFn()\n\n emit('change', e.target.value)\n }\n\n function onFinishEditing (e) {\n e !== void 0 && stop(e)\n\n clearTimeout(emitTimer)\n emitValueFn !== void 0 && emitValueFn()\n\n typedNumber = false\n stopValueWatcher = false\n delete temp.value\n\n // we need to use setTimeout instead of this.$nextTick\n // to avoid a bug where focusout is not emitted for type date/time/week/...\n props.type !== 'file' && setTimeout(() => {\n if (inputRef.value !== null) {\n inputRef.value.value = innerValue.value !== void 0 ? innerValue.value : ''\n }\n })\n }\n\n function getCurValue () {\n return temp.hasOwnProperty('value') === true\n ? temp.value\n : (innerValue.value !== void 0 ? innerValue.value : '')\n }\n\n onBeforeUnmount(() => {\n onFinishEditing()\n })\n\n onMounted(() => {\n // textarea only\n props.autogrow === true && adjustHeight()\n })\n\n Object.assign(state, {\n innerValue,\n\n fieldClass: computed(() =>\n `q-${ isTextarea.value === true ? 'textarea' : 'input' }`\n + (props.autogrow === true ? ' q-textarea--autogrow' : '')\n ),\n\n hasShadow: computed(() =>\n props.type !== 'file'\n && typeof props.shadowText === 'string'\n && props.shadowText.length > 0\n ),\n\n inputRef,\n\n emitValue,\n\n hasValue,\n\n floatingLabel: computed(() =>\n hasValue.value === true\n || fieldValueIsFilled(props.displayValue)\n ),\n\n getControl: () => {\n return h(isTextarea.value === true ? 'textarea' : 'input', {\n ref: inputRef,\n class: [\n 'q-field__native q-placeholder',\n props.inputClass\n ],\n style: props.inputStyle,\n ...inputAttrs.value,\n ...onEvents.value,\n ...(\n props.type !== 'file'\n ? { value: getCurValue() }\n : formDomProps.value\n )\n })\n },\n\n getShadowControl: () => {\n return h('div', {\n class: 'q-field__native q-field__shadow absolute-bottom no-pointer-events'\n + (isTextarea.value === true ? '' : ' text-no-wrap')\n }, [\n h('span', { class: 'invisible' }, getCurValue()),\n h('span', props.shadowText)\n ])\n }\n })\n\n const renderFn = useField(state)\n\n // expose public methods\n Object.assign(proxy, {\n focus,\n select,\n getNativeElement: () => inputRef.value // deprecated\n })\n\n injectProp(proxy, 'nativeEl', () => inputRef.value)\n\n return renderFn\n }\n})\n","import { h, computed } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hMergeSlotSafely } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QAvatar',\n\n props: {\n ...useSizeProps,\n\n fontSize: String,\n\n color: String,\n textColor: String,\n\n icon: String,\n square: Boolean,\n rounded: Boolean\n },\n\n setup (props, { slots }) {\n const sizeStyle = useSize(props)\n\n const classes = computed(() =>\n 'q-avatar'\n + (props.color ? ` bg-${ props.color }` : '')\n + (props.textColor ? ` text-${ props.textColor } q-chip--colored` : '')\n + (\n props.square === true\n ? ' q-avatar--square'\n : (props.rounded === true ? ' rounded-borders' : '')\n )\n )\n\n const contentStyle = computed(() => (\n props.fontSize\n ? { fontSize: props.fontSize }\n : null\n ))\n\n return () => {\n const icon = props.icon !== void 0\n ? [ h(QIcon, { name: props.icon }) ]\n : void 0\n\n return h('div', {\n class: classes.value,\n style: sizeStyle.value\n }, [\n h('div', {\n class: 'q-avatar__content row flex-center overflow-hidden',\n style: contentStyle.value\n }, hMergeSlotSafely(slots.default, icon))\n ])\n }\n }\n})\n","import { h, ref, markRaw, TransitionGroup } from 'vue'\n\nimport QAvatar from '../components/avatar/QAvatar.js'\nimport QIcon from '../components/icon/QIcon.js'\nimport QBtn from '../components/btn/QBtn.js'\nimport QSpinner from '../components/spinner/QSpinner.js'\n\nimport { createComponent } from '../utils/private/create.js'\nimport { noop } from '../utils/event.js'\nimport { createGlobalNode } from '../utils/private/global-nodes.js'\nimport { createChildApp } from '../install-quasar.js'\nimport { isObject } from '../utils/is.js'\n\nlet uid = 0\n\nconst defaults = {}\nconst groups = {}\nconst notificationsList = {}\nconst positionClass = {}\nconst emptyRE = /^\\s*$/\nconst notifRefs = []\n\nconst positionList = [\n 'top-left', 'top-right',\n 'bottom-left', 'bottom-right',\n 'top', 'bottom', 'left', 'right', 'center'\n]\n\nconst badgePositions = [\n 'top-left', 'top-right',\n 'bottom-left', 'bottom-right'\n]\n\nconst notifTypes = {\n positive: {\n icon: $q => $q.iconSet.type.positive,\n color: 'positive'\n },\n\n negative: {\n icon: $q => $q.iconSet.type.negative,\n color: 'negative'\n },\n\n warning: {\n icon: $q => $q.iconSet.type.warning,\n color: 'warning',\n textColor: 'dark'\n },\n\n info: {\n icon: $q => $q.iconSet.type.info,\n color: 'info'\n },\n\n ongoing: {\n group: false,\n timeout: 0,\n spinner: true,\n color: 'grey-8'\n }\n}\n\nfunction addNotification (config, $q, originalApi) {\n if (!config) {\n return logError('parameter required')\n }\n\n let Api\n const notif = { textColor: 'white' }\n\n if (config.ignoreDefaults !== true) {\n Object.assign(notif, defaults)\n }\n\n if (isObject(config) === false) {\n if (notif.type) {\n Object.assign(notif, notifTypes[ notif.type ])\n }\n\n config = { message: config }\n }\n\n Object.assign(notif, notifTypes[ config.type || notif.type ], config)\n\n if (typeof notif.icon === 'function') {\n notif.icon = notif.icon($q)\n }\n\n if (!notif.spinner) {\n notif.spinner = false\n }\n else {\n if (notif.spinner === true) {\n notif.spinner = QSpinner\n }\n\n notif.spinner = markRaw(notif.spinner)\n }\n\n notif.meta = {\n hasMedia: Boolean(notif.spinner !== false || notif.icon || notif.avatar),\n hasText: hasContent(notif.message) || hasContent(notif.caption)\n }\n\n if (notif.position) {\n if (positionList.includes(notif.position) === false) {\n return logError('wrong position', config)\n }\n }\n else {\n notif.position = 'bottom'\n }\n\n if (notif.timeout === void 0) {\n notif.timeout = 5000\n }\n else {\n const t = parseInt(notif.timeout, 10)\n if (isNaN(t) || t < 0) {\n return logError('wrong timeout', config)\n }\n notif.timeout = t\n }\n\n if (notif.timeout === 0) {\n notif.progress = false\n }\n else if (notif.progress === true) {\n notif.meta.progressClass = 'q-notification__progress' + (\n notif.progressClass\n ? ` ${ notif.progressClass }`\n : ''\n )\n\n notif.meta.progressStyle = {\n animationDuration: `${ notif.timeout + 1000 }ms`\n }\n }\n\n const actions = (\n Array.isArray(config.actions) === true\n ? config.actions\n : []\n ).concat(\n config.ignoreDefaults !== true && Array.isArray(defaults.actions) === true\n ? defaults.actions\n : []\n ).concat(\n notifTypes[ config.type ] !== void 0 && Array.isArray(notifTypes[ config.type ].actions) === true\n ? notifTypes[ config.type ].actions\n : []\n )\n\n const { closeBtn } = notif\n closeBtn && actions.push({\n label: typeof closeBtn === 'string'\n ? closeBtn\n : $q.lang.label.close\n })\n\n notif.actions = actions.map(({ handler, noDismiss, ...item }) => ({\n flat: true,\n ...item,\n onClick: typeof handler === 'function'\n ? () => {\n handler()\n noDismiss !== true && dismiss()\n }\n : () => { dismiss() }\n }))\n\n if (notif.multiLine === void 0) {\n notif.multiLine = notif.actions.length > 1\n }\n\n Object.assign(notif.meta, {\n class: 'q-notification row items-stretch'\n + ` q-notification--${ notif.multiLine === true ? 'multi-line' : 'standard' }`\n + (notif.color !== void 0 ? ` bg-${ notif.color }` : '')\n + (notif.textColor !== void 0 ? ` text-${ notif.textColor }` : '')\n + (notif.classes !== void 0 ? ` ${ notif.classes }` : ''),\n\n wrapperClass: 'q-notification__wrapper col relative-position border-radius-inherit '\n + (notif.multiLine === true ? 'column no-wrap justify-center' : 'row items-center'),\n\n contentClass: 'q-notification__content row items-center'\n + (notif.multiLine === true ? '' : ' col'),\n\n leftClass: notif.meta.hasText === true ? 'additional' : 'single',\n\n attrs: {\n role: 'alert',\n ...notif.attrs\n }\n })\n\n if (notif.group === false) {\n notif.group = void 0\n notif.meta.group = void 0\n }\n else {\n if (notif.group === void 0 || notif.group === true) {\n // do not replace notifications with different buttons\n notif.group = [\n notif.message,\n notif.caption,\n notif.multiline\n ].concat(\n notif.actions.map(props => `${ props.label }*${ props.icon }`)\n ).join('|')\n }\n\n notif.meta.group = notif.group + '|' + notif.position\n }\n\n if (notif.actions.length === 0) {\n notif.actions = void 0\n }\n else {\n notif.meta.actionsClass = 'q-notification__actions row items-center '\n + (notif.multiLine === true ? 'justify-end' : 'col-auto')\n + (notif.meta.hasMedia === true ? ' q-notification__actions--with-media' : '')\n }\n\n if (originalApi !== void 0) {\n // reset timeout if any\n clearTimeout(originalApi.notif.meta.timer)\n\n // retain uid\n notif.meta.uid = originalApi.notif.meta.uid\n\n // replace notif\n const index = notificationsList[ notif.position ].value.indexOf(originalApi.notif)\n notificationsList[ notif.position ].value[ index ] = notif\n }\n else {\n const original = groups[ notif.meta.group ]\n\n // woohoo, it's a new notification\n if (original === void 0) {\n notif.meta.uid = uid++\n notif.meta.badge = 1\n\n if ([ 'left', 'right', 'center' ].indexOf(notif.position) !== -1) {\n notificationsList[ notif.position ].value.splice(\n Math.floor(notificationsList[ notif.position ].value.length / 2),\n 0,\n notif\n )\n }\n else {\n const action = notif.position.indexOf('top') > -1 ? 'unshift' : 'push'\n notificationsList[ notif.position ].value[ action ](notif)\n }\n\n if (notif.group !== void 0) {\n groups[ notif.meta.group ] = notif\n }\n }\n // ok, so it's NOT a new one\n else {\n // reset timeout if any\n clearTimeout(original.meta.timer)\n\n if (notif.badgePosition !== void 0) {\n if (badgePositions.includes(notif.badgePosition) === false) {\n return logError('wrong badgePosition', config)\n }\n }\n else {\n notif.badgePosition = `top-${ notif.position.indexOf('left') > -1 ? 'right' : 'left' }`\n }\n\n notif.meta.uid = original.meta.uid\n notif.meta.badge = original.meta.badge + 1\n notif.meta.badgeClass = `q-notification__badge q-notification__badge--${ notif.badgePosition }`\n + (notif.badgeColor !== void 0 ? ` bg-${ notif.badgeColor }` : '')\n + (notif.badgeTextColor !== void 0 ? ` text-${ notif.badgeTextColor }` : '')\n + (notif.badgeClass ? ` ${ notif.badgeClass }` : '')\n\n const index = notificationsList[ notif.position ].value.indexOf(original)\n notificationsList[ notif.position ].value[ index ] = groups[ notif.meta.group ] = notif\n }\n }\n\n const dismiss = () => {\n removeNotification(notif)\n Api = void 0\n }\n\n if (notif.timeout > 0) {\n notif.meta.timer = setTimeout(() => {\n dismiss()\n }, notif.timeout + /* show duration */ 1000)\n }\n\n // only non-groupable can be updated\n if (notif.group !== void 0) {\n return props => {\n if (props !== void 0) {\n logError('trying to update a grouped one which is forbidden', config)\n }\n else {\n dismiss()\n }\n }\n }\n\n Api = {\n dismiss,\n config,\n notif\n }\n\n if (originalApi !== void 0) {\n Object.assign(originalApi, Api)\n return\n }\n\n return props => {\n // if notification wasn't previously dismissed\n if (Api !== void 0) {\n // if no params, then we must dismiss the notification\n if (props === void 0) {\n Api.dismiss()\n }\n // otherwise we're updating it\n else {\n const newNotif = Object.assign({}, Api.config, props, {\n group: false,\n position: notif.position\n })\n\n addNotification(newNotif, $q, Api)\n }\n }\n }\n}\n\nfunction removeNotification (notif) {\n clearTimeout(notif.meta.timer)\n\n const index = notificationsList[ notif.position ].value.indexOf(notif)\n if (index !== -1) {\n if (notif.group !== void 0) {\n delete groups[ notif.meta.group ]\n }\n\n const el = notifRefs[ '' + notif.meta.uid ]\n\n if (el) {\n const { width, height } = getComputedStyle(el)\n\n el.style.left = `${ el.offsetLeft }px`\n el.style.width = width\n el.style.height = height\n }\n\n notificationsList[ notif.position ].value.splice(index, 1)\n\n if (typeof notif.onDismiss === 'function') {\n notif.onDismiss()\n }\n }\n}\n\nfunction hasContent (str) {\n return str !== void 0\n && str !== null\n && emptyRE.test(str) !== true\n}\n\nfunction logError (error, config) {\n console.error(`Notify: ${ error }`, config)\n return false\n}\n\nfunction getComponent () {\n return createComponent({\n name: 'QNotifications',\n\n // hide App from Vue devtools\n devtools: { hide: true },\n\n setup () {\n return () => h('div', { class: 'q-notifications' }, positionList.map(pos => {\n return h(TransitionGroup, {\n key: pos,\n class: positionClass[ pos ],\n tag: 'div',\n name: `q-notification--${ pos }`\n }, () => notificationsList[ pos ].value.map(notif => {\n const meta = notif.meta\n const mainChild = []\n\n if (meta.hasMedia === true) {\n if (notif.spinner !== false) {\n mainChild.push(\n h(notif.spinner, {\n class: 'q-notification__spinner q-notification__spinner--' + meta.leftClass,\n color: notif.spinnerColor,\n size: notif.spinnerSize\n })\n )\n }\n else if (notif.icon) {\n mainChild.push(\n h(QIcon, {\n class: 'q-notification__icon q-notification__icon--' + meta.leftClass,\n name: notif.icon,\n color: notif.iconColor,\n size: notif.iconSize,\n role: 'img'\n })\n )\n }\n else if (notif.avatar) {\n mainChild.push(\n h(QAvatar, {\n class: 'q-notification__avatar q-notification__avatar--' + meta.leftClass\n }, () => h('img', { src: notif.avatar, 'aria-hidden': 'true' }))\n )\n }\n }\n\n if (meta.hasText === true) {\n let msgChild\n const msgData = { class: 'q-notification__message col' }\n\n if (notif.html === true) {\n msgData.innerHTML = notif.caption\n ? `
${ notif.message }
${ notif.caption }
`\n : notif.message\n }\n else {\n const msgNode = [ notif.message ]\n msgChild = notif.caption\n ? [\n h('div', msgNode),\n h('div', { class: 'q-notification__caption' }, [ notif.caption ])\n ]\n : msgNode\n }\n\n mainChild.push(\n h('div', msgData, msgChild)\n )\n }\n\n const child = [\n h('div', { class: meta.contentClass }, mainChild)\n ]\n\n notif.progress === true && child.push(\n h('div', {\n key: `${ meta.uid }|p|${ meta.badge }`,\n class: meta.progressClass,\n style: meta.progressStyle\n })\n )\n\n notif.actions !== void 0 && child.push(\n h('div', {\n class: meta.actionsClass\n }, notif.actions.map(props => h(QBtn, props)))\n )\n\n meta.badge > 1 && child.push(\n h('div', {\n key: `${ meta.uid }|${ meta.badge }`,\n class: notif.meta.badgeClass,\n style: notif.badgeStyle\n }, [ meta.badge ])\n )\n\n return h('div', {\n ref: el => { notifRefs[ '' + meta.uid ] = el },\n key: meta.uid,\n class: meta.class,\n ...meta.attrs\n }, [\n h('div', { class: meta.wrapperClass }, child)\n ])\n }))\n }))\n }\n })\n}\n\nexport default {\n setDefaults (opts) {\n if (__QUASAR_SSR_SERVER__ !== true) {\n isObject(opts) === true && Object.assign(defaults, opts)\n }\n },\n\n registerType (typeName, typeOpts) {\n if (__QUASAR_SSR_SERVER__ !== true && isObject(typeOpts) === true) {\n notifTypes[ typeName ] = typeOpts\n }\n },\n\n install ({ $q, parentApp }) {\n $q.notify = this.create = __QUASAR_SSR_SERVER__\n ? noop\n : opts => addNotification(opts, $q)\n\n $q.notify.setDefaults = this.setDefaults\n $q.notify.registerType = this.registerType\n\n if ($q.config.notify !== void 0) {\n this.setDefaults($q.config.notify)\n }\n\n if (__QUASAR_SSR_SERVER__ !== true && this.__installed !== true) {\n positionList.forEach(pos => {\n notificationsList[ pos ] = ref([])\n\n const\n vert = [ 'left', 'center', 'right' ].includes(pos) === true ? 'center' : (pos.indexOf('top') > -1 ? 'top' : 'bottom'),\n align = pos.indexOf('left') > -1 ? 'start' : (pos.indexOf('right') > -1 ? 'end' : 'center'),\n classes = [ 'left', 'right' ].includes(pos) ? `items-${ pos === 'left' ? 'start' : 'end' } justify-center` : (pos === 'center' ? 'flex-center' : `items-${ align }`)\n\n positionClass[ pos ] = `q-notifications__list q-notifications__list--${ vert } fixed column no-wrap ${ classes }`\n })\n\n const el = createGlobalNode('q-notify')\n createChildApp(getComponent(), parentApp).mount(el)\n }\n }\n}\n","import { h } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nconst space = h('div', { class: 'q-space' })\n\nexport default createComponent({\n name: 'QSpace',\n\n setup () {\n return () => space\n }\n})\n","import { getScrollbarWidth } from '../scroll.js'\nimport { client } from '../../plugins/Platform.js'\n\nlet vpLeft, vpTop\n\nexport function validatePosition (pos) {\n const parts = pos.split(' ')\n if (parts.length !== 2) {\n return false\n }\n if ([ 'top', 'center', 'bottom' ].includes(parts[ 0 ]) !== true) {\n console.error('Anchor/Self position must start with one of top/center/bottom')\n return false\n }\n if ([ 'left', 'middle', 'right', 'start', 'end' ].includes(parts[ 1 ]) !== true) {\n console.error('Anchor/Self position must end with one of left/middle/right/start/end')\n return false\n }\n return true\n}\n\nexport function validateOffset (val) {\n if (!val) { return true }\n if (val.length !== 2) { return false }\n if (typeof val[ 0 ] !== 'number' || typeof val[ 1 ] !== 'number') {\n return false\n }\n return true\n}\n\nconst horizontalPos = {\n 'start#ltr': 'left',\n 'start#rtl': 'right',\n 'end#ltr': 'right',\n 'end#rtl': 'left'\n}\n\n;[ 'left', 'middle', 'right' ].forEach(pos => {\n horizontalPos[ `${ pos }#ltr` ] = pos\n horizontalPos[ `${ pos }#rtl` ] = pos\n})\n\nexport function parsePosition (pos, rtl) {\n const parts = pos.split(' ')\n return {\n vertical: parts[ 0 ],\n horizontal: horizontalPos[ `${ parts[ 1 ] }#${ rtl === true ? 'rtl' : 'ltr' }` ]\n }\n}\n\nexport function getAnchorProps (el, offset) {\n let { top, left, right, bottom, width, height } = el.getBoundingClientRect()\n\n if (offset !== void 0) {\n top -= offset[ 1 ]\n left -= offset[ 0 ]\n bottom += offset[ 1 ]\n right += offset[ 0 ]\n\n width += offset[ 0 ]\n height += offset[ 1 ]\n }\n\n return {\n top,\n left,\n right,\n bottom,\n width,\n height,\n middle: left + (right - left) / 2,\n center: top + (bottom - top) / 2\n }\n}\n\nexport function getTargetProps (el) {\n return {\n top: 0,\n center: el.offsetHeight / 2,\n bottom: el.offsetHeight,\n left: 0,\n middle: el.offsetWidth / 2,\n right: el.offsetWidth\n }\n}\n\n// cfg: { el, anchorEl, anchorOrigin, selfOrigin, offset, absoluteOffset, cover, fit, maxHeight, maxWidth }\nexport function setPosition (cfg) {\n if (client.is.ios === true && window.visualViewport !== void 0) {\n // uses the q-position-engine CSS class\n\n const el = document.body.style\n const { offsetLeft: left, offsetTop: top } = window.visualViewport\n\n if (left !== vpLeft) {\n el.setProperty('--q-pe-left', left + 'px')\n vpLeft = left\n }\n if (top !== vpTop) {\n el.setProperty('--q-pe-top', top + 'px')\n vpTop = top\n }\n }\n\n let anchorProps\n\n // scroll position might change\n // if max-height/-width changes, so we\n // need to restore it after we calculate\n // the new positioning\n const { scrollLeft, scrollTop } = cfg.el\n\n if (cfg.absoluteOffset === void 0) {\n anchorProps = getAnchorProps(cfg.anchorEl, cfg.cover === true ? [ 0, 0 ] : cfg.offset)\n }\n else {\n const\n { top: anchorTop, left: anchorLeft } = cfg.anchorEl.getBoundingClientRect(),\n top = anchorTop + cfg.absoluteOffset.top,\n left = anchorLeft + cfg.absoluteOffset.left\n\n anchorProps = { top, left, width: 1, height: 1, right: left + 1, center: top, middle: left, bottom: top + 1 }\n }\n\n let elStyle = {\n maxHeight: cfg.maxHeight,\n maxWidth: cfg.maxWidth,\n visibility: 'visible'\n }\n\n if (cfg.fit === true || cfg.cover === true) {\n elStyle.minWidth = anchorProps.width + 'px'\n if (cfg.cover === true) {\n elStyle.minHeight = anchorProps.height + 'px'\n }\n }\n\n Object.assign(cfg.el.style, elStyle)\n\n const\n targetProps = getTargetProps(cfg.el),\n props = {\n top: anchorProps[ cfg.anchorOrigin.vertical ] - targetProps[ cfg.selfOrigin.vertical ],\n left: anchorProps[ cfg.anchorOrigin.horizontal ] - targetProps[ cfg.selfOrigin.horizontal ]\n }\n\n applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)\n\n elStyle = {\n top: props.top + 'px',\n left: props.left + 'px'\n }\n\n if (props.maxHeight !== void 0) {\n elStyle.maxHeight = props.maxHeight + 'px'\n\n if (anchorProps.height > props.maxHeight) {\n elStyle.minHeight = elStyle.maxHeight\n }\n }\n if (props.maxWidth !== void 0) {\n elStyle.maxWidth = props.maxWidth + 'px'\n\n if (anchorProps.width > props.maxWidth) {\n elStyle.minWidth = elStyle.maxWidth\n }\n }\n\n Object.assign(cfg.el.style, elStyle)\n\n // restore scroll position\n if (cfg.el.scrollTop !== scrollTop) {\n cfg.el.scrollTop = scrollTop\n }\n if (cfg.el.scrollLeft !== scrollLeft) {\n cfg.el.scrollLeft = scrollLeft\n }\n}\n\nfunction applyBoundaries (props, anchorProps, targetProps, anchorOrigin, selfOrigin) {\n const\n currentHeight = targetProps.bottom,\n currentWidth = targetProps.right,\n margin = getScrollbarWidth(),\n innerHeight = window.innerHeight - margin,\n innerWidth = document.body.clientWidth\n\n if (props.top < 0 || props.top + currentHeight > innerHeight) {\n if (selfOrigin.vertical === 'center') {\n props.top = anchorProps[ anchorOrigin.vertical ] > innerHeight / 2\n ? Math.max(0, innerHeight - currentHeight)\n : 0\n props.maxHeight = Math.min(currentHeight, innerHeight)\n }\n else if (anchorProps[ anchorOrigin.vertical ] > innerHeight / 2) {\n const anchorY = Math.min(\n innerHeight,\n anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.bottom : anchorProps.top)\n )\n props.maxHeight = Math.min(currentHeight, anchorY)\n props.top = Math.max(0, anchorY - currentHeight)\n }\n else {\n props.top = Math.max(0, anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.top : anchorProps.bottom)\n )\n props.maxHeight = Math.min(currentHeight, innerHeight - props.top)\n }\n }\n\n if (props.left < 0 || props.left + currentWidth > innerWidth) {\n props.maxWidth = Math.min(currentWidth, innerWidth)\n if (selfOrigin.horizontal === 'middle') {\n props.left = anchorProps[ anchorOrigin.horizontal ] > innerWidth / 2\n ? Math.max(0, innerWidth - currentWidth)\n : 0\n }\n else if (anchorProps[ anchorOrigin.horizontal ] > innerWidth / 2) {\n const anchorX = Math.min(\n innerWidth,\n anchorOrigin.horizontal === 'middle'\n ? anchorProps.middle\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.right : anchorProps.left)\n )\n props.maxWidth = Math.min(currentWidth, anchorX)\n props.left = Math.max(0, anchorX - props.maxWidth)\n }\n else {\n props.left = Math.max(0, anchorOrigin.horizontal === 'middle'\n ? anchorProps.middle\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.left : anchorProps.right)\n )\n props.maxWidth = Math.min(currentWidth, innerWidth - props.left)\n }\n }\n}\n","import { client } from '../../plugins/Platform.js'\n\nconst isJapanese = /[\\u3000-\\u303f\\u3040-\\u309f\\u30a0-\\u30ff\\uff00-\\uff9f\\u4e00-\\u9faf\\u3400-\\u4dbf]/\nconst isChinese = /[\\u4e00-\\u9fff\\u3400-\\u4dbf\\u{20000}-\\u{2a6df}\\u{2a700}-\\u{2b73f}\\u{2b740}-\\u{2b81f}\\u{2b820}-\\u{2ceaf}\\uf900-\\ufaff\\u3300-\\u33ff\\ufe30-\\ufe4f\\uf900-\\ufaff\\u{2f800}-\\u{2fa1f}]/u\nconst isKorean = /[\\u3131-\\u314e\\u314f-\\u3163\\uac00-\\ud7a3]/\nconst isPlainText = /[a-z0-9_ -]$/i\n\nexport default function (onInput) {\n return function onComposition (e) {\n if (e.type === 'compositionend' || e.type === 'change') {\n if (e.target.qComposing !== true) { return }\n e.target.qComposing = false\n onInput(e)\n }\n else if (\n e.type === 'compositionupdate'\n && e.target.qComposing !== true\n && typeof e.data === 'string'\n ) {\n const isComposing = client.is.firefox === true\n ? isPlainText.test(e.data) === false\n : isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true\n\n if (isComposing === true) {\n e.target.qComposing = true\n }\n }\n }\n}\n","import { h, ref, computed, getCurrentInstance, toRaw } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\nimport useRefocusTarget from '../../composables/private/use-refocus-target.js'\nimport { useFormProps, useFormInject } from '../../composables/private/use-form.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport optionSizes from '../../utils/private/option-sizes.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { hSlot, hMergeSlot } from '../../utils/private/render.js'\n\nconst svg = h('svg', {\n key: 'svg',\n class: 'q-radio__bg absolute non-selectable',\n viewBox: '0 0 24 24'\n}, [\n h('path', {\n d: 'M12,22a10,10 0 0 1 -10,-10a10,10 0 0 1 10,-10a10,10 0 0 1 10,10a10,10 0 0 1 -10,10m0,-22a12,12 0 0 0 -12,12a12,12 0 0 0 12,12a12,12 0 0 0 12,-12a12,12 0 0 0 -12,-12'\n }),\n\n h('path', {\n class: 'q-radio__check',\n d: 'M12,6a6,6 0 0 0 -6,6a6,6 0 0 0 6,6a6,6 0 0 0 6,-6a6,6 0 0 0 -6,-6'\n })\n])\n\nexport default createComponent({\n name: 'QRadio',\n\n props: {\n ...useDarkProps,\n ...useSizeProps,\n ...useFormProps,\n\n modelValue: { required: true },\n val: { required: true },\n\n label: String,\n leftLabel: Boolean,\n\n checkedIcon: String,\n uncheckedIcon: String,\n\n color: String,\n keepColor: Boolean,\n dense: Boolean,\n\n disable: Boolean,\n tabindex: [ String, Number ]\n },\n\n emits: [ 'update:modelValue' ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n\n const isDark = useDark(props, proxy.$q)\n const sizeStyle = useSize(props, optionSizes)\n\n const rootRef = ref(null)\n const { refocusTargetEl, refocusTarget } = useRefocusTarget(props, rootRef)\n\n const isTrue = computed(() => toRaw(props.modelValue) === toRaw(props.val))\n\n const classes = computed(() =>\n 'q-radio cursor-pointer no-outline row inline no-wrap items-center'\n + (props.disable === true ? ' disabled' : '')\n + (isDark.value === true ? ' q-radio--dark' : '')\n + (props.dense === true ? ' q-radio--dense' : '')\n + (props.leftLabel === true ? ' reverse' : '')\n )\n\n const innerClass = computed(() => {\n const color = props.color !== void 0 && (\n props.keepColor === true\n || isTrue.value === true\n )\n ? ` text-${ props.color }`\n : ''\n\n return 'q-radio__inner relative-position '\n + `q-radio__inner--${ isTrue.value === true ? 'truthy' : 'falsy' }${ color }`\n })\n\n const icon = computed(() =>\n (isTrue.value === true\n ? props.checkedIcon\n : props.uncheckedIcon\n ) || null\n )\n\n const tabindex = computed(() => (\n props.disable === true ? -1 : props.tabindex || 0\n ))\n\n const formAttrs = computed(() => {\n const prop = { type: 'radio' }\n\n props.name !== void 0 && Object.assign(prop, {\n '^checked': isTrue.value === true ? 'checked' : void 0,\n name: props.name,\n value: props.val\n })\n\n return prop\n })\n\n const injectFormInput = useFormInject(formAttrs)\n\n function onClick (e) {\n if (e !== void 0) {\n stopAndPrevent(e)\n refocusTarget(e)\n }\n\n if (props.disable !== true && isTrue.value !== true) {\n emit('update:modelValue', props.val, e)\n }\n }\n\n function onKeydown (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n stopAndPrevent(e)\n }\n }\n\n function onKeyup (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n onClick(e)\n }\n }\n\n // expose public methods\n Object.assign(proxy, { set: onClick })\n\n return () => {\n const content = icon.value !== null\n ? [\n h('div', {\n key: 'icon',\n class: 'q-radio__icon-container absolute-full flex flex-center no-wrap'\n }, [\n h(QIcon, {\n class: 'q-radio__icon',\n name: icon.value\n })\n ])\n ]\n : [ svg ]\n\n props.disable !== true && injectFormInput(\n content,\n 'unshift',\n ' q-radio__native q-ma-none q-pa-none'\n )\n\n const child = [\n h('div', {\n class: innerClass.value,\n style: sizeStyle.value,\n 'aria-hidden': 'true'\n }, content)\n ]\n\n if (refocusTargetEl.value !== null) {\n child.push(refocusTargetEl.value)\n }\n\n const label = props.label !== void 0\n ? hMergeSlot(slots.default, [ props.label ])\n : hSlot(slots.default)\n\n label !== void 0 && child.push(\n h('div', {\n class: 'q-radio__label q-anchor--skip'\n }, label)\n )\n\n return h('div', {\n ref: rootRef,\n class: classes.value,\n tabindex: tabindex.value,\n role: 'radio',\n 'aria-label': props.label,\n 'aria-checked': isTrue.value === true ? 'true' : 'false',\n 'aria-disabled': props.disable === true ? 'true' : void 0,\n onClick,\n onKeydown,\n onKeyup\n }, child)\n }\n }\n})\n","import { onDeactivated, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport { vmIsDestroyed } from '../../utils/private/vm'\n\n/*\n * Usage:\n * registerTimeout(fn[, delay])\n * removeTimeout()\n */\n\nexport default function () {\n let timer\n const vm = getCurrentInstance()\n\n function removeTimeout () {\n clearTimeout(timer)\n }\n\n onDeactivated(removeTimeout)\n onBeforeUnmount(removeTimeout)\n\n return {\n removeTimeout,\n\n registerTimeout (fn, delay) {\n clearTimeout(timer)\n\n if (vmIsDestroyed(vm) === false) {\n timer = setTimeout(fn, delay)\n }\n }\n }\n}\n","import { ref, onMounted } from 'vue'\n\n// using it to manage SSR rendering with best performance\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nexport default function () {\n const canRender = ref(!isRuntimeSsrPreHydration.value)\n\n if (canRender.value === false) {\n onMounted(() => {\n canRender.value = true\n })\n }\n\n return canRender\n}\n","import { h, onMounted, onBeforeUnmount, getCurrentInstance, nextTick } from 'vue'\n\nimport useCanRender from '../../composables/private/use-can-render.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { listenOpts, noop } from '../../utils/event.js'\n\nconst hasObserver = typeof ResizeObserver !== 'undefined'\nconst resizeProps = hasObserver === true\n ? {}\n : {\n style: 'display:block;position:absolute;top:0;left:0;right:0;bottom:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1;',\n url: 'about:blank'\n }\n\nexport default createComponent({\n name: 'QResizeObserver',\n\n props: {\n debounce: {\n type: [ String, Number ],\n default: 100\n }\n },\n\n emits: [ 'resize' ],\n\n setup (props, { emit }) {\n if (__QUASAR_SSR_SERVER__) { return noop }\n\n let timer = null, targetEl, size = { width: -1, height: -1 }\n\n function trigger (immediately) {\n if (immediately === true || props.debounce === 0 || props.debounce === '0') {\n emitEvent()\n }\n else if (timer === null) {\n timer = setTimeout(emitEvent, props.debounce)\n }\n }\n\n function emitEvent () {\n clearTimeout(timer)\n timer = null\n\n if (targetEl) {\n const { offsetWidth: width, offsetHeight: height } = targetEl\n\n if (width !== size.width || height !== size.height) {\n size = { width, height }\n emit('resize', size)\n }\n }\n }\n\n const { proxy } = getCurrentInstance()\n\n if (hasObserver === true) {\n let observer\n\n // initialize as soon as possible\n const init = stop => {\n targetEl = proxy.$el.parentNode\n\n if (targetEl) {\n observer = new ResizeObserver(trigger)\n observer.observe(targetEl)\n emitEvent()\n }\n else if (stop !== true) {\n nextTick(() => { init(true) })\n }\n }\n\n onMounted(() => { init() })\n\n onBeforeUnmount(() => {\n clearTimeout(timer)\n\n if (observer !== void 0) {\n if (observer.disconnect !== void 0) {\n observer.disconnect()\n }\n else if (targetEl) { // FF for Android\n observer.unobserve(targetEl)\n }\n }\n })\n\n return noop\n }\n else { // no observer, so fallback to old iframe method\n const canRender = useCanRender()\n\n let curDocView\n\n function cleanup () {\n clearTimeout(timer)\n\n if (curDocView !== void 0) {\n // iOS is fuzzy, need to check it first\n if (curDocView.removeEventListener !== void 0) {\n curDocView.removeEventListener('resize', trigger, listenOpts.passive)\n }\n curDocView = void 0\n }\n }\n\n function onObjLoad () {\n cleanup()\n\n if (targetEl && targetEl.contentDocument) {\n curDocView = targetEl.contentDocument.defaultView\n curDocView.addEventListener('resize', trigger, listenOpts.passive)\n emitEvent()\n }\n }\n\n onMounted(() => {\n nextTick(() => {\n targetEl = proxy.$el\n targetEl && onObjLoad()\n })\n })\n\n onBeforeUnmount(cleanup)\n\n // expose public method\n proxy.trigger = trigger\n\n return () => {\n if (canRender.value === true) {\n return h('object', {\n style: resizeProps.style,\n tabindex: -1, // fix for Firefox\n type: 'text/html',\n data: resizeProps.url,\n 'aria-hidden': 'true',\n onLoad: onObjLoad\n })\n }\n }\n }\n }\n})\n","import { isRuntimeSsrPreHydration, client } from './Platform.js'\n\nimport defineReactivePlugin from '../utils/private/define-reactive-plugin.js'\nimport { listenOpts, noop } from '../utils/event.js'\nimport debounce from '../utils/debounce.js'\n\nconst SIZE_LIST = [ 'sm', 'md', 'lg', 'xl' ]\nconst { passive } = listenOpts\n\nexport default defineReactivePlugin({\n width: 0,\n height: 0,\n name: 'xs',\n\n sizes: {\n sm: 600,\n md: 1024,\n lg: 1440,\n xl: 1920\n },\n\n lt: {\n sm: true,\n md: true,\n lg: true,\n xl: true\n },\n gt: {\n xs: false,\n sm: false,\n md: false,\n lg: false\n },\n\n xs: true,\n sm: false,\n md: false,\n lg: false,\n xl: false\n}, {\n setSizes: noop,\n setDebounce: noop,\n\n install ({ $q, onSSRHydrated }) {\n $q.screen = this\n\n if (__QUASAR_SSR_SERVER__) { return }\n\n if (this.__installed === true) {\n if ($q.config.screen !== void 0) {\n if ($q.config.screen.bodyClasses === false) {\n document.body.classList.remove(`screen--${ this.name }`)\n }\n else {\n this.__update(true)\n }\n }\n return\n }\n\n const { visualViewport } = window\n const target = visualViewport || window\n const scrollingElement = document.scrollingElement || document.documentElement\n const getSize = visualViewport === void 0 || client.is.mobile === true\n ? () => [\n Math.max(window.innerWidth, scrollingElement.clientWidth),\n Math.max(window.innerHeight, scrollingElement.clientHeight)\n ]\n : () => [\n visualViewport.width * visualViewport.scale + window.innerWidth - scrollingElement.clientWidth,\n visualViewport.height * visualViewport.scale + window.innerHeight - scrollingElement.clientHeight\n ]\n\n const classes = $q.config.screen !== void 0 && $q.config.screen.bodyClasses === true\n\n this.__update = force => {\n const [ w, h ] = getSize()\n\n if (h !== this.height) {\n this.height = h\n }\n\n if (w !== this.width) {\n this.width = w\n }\n else if (force !== true) {\n return\n }\n\n let s = this.sizes\n\n this.gt.xs = w >= s.sm\n this.gt.sm = w >= s.md\n this.gt.md = w >= s.lg\n this.gt.lg = w >= s.xl\n this.lt.sm = w < s.sm\n this.lt.md = w < s.md\n this.lt.lg = w < s.lg\n this.lt.xl = w < s.xl\n this.xs = this.lt.sm\n this.sm = this.gt.xs === true && this.lt.md === true\n this.md = this.gt.sm === true && this.lt.lg === true\n this.lg = this.gt.md === true && this.lt.xl === true\n this.xl = this.gt.lg\n\n s = (this.xs === true && 'xs')\n || (this.sm === true && 'sm')\n || (this.md === true && 'md')\n || (this.lg === true && 'lg')\n || 'xl'\n\n if (s !== this.name) {\n if (classes === true) {\n document.body.classList.remove(`screen--${ this.name }`)\n document.body.classList.add(`screen--${ s }`)\n }\n this.name = s\n }\n }\n\n let updateEvt, updateSizes = {}, updateDebounce = 16\n\n this.setSizes = sizes => {\n SIZE_LIST.forEach(name => {\n if (sizes[ name ] !== void 0) {\n updateSizes[ name ] = sizes[ name ]\n }\n })\n }\n this.setDebounce = deb => {\n updateDebounce = deb\n }\n\n const start = () => {\n const style = getComputedStyle(document.body)\n\n // if css props available\n if (style.getPropertyValue('--q-size-sm')) {\n SIZE_LIST.forEach(name => {\n this.sizes[ name ] = parseInt(style.getPropertyValue(`--q-size-${ name }`), 10)\n })\n }\n\n this.setSizes = sizes => {\n SIZE_LIST.forEach(name => {\n if (sizes[ name ]) {\n this.sizes[ name ] = sizes[ name ]\n }\n })\n this.__update(true)\n }\n\n this.setDebounce = delay => {\n updateEvt !== void 0 && target.removeEventListener('resize', updateEvt, passive)\n updateEvt = delay > 0\n ? debounce(this.__update, delay)\n : this.__update\n target.addEventListener('resize', updateEvt, passive)\n }\n\n this.setDebounce(updateDebounce)\n\n if (Object.keys(updateSizes).length > 0) {\n this.setSizes(updateSizes)\n updateSizes = void 0 // free up memory\n }\n else {\n this.__update()\n }\n\n // due to optimizations, this would be left out otherwise\n classes === true && this.name === 'xs'\n && document.body.classList.add('screen--xs')\n }\n\n if (isRuntimeSsrPreHydration.value === true) {\n onSSRHydrated.push(start)\n }\n else {\n start()\n }\n }\n})\n","import defineReactivePlugin from '../utils/private/define-reactive-plugin.js'\nimport { isRuntimeSsrPreHydration } from './Platform.js'\n\nconst Plugin = defineReactivePlugin({\n isActive: false,\n mode: false\n}, {\n __media: void 0,\n\n set (val) {\n if (__QUASAR_SSR_SERVER__) { return }\n\n Plugin.mode = val\n\n if (val === 'auto') {\n if (Plugin.__media === void 0) {\n Plugin.__media = window.matchMedia('(prefers-color-scheme: dark)')\n Plugin.__updateMedia = () => { Plugin.set('auto') }\n Plugin.__media.addListener(Plugin.__updateMedia)\n }\n\n val = Plugin.__media.matches\n }\n else if (Plugin.__media !== void 0) {\n Plugin.__media.removeListener(Plugin.__updateMedia)\n Plugin.__media = void 0\n }\n\n Plugin.isActive = val === true\n\n document.body.classList.remove(`body--${ val === true ? 'light' : 'dark' }`)\n document.body.classList.add(`body--${ val === true ? 'dark' : 'light' }`)\n },\n\n toggle () {\n if (__QUASAR_SSR_SERVER__ !== true) {\n Plugin.set(Plugin.isActive === false)\n }\n },\n\n install ({ $q, onSSRHydrated, ssrContext }) {\n const { dark } = $q.config\n\n if (__QUASAR_SSR_SERVER__) {\n this.isActive = dark === true\n\n $q.dark = {\n isActive: false,\n mode: false,\n set: val => {\n ssrContext._meta.bodyClasses = ssrContext._meta.bodyClasses\n .replace(' body--light', '')\n .replace(' body--dark', '') + ` body--${ val === true ? 'dark' : 'light' }`\n\n $q.dark.isActive = val === true\n $q.dark.mode = val\n },\n toggle: () => {\n $q.dark.set($q.dark.isActive === false)\n }\n }\n\n $q.dark.set(dark)\n return\n }\n\n $q.dark = this\n\n if (this.__installed === true && dark === void 0) {\n return\n }\n\n this.isActive = dark === true\n\n const initialVal = dark !== void 0 ? dark : false\n\n if (isRuntimeSsrPreHydration.value === true) {\n const ssrSet = val => {\n this.__fromSSR = val\n }\n\n const originalSet = this.set\n\n this.set = ssrSet\n ssrSet(initialVal)\n\n onSSRHydrated.push(() => {\n this.set = originalSet\n this.set(this.__fromSSR)\n })\n }\n else {\n this.set(initialVal)\n }\n }\n})\n\nexport default Plugin\n","export default function setCssVar (propName, value, element = document.body) {\n if (typeof propName !== 'string') {\n throw new TypeError('Expected a string as propName')\n }\n if (typeof value !== 'string') {\n throw new TypeError('Expected a string as value')\n }\n if (!(element instanceof Element)) {\n throw new TypeError('Expected a DOM element')\n }\n\n element.style.setProperty(`--q-${ propName }`, value)\n}\n","import setCssVar from './utils/set-css-var.js'\nimport { noop } from './utils/event.js'\nimport { onKeyDownComposition } from './utils/private/key-composition.js'\nimport { isRuntimeSsrPreHydration, client, iosCorrection } from './plugins/Platform.js'\n\nfunction getMobilePlatform (is) {\n if (is.ios === true) return 'ios'\n if (is.android === true) return 'android'\n}\n\nfunction getBodyClasses ({ is, has, within }, cfg) {\n const cls = [\n is.desktop === true ? 'desktop' : 'mobile',\n `${ has.touch === false ? 'no-' : '' }touch`\n ]\n\n if (is.mobile === true) {\n const mobile = getMobilePlatform(is)\n mobile !== void 0 && cls.push('platform-' + mobile)\n }\n\n if (is.nativeMobile === true) {\n const type = is.nativeMobileWrapper\n\n cls.push(type)\n cls.push('native-mobile')\n\n if (\n is.ios === true\n && (cfg[ type ] === void 0 || cfg[ type ].iosStatusBarPadding !== false)\n ) {\n cls.push('q-ios-padding')\n }\n }\n else if (is.electron === true) {\n cls.push('electron')\n }\n else if (is.bex === true) {\n cls.push('bex')\n }\n\n within.iframe === true && cls.push('within-iframe')\n\n return cls\n}\n\nfunction applyClientSsrCorrections () {\n const classes = document.body.className\n let newCls = classes\n\n if (iosCorrection !== void 0) {\n newCls = newCls.replace('desktop', 'platform-ios mobile')\n }\n\n if (client.has.touch === true) {\n newCls = newCls.replace('no-touch', 'touch')\n }\n\n if (client.within.iframe === true) {\n newCls += ' within-iframe'\n }\n\n if (classes !== newCls) {\n document.body.className = newCls\n }\n}\n\nfunction setColors (brand) {\n for (const color in brand) {\n setCssVar(color, brand[ color ])\n }\n}\n\nexport default {\n install (opts) {\n if (__QUASAR_SSR_SERVER__) {\n const { $q, ssrContext } = opts\n const cls = getBodyClasses($q.platform, $q.config)\n\n if ($q.config.screen !== void 0 && $q.config.screen.bodyClass === true) {\n cls.push('screen--xs')\n }\n\n ssrContext._meta.bodyClasses += cls.join(' ')\n\n const brand = $q.config.brand\n if (brand !== void 0) {\n const vars = Object.keys(brand)\n .map(key => `--q-${ key }:${ brand[ key ] };`)\n .join('')\n\n ssrContext._meta.endingHeadTags += ``\n }\n\n return\n }\n\n if (this.__installed === true) { return }\n\n if (isRuntimeSsrPreHydration.value === true) {\n applyClientSsrCorrections()\n }\n else {\n const { $q } = opts\n\n $q.config.brand !== void 0 && setColors($q.config.brand)\n\n const cls = getBodyClasses(client, $q.config)\n document.body.classList.add.apply(document.body.classList, cls)\n }\n\n if (client.is.ios === true) {\n // needed for iOS button active state\n document.body.addEventListener('touchstart', noop)\n }\n\n window.addEventListener('keydown', onKeyDownComposition, true)\n }\n}\n","import { createApp } from 'vue'\n\nimport Platform, { isRuntimeSsrPreHydration } from './plugins/Platform.js'\nimport Screen from './plugins/Screen.js'\nimport Dark from './plugins/Dark.js'\nimport History from './history.js'\nimport Lang from './lang.js'\nimport Body from './body.js'\nimport IconSet from './icon-set.js'\n\nimport { quasarKey } from './utils/private/symbols.js'\nimport { globalConfig, globalConfigIsFrozen, freezeGlobalConfig } from './utils/private/global-config.js'\nimport { isObject } from './utils/is.js'\n\nconst autoInstalledPlugins = [\n Platform,\n Body,\n Dark,\n Screen,\n History,\n Lang,\n IconSet\n]\n\nexport function createChildApp (appCfg, parentApp) {\n const app = createApp(appCfg)\n\n app.config.globalProperties = parentApp.config.globalProperties\n\n const { reload, ...appContext } = parentApp._context\n Object.assign(app._context, appContext)\n\n return app\n}\n\nfunction installPlugins (pluginOpts, pluginList) {\n pluginList.forEach(Plugin => {\n Plugin.install(pluginOpts)\n Plugin.__installed = true\n })\n}\n\nfunction prepareApp (app, uiOpts, pluginOpts) {\n app.config.globalProperties.$q = pluginOpts.$q\n app.provide(quasarKey, pluginOpts.$q)\n\n installPlugins(pluginOpts, autoInstalledPlugins)\n\n uiOpts.components !== void 0 && Object.values(uiOpts.components).forEach(c => {\n if (isObject(c) === true && c.name !== void 0) {\n app.component(c.name, c)\n }\n })\n\n uiOpts.directives !== void 0 && Object.values(uiOpts.directives).forEach(d => {\n if (isObject(d) === true && d.name !== void 0) {\n app.directive(d.name, d)\n }\n })\n\n uiOpts.plugins !== void 0 && installPlugins(\n pluginOpts,\n Object.values(uiOpts.plugins).filter(\n p => typeof p.install === 'function' && autoInstalledPlugins.includes(p) === false\n )\n )\n\n if (isRuntimeSsrPreHydration.value === true) {\n pluginOpts.$q.onSSRHydrated = () => {\n pluginOpts.onSSRHydrated.forEach(fn => { fn() })\n pluginOpts.$q.onSSRHydrated = () => {}\n }\n }\n}\n\nexport default __QUASAR_SSR_SERVER__\n ? function (parentApp, opts = {}, ssrContext) {\n const $q = {\n version: __QUASAR_VERSION__,\n config: opts.config || {}\n }\n\n Object.assign(ssrContext, {\n $q,\n _meta: {\n htmlAttrs: '',\n headTags: '',\n endingHeadTags: '',\n bodyClasses: '',\n bodyAttrs: 'data-server-rendered',\n bodyTags: ''\n }\n })\n\n if (ssrContext._modules === void 0) {\n // not OK. means the SSR build is not using @quasar/ssr-helpers,\n // but we shouldn't crash the app\n ssrContext._modules = []\n }\n\n if (ssrContext.onRendered === void 0) {\n // not OK. means the SSR build is not using @quasar/ssr-helpers,\n // but we shouldn't crash the app\n ssrContext.onRendered = () => {}\n }\n\n parentApp.config.globalProperties.ssrContext = ssrContext\n\n prepareApp(parentApp, opts, {\n parentApp,\n $q,\n lang: opts.lang,\n iconSet: opts.iconSet,\n ssrContext\n })\n }\n : function (parentApp, opts = {}) {\n const $q = { version: __QUASAR_VERSION__ }\n\n if (globalConfigIsFrozen === false) {\n if (opts.config !== void 0) {\n Object.assign(globalConfig, opts.config)\n }\n\n $q.config = { ...globalConfig }\n freezeGlobalConfig()\n }\n else {\n $q.config = opts.config || {}\n }\n\n prepareApp(parentApp, opts, {\n parentApp,\n $q,\n lang: opts.lang,\n iconSet: opts.iconSet,\n onSSRHydrated: []\n })\n }\n","import { h, ref, watch, computed, getCurrentInstance } from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport QInput from '../input/QInput.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport { btnDesignOptions, btnPadding, getBtnDesign } from '../btn/use-btn.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { between } from '../../utils/format.js'\nimport { isKeyCode } from '../../utils/private/key-composition.js'\n\nfunction getBool (val, otherwise) {\n return [ true, false ].includes(val)\n ? val\n : otherwise\n}\n\nexport default createComponent({\n name: 'QPagination',\n\n props: {\n ...useDarkProps,\n\n modelValue: {\n type: Number,\n required: true\n },\n min: {\n type: [ Number, String ],\n default: 1\n },\n max: {\n type: [ Number, String ],\n required: true\n },\n maxPages: {\n type: [ Number, String ],\n default: 0,\n validator: v => (\n (typeof v === 'string' ? parseInt(v, 10) : v) >= 0\n )\n },\n\n inputStyle: [ Array, String, Object ],\n inputClass: [ Array, String, Object ],\n\n size: String,\n\n disable: Boolean,\n\n input: Boolean,\n\n iconPrev: String,\n iconNext: String,\n iconFirst: String,\n iconLast: String,\n\n toFn: Function,\n\n boundaryLinks: {\n type: Boolean,\n default: null\n },\n boundaryNumbers: {\n type: Boolean,\n default: null\n },\n directionLinks: {\n type: Boolean,\n default: null\n },\n ellipses: {\n type: Boolean,\n default: null\n },\n\n ripple: {\n type: [ Boolean, Object ],\n default: null\n },\n\n round: Boolean,\n rounded: Boolean,\n\n flat: Boolean,\n outline: Boolean,\n unelevated: Boolean,\n push: Boolean,\n glossy: Boolean,\n\n color: {\n type: String,\n default: 'primary'\n },\n textColor: String,\n\n activeDesign: {\n type: String,\n default: '',\n values: v => v === '' || btnDesignOptions.includes(v)\n },\n activeColor: String,\n activeTextColor: String,\n\n gutter: String,\n padding: {\n type: String,\n default: '3px 2px'\n }\n },\n\n emits: [ 'update:modelValue' ],\n\n setup (props, { emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const isDark = useDark(props, $q)\n\n const minProp = computed(() => parseInt(props.min, 10))\n const maxProp = computed(() => parseInt(props.max, 10))\n const maxPagesProp = computed(() => parseInt(props.maxPages, 10))\n\n const inputPlaceholder = computed(() => model.value + ' / ' + maxProp.value)\n const boundaryLinksProp = computed(() => getBool(props.boundaryLinks, props.input))\n const boundaryNumbersProp = computed(() => getBool(props.boundaryNumbers, !props.input))\n const directionLinksProp = computed(() => getBool(props.directionLinks, props.input))\n const ellipsesProp = computed(() => getBool(props.ellipses, !props.input))\n\n const newPage = ref(null)\n const model = computed({\n get: () => props.modelValue,\n set: val => {\n val = parseInt(val, 10)\n if (props.disable || isNaN(val)) {\n return\n }\n const value = between(val, minProp.value, maxProp.value)\n if (props.modelValue !== value) {\n emit('update:modelValue', value)\n }\n }\n })\n\n watch(() => `${ minProp.value }|${ maxProp.value }`, () => {\n model.value = props.modelValue\n })\n\n const classes = computed(() =>\n 'q-pagination row no-wrap items-center'\n + (props.disable === true ? ' disabled' : '')\n )\n\n const gutterProp = computed(() => (\n props.gutter in btnPadding\n ? `${ btnPadding[ props.gutter ] }px`\n : props.gutter || null\n ))\n const gutterStyle = computed(() => (\n gutterProp.value !== null\n ? `--q-pagination-gutter-parent:-${ gutterProp.value };--q-pagination-gutter-child:${ gutterProp.value }`\n : null\n ))\n\n const icons = computed(() => {\n const ico = [\n props.iconFirst || $q.iconSet.pagination.first,\n props.iconPrev || $q.iconSet.pagination.prev,\n props.iconNext || $q.iconSet.pagination.next,\n props.iconLast || $q.iconSet.pagination.last\n ]\n return $q.lang.rtl === true ? ico.reverse() : ico\n })\n\n const attrs = computed(() => ({\n 'aria-disabled': props.disable === true ? 'true' : 'false',\n role: 'navigation'\n }))\n\n const btnDesignProp = computed(() => getBtnDesign(props, 'flat'))\n const btnProps = computed(() => ({\n [ btnDesignProp.value ]: true,\n\n round: props.round,\n rounded: props.rounded,\n\n padding: props.padding,\n\n color: props.color,\n textColor: props.textColor,\n\n size: props.size,\n ripple: props.ripple !== null\n ? props.ripple\n : true\n }))\n\n const btnActiveDesignProp = computed(() => {\n // we also reset non-active design\n const acc = { [ btnDesignProp.value ]: false }\n if (props.activeDesign !== '') {\n acc[ props.activeDesign ] = true\n }\n return acc\n })\n const activeBtnProps = computed(() => ({\n ...btnActiveDesignProp.value,\n color: props.activeColor || props.color,\n textColor: props.activeTextColor || props.textColor\n }))\n\n const btnConfig = computed(() => {\n let maxPages = Math.max(\n maxPagesProp.value,\n 1 + (ellipsesProp.value ? 2 : 0) + (boundaryNumbersProp.value ? 2 : 0)\n )\n\n const acc = {\n pgFrom: minProp.value,\n pgTo: maxProp.value,\n ellipsesStart: false,\n ellipsesEnd: false,\n boundaryStart: false,\n boundaryEnd: false,\n marginalStyle: {\n minWidth: `${ Math.max(2, String(maxProp.value).length) }em`\n }\n }\n\n if (maxPagesProp.value && maxPages < (maxProp.value - minProp.value + 1)) {\n maxPages = 1 + Math.floor(maxPages / 2) * 2\n acc.pgFrom = Math.max(minProp.value, Math.min(maxProp.value - maxPages + 1, props.modelValue - Math.floor(maxPages / 2)))\n acc.pgTo = Math.min(maxProp.value, acc.pgFrom + maxPages - 1)\n\n if (boundaryNumbersProp.value) {\n acc.boundaryStart = true\n acc.pgFrom++\n }\n\n if (ellipsesProp.value && acc.pgFrom > (minProp.value + (boundaryNumbersProp.value ? 1 : 0))) {\n acc.ellipsesStart = true\n acc.pgFrom++\n }\n\n if (boundaryNumbersProp.value) {\n acc.boundaryEnd = true\n acc.pgTo--\n }\n\n if (ellipsesProp.value && acc.pgTo < (maxProp.value - (boundaryNumbersProp.value ? 1 : 0))) {\n acc.ellipsesEnd = true\n acc.pgTo--\n }\n }\n\n return acc\n })\n\n function set (value) {\n model.value = value\n }\n\n function setByOffset (offset) {\n model.value = model.value + offset\n }\n\n const inputEvents = computed(() => {\n function updateModel () {\n model.value = newPage.value\n newPage.value = null\n }\n\n return {\n 'onUpdate:modelValue': val => { newPage.value = val },\n onKeyup: e => { isKeyCode(e, 13) === true && updateModel() },\n onBlur: updateModel\n }\n })\n\n function getBtn (cfg, page, active) {\n const data = {\n 'aria-label': page,\n 'aria-current': 'false',\n ...btnProps.value,\n ...cfg\n }\n\n if (active === true) {\n Object.assign(data, {\n 'aria-current': 'true',\n ...activeBtnProps.value\n })\n }\n\n if (page !== void 0) {\n if (props.toFn !== void 0) {\n data.to = props.toFn(page)\n }\n else {\n data.onClick = () => { set(page) }\n }\n }\n\n return h(QBtn, data)\n }\n\n // expose public methods\n Object.assign(proxy, { set, setByOffset })\n\n return () => {\n const contentStart = []\n const contentEnd = []\n let contentMiddle\n\n if (boundaryLinksProp.value === true) {\n contentStart.push(\n getBtn({\n key: 'bls',\n disable: props.disable || props.modelValue <= minProp.value,\n icon: icons.value[ 0 ]\n }, minProp.value)\n )\n\n contentEnd.unshift(\n getBtn({\n key: 'ble',\n disable: props.disable || props.modelValue >= maxProp.value,\n icon: icons.value[ 3 ]\n }, maxProp.value)\n )\n }\n\n if (directionLinksProp.value === true) {\n contentStart.push(\n getBtn({\n key: 'bdp',\n disable: props.disable || props.modelValue <= minProp.value,\n icon: icons.value[ 1 ]\n }, props.modelValue - 1)\n )\n\n contentEnd.unshift(\n getBtn({\n key: 'bdn',\n disable: props.disable || props.modelValue >= maxProp.value,\n icon: icons.value[ 2 ]\n }, props.modelValue + 1)\n )\n }\n\n if (props.input !== true) { // has buttons instead of inputbox\n contentMiddle = []\n const { pgFrom, pgTo, marginalStyle: style } = btnConfig.value\n\n if (btnConfig.value.boundaryStart === true) {\n const active = minProp.value === props.modelValue\n contentStart.push(\n getBtn({\n key: 'bns',\n style,\n disable: props.disable,\n label: minProp.value\n }, minProp.value, active)\n )\n }\n\n if (btnConfig.value.boundaryEnd === true) {\n const active = maxProp.value === props.modelValue\n contentEnd.unshift(\n getBtn({\n key: 'bne',\n style,\n disable: props.disable,\n label: maxProp.value\n }, maxProp.value, active)\n )\n }\n\n if (btnConfig.value.ellipsesStart === true) {\n contentStart.push(\n getBtn({\n key: 'bes',\n style,\n disable: props.disable,\n label: '…',\n ripple: false\n }, pgFrom - 1)\n )\n }\n\n if (btnConfig.value.ellipsesEnd === true) {\n contentEnd.unshift(\n getBtn({\n key: 'bee',\n style,\n disable: props.disable,\n label: '…',\n ripple: false\n }, pgTo + 1)\n )\n }\n\n for (let i = pgFrom; i <= pgTo; i++) {\n contentMiddle.push(\n getBtn({\n key: `bpg${ i }`,\n style,\n disable: props.disable,\n label: i\n }, i, i === props.modelValue)\n )\n }\n }\n\n return h('div', {\n class: classes.value,\n ...attrs.value\n }, [\n h('div', {\n class: 'q-pagination__content row no-wrap items-center',\n style: gutterStyle.value\n }, [\n ...contentStart,\n\n props.input === true\n ? h(QInput, {\n class: 'inline',\n style: { width: `${ inputPlaceholder.value.length / 1.5 }em` },\n type: 'number',\n dense: true,\n value: newPage.value,\n disable: props.disable,\n dark: isDark.value,\n borderless: true,\n inputClass: props.inputClass,\n inputStyle: props.inputStyle,\n placeholder: inputPlaceholder.value,\n min: minProp.value,\n max: maxProp.value,\n ...inputEvents.value\n })\n : h('div', {\n class: 'q-pagination__middle row justify-center'\n }, contentMiddle),\n\n ...contentEnd\n ])\n ])\n }\n }\n})\n","import { h, onBeforeUnmount, Transition } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'QSlideTransition',\n\n props: {\n appear: Boolean,\n duration: {\n type: Number,\n default: 300\n }\n },\n\n emits: [ 'show', 'hide' ],\n\n setup (props, { slots, emit }) {\n let animating = false, doneFn, element\n let timer, timerFallback, animListener, lastEvent\n\n function cleanup () {\n doneFn && doneFn()\n doneFn = null\n animating = false\n\n clearTimeout(timer)\n clearTimeout(timerFallback)\n element !== void 0 && element.removeEventListener('transitionend', animListener)\n animListener = null\n }\n\n function begin (el, height, done) {\n el.style.overflowY = 'hidden'\n if (height !== void 0) {\n el.style.height = `${ height }px`\n }\n el.style.transition = `height ${ props.duration }ms cubic-bezier(.25, .8, .50, 1)`\n\n animating = true\n doneFn = done\n }\n\n function end (el, event) {\n el.style.overflowY = null\n el.style.height = null\n el.style.transition = null\n cleanup()\n event !== lastEvent && emit(event)\n }\n\n function onEnter (el, done) {\n let pos = 0\n element = el\n\n if (animating === true) {\n cleanup()\n pos = el.offsetHeight === el.scrollHeight ? 0 : void 0\n }\n else {\n lastEvent = 'hide'\n }\n\n begin(el, pos, done)\n\n timer = setTimeout(() => {\n el.style.height = `${ el.scrollHeight }px`\n animListener = evt => {\n if (Object(evt) !== evt || evt.target === el) {\n end(el, 'show')\n }\n }\n el.addEventListener('transitionend', animListener)\n timerFallback = setTimeout(animListener, props.duration * 1.1)\n }, 100)\n }\n\n function onLeave (el, done) {\n let pos\n element = el\n\n if (animating === true) {\n cleanup()\n }\n else {\n lastEvent = 'show'\n pos = el.scrollHeight\n }\n\n begin(el, pos, done)\n\n timer = setTimeout(() => {\n el.style.height = 0\n animListener = evt => {\n if (Object(evt) !== evt || evt.target === el) {\n end(el, 'hide')\n }\n }\n el.addEventListener('transitionend', animListener)\n timerFallback = setTimeout(animListener, props.duration * 1.1)\n }, 100)\n }\n\n onBeforeUnmount(() => {\n animating === true && cleanup()\n })\n\n return () => h(Transition, {\n css: false,\n appear: props.appear,\n onEnter,\n onLeave\n }, slots.default)\n }\n})\n","import { h, shallowReactive, ref, computed, watch, withDirectives, getCurrentInstance, vShow, onBeforeUnmount } from 'vue'\n\nimport QItem from '../item/QItem.js'\nimport QItemSection from '../item/QItemSection.js'\nimport QItemLabel from '../item/QItemLabel.js'\nimport QIcon from '../icon/QIcon.js'\nimport QSlideTransition from '../slide-transition/QSlideTransition.js'\nimport QSeparator from '../separator/QSeparator.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport { useRouterLinkProps } from '../../composables/private/use-router-link.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport uid from '../../utils/uid.js'\n\nconst itemGroups = shallowReactive({})\nconst LINK_PROPS = Object.keys(useRouterLinkProps)\n\nexport default createComponent({\n name: 'QExpansionItem',\n\n props: {\n ...useRouterLinkProps,\n ...useModelToggleProps,\n ...useDarkProps,\n\n icon: String,\n\n label: String,\n labelLines: [ Number, String ],\n\n caption: String,\n captionLines: [ Number, String ],\n\n dense: Boolean,\n\n toggleAriaLabel: String,\n expandIcon: String,\n expandedIcon: String,\n expandIconClass: [ Array, String, Object ],\n duration: Number,\n\n headerInsetLevel: Number,\n contentInsetLevel: Number,\n\n expandSeparator: Boolean,\n defaultOpened: Boolean,\n hideExpandIcon: Boolean,\n expandIconToggle: Boolean,\n switchToggleSide: Boolean,\n denseToggle: Boolean,\n group: String,\n popup: Boolean,\n\n headerStyle: [ Array, String, Object ],\n headerClass: [ Array, String, Object ]\n },\n\n emits: [\n ...useModelToggleEmits,\n 'click', 'afterShow', 'afterHide'\n ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n const isDark = useDark(props, $q)\n\n const showing = ref(\n props.modelValue !== null\n ? props.modelValue\n : props.defaultOpened\n )\n\n const blurTargetRef = ref(null)\n const targetUid = uid()\n\n const { show, hide, toggle } = useModelToggle({ showing })\n\n let uniqueId, exitGroup\n\n const classes = computed(() =>\n 'q-expansion-item q-item-type'\n + ` q-expansion-item--${ showing.value === true ? 'expanded' : 'collapsed' }`\n + ` q-expansion-item--${ props.popup === true ? 'popup' : 'standard' }`\n )\n\n const contentStyle = computed(() => {\n if (props.contentInsetLevel === void 0) {\n return null\n }\n\n const dir = $q.lang.rtl === true ? 'Right' : 'Left'\n return {\n [ 'padding' + dir ]: (props.contentInsetLevel * 56) + 'px'\n }\n })\n\n const hasLink = computed(() =>\n props.disable !== true && (\n props.href !== void 0\n || (props.to !== void 0 && props.to !== null && props.to !== '')\n )\n )\n\n const linkProps = computed(() => {\n const acc = {}\n LINK_PROPS.forEach(key => {\n acc[ key ] = props[ key ]\n })\n return acc\n })\n\n const isClickable = computed(() =>\n hasLink.value === true || props.expandIconToggle !== true\n )\n\n const expansionIcon = computed(() => (\n props.expandedIcon !== void 0 && showing.value === true\n ? props.expandedIcon\n : props.expandIcon || $q.iconSet.expansionItem[ props.denseToggle === true ? 'denseIcon' : 'icon' ]\n ))\n\n const activeToggleIcon = computed(() =>\n props.disable !== true && (hasLink.value === true || props.expandIconToggle === true)\n )\n\n const headerSlotScope = computed(() => ({\n expanded: showing.value === true,\n detailsId: props.targetUid,\n toggle,\n show,\n hide\n }))\n\n const toggleAriaAttrs = computed(() => {\n const toggleAriaLabel = props.toggleAriaLabel !== void 0\n ? props.toggleAriaLabel\n : $q.lang.label[ showing.value === true ? 'collapse' : 'expand' ](props.label)\n\n return {\n role: 'button',\n 'aria-expanded': showing.value === true ? 'true' : 'false',\n 'aria-controls': targetUid,\n 'aria-label': toggleAriaLabel\n }\n })\n\n watch(() => props.group, name => {\n exitGroup !== void 0 && exitGroup()\n name !== void 0 && enterGroup()\n })\n\n function onHeaderClick (e) {\n hasLink.value !== true && toggle(e)\n emit('click', e)\n }\n\n function toggleIconKeyboard (e) {\n e.keyCode === 13 && toggleIcon(e, true)\n }\n\n function toggleIcon (e, keyboard) {\n keyboard !== true && blurTargetRef.value !== null && blurTargetRef.value.focus()\n toggle(e)\n stopAndPrevent(e)\n }\n\n function onShow () {\n emit('afterShow')\n }\n\n function onHide () {\n emit('afterHide')\n }\n\n function enterGroup () {\n if (uniqueId === void 0) {\n uniqueId = uid()\n }\n\n if (showing.value === true) {\n itemGroups[ props.group ] = uniqueId\n }\n\n const show = watch(showing, val => {\n if (val === true) {\n itemGroups[ props.group ] = uniqueId\n }\n else if (itemGroups[ props.group ] === uniqueId) {\n delete itemGroups[ props.group ]\n }\n })\n\n const group = watch(\n () => itemGroups[ props.group ],\n (val, oldVal) => {\n if (oldVal === uniqueId && val !== void 0 && val !== uniqueId) {\n hide()\n }\n }\n )\n\n exitGroup = () => {\n show()\n group()\n\n if (itemGroups[ props.group ] === uniqueId) {\n delete itemGroups[ props.group ]\n }\n\n exitGroup = void 0\n }\n }\n\n function getToggleIcon () {\n const data = {\n class: [\n 'q-focusable relative-position cursor-pointer'\n + `${ props.denseToggle === true && props.switchToggleSide === true ? ' items-end' : '' }`,\n props.expandIconClass\n ],\n side: props.switchToggleSide !== true,\n avatar: props.switchToggleSide\n }\n\n const child = [\n h(QIcon, {\n class: 'q-expansion-item__toggle-icon'\n + (props.expandedIcon === void 0 && showing.value === true\n ? ' q-expansion-item__toggle-icon--rotated'\n : ''),\n name: expansionIcon.value\n })\n ]\n\n if (activeToggleIcon.value === true) {\n Object.assign(data, {\n tabindex: 0,\n ...toggleAriaAttrs.value,\n onClick: toggleIcon,\n onKeyup: toggleIconKeyboard\n })\n\n child.unshift(\n h('div', {\n ref: blurTargetRef,\n class: 'q-expansion-item__toggle-focus q-icon q-focus-helper q-focus-helper--rounded',\n tabindex: -1\n })\n )\n }\n\n return h(QItemSection, data, () => child)\n }\n\n function getHeaderChild () {\n let child\n\n if (slots.header !== void 0) {\n child = [].concat(slots.header(headerSlotScope.value))\n }\n else {\n child = [\n h(QItemSection, () => [\n h(QItemLabel, { lines: props.labelLines }, () => props.label || ''),\n\n props.caption\n ? h(QItemLabel, { lines: props.captionLines, caption: true }, () => props.caption)\n : null\n ])\n ]\n\n props.icon && child[ props.switchToggleSide === true ? 'push' : 'unshift' ](\n h(QItemSection, {\n side: props.switchToggleSide === true,\n avatar: props.switchToggleSide !== true\n }, () => h(QIcon, { name: props.icon }))\n )\n }\n\n if (props.disable !== true && props.hideExpandIcon !== true) {\n child[ props.switchToggleSide === true ? 'unshift' : 'push' ](\n getToggleIcon()\n )\n }\n\n return child\n }\n\n function getHeader () {\n const data = {\n ref: 'item',\n style: props.headerStyle,\n class: props.headerClass,\n dark: isDark.value,\n disable: props.disable,\n dense: props.dense,\n insetLevel: props.headerInsetLevel\n }\n\n if (isClickable.value === true) {\n data.clickable = true\n data.onClick = onHeaderClick\n\n Object.assign(\n data,\n hasLink.value === true ? linkProps.value : toggleAriaAttrs.value\n )\n }\n\n return h(QItem, data, getHeaderChild)\n }\n\n function getTransitionChild () {\n return withDirectives(\n h('div', {\n key: 'e-content',\n class: 'q-expansion-item__content relative-position',\n style: contentStyle.value,\n id: targetUid\n }, hSlot(slots.default)),\n [ [\n vShow,\n showing.value\n ] ]\n )\n }\n\n function getContent () {\n const node = [\n getHeader(),\n\n h(QSlideTransition, {\n duration: props.duration,\n onShow,\n onHide\n }, getTransitionChild)\n ]\n\n if (props.expandSeparator === true) {\n node.push(\n h(QSeparator, {\n class: 'q-expansion-item__border q-expansion-item__border--top absolute-top',\n dark: isDark.value\n }),\n h(QSeparator, {\n class: 'q-expansion-item__border q-expansion-item__border--bottom absolute-bottom',\n dark: isDark.value\n })\n )\n }\n\n return node\n }\n\n props.group !== void 0 && enterGroup()\n\n onBeforeUnmount(() => {\n exitGroup !== void 0 && exitGroup()\n })\n\n return () => h('div', { class: classes.value }, [\n h('div', { class: 'q-expansion-item__container relative-position' }, getContent())\n ])\n }\n})\n","import { computed } from 'vue'\n\nexport const useDarkProps = {\n dark: {\n type: Boolean,\n default: null\n }\n}\n\nexport default function (props, $q) {\n // return isDark\n return computed(() => (\n props.dark === null\n ? $q.dark.isActive\n : props.dark\n ))\n}\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QItemSection',\n\n props: {\n avatar: Boolean,\n thumbnail: Boolean,\n side: Boolean,\n top: Boolean,\n noWrap: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() =>\n 'q-item__section column'\n + ` q-item__section--${ props.avatar === true || props.side === true || props.thumbnail === true ? 'side' : 'main' }`\n + (props.top === true ? ' q-item__section--top justify-start' : ' justify-center')\n + (props.avatar === true ? ' q-item__section--avatar' : '')\n + (props.thumbnail === true ? ' q-item__section--thumbnail' : '')\n + (props.noWrap === true ? ' q-item__section--nowrap' : '')\n )\n\n return () => h('div', { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, ref, computed, watch, onBeforeUnmount, onActivated, onDeactivated, getCurrentInstance, provide } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport useTick from '../../composables/private/use-tick.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { noop } from '../../utils/event.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { tabsKey } from '../../utils/private/symbols.js'\nimport { rtlHasScrollBug } from '../../utils/private/rtl.js'\n\nfunction getIndicatorClass (color, top, vertical) {\n const pos = vertical === true\n ? [ 'left', 'right' ]\n : [ 'top', 'bottom' ]\n\n return `absolute-${ top === true ? pos[ 0 ] : pos[ 1 ] }${ color ? ` text-${ color }` : '' }`\n}\n\nconst alignValues = [ 'left', 'center', 'right', 'justify' ]\n\nexport default createComponent({\n name: 'QTabs',\n\n props: {\n modelValue: [ Number, String ],\n\n align: {\n type: String,\n default: 'center',\n validator: v => alignValues.includes(v)\n },\n breakpoint: {\n type: [ String, Number ],\n default: 600\n },\n\n vertical: Boolean,\n shrink: Boolean,\n stretch: Boolean,\n\n activeClass: String,\n activeColor: String,\n activeBgColor: String,\n indicatorColor: String,\n leftIcon: String,\n rightIcon: String,\n\n outsideArrows: Boolean,\n mobileArrows: Boolean,\n\n switchIndicator: Boolean,\n\n narrowIndicator: Boolean,\n inlineLabel: Boolean,\n noCaps: Boolean,\n\n dense: Boolean,\n\n contentClass: String,\n\n 'onUpdate:modelValue': [ Function, Array ]\n },\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const { registerTick: registerScrollTick } = useTick()\n const { registerTick: registerUpdateArrowsTick } = useTick()\n const { registerTick: registerAnimateTick } = useTick()\n\n const { registerTimeout: registerFocusTimeout, removeTimeout: removeFocusTimeout } = useTimeout()\n const { registerTimeout: registerScrollToTabTimeout, removeTimeout: removeScrollToTabTimeout } = useTimeout()\n\n const rootRef = ref(null)\n const contentRef = ref(null)\n\n const currentModel = ref(props.modelValue)\n const scrollable = ref(false)\n const leftArrow = ref(true)\n const rightArrow = ref(false)\n const justify = ref(false)\n\n const arrowsEnabled = computed(() =>\n $q.platform.is.desktop === true || props.mobileArrows === true\n )\n\n const tabDataList = []\n const tabDataListLen = ref(0)\n const hasFocus = ref(false)\n\n let animateTimer, scrollTimer, unwatchRoute\n let localUpdateArrows = arrowsEnabled.value === true\n ? updateArrowsFn\n : noop\n\n const tabProps = computed(() => ({\n activeClass: props.activeClass,\n activeColor: props.activeColor,\n activeBgColor: props.activeBgColor,\n indicatorClass: getIndicatorClass(\n props.indicatorColor,\n props.switchIndicator,\n props.vertical\n ),\n narrowIndicator: props.narrowIndicator,\n inlineLabel: props.inlineLabel,\n noCaps: props.noCaps\n }))\n\n const hasActiveTab = computed(() => {\n const len = tabDataListLen.value\n const val = currentModel.value\n\n for (let i = 0; i < len; i++) {\n if (tabDataList[ i ].name.value === val) {\n return true\n }\n }\n\n return false\n })\n\n const alignClass = computed(() => {\n const align = scrollable.value === true\n ? 'left'\n : (justify.value === true ? 'justify' : props.align)\n\n return `q-tabs__content--align-${ align }`\n })\n\n const classes = computed(() =>\n 'q-tabs row no-wrap items-center'\n + ` q-tabs--${ scrollable.value === true ? '' : 'not-' }scrollable`\n + ` q-tabs--${ props.vertical === true ? 'vertical' : 'horizontal' }`\n + ` q-tabs__arrows--${ arrowsEnabled.value === true && props.outsideArrows === true ? 'outside' : 'inside' }`\n + (props.dense === true ? ' q-tabs--dense' : '')\n + (props.shrink === true ? ' col-shrink' : '')\n + (props.stretch === true ? ' self-stretch' : '')\n )\n\n const innerClass = computed(() =>\n 'q-tabs__content row no-wrap items-center self-stretch hide-scrollbar relative-position '\n + alignClass.value\n + (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')\n + ($q.platform.is.mobile === true ? ' scroll' : '')\n )\n\n const domProps = computed(() => (\n props.vertical === true\n ? { container: 'height', content: 'offsetHeight', scroll: 'scrollHeight' }\n : { container: 'width', content: 'offsetWidth', scroll: 'scrollWidth' }\n ))\n\n const isRTL = computed(() => props.vertical !== true && $q.lang.rtl === true)\n const rtlPosCorrection = computed(() => rtlHasScrollBug === false && isRTL.value === true)\n\n watch(isRTL, localUpdateArrows)\n\n watch(() => props.modelValue, name => {\n updateModel({ name, setCurrent: true, skipEmit: true })\n })\n\n watch(() => props.outsideArrows, () => {\n recalculateScroll()\n })\n\n watch(arrowsEnabled, v => {\n localUpdateArrows = v === true\n ? updateArrowsFn\n : noop\n\n recalculateScroll()\n })\n\n function updateModel ({ name, setCurrent, skipEmit, fromRoute }) {\n if (currentModel.value !== name) {\n if (skipEmit !== true && props[ 'onUpdate:modelValue' ] !== void 0) {\n emit('update:modelValue', name)\n }\n\n if (\n setCurrent === true\n || props[ 'onUpdate:modelValue' ] === void 0\n ) {\n animate(currentModel.value, name)\n currentModel.value = name\n }\n }\n }\n\n function recalculateScroll () {\n registerScrollTick(() => {\n updateContainer({\n width: rootRef.value.offsetWidth,\n height: rootRef.value.offsetHeight\n })\n })\n }\n\n function updateContainer (domSize) {\n // it can be called faster than component being initialized\n // so we need to protect against that case\n // (one example of such case is the docs release notes page)\n if (domProps.value === void 0 || contentRef.value === null) { return }\n\n const\n size = domSize[ domProps.value.container ],\n scrollSize = Math.min(\n contentRef.value[ domProps.value.scroll ],\n Array.prototype.reduce.call(\n contentRef.value.children,\n (acc, el) => acc + (el[ domProps.value.content ] || 0),\n 0\n )\n ),\n scroll = size > 0 && scrollSize > size // when there is no tab, in Chrome, size === 0 and scrollSize === 1\n\n scrollable.value = scroll\n\n // Arrows need to be updated even if the scroll status was already true\n scroll === true && registerUpdateArrowsTick(localUpdateArrows)\n\n justify.value = size < parseInt(props.breakpoint, 10)\n }\n\n function animate (oldName, newName) {\n const\n oldTab = oldName !== void 0 && oldName !== null && oldName !== ''\n ? tabDataList.find(tab => tab.name.value === oldName)\n : null,\n newTab = newName !== void 0 && newName !== null && newName !== ''\n ? tabDataList.find(tab => tab.name.value === newName)\n : null\n\n if (oldTab && newTab) {\n const\n oldEl = oldTab.tabIndicatorRef.value,\n newEl = newTab.tabIndicatorRef.value\n\n clearTimeout(animateTimer)\n\n oldEl.style.transition = 'none'\n oldEl.style.transform = 'none'\n newEl.style.transition = 'none'\n newEl.style.transform = 'none'\n\n const\n oldPos = oldEl.getBoundingClientRect(),\n newPos = newEl.getBoundingClientRect()\n\n newEl.style.transform = props.vertical === true\n ? `translate3d(0,${ oldPos.top - newPos.top }px,0) scale3d(1,${ newPos.height ? oldPos.height / newPos.height : 1 },1)`\n : `translate3d(${ oldPos.left - newPos.left }px,0,0) scale3d(${ newPos.width ? oldPos.width / newPos.width : 1 },1,1)`\n\n // allow scope updates to kick in (QRouteTab needs more time)\n registerAnimateTick(() => {\n animateTimer = setTimeout(() => {\n newEl.style.transition = 'transform .25s cubic-bezier(.4, 0, .2, 1)'\n newEl.style.transform = 'none'\n }, 70)\n })\n }\n\n if (newTab && scrollable.value === true) {\n scrollToTabEl(newTab.rootRef.value)\n }\n }\n\n function scrollToTabEl (el) {\n const\n { left, width, top, height } = contentRef.value.getBoundingClientRect(),\n newPos = el.getBoundingClientRect()\n\n let offset = props.vertical === true ? newPos.top - top : newPos.left - left\n\n if (offset < 0) {\n contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.floor(offset)\n localUpdateArrows()\n return\n }\n\n offset += props.vertical === true ? newPos.height - height : newPos.width - width\n if (offset > 0) {\n contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.ceil(offset)\n localUpdateArrows()\n }\n }\n\n function updateArrowsFn () {\n const content = contentRef.value\n if (content !== null) {\n const\n rect = content.getBoundingClientRect(),\n pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft)\n\n if (isRTL.value === true) {\n leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1\n rightArrow.value = pos > 0\n }\n else {\n leftArrow.value = pos > 0\n rightArrow.value = props.vertical === true\n ? Math.ceil(pos + rect.height) < content.scrollHeight\n : Math.ceil(pos + rect.width) < content.scrollWidth\n }\n }\n }\n\n function animScrollTo (value) {\n stopAnimScroll()\n scrollTimer = setInterval(() => {\n if (scrollTowards(value) === true) {\n stopAnimScroll()\n }\n }, 5)\n }\n\n function scrollToStart () {\n animScrollTo(rtlPosCorrection.value === true ? Number.MAX_SAFE_INTEGER : 0)\n }\n\n function scrollToEnd () {\n animScrollTo(rtlPosCorrection.value === true ? 0 : Number.MAX_SAFE_INTEGER)\n }\n\n function stopAnimScroll () {\n clearInterval(scrollTimer)\n }\n\n function onKbdNavigate (keyCode, fromEl) {\n const tabs = Array.prototype.filter.call(\n contentRef.value.children,\n el => el === fromEl || (el.matches && el.matches('.q-tab.q-focusable') === true)\n )\n\n const len = tabs.length\n if (len === 0) { return }\n\n if (keyCode === 36) { // Home\n scrollToTabEl(tabs[ 0 ])\n tabs[ 0 ].focus()\n return true\n }\n if (keyCode === 35) { // End\n scrollToTabEl(tabs[ len - 1 ])\n tabs[ len - 1 ].focus()\n return true\n }\n\n const dirPrev = keyCode === (props.vertical === true ? 38 /* ArrowUp */ : 37 /* ArrowLeft */)\n const dirNext = keyCode === (props.vertical === true ? 40 /* ArrowDown */ : 39 /* ArrowRight */)\n\n const dir = dirPrev === true ? -1 : (dirNext === true ? 1 : void 0)\n\n if (dir !== void 0) {\n const rtlDir = isRTL.value === true ? -1 : 1\n const index = tabs.indexOf(fromEl) + dir * rtlDir\n\n if (index >= 0 && index < len) {\n scrollToTabEl(tabs[ index ])\n tabs[ index ].focus({ preventScroll: true })\n }\n\n return true\n }\n }\n\n // let's speed up execution of time-sensitive scrollTowards()\n // with a computed variable by directly applying the minimal\n // number of instructions on get/set functions\n const posFn = computed(() => (\n rtlPosCorrection.value === true\n ? { get: content => Math.abs(content.scrollLeft), set: (content, pos) => { content.scrollLeft = -pos } }\n : (\n props.vertical === true\n ? { get: content => content.scrollTop, set: (content, pos) => { content.scrollTop = pos } }\n : { get: content => content.scrollLeft, set: (content, pos) => { content.scrollLeft = pos } }\n )\n ))\n\n function scrollTowards (value) {\n const\n content = contentRef.value,\n { get, set } = posFn.value\n\n let\n done = false,\n pos = get(content)\n\n const direction = value < pos ? -1 : 1\n\n pos += direction * 5\n\n if (pos < 0) {\n done = true\n pos = 0\n }\n else if (\n (direction === -1 && pos <= value)\n || (direction === 1 && pos >= value)\n ) {\n done = true\n pos = value\n }\n\n set(content, pos)\n localUpdateArrows()\n\n return done\n }\n\n function hasQueryIncluded (targetQuery, matchingQuery) {\n for (const key in targetQuery) {\n if (targetQuery[ key ] !== matchingQuery[ key ]) {\n return false\n }\n }\n\n return true\n }\n\n // do not use directly; use verifyRouteModel() instead\n function updateActiveRoute () {\n let name = null, bestScore = { matchedLen: 0, queryDiff: 9999, hrefLen: 0 }\n\n const list = tabDataList.filter(tab => tab.routeData !== void 0 && tab.routeData.hasRouterLink.value === true)\n const { hash: currentHash, query: currentQuery } = proxy.$route\n const currentQueryLen = Object.keys(currentQuery).length\n\n // Vue Router does not keep account of hash & query when matching\n // so we're doing this as well\n\n for (const tab of list) {\n const exact = tab.routeData.exact.value === true\n\n if (tab.routeData[ exact === true ? 'linkIsExactActive' : 'linkIsActive' ].value !== true) {\n // it cannot match anything as it's not active nor exact-active\n continue\n }\n\n const { hash, query, matched, href } = tab.routeData.resolvedLink.value\n const queryLen = Object.keys(query).length\n\n if (exact === true) {\n if (hash !== currentHash) {\n // it's set to exact but it doesn't matches the hash\n continue\n }\n\n if (\n queryLen !== currentQueryLen\n || hasQueryIncluded(currentQuery, query) === false\n ) {\n // it's set to exact but it doesn't matches the query\n continue\n }\n\n // yey, we found the perfect match (route + hash + query)\n name = tab.name.value\n break\n }\n\n if (hash !== '' && hash !== currentHash) {\n // it has hash and it doesn't matches\n continue\n }\n\n if (\n queryLen !== 0\n && hasQueryIncluded(query, currentQuery) === false\n ) {\n // it has query and it doesn't includes the current one\n continue\n }\n\n const newScore = {\n matchedLen: matched.length,\n queryDiff: currentQueryLen - queryLen,\n hrefLen: href.length - hash.length\n }\n\n if (newScore.matchedLen > bestScore.matchedLen) {\n // it matches more routes so it's more specific so we set it as current champion\n name = tab.name.value\n bestScore = newScore\n continue\n }\n else if (newScore.matchedLen !== bestScore.matchedLen) {\n // it matches less routes than the current champion so we discard it\n continue\n }\n\n if (newScore.queryDiff < bestScore.queryDiff) {\n // query is closer to the current one so we set it as current champion\n name = tab.name.value\n bestScore = newScore\n }\n else if (newScore.queryDiff !== bestScore.queryDiff) {\n // it matches less routes than the current champion so we discard it\n continue\n }\n\n if (newScore.hrefLen > bestScore.hrefLen) {\n // href is lengthier so it's more specific so we set it as current champion\n name = tab.name.value\n bestScore = newScore\n }\n }\n\n if (\n name === null\n && tabDataList.some(tab => tab.routeData === void 0 && tab.name.value === currentModel.value) === true\n ) {\n // we shouldn't interfere if non-route tab is active\n return\n }\n\n updateModel({ name, setCurrent: true })\n }\n\n function onFocusin (e) {\n removeFocusTimeout()\n\n if (\n hasFocus.value !== true\n && rootRef.value !== null\n && e.target\n && typeof e.target.closest === 'function'\n ) {\n const tab = e.target.closest('.q-tab')\n\n // if the target is contained by a QTab/QRouteTab\n // (it might be other elements focused, like additional QBtn)\n if (tab && rootRef.value.contains(tab) === true) {\n hasFocus.value = true\n scrollable.value === true && scrollToTabEl(tab)\n }\n }\n }\n\n function onFocusout () {\n registerFocusTimeout(() => { hasFocus.value = false }, 30)\n }\n\n function verifyRouteModel () {\n if ($tabs.avoidRouteWatcher === false) {\n registerScrollToTabTimeout(updateActiveRoute)\n }\n else {\n removeScrollToTabTimeout()\n }\n }\n\n function watchRoute () {\n if (unwatchRoute === void 0) {\n const unwatch = watch(() => proxy.$route.fullPath, verifyRouteModel)\n unwatchRoute = () => {\n unwatch()\n unwatchRoute = void 0\n }\n }\n }\n\n function registerTab (tabData) {\n tabDataList.push(tabData)\n tabDataListLen.value++\n\n recalculateScroll()\n\n // if it's a QTab or we don't have Vue Router\n if (tabData.routeData === void 0 || proxy.$route === void 0) {\n // we should position to the currently active tab (if any)\n registerScrollToTabTimeout(() => {\n if (scrollable.value === true) {\n const value = currentModel.value\n const newTab = value !== void 0 && value !== null && value !== ''\n ? tabDataList.find(tab => tab.name.value === value)\n : null\n\n newTab && scrollToTabEl(newTab.rootRef.value)\n }\n })\n }\n // else if it's a QRouteTab with a valid link\n else {\n // start watching route\n watchRoute()\n\n if (tabData.routeData.hasRouterLink.value === true) {\n verifyRouteModel()\n }\n }\n }\n\n function unregisterTab (tabData) {\n tabDataList.splice(tabDataList.indexOf(tabData), 1)\n tabDataListLen.value--\n\n recalculateScroll()\n\n if (unwatchRoute !== void 0 && tabData.routeData !== void 0) {\n // unwatch route if we don't have any QRouteTabs left\n if (tabDataList.every(tab => tab.routeData === void 0) === true) {\n unwatchRoute()\n }\n\n // then update model\n verifyRouteModel()\n }\n }\n\n const $tabs = {\n currentModel,\n tabProps,\n hasFocus,\n hasActiveTab,\n\n registerTab,\n unregisterTab,\n\n verifyRouteModel,\n updateModel,\n onKbdNavigate,\n\n avoidRouteWatcher: false // false | string (uid)\n }\n\n provide(tabsKey, $tabs)\n\n function cleanup () {\n clearTimeout(animateTimer)\n stopAnimScroll()\n unwatchRoute !== void 0 && unwatchRoute()\n }\n\n let hadRouteWatcher\n\n onBeforeUnmount(cleanup)\n\n onDeactivated(() => {\n hadRouteWatcher = unwatchRoute !== void 0\n cleanup()\n })\n\n onActivated(() => {\n hadRouteWatcher === true && watchRoute()\n recalculateScroll()\n })\n\n return () => {\n const child = [\n h(QResizeObserver, { onResize: updateContainer }),\n\n h('div', {\n ref: contentRef,\n class: innerClass.value,\n onScroll: localUpdateArrows\n }, hSlot(slots.default))\n ]\n\n arrowsEnabled.value === true && child.push(\n h(QIcon, {\n class: 'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon'\n + (leftArrow.value === true ? '' : ' q-tabs__arrow--faded'),\n name: props.leftIcon || $q.iconSet.tabs[ props.vertical === true ? 'up' : 'left' ],\n onMousedownPassive: scrollToStart,\n onTouchstartPassive: scrollToStart,\n onMouseupPassive: stopAnimScroll,\n onMouseleavePassive: stopAnimScroll,\n onTouchendPassive: stopAnimScroll\n }),\n\n h(QIcon, {\n class: 'q-tabs__arrow q-tabs__arrow--right absolute q-tab__icon'\n + (rightArrow.value === true ? '' : ' q-tabs__arrow--faded'),\n name: props.rightIcon || $q.iconSet.tabs[ props.vertical === true ? 'down' : 'right' ],\n onMousedownPassive: scrollToEnd,\n onTouchstartPassive: scrollToEnd,\n onMouseupPassive: stopAnimScroll,\n onMouseleavePassive: stopAnimScroll,\n onTouchendPassive: stopAnimScroll\n })\n )\n\n return h('div', {\n ref: rootRef,\n class: classes.value,\n role: 'tablist',\n onFocusin,\n onFocusout\n }, child)\n }\n }\n})\n","import { h, ref, computed, watch, toRaw, getCurrentInstance } from 'vue'\n\nimport QDialog from '../dialog/QDialog.js'\nimport QBtn from '../btn/QBtn.js'\n\nimport QCard from '../card/QCard.js'\nimport QCardSection from '../card/QCardSection.js'\nimport QCardActions from '../card/QCardActions.js'\nimport QSeparator from '../separator/QSeparator.js'\n\nimport QInput from '../input/QInput.js'\nimport QOptionGroup from '../option-group/QOptionGroup.js'\n\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { isKeyCode } from '../../utils/private/key-composition.js'\nimport { isObject } from '../../utils/is.js'\n\nexport default createComponent({\n name: 'DialogPlugin',\n\n props: {\n ...useDarkProps,\n\n title: String,\n message: String,\n prompt: Object,\n options: Object,\n progress: [ Boolean, Object ],\n\n html: Boolean,\n\n ok: {\n type: [ String, Object, Boolean ],\n default: true\n },\n cancel: [ String, Object, Boolean ],\n focus: {\n type: String,\n default: 'ok',\n validator: v => [ 'ok', 'cancel', 'none' ].includes(v)\n },\n\n stackButtons: Boolean,\n color: String,\n\n cardClass: [ String, Array, Object ],\n cardStyle: [ String, Array, Object ]\n },\n\n emits: [ 'ok', 'hide' ],\n\n setup (props, { emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const isDark = useDark(props, $q)\n\n const dialogRef = ref(null)\n\n const model = ref(\n props.prompt !== void 0\n ? props.prompt.model\n : (props.options !== void 0 ? props.options.model : void 0)\n )\n\n const classes = computed(() =>\n 'q-dialog-plugin'\n + (isDark.value === true ? ' q-dialog-plugin--dark q-dark' : '')\n + (props.progress !== false ? ' q-dialog-plugin--progress' : '')\n )\n\n const vmColor = computed(() =>\n props.color || (isDark.value === true ? 'amber' : 'primary')\n )\n\n const spinner = computed(() => (\n props.progress === false\n ? null\n : (\n isObject(props.progress) === true\n ? {\n component: props.progress.spinner || QSpinner,\n props: { color: props.progress.color || vmColor.value }\n }\n : {\n component: QSpinner,\n props: { color: vmColor.value }\n }\n )\n ))\n\n const hasForm = computed(() =>\n props.prompt !== void 0 || props.options !== void 0\n )\n\n const formProps = computed(() => {\n if (hasForm.value !== true) {\n return {}\n }\n\n const { model, isValid, items, ...formProps } = props.prompt !== void 0\n ? props.prompt\n : props.options\n\n return formProps\n })\n\n const okLabel = computed(() => (\n isObject(props.ok) === true\n ? $q.lang.label.ok\n : (\n props.ok === true\n ? $q.lang.label.ok\n : props.ok\n )\n ))\n\n const cancelLabel = computed(() => (\n isObject(props.cancel) === true\n ? $q.lang.label.cancel\n : (\n props.cancel === true\n ? $q.lang.label.cancel\n : props.cancel\n )\n ))\n\n const okDisabled = computed(() => {\n if (props.prompt !== void 0) {\n return props.prompt.isValid !== void 0\n && props.prompt.isValid(model.value) !== true\n }\n if (props.options !== void 0) {\n return props.options.isValid !== void 0\n && props.options.isValid(model.value) !== true\n }\n return false\n })\n\n const okProps = computed(() => ({\n color: vmColor.value,\n label: okLabel.value,\n ripple: false,\n disable: okDisabled.value,\n ...(isObject(props.ok) === true ? props.ok : { flat: true }),\n 'data-autofocus': (props.focus === 'ok' && hasForm.value !== true) || void 0,\n onClick: onOk\n }))\n\n const cancelProps = computed(() => ({\n color: vmColor.value,\n label: cancelLabel.value,\n ripple: false,\n ...(isObject(props.cancel) === true ? props.cancel : { flat: true }),\n 'data-autofocus': (props.focus === 'cancel' && hasForm.value !== true) || void 0,\n onClick: onCancel\n }))\n\n watch(() => props.prompt && props.prompt.model, onUpdateModel)\n watch(() => props.options && props.options.model, onUpdateModel)\n\n function show () {\n dialogRef.value.show()\n }\n\n function hide () {\n dialogRef.value.hide()\n }\n\n function onOk () {\n emit('ok', toRaw(model.value))\n hide()\n }\n\n function onCancel () {\n hide()\n }\n\n function onDialogHide () {\n emit('hide')\n }\n\n function onUpdateModel (val) {\n model.value = val\n }\n\n function onInputKeyup (evt) {\n // if ENTER key\n if (\n okDisabled.value !== true\n && props.prompt.type !== 'textarea'\n && isKeyCode(evt, 13) === true\n ) {\n onOk()\n }\n }\n\n function getSection (classes, text) {\n return props.html === true\n ? h(QCardSection, {\n class: classes,\n innerHTML: text\n })\n : h(QCardSection, { class: classes }, () => text)\n }\n\n function getPrompt () {\n return [\n h(QInput, {\n color: vmColor.value,\n dense: true,\n autofocus: true,\n dark: isDark.value,\n ...formProps.value,\n modelValue: model.value,\n 'onUpdate:modelValue': onUpdateModel,\n onKeyup: onInputKeyup\n })\n ]\n }\n\n function getOptions () {\n return [\n h(QOptionGroup, {\n color: vmColor.value,\n options: props.options.items,\n dark: isDark.value,\n ...formProps.value,\n modelValue: model.value,\n 'onUpdate:modelValue': onUpdateModel\n })\n ]\n }\n\n function getButtons () {\n const child = []\n\n props.cancel && child.push(\n h(QBtn, cancelProps.value)\n )\n\n props.ok && child.push(\n h(QBtn, okProps.value)\n )\n\n return h(QCardActions, {\n class: props.stackButtons === true ? 'items-end' : '',\n vertical: props.stackButtons,\n align: 'right'\n }, () => child)\n }\n\n function getCardContent () {\n const child = []\n\n props.title && child.push(\n getSection('q-dialog__title', props.title)\n )\n\n props.progress !== false && child.push(\n h(\n QCardSection,\n { class: 'q-dialog__progress' },\n () => h(spinner.value.component, spinner.value.props)\n )\n )\n\n props.message && child.push(\n getSection('q-dialog__message', props.message)\n )\n\n if (props.prompt !== void 0) {\n child.push(\n h(\n QCardSection,\n { class: 'scroll q-dialog-plugin__form' },\n getPrompt\n )\n )\n }\n else if (props.options !== void 0) {\n child.push(\n h(QSeparator, { dark: isDark.value }),\n h(\n QCardSection,\n { class: 'scroll q-dialog-plugin__form' },\n getOptions\n ),\n h(QSeparator, { dark: isDark.value })\n )\n }\n\n if (props.ok || props.cancel) {\n child.push(getButtons())\n }\n\n return child\n }\n\n function getContent () {\n return [\n h(QCard, {\n class: [\n classes.value,\n props.cardClass\n ],\n style: props.cardStyle,\n dark: isDark.value\n }, getCardContent)\n ]\n }\n\n // expose public methods\n Object.assign(proxy, { show, hide })\n\n return () => h(QDialog, {\n ref: dialogRef,\n onHide: onDialogHide\n }, getContent)\n }\n})\n","import { h, ref, nextTick } from 'vue'\n\nimport { createChildApp } from '../../install-quasar.js'\nimport { createGlobalNode, removeGlobalNode } from './global-nodes.js'\n\nconst ssrAPI = {\n onOk: () => ssrAPI,\n onCancel: () => ssrAPI,\n onDismiss: () => ssrAPI,\n hide: () => ssrAPI,\n update: () => ssrAPI\n}\n\nexport function merge (target, source) {\n for (const key in source) {\n if (key !== 'spinner' && Object(source[ key ]) === source[ key ]) {\n target[ key ] = Object(target[ key ]) !== target[ key ]\n ? {}\n : { ...target[ key ] }\n\n merge(target[ key ], source[ key ])\n }\n else {\n target[ key ] = source[ key ]\n }\n }\n}\n\nexport default function (DefaultComponent, supportsCustomComponent, parentApp) {\n return pluginProps => {\n if (__QUASAR_SSR_SERVER__) { return ssrAPI }\n\n let DialogComponent, props\n const isCustom = supportsCustomComponent === true\n && pluginProps.component !== void 0\n\n if (isCustom === true) {\n const { component, componentProps } = pluginProps\n\n DialogComponent = (typeof component === 'string')\n ? parentApp.component(component)\n : component\n\n props = componentProps || {}\n }\n else {\n const { class: klass, style, ...otherProps } = pluginProps\n\n DialogComponent = DefaultComponent\n props = otherProps\n klass !== void 0 && (otherProps.cardClass = klass)\n style !== void 0 && (otherProps.cardStyle = style)\n }\n\n let vm, emittedOK = false\n const dialogRef = ref(null)\n const el = createGlobalNode()\n\n const applyState = cmd => {\n if (dialogRef.value !== null && dialogRef.value[ cmd ] !== void 0) {\n dialogRef.value[ cmd ]()\n return\n }\n\n const target = vm.$.subTree\n\n if (target && target.component) {\n // account for \"script setup\" way of declaring component\n if (target.component.proxy && target.component.proxy[ cmd ]) {\n target.component.proxy[ cmd ]()\n return\n }\n\n // account for \"script setup\" + async component way of declaring component\n if (\n target.component.subTree\n && target.component.subTree.component\n && target.component.subTree.component.proxy\n && target.component.subTree.component.proxy[ cmd ]\n ) {\n target.component.subTree.component.proxy[ cmd ]()\n return\n }\n }\n\n console.error('[Quasar] Incorrectly defined Dialog component')\n }\n\n const\n okFns = [],\n cancelFns = [],\n API = {\n onOk (fn) {\n okFns.push(fn)\n return API\n },\n onCancel (fn) {\n cancelFns.push(fn)\n return API\n },\n onDismiss (fn) {\n okFns.push(fn)\n cancelFns.push(fn)\n return API\n },\n hide () {\n applyState('hide')\n return API\n },\n update (componentProps) {\n if (vm !== null) {\n if (isCustom === true) {\n Object.assign(props, componentProps)\n }\n else {\n const { class: klass, style, ...cfg } = componentProps\n\n klass !== void 0 && (cfg.cardClass = klass)\n style !== void 0 && (cfg.cardStyle = style)\n merge(props, cfg)\n }\n\n vm.$forceUpdate()\n }\n\n return API\n }\n }\n\n const onOk = data => {\n emittedOK = true\n okFns.forEach(fn => { fn(data) })\n }\n\n const onHide = () => {\n app.unmount(el)\n removeGlobalNode(el)\n app = null\n vm = null\n\n if (emittedOK !== true) {\n cancelFns.forEach(fn => { fn() })\n }\n }\n\n let app = createChildApp({\n name: 'QGlobalDialog',\n setup: () => () => h(DialogComponent, {\n ...props,\n ref: dialogRef,\n onOk,\n onHide,\n onVnodeMounted (...args) {\n if (typeof props.onVnodeMounted === 'function') {\n props.onVnodeMounted(...args)\n }\n\n nextTick(() => applyState('show'))\n }\n })\n }, parentApp)\n\n vm = app.mount(el)\n\n return API\n }\n}\n","import DialogPlugin from '../components/dialog-plugin/DialogPlugin.js'\nimport globalDialog from '../utils/private/global-dialog.js'\n\nexport default {\n install ({ $q, parentApp }) {\n $q.dialog = globalDialog(DialogPlugin, true, parentApp)\n if (this.__installed !== true) {\n this.create = $q.dialog\n }\n }\n}\n","import { h, ref, computed, watch, withDirectives, onActivated, onDeactivated, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\nimport QScrollObserver from '../scroll-observer/QScrollObserver.js'\n\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { between } from '../../utils/format.js'\nimport { setVerticalScrollPosition, setHorizontalScrollPosition } from '../../utils/scroll.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport debounce from '../../utils/debounce.js'\n\nconst axisList = [ 'vertical', 'horizontal' ]\nconst dirProps = {\n vertical: { offset: 'offsetY', scroll: 'scrollTop', dir: 'down', dist: 'y' },\n horizontal: { offset: 'offsetX', scroll: 'scrollLeft', dir: 'right', dist: 'x' }\n}\nconst panOpts = {\n prevent: true,\n mouse: true,\n mouseAllDir: true\n}\n\nconst getMinThumbSize = size => (size >= 250 ? 50 : Math.ceil(size / 5))\n\nexport default createComponent({\n name: 'QScrollArea',\n\n props: {\n ...useDarkProps,\n\n thumbStyle: Object,\n verticalThumbStyle: Object,\n horizontalThumbStyle: Object,\n\n barStyle: [ Array, String, Object ],\n verticalBarStyle: [ Array, String, Object ],\n horizontalBarStyle: [ Array, String, Object ],\n\n contentStyle: [ Array, String, Object ],\n contentActiveStyle: [ Array, String, Object ],\n\n delay: {\n type: [ String, Number ],\n default: 1000\n },\n\n visible: {\n type: Boolean,\n default: null\n },\n\n tabindex: [ String, Number ],\n\n onScroll: Function\n },\n\n setup (props, { slots, emit }) {\n // state management\n const tempShowing = ref(false)\n const panning = ref(false)\n const hover = ref(false)\n\n // other...\n const container = {\n vertical: ref(0),\n horizontal: ref(0)\n }\n\n const scroll = {\n vertical: {\n ref: ref(null),\n position: ref(0),\n size: ref(0)\n },\n\n horizontal: {\n ref: ref(null),\n position: ref(0),\n size: ref(0)\n }\n }\n\n const { proxy } = getCurrentInstance()\n\n const isDark = useDark(props, proxy.$q)\n\n let timer, panRefPos\n\n const targetRef = ref(null)\n\n const classes = computed(() =>\n 'q-scrollarea'\n + (isDark.value === true ? ' q-scrollarea--dark' : '')\n )\n\n scroll.vertical.percentage = computed(() => {\n const diff = scroll.vertical.size.value - container.vertical.value\n if (diff <= 0) { return 0 }\n const p = between(scroll.vertical.position.value / diff, 0, 1)\n return Math.round(p * 10000) / 10000\n })\n scroll.vertical.thumbHidden = computed(() =>\n (\n (props.visible === null ? hover.value : props.visible) !== true\n && tempShowing.value === false\n && panning.value === false\n ) || scroll.vertical.size.value <= container.vertical.value + 1\n )\n scroll.vertical.thumbStart = computed(() =>\n scroll.vertical.percentage.value * (container.vertical.value - scroll.vertical.thumbSize.value)\n )\n scroll.vertical.thumbSize = computed(() =>\n Math.round(\n between(\n container.vertical.value * container.vertical.value / scroll.vertical.size.value,\n getMinThumbSize(container.vertical.value),\n container.vertical.value\n )\n )\n )\n scroll.vertical.style = computed(() => {\n return {\n ...props.thumbStyle,\n ...props.verticalThumbStyle,\n top: `${ scroll.vertical.thumbStart.value }px`,\n height: `${ scroll.vertical.thumbSize.value }px`\n }\n })\n scroll.vertical.thumbClass = computed(() =>\n 'q-scrollarea__thumb q-scrollarea__thumb--v absolute-right'\n + (scroll.vertical.thumbHidden.value === true ? ' q-scrollarea__thumb--invisible' : '')\n )\n scroll.vertical.barClass = computed(() =>\n 'q-scrollarea__bar q-scrollarea__bar--v absolute-right'\n + (scroll.vertical.thumbHidden.value === true ? ' q-scrollarea__bar--invisible' : '')\n )\n\n scroll.horizontal.percentage = computed(() => {\n const diff = scroll.horizontal.size.value - container.horizontal.value\n if (diff <= 0) { return 0 }\n const p = between(Math.abs(scroll.horizontal.position.value) / diff, 0, 1)\n return Math.round(p * 10000) / 10000\n })\n scroll.horizontal.thumbHidden = computed(() =>\n (\n (props.visible === null ? hover.value : props.visible) !== true\n && tempShowing.value === false\n && panning.value === false\n ) || scroll.horizontal.size.value <= container.horizontal.value + 1\n )\n scroll.horizontal.thumbStart = computed(() =>\n scroll.horizontal.percentage.value * (container.horizontal.value - scroll.horizontal.thumbSize.value)\n )\n scroll.horizontal.thumbSize = computed(() =>\n Math.round(\n between(\n container.horizontal.value * container.horizontal.value / scroll.horizontal.size.value,\n getMinThumbSize(container.horizontal.value),\n container.horizontal.value\n )\n )\n )\n scroll.horizontal.style = computed(() => {\n return {\n ...props.thumbStyle,\n ...props.horizontalThumbStyle,\n [ proxy.$q.lang.rtl === true ? 'right' : 'left' ]: `${ scroll.horizontal.thumbStart.value }px`,\n width: `${ scroll.horizontal.thumbSize.value }px`\n }\n })\n scroll.horizontal.thumbClass = computed(() =>\n 'q-scrollarea__thumb q-scrollarea__thumb--h absolute-bottom'\n + (scroll.horizontal.thumbHidden.value === true ? ' q-scrollarea__thumb--invisible' : '')\n )\n scroll.horizontal.barClass = computed(() =>\n 'q-scrollarea__bar q-scrollarea__bar--h absolute-bottom'\n + (scroll.horizontal.thumbHidden.value === true ? ' q-scrollarea__bar--invisible' : '')\n )\n\n const mainStyle = computed(() => (\n scroll.vertical.thumbHidden.value === true && scroll.horizontal.thumbHidden.value === true\n ? props.contentStyle\n : props.contentActiveStyle\n ))\n\n const thumbVertDir = [ [\n TouchPan,\n e => { onPanThumb(e, 'vertical') },\n void 0,\n { vertical: true, ...panOpts }\n ] ]\n\n const thumbHorizDir = [ [\n TouchPan,\n e => { onPanThumb(e, 'horizontal') },\n void 0,\n { horizontal: true, ...panOpts }\n ] ]\n\n function getScroll () {\n const info = {}\n\n axisList.forEach(axis => {\n const data = scroll[ axis ]\n\n info[ axis + 'Position' ] = data.position.value\n info[ axis + 'Percentage' ] = data.percentage.value\n info[ axis + 'Size' ] = data.size.value\n info[ axis + 'ContainerSize' ] = container[ axis ].value\n })\n\n return info\n }\n\n // we have lots of listeners, so\n // ensure we're not emitting same info\n // multiple times\n const emitScroll = debounce(() => {\n const info = getScroll()\n info.ref = proxy\n emit('scroll', info)\n }, 0)\n\n function localSetScrollPosition (axis, offset, duration) {\n if (axisList.includes(axis) === false) {\n console.error('[QScrollArea]: wrong first param of setScrollPosition (vertical/horizontal)')\n return\n }\n\n const fn = axis === 'vertical'\n ? setVerticalScrollPosition\n : setHorizontalScrollPosition\n\n fn(targetRef.value, offset, duration)\n }\n\n function updateContainer ({ height, width }) {\n let change = false\n\n if (container.vertical.value !== height) {\n container.vertical.value = height\n change = true\n }\n\n if (container.horizontal.value !== width) {\n container.horizontal.value = width\n change = true\n }\n\n change === true && startTimer()\n }\n\n function updateScroll ({ position }) {\n let change = false\n\n if (scroll.vertical.position.value !== position.top) {\n scroll.vertical.position.value = position.top\n change = true\n }\n\n if (scroll.horizontal.position.value !== position.left) {\n scroll.horizontal.position.value = position.left\n change = true\n }\n\n change === true && startTimer()\n }\n\n function updateScrollSize ({ height, width }) {\n if (scroll.horizontal.size.value !== width) {\n scroll.horizontal.size.value = width\n startTimer()\n }\n\n if (scroll.vertical.size.value !== height) {\n scroll.vertical.size.value = height\n startTimer()\n }\n }\n\n function onPanThumb (e, axis) {\n const data = scroll[ axis ]\n\n if (e.isFirst === true) {\n if (data.thumbHidden.value === true) {\n return\n }\n\n panRefPos = data.position.value\n panning.value = true\n }\n else if (panning.value !== true) {\n return\n }\n\n if (e.isFinal === true) {\n panning.value = false\n }\n\n const dProp = dirProps[ axis ]\n const containerSize = container[ axis ].value\n\n const multiplier = (data.size.value - containerSize) / (containerSize - data.thumbSize.value)\n const distance = e.distance[ dProp.dist ]\n const pos = panRefPos + (e.direction === dProp.dir ? 1 : -1) * distance * multiplier\n\n setScroll(pos, axis)\n }\n\n function onMousedown (evt, axis) {\n const data = scroll[ axis ]\n\n if (data.thumbHidden.value !== true) {\n const offset = evt[ dirProps[ axis ].offset ]\n if (offset < data.thumbStart.value || offset > data.thumbStart.value + data.thumbSize.value) {\n const pos = offset - data.thumbSize.value / 2\n setScroll(pos / container[ axis ].value * data.size.value, axis)\n }\n\n // activate thumb pan\n if (data.ref.value !== null) {\n data.ref.value.dispatchEvent(new MouseEvent(evt.type, evt))\n }\n }\n }\n\n function onVerticalMousedown (evt) {\n onMousedown(evt, 'vertical')\n }\n\n function onHorizontalMousedown (evt) {\n onMousedown(evt, 'horizontal')\n }\n\n function startTimer () {\n if (tempShowing.value === true) {\n clearTimeout(timer)\n }\n else {\n tempShowing.value = true\n }\n\n timer = setTimeout(() => { tempShowing.value = false }, props.delay)\n props.onScroll !== void 0 && emitScroll()\n }\n\n function setScroll (offset, axis) {\n targetRef.value[ dirProps[ axis ].scroll ] = offset\n }\n\n function onMouseenter () {\n hover.value = true\n }\n\n function onMouseleave () {\n hover.value = false\n }\n\n let scrollPosition = null\n\n watch(() => proxy.$q.lang.rtl, rtl => {\n if (targetRef.value !== null) {\n setHorizontalScrollPosition(\n targetRef.value,\n Math.abs(scroll.horizontal.position.value) * (rtl === true ? -1 : 1)\n )\n }\n })\n\n onDeactivated(() => {\n scrollPosition = {\n top: scroll.vertical.position.value,\n left: scroll.horizontal.position.value\n }\n })\n\n onActivated(() => {\n if (scrollPosition === null) { return }\n\n const scrollTarget = targetRef.value\n\n if (scrollTarget !== null) {\n setHorizontalScrollPosition(scrollTarget, scrollPosition.left)\n setVerticalScrollPosition(scrollTarget, scrollPosition.top)\n }\n })\n\n onBeforeUnmount(emitScroll.cancel)\n\n // expose public methods\n Object.assign(proxy, {\n getScrollTarget: () => targetRef.value,\n getScroll,\n getScrollPosition: () => ({\n top: scroll.vertical.position.value,\n left: scroll.horizontal.position.value\n }),\n getScrollPercentage: () => ({\n top: scroll.vertical.percentage.value,\n left: scroll.horizontal.percentage.value\n }),\n setScrollPosition: localSetScrollPosition,\n setScrollPercentage (axis, percentage, duration) {\n localSetScrollPosition(\n axis,\n percentage\n * (scroll[ axis ].size.value - container[ axis ].value)\n * (axis === 'horizontal' && proxy.$q.lang.rtl === true ? -1 : 1),\n duration\n )\n }\n })\n\n return () => {\n return h('div', {\n class: classes.value,\n onMouseenter,\n onMouseleave\n }, [\n h('div', {\n ref: targetRef,\n class: 'q-scrollarea__container scroll relative-position fit hide-scrollbar',\n tabindex: props.tabindex !== void 0 ? props.tabindex : void 0\n }, [\n h('div', {\n class: 'q-scrollarea__content absolute',\n style: mainStyle.value\n }, hMergeSlot(slots.default, [\n h(QResizeObserver, {\n debounce: 0,\n onResize: updateScrollSize\n })\n ])),\n\n h(QScrollObserver, {\n axis: 'both',\n onScroll: updateScroll\n })\n ]),\n\n h(QResizeObserver, {\n debounce: 0,\n onResize: updateContainer\n }),\n\n h('div', {\n class: scroll.vertical.barClass.value,\n style: [ props.barStyle, props.verticalBarStyle ],\n 'aria-hidden': 'true',\n onMousedown: onVerticalMousedown\n }),\n\n h('div', {\n class: scroll.horizontal.barClass.value,\n style: [ props.barStyle, props.horizontalBarStyle ],\n 'aria-hidden': 'true',\n onMousedown: onHorizontalMousedown\n }),\n\n withDirectives(\n h('div', {\n ref: scroll.vertical.ref,\n class: scroll.vertical.thumbClass.value,\n style: scroll.vertical.style.value,\n 'aria-hidden': 'true'\n }),\n thumbVertDir\n ),\n\n withDirectives(\n h('div', {\n ref: scroll.horizontal.ref,\n class: scroll.horizontal.thumbClass.value,\n style: scroll.horizontal.style.value,\n 'aria-hidden': 'true'\n }),\n thumbHorizDir\n )\n ])\n }\n }\n})\n","import { h, computed } from 'vue'\n\nimport useAlign, { useAlignProps } from '../../composables/private/use-align.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QCardActions',\n\n props: {\n ...useAlignProps,\n vertical: Boolean\n },\n\n setup (props, { slots }) {\n const alignClass = useAlign(props)\n\n const classes = computed(() =>\n `q-card__actions ${ alignClass.value }`\n + ` q-card__actions--${ props.vertical === true ? 'vert column' : 'horiz row' }`\n )\n\n return () => h('div', { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, ref, reactive, computed, watch, provide, onUnmounted, getCurrentInstance } from 'vue'\n\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nimport QScrollObserver from '../scroll-observer/QScrollObserver.js'\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { getScrollbarWidth } from '../../utils/scroll.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport { layoutKey } from '../../utils/private/symbols.js'\n\nexport default createComponent({\n name: 'QLayout',\n\n props: {\n container: Boolean,\n view: {\n type: String,\n default: 'hhh lpr fff',\n validator: v => /^(h|l)h(h|r) lpr (f|l)f(f|r)$/.test(v.toLowerCase())\n },\n\n onScroll: Function,\n onScrollHeight: Function,\n onResize: Function\n },\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const rootRef = ref(null)\n\n // page related\n const height = ref($q.screen.height)\n const width = ref(props.container === true ? 0 : $q.screen.width)\n const scroll = ref({ position: 0, direction: 'down', inflectionPoint: 0 })\n\n // container only prop\n const containerHeight = ref(0)\n const scrollbarWidth = ref(isRuntimeSsrPreHydration.value === true ? 0 : getScrollbarWidth())\n\n const classes = computed(() =>\n 'q-layout q-layout--'\n + (props.container === true ? 'containerized' : 'standard')\n )\n\n const style = computed(() => (\n props.container === false\n ? { minHeight: $q.screen.height + 'px' }\n : null\n ))\n\n // used by container only\n const targetStyle = computed(() => (\n scrollbarWidth.value !== 0\n ? { [ $q.lang.rtl === true ? 'left' : 'right' ]: `${ scrollbarWidth.value }px` }\n : null\n ))\n\n const targetChildStyle = computed(() => (\n scrollbarWidth.value !== 0\n ? {\n [ $q.lang.rtl === true ? 'right' : 'left' ]: 0,\n [ $q.lang.rtl === true ? 'left' : 'right' ]: `-${ scrollbarWidth.value }px`,\n width: `calc(100% + ${ scrollbarWidth.value }px)`\n }\n : null\n ))\n\n function onPageScroll (data) {\n if (props.container === true || document.qScrollPrevented !== true) {\n const info = {\n position: data.position.top,\n direction: data.direction,\n directionChanged: data.directionChanged,\n inflectionPoint: data.inflectionPoint.top,\n delta: data.delta.top\n }\n\n scroll.value = info\n props.onScroll !== void 0 && emit('scroll', info)\n }\n }\n\n function onPageResize (data) {\n const { height: newHeight, width: newWidth } = data\n let resized = false\n\n if (height.value !== newHeight) {\n resized = true\n height.value = newHeight\n props.onScrollHeight !== void 0 && emit('scrollHeight', newHeight)\n updateScrollbarWidth()\n }\n if (width.value !== newWidth) {\n resized = true\n width.value = newWidth\n }\n\n if (resized === true && props.onResize !== void 0) {\n emit('resize', data)\n }\n }\n\n function onContainerResize ({ height }) {\n if (containerHeight.value !== height) {\n containerHeight.value = height\n updateScrollbarWidth()\n }\n }\n\n function updateScrollbarWidth () {\n if (props.container === true) {\n const width = height.value > containerHeight.value\n ? getScrollbarWidth()\n : 0\n\n if (scrollbarWidth.value !== width) {\n scrollbarWidth.value = width\n }\n }\n }\n\n let timer\n\n const $layout = {\n instances: {},\n view: computed(() => props.view),\n isContainer: computed(() => props.container),\n\n rootRef,\n\n height,\n containerHeight,\n scrollbarWidth,\n totalWidth: computed(() => width.value + scrollbarWidth.value),\n\n rows: computed(() => {\n const rows = props.view.toLowerCase().split(' ')\n return {\n top: rows[ 0 ].split(''),\n middle: rows[ 1 ].split(''),\n bottom: rows[ 2 ].split('')\n }\n }),\n\n header: reactive({ size: 0, offset: 0, space: false }),\n right: reactive({ size: 300, offset: 0, space: false }),\n footer: reactive({ size: 0, offset: 0, space: false }),\n left: reactive({ size: 300, offset: 0, space: false }),\n\n scroll,\n\n animate () {\n if (timer !== void 0) {\n clearTimeout(timer)\n }\n else {\n document.body.classList.add('q-body--layout-animate')\n }\n\n timer = setTimeout(() => {\n document.body.classList.remove('q-body--layout-animate')\n timer = void 0\n }, 155)\n },\n\n update (part, prop, val) {\n $layout[ part ][ prop ] = val\n }\n }\n\n provide(layoutKey, $layout)\n\n // prevent scrollbar flicker while resizing window height\n // if no page scrollbar is already present\n if (__QUASAR_SSR_SERVER__ !== true && getScrollbarWidth() > 0) {\n let timer = null\n const el = document.body\n\n function restoreScrollbar () {\n timer = null\n el.classList.remove('hide-scrollbar')\n }\n\n function hideScrollbar () {\n if (timer === null) {\n // if it has no scrollbar then there's nothing to do\n\n if (el.scrollHeight > $q.screen.height) {\n return\n }\n\n el.classList.add('hide-scrollbar')\n }\n else {\n clearTimeout(timer)\n }\n\n timer = setTimeout(restoreScrollbar, 300)\n }\n\n function updateScrollEvent (action) {\n if (timer !== null && action === 'remove') {\n clearTimeout(timer)\n restoreScrollbar()\n }\n\n window[ `${ action }EventListener` ]('resize', hideScrollbar)\n }\n\n watch(\n () => (props.container !== true ? 'add' : 'remove'),\n updateScrollEvent\n )\n\n props.container !== true && updateScrollEvent('add')\n\n onUnmounted(() => {\n updateScrollEvent('remove')\n })\n }\n\n return () => {\n const content = hMergeSlot(slots.default, [\n h(QScrollObserver, { onScroll: onPageScroll }),\n h(QResizeObserver, { onResize: onPageResize })\n ])\n\n const layout = h('div', {\n class: classes.value,\n style: style.value,\n ref: props.container === true ? void 0 : rootRef,\n tabindex: -1\n }, content)\n\n if (props.container === true) {\n return h('div', {\n class: 'q-layout-container overflow-hidden',\n ref: rootRef\n }, [\n h(QResizeObserver, { onResize: onContainerResize }),\n h('div', {\n class: 'absolute-full',\n style: targetStyle.value\n }, [\n h('div', {\n class: 'scroll',\n style: targetChildStyle.value\n }, [ layout ])\n ])\n ])\n }\n\n return layout\n }\n }\n})\n","import { h, ref, computed, watch, Transition, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useAnchor, { useAnchorProps } from '../../composables/private/use-anchor.js'\nimport useScrollTarget from '../../composables/private/use-scroll-target.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport usePortal from '../../composables/private/use-portal.js'\nimport useTransition, { useTransitionProps } from '../../composables/private/use-transition.js'\nimport useTick from '../../composables/private/use-tick.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { closePortalMenus } from '../../utils/private/portal.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { position, stopAndPrevent } from '../../utils/event.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { addEscapeKey, removeEscapeKey } from '../../utils/private/escape-key.js'\nimport { addFocusout, removeFocusout } from '../../utils/private/focusout.js'\nimport { childHasFocus } from '../../utils/dom.js'\nimport { addClickOutside, removeClickOutside } from '../../utils/private/click-outside.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\n\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/private/position-engine.js'\n\nexport default createComponent({\n name: 'QMenu',\n\n inheritAttrs: false,\n\n props: {\n ...useAnchorProps,\n ...useModelToggleProps,\n ...useDarkProps,\n ...useTransitionProps,\n\n persistent: Boolean,\n autoClose: Boolean,\n separateClosePopup: Boolean,\n\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n\n fit: Boolean,\n cover: Boolean,\n\n square: Boolean,\n\n anchor: {\n type: String,\n validator: validatePosition\n },\n self: {\n type: String,\n validator: validatePosition\n },\n offset: {\n type: Array,\n validator: validateOffset\n },\n\n scrollTarget: {\n default: void 0\n },\n\n touchPosition: Boolean,\n\n maxHeight: {\n type: String,\n default: null\n },\n maxWidth: {\n type: String,\n default: null\n }\n },\n\n emits: [\n ...useModelToggleEmits,\n 'click', 'escapeKey'\n ],\n\n setup (props, { slots, emit, attrs }) {\n let refocusTarget = null, absoluteOffset, unwatchPosition, avoidAutoClose\n\n const vm = getCurrentInstance()\n const { proxy } = vm\n const { $q } = proxy\n\n const innerRef = ref(null)\n const showing = ref(false)\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && props.noRouteDismiss !== true\n )\n\n const isDark = useDark(props, $q)\n const { registerTick, removeTick } = useTick()\n const { registerTimeout } = useTimeout()\n const { transitionProps, transitionStyle } = useTransition(props)\n const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget)\n\n const { anchorEl, canShow } = useAnchor({ showing })\n\n const { hide } = useModelToggle({\n showing, canShow, handleShow, handleHide,\n hideOnRouteChange,\n processOnMount: true\n })\n\n const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent)\n\n const clickOutsideProps = {\n anchorEl,\n innerRef,\n onClickOutside (e) {\n if (props.persistent !== true && showing.value === true) {\n hide(e)\n\n if (\n // always prevent touch event\n e.type === 'touchstart'\n // prevent click if it's on a dialog backdrop\n || e.target.classList.contains('q-dialog__backdrop')\n ) {\n stopAndPrevent(e)\n }\n\n return true\n }\n }\n }\n\n const anchorOrigin = computed(() =>\n parsePosition(\n props.anchor || (\n props.cover === true ? 'center middle' : 'bottom start'\n ),\n $q.lang.rtl\n )\n )\n\n const selfOrigin = computed(() => (\n props.cover === true\n ? anchorOrigin.value\n : parsePosition(props.self || 'top start', $q.lang.rtl)\n ))\n\n const menuClass = computed(() =>\n (props.square === true ? ' q-menu--square' : '')\n + (isDark.value === true ? ' q-menu--dark q-dark' : '')\n )\n\n const onEvents = computed(() => (\n props.autoClose === true\n ? { onClick: onAutoClose }\n : {}\n ))\n\n const handlesFocus = computed(() =>\n showing.value === true && props.persistent !== true\n )\n\n watch(handlesFocus, val => {\n if (val === true) {\n addEscapeKey(onEscapeKey)\n addClickOutside(clickOutsideProps)\n }\n else {\n removeEscapeKey(onEscapeKey)\n removeClickOutside(clickOutsideProps)\n }\n })\n\n function focus () {\n addFocusFn(() => {\n let node = innerRef.value\n\n if (node && node.contains(document.activeElement) !== true) {\n node = node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')\n || node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')\n || node.querySelector('[autofocus], [data-autofocus]')\n || node\n node.focus({ preventScroll: true })\n }\n })\n }\n\n function handleShow (evt) {\n refocusTarget = props.noRefocus === false\n ? document.activeElement\n : null\n\n addFocusout(onFocusout)\n\n showPortal()\n configureScrollTarget()\n\n absoluteOffset = void 0\n\n if (evt !== void 0 && (props.touchPosition || props.contextMenu)) {\n const pos = position(evt)\n\n if (pos.left !== void 0) {\n const { top, left } = anchorEl.value.getBoundingClientRect()\n absoluteOffset = { left: pos.left - left, top: pos.top - top }\n }\n }\n\n if (unwatchPosition === void 0) {\n unwatchPosition = watch(\n () => $q.screen.width + '|' + $q.screen.height + '|' + props.self + '|' + props.anchor + '|' + $q.lang.rtl,\n updatePosition\n )\n }\n\n if (props.noFocus !== true) {\n document.activeElement.blur()\n }\n\n // should removeTick() if this gets removed\n registerTick(() => {\n updatePosition()\n props.noFocus !== true && focus()\n })\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n // required in order to avoid the \"double-tap needed\" issue\n if ($q.platform.is.ios === true) {\n // if auto-close, then this click should\n // not close the menu\n avoidAutoClose = props.autoClose\n innerRef.value.click()\n }\n\n updatePosition()\n showPortal(true) // done showing portal\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTick()\n hidePortal()\n\n anchorCleanup(true)\n\n if (\n refocusTarget !== null\n && (\n // menu was hidden from code or ESC plugin\n evt === void 0\n // menu was not closed from a mouse or touch clickOutside\n || evt.qClickOutside !== true\n )\n ) {\n ((evt && evt.type.indexOf('key') === 0\n ? refocusTarget.closest('[tabindex]:not([tabindex^=\"-\"])')\n : void 0\n ) || refocusTarget).focus()\n refocusTarget = null\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n hidePortal(true) // done hiding, now destroy\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function anchorCleanup (hiding) {\n absoluteOffset = void 0\n\n if (unwatchPosition !== void 0) {\n unwatchPosition()\n unwatchPosition = void 0\n }\n\n if (hiding === true || showing.value === true) {\n removeFocusout(onFocusout)\n unconfigureScrollTarget()\n removeClickOutside(clickOutsideProps)\n removeEscapeKey(onEscapeKey)\n }\n\n if (hiding !== true) {\n refocusTarget = null\n }\n }\n\n function configureScrollTarget () {\n if (anchorEl.value !== null || props.scrollTarget !== void 0) {\n localScrollTarget.value = getScrollTarget(anchorEl.value, props.scrollTarget)\n changeScrollEvent(localScrollTarget.value, updatePosition)\n }\n }\n\n function onAutoClose (e) {\n // if auto-close, then the ios double-tap fix which\n // issues a click should not close the menu\n if (avoidAutoClose !== true) {\n closePortalMenus(proxy, e)\n emit('click', e)\n }\n else {\n avoidAutoClose = false\n }\n }\n\n function onFocusout (evt) {\n // the focus is not in a vue child component\n if (\n handlesFocus.value === true\n && props.noFocus !== true\n && childHasFocus(innerRef.value, evt.target) !== true\n ) {\n focus()\n }\n }\n\n function onEscapeKey (evt) {\n emit('escapeKey')\n hide(evt)\n }\n\n function updatePosition () {\n const el = innerRef.value\n\n if (el === null || anchorEl.value === null) {\n return\n }\n\n setPosition({\n el,\n offset: props.offset,\n anchorEl: anchorEl.value,\n anchorOrigin: anchorOrigin.value,\n selfOrigin: selfOrigin.value,\n absoluteOffset,\n fit: props.fit,\n cover: props.cover,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth\n })\n }\n\n function renderPortalContent () {\n return h(\n Transition,\n transitionProps.value,\n () => (\n showing.value === true\n ? h('div', {\n role: 'menu',\n ...attrs,\n ref: innerRef,\n tabindex: -1,\n class: [\n 'q-menu q-position-engine scroll' + menuClass.value,\n attrs.class\n ],\n style: [\n attrs.style,\n transitionStyle.value\n ],\n ...onEvents.value\n }, hSlot(slots.default))\n : null\n )\n )\n }\n\n onBeforeUnmount(anchorCleanup)\n\n // expose public methods\n Object.assign(proxy, { focus, updatePosition })\n\n return renderPortal\n }\n})\n","// taken from https://github.com/jalaali/jalaali-js\n\n/*\n Jalaali years starting the 33-year rule.\n*/\nconst breaks = [\n -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210,\n 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178\n]\n\n/*\n Converts a Gregorian date to Jalaali.\n*/\nexport function toJalaali (gy, gm, gd) {\n if (Object.prototype.toString.call(gy) === '[object Date]') {\n gd = gy.getDate()\n gm = gy.getMonth() + 1\n gy = gy.getFullYear()\n }\n return d2j(g2d(gy, gm, gd))\n}\n\n/*\n Converts a Jalaali date to Gregorian.\n*/\nexport function toGregorian (jy, jm, jd) {\n return d2g(j2d(jy, jm, jd))\n}\n\n/*\n Is this a leap year or not?\n*/\nfunction isLeapJalaaliYear (jy) {\n return jalCalLeap(jy) === 0\n}\n\n/*\n Number of days in a given month in a Jalaali year.\n*/\nexport function jalaaliMonthLength (jy, jm) {\n if (jm <= 6) return 31\n if (jm <= 11) return 30\n if (isLeapJalaaliYear(jy)) return 30\n return 29\n}\n\n/*\n This function determines if the Jalaali (Persian) year is\n leap (366-day long) or is the common year (365 days)\n\n @param jy Jalaali calendar year (-61 to 3177)\n @returns number of years since the last leap year (0 to 4)\n */\nfunction jalCalLeap (jy) {\n const bl = breaks.length\n let\n jp = breaks[ 0 ],\n jm,\n jump,\n leap,\n n,\n i\n\n if (jy < jp || jy >= breaks[ bl - 1 ]) { throw new Error('Invalid Jalaali year ' + jy) }\n\n for (i = 1; i < bl; i += 1) {\n jm = breaks[ i ]\n jump = jm - jp\n if (jy < jm) { break }\n jp = jm\n }\n n = jy - jp\n\n if (jump - n < 6) { n = n - jump + div(jump + 4, 33) * 33 }\n leap = mod(mod(n + 1, 33) - 1, 4)\n if (leap === -1) {\n leap = 4\n }\n\n return leap\n}\n\n/*\n This function determines if the Jalaali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalaali year (jy).\n\n @param jy Jalaali calendar year (-61 to 3177)\n @param withoutLeap when don't need leap (true or false) default is false\n @return\n leap: number of years since the last leap year (0 to 4)\n gy: Gregorian year of the beginning of Jalaali year\n march: the March day of Farvardin the 1st (1st day of jy)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n*/\nfunction jalCal (jy, withoutLeap) {\n const\n bl = breaks.length,\n gy = jy + 621\n let\n leapJ = -14,\n jp = breaks[ 0 ],\n jm,\n jump,\n leap,\n n,\n i\n\n if (jy < jp || jy >= breaks[ bl - 1 ]) { throw new Error('Invalid Jalaali year ' + jy) }\n\n // Find the limiting years for the Jalaali year jy.\n for (i = 1; i < bl; i += 1) {\n jm = breaks[ i ]\n jump = jm - jp\n if (jy < jm) { break }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4)\n jp = jm\n }\n n = jy - jp\n\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalaali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4)\n if (mod(jump, 33) === 4 && jump - n === 4) { leapJ += 1 }\n\n // And the same in the Gregorian calendar (until the year gy).\n const leapG = div(gy, 4) - div((div(gy, 100) + 1) * 3, 4) - 150\n\n // Determine the Gregorian date of Farvardin the 1st.\n const march = 20 + leapJ - leapG\n\n // Find how many years have passed since the last leap year.\n if (!withoutLeap) {\n if (jump - n < 6) { n = n - jump + div(jump + 4, 33) * 33 }\n leap = mod(mod(n + 1, 33) - 1, 4)\n if (leap === -1) {\n leap = 4\n }\n }\n\n return {\n leap,\n gy,\n march\n }\n}\n\n/*\n Converts a date of the Jalaali calendar to the Julian Day number.\n\n @param jy Jalaali year (1 to 3100)\n @param jm Jalaali month (1 to 12)\n @param jd Jalaali day (1 to 29/31)\n @return Julian Day number\n*/\nfunction j2d (jy, jm, jd) {\n const r = jalCal(jy, true)\n return g2d(r.gy, 3, r.march) + (jm - 1) * 31 - div(jm, 7) * (jm - 7) + jd - 1\n}\n\n/*\n Converts the Julian Day number to a date in the Jalaali calendar.\n\n @param jdn Julian Day number\n @return\n jy: Jalaali year (1 to 3100)\n jm: Jalaali month (1 to 12)\n jd: Jalaali day (1 to 29/31)\n*/\nfunction d2j (jdn) {\n const gy = d2g(jdn).gy // Calculate Gregorian year (gy).\n let\n jy = gy - 621,\n jd,\n jm,\n k\n const\n r = jalCal(jy, false),\n jdn1f = g2d(gy, 3, r.march)\n\n // Find number of days that passed since 1 Farvardin.\n k = jdn - jdn1f\n if (k >= 0) {\n if (k <= 185) {\n // The first 6 months.\n jm = 1 + div(k, 31)\n jd = mod(k, 31) + 1\n return {\n jy,\n jm,\n jd\n }\n }\n else {\n // The remaining months.\n k -= 186\n }\n }\n else {\n // Previous Jalaali year.\n jy -= 1\n k += 179\n if (r.leap === 1) { k += 1 }\n }\n jm = 7 + div(k, 30)\n jd = mod(k, 30) + 1\n return {\n jy,\n jm,\n jd\n }\n}\n\n/*\n Calculates the Julian Day number from Gregorian or Julian\n calendar dates. This integer number corresponds to the noon of\n the date (i.e. 12 hours of Universal Time).\n The procedure was tested to be good since 1 March, -100100 (of both\n calendars) up to a few million years into the future.\n\n @param gy Calendar year (years BC numbered 0, -1, -2, ...)\n @param gm Calendar month (1 to 12)\n @param gd Calendar day of the month (1 to 28/29/30/31)\n @return Julian Day number\n*/\nfunction g2d (gy, gm, gd) {\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4)\n + div(153 * mod(gm + 9, 12) + 2, 5)\n + gd - 34840408\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752\n return d\n}\n\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n\n @param jdn Julian Day number\n @return\n gy: Calendar year (years BC numbered 0, -1, -2, ...)\n gm: Calendar month (1 to 12)\n gd: Calendar day of the month M (1 to 28/29/30/31)\n*/\nfunction d2g (jdn) {\n let j = 4 * jdn + 139361631\n j = j + div(div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908\n const\n i = div(mod(j, 1461), 4) * 5 + 308,\n gd = div(mod(i, 153), 5) + 1,\n gm = mod(div(i, 153), 12) + 1,\n gy = div(j, 1461) - 100100 + div(8 - gm, 6)\n return {\n gy,\n gm,\n gd\n }\n}\n\n/*\n Utility helper functions.\n*/\n\nfunction div (a, b) {\n return ~~(a / b)\n}\n\nfunction mod (a, b) {\n return a - ~~(a / b) * b\n}\n","import { computed } from 'vue'\n\nimport { toJalaali } from '../../utils/private/date-persian.js'\nimport { pad } from '../../utils/format.js'\n\nconst calendars = [ 'gregorian', 'persian' ]\n\nexport const useDatetimeProps = {\n modelValue: {\n required: true\n },\n\n mask: {\n type: String\n },\n locale: Object,\n\n calendar: {\n type: String,\n validator: v => calendars.includes(v),\n default: 'gregorian'\n },\n\n landscape: Boolean,\n\n color: String,\n textColor: String,\n\n square: Boolean,\n flat: Boolean,\n bordered: Boolean,\n\n readonly: Boolean,\n disable: Boolean\n}\n\nexport const useDatetimeEmits = [ 'update:modelValue' ]\n\nexport function getDayHash (date) {\n return date.year + '/' + pad(date.month) + '/' + pad(date.day)\n}\n\nexport default function (props, $q) {\n const editable = computed(() => {\n return props.disable !== true && props.readonly !== true\n })\n\n const tabindex = computed(() => {\n return props.editable === true ? 0 : -1\n })\n\n const headerClass = computed(() => {\n const cls = []\n props.color !== void 0 && cls.push(`bg-${ props.color }`)\n props.textColor !== void 0 && cls.push(`text-${ props.textColor }`)\n return cls.join(' ')\n })\n\n function getLocale () {\n return props.locale !== void 0\n ? { ...$q.lang.date, ...props.locale }\n : $q.lang.date\n }\n\n function getCurrentDate (dateOnly) {\n const d = new Date()\n const timeFill = dateOnly === true ? null : 0\n\n if (props.calendar === 'persian') {\n const jDate = toJalaali(d)\n return {\n year: jDate.jy,\n month: jDate.jm,\n day: jDate.jd\n }\n }\n\n return {\n year: d.getFullYear(),\n month: d.getMonth() + 1,\n day: d.getDate(),\n hour: timeFill,\n minute: timeFill,\n second: timeFill,\n millisecond: timeFill\n }\n }\n\n return {\n editable,\n tabindex,\n headerClass,\n\n getLocale,\n getCurrentDate\n }\n}\n","/* eslint no-fallthrough: 0 */\n\nimport { isDate } from './is.js'\nimport { pad, capitalize } from './format.js'\nimport { jalaaliMonthLength } from './private/date-persian.js'\nimport lang, { defaultLang } from '../lang.js'\n\nconst\n MILLISECONDS_IN_DAY = 86400000,\n MILLISECONDS_IN_HOUR = 3600000,\n MILLISECONDS_IN_MINUTE = 60000,\n defaultMask = 'YYYY-MM-DDTHH:mm:ss.SSSZ',\n token = /\\[((?:[^\\]\\\\]|\\\\]|\\\\)*)\\]|d{1,4}|M{1,4}|m{1,2}|w{1,2}|Qo|Do|D{1,4}|YY(?:YY)?|H{1,2}|h{1,2}|s{1,2}|S{1,3}|Z{1,2}|a{1,2}|[AQExX]/g,\n reverseToken = /(\\[[^\\]]*\\])|d{1,4}|M{1,4}|m{1,2}|w{1,2}|Qo|Do|D{1,4}|YY(?:YY)?|H{1,2}|h{1,2}|s{1,2}|S{1,3}|Z{1,2}|a{1,2}|[AQExX]|([.*+:?^,\\s${}()|\\\\]+)/g,\n regexStore = {}\n\nfunction getRegexData (mask, dateLocale) {\n const\n days = '(' + dateLocale.days.join('|') + ')',\n key = mask + days\n\n if (regexStore[ key ] !== void 0) {\n return regexStore[ key ]\n }\n\n const\n daysShort = '(' + dateLocale.daysShort.join('|') + ')',\n months = '(' + dateLocale.months.join('|') + ')',\n monthsShort = '(' + dateLocale.monthsShort.join('|') + ')'\n\n const map = {}\n let index = 0\n\n const regexText = mask.replace(reverseToken, match => {\n index++\n switch (match) {\n case 'YY':\n map.YY = index\n return '(-?\\\\d{1,2})'\n case 'YYYY':\n map.YYYY = index\n return '(-?\\\\d{1,4})'\n case 'M':\n map.M = index\n return '(\\\\d{1,2})'\n case 'MM':\n map.M = index // bumping to M\n return '(\\\\d{2})'\n case 'MMM':\n map.MMM = index\n return monthsShort\n case 'MMMM':\n map.MMMM = index\n return months\n case 'D':\n map.D = index\n return '(\\\\d{1,2})'\n case 'Do':\n map.D = index++ // bumping to D\n return '(\\\\d{1,2}(st|nd|rd|th))'\n case 'DD':\n map.D = index // bumping to D\n return '(\\\\d{2})'\n case 'H':\n map.H = index\n return '(\\\\d{1,2})'\n case 'HH':\n map.H = index // bumping to H\n return '(\\\\d{2})'\n case 'h':\n map.h = index\n return '(\\\\d{1,2})'\n case 'hh':\n map.h = index // bumping to h\n return '(\\\\d{2})'\n case 'm':\n map.m = index\n return '(\\\\d{1,2})'\n case 'mm':\n map.m = index // bumping to m\n return '(\\\\d{2})'\n case 's':\n map.s = index\n return '(\\\\d{1,2})'\n case 'ss':\n map.s = index // bumping to s\n return '(\\\\d{2})'\n case 'S':\n map.S = index\n return '(\\\\d{1})'\n case 'SS':\n map.S = index // bump to S\n return '(\\\\d{2})'\n case 'SSS':\n map.S = index // bump to S\n return '(\\\\d{3})'\n case 'A':\n map.A = index\n return '(AM|PM)'\n case 'a':\n map.a = index\n return '(am|pm)'\n case 'aa':\n map.aa = index\n return '(a\\\\.m\\\\.|p\\\\.m\\\\.)'\n\n case 'ddd':\n return daysShort\n case 'dddd':\n return days\n case 'Q':\n case 'd':\n case 'E':\n return '(\\\\d{1})'\n case 'Qo':\n return '(1st|2nd|3rd|4th)'\n case 'DDD':\n case 'DDDD':\n return '(\\\\d{1,3})'\n case 'w':\n return '(\\\\d{1,2})'\n case 'ww':\n return '(\\\\d{2})'\n\n case 'Z': // to split: (?:(Z)()()|([+-])?(\\\\d{2}):?(\\\\d{2}))\n map.Z = index\n return '(Z|[+-]\\\\d{2}:\\\\d{2})'\n case 'ZZ':\n map.ZZ = index\n return '(Z|[+-]\\\\d{2}\\\\d{2})'\n\n case 'X':\n map.X = index\n return '(-?\\\\d+)'\n case 'x':\n map.x = index\n return '(-?\\\\d{4,})'\n\n default:\n index--\n if (match[ 0 ] === '[') {\n match = match.substring(1, match.length - 1)\n }\n return match.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n })\n\n const res = { map, regex: new RegExp('^' + regexText) }\n regexStore[ key ] = res\n\n return res\n}\n\nfunction getDateLocale (paramDateLocale, langProps) {\n return paramDateLocale !== void 0\n ? paramDateLocale\n : (\n langProps !== void 0\n ? langProps.date\n : defaultLang.date\n )\n}\n\nfunction formatTimezone (offset, delimeter = '') {\n const\n sign = offset > 0 ? '-' : '+',\n absOffset = Math.abs(offset),\n hours = Math.floor(absOffset / 60),\n minutes = absOffset % 60\n\n return sign + pad(hours) + delimeter + pad(minutes)\n}\n\nfunction applyYearMonthDayChange (date, mod, sign) {\n let\n year = date.getFullYear(),\n month = date.getMonth()\n\n const day = date.getDate()\n\n if (mod.year !== void 0) {\n year += sign * mod.year\n delete mod.year\n }\n\n if (mod.month !== void 0) {\n month += sign * mod.month\n delete mod.month\n }\n\n date.setDate(1)\n date.setMonth(2)\n\n date.setFullYear(year)\n date.setMonth(month)\n date.setDate(Math.min(day, daysInMonth(date)))\n\n if (mod.date !== void 0) {\n date.setDate(date.getDate() + sign * mod.date)\n delete mod.date\n }\n\n return date\n}\n\nfunction applyYearMonthDay (date, mod, middle) {\n const\n year = mod.year !== void 0 ? mod.year : date[ `get${ middle }FullYear` ](),\n month = mod.month !== void 0 ? mod.month - 1 : date[ `get${ middle }Month` ](),\n maxDay = (new Date(year, month + 1, 0)).getDate(),\n day = Math.min(maxDay, mod.date !== void 0 ? mod.date : date[ `get${ middle }Date` ]())\n\n date[ `set${ middle }Date` ](1)\n date[ `set${ middle }Month` ](2)\n\n date[ `set${ middle }FullYear` ](year)\n date[ `set${ middle }Month` ](month)\n date[ `set${ middle }Date` ](day)\n\n delete mod.year\n delete mod.month\n delete mod.date\n\n return date\n}\n\nfunction getChange (date, rawMod, sign) {\n const\n mod = normalizeMod(rawMod),\n d = new Date(date),\n t = mod.year !== void 0 || mod.month !== void 0 || mod.date !== void 0\n ? applyYearMonthDayChange(d, mod, sign) // removes year/month/day\n : d\n\n for (const key in mod) {\n const op = capitalize(key)\n t[ `set${ op }` ](t[ `get${ op }` ]() + sign * mod[ key ])\n }\n\n return t\n}\n\nfunction normalizeMod (mod) {\n const acc = { ...mod }\n\n if (mod.years !== void 0) {\n acc.year = mod.years\n delete acc.years\n }\n\n if (mod.months !== void 0) {\n acc.month = mod.months\n delete acc.months\n }\n\n if (mod.days !== void 0) {\n acc.date = mod.days\n delete acc.days\n }\n if (mod.day !== void 0) {\n acc.date = mod.day\n delete acc.day\n }\n\n if (mod.hour !== void 0) {\n acc.hours = mod.hour\n delete acc.hour\n }\n\n if (mod.minute !== void 0) {\n acc.minutes = mod.minute\n delete acc.minute\n }\n\n if (mod.second !== void 0) {\n acc.seconds = mod.second\n delete acc.second\n }\n\n if (mod.millisecond !== void 0) {\n acc.milliseconds = mod.millisecond\n delete acc.millisecond\n }\n\n return acc\n}\n\nexport function adjustDate (date, rawMod, utc) {\n const\n mod = normalizeMod(rawMod),\n middle = utc === true ? 'UTC' : '',\n d = new Date(date),\n t = mod.year !== void 0 || mod.month !== void 0 || mod.date !== void 0\n ? applyYearMonthDay(d, mod, middle) // removes year/month/day\n : d\n\n for (const key in mod) {\n const op = key.charAt(0).toUpperCase() + key.slice(1)\n t[ `set${ middle }${ op }` ](mod[ key ])\n }\n\n return t\n}\n\nexport function extractDate (str, mask, dateLocale) {\n const d = __splitDate(str, mask, dateLocale)\n\n const date = new Date(\n d.year,\n d.month === null ? null : d.month - 1,\n d.day === null ? 1 : d.day,\n d.hour,\n d.minute,\n d.second,\n d.millisecond\n )\n\n const tzOffset = date.getTimezoneOffset()\n\n return d.timezoneOffset === null || d.timezoneOffset === tzOffset\n ? date\n : getChange(date, { minutes: d.timezoneOffset - tzOffset }, 1)\n}\n\nexport function __splitDate (str, mask, dateLocale, calendar, defaultModel) {\n const date = {\n year: null,\n month: null,\n day: null,\n hour: null,\n minute: null,\n second: null,\n millisecond: null,\n timezoneOffset: null,\n dateHash: null,\n timeHash: null\n }\n\n defaultModel !== void 0 && Object.assign(date, defaultModel)\n\n if (\n str === void 0\n || str === null\n || str === ''\n || typeof str !== 'string'\n ) {\n return date\n }\n\n if (mask === void 0) {\n mask = defaultMask\n }\n\n const\n langOpts = getDateLocale(dateLocale, lang.props),\n months = langOpts.months,\n monthsShort = langOpts.monthsShort\n\n const { regex, map } = getRegexData(mask, langOpts)\n\n const match = str.match(regex)\n\n if (match === null) {\n return date\n }\n\n let tzString = ''\n\n if (map.X !== void 0 || map.x !== void 0) {\n const stamp = parseInt(match[ map.X !== void 0 ? map.X : map.x ], 10)\n\n if (isNaN(stamp) === true || stamp < 0) {\n return date\n }\n\n const d = new Date(stamp * (map.X !== void 0 ? 1000 : 1))\n\n date.year = d.getFullYear()\n date.month = d.getMonth() + 1\n date.day = d.getDate()\n date.hour = d.getHours()\n date.minute = d.getMinutes()\n date.second = d.getSeconds()\n date.millisecond = d.getMilliseconds()\n }\n else {\n if (map.YYYY !== void 0) {\n date.year = parseInt(match[ map.YYYY ], 10)\n }\n else if (map.YY !== void 0) {\n const y = parseInt(match[ map.YY ], 10)\n date.year = y < 0 ? y : 2000 + y\n }\n\n if (map.M !== void 0) {\n date.month = parseInt(match[ map.M ], 10)\n if (date.month < 1 || date.month > 12) {\n return date\n }\n }\n else if (map.MMM !== void 0) {\n date.month = monthsShort.indexOf(match[ map.MMM ]) + 1\n }\n else if (map.MMMM !== void 0) {\n date.month = months.indexOf(match[ map.MMMM ]) + 1\n }\n\n if (map.D !== void 0) {\n date.day = parseInt(match[ map.D ], 10)\n\n if (date.year === null || date.month === null || date.day < 1) {\n return date\n }\n\n const maxDay = calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n\n if (date.day > maxDay) {\n return date\n }\n }\n\n if (map.H !== void 0) {\n date.hour = parseInt(match[ map.H ], 10) % 24\n }\n else if (map.h !== void 0) {\n date.hour = parseInt(match[ map.h ], 10) % 12\n if (\n (map.A && match[ map.A ] === 'PM')\n || (map.a && match[ map.a ] === 'pm')\n || (map.aa && match[ map.aa ] === 'p.m.')\n ) {\n date.hour += 12\n }\n date.hour = date.hour % 24\n }\n\n if (map.m !== void 0) {\n date.minute = parseInt(match[ map.m ], 10) % 60\n }\n\n if (map.s !== void 0) {\n date.second = parseInt(match[ map.s ], 10) % 60\n }\n\n if (map.S !== void 0) {\n date.millisecond = parseInt(match[ map.S ], 10) * 10 ** (3 - match[ map.S ].length)\n }\n\n if (map.Z !== void 0 || map.ZZ !== void 0) {\n tzString = (map.Z !== void 0 ? match[ map.Z ].replace(':', '') : match[ map.ZZ ])\n date.timezoneOffset = (tzString[ 0 ] === '+' ? -1 : 1) * (60 * tzString.slice(1, 3) + 1 * tzString.slice(3, 5))\n }\n }\n\n date.dateHash = pad(date.year, 6) + '/' + pad(date.month) + '/' + pad(date.day)\n date.timeHash = pad(date.hour) + ':' + pad(date.minute) + ':' + pad(date.second) + tzString\n\n return date\n}\n\nexport function isValid (date) {\n return typeof date === 'number'\n ? true\n : isNaN(Date.parse(date)) === false\n}\n\nexport function buildDate (mod, utc) {\n return adjustDate(new Date(), mod, utc)\n}\n\nexport function getDayOfWeek (date) {\n const dow = new Date(date).getDay()\n return dow === 0 ? 7 : dow\n}\n\nexport function getWeekOfYear (date) {\n // Remove time components of date\n const thursday = new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\n // Change date to Thursday same week\n thursday.setDate(thursday.getDate() - ((thursday.getDay() + 6) % 7) + 3)\n\n // Take January 4th as it is always in week 1 (see ISO 8601)\n const firstThursday = new Date(thursday.getFullYear(), 0, 4)\n\n // Change date to Thursday same week\n firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3)\n\n // Check if daylight-saving-time-switch occurred and correct for it\n const ds = thursday.getTimezoneOffset() - firstThursday.getTimezoneOffset()\n thursday.setHours(thursday.getHours() - ds)\n\n // Number of weeks between target Thursday and first Thursday\n const weekDiff = (thursday - firstThursday) / (MILLISECONDS_IN_DAY * 7)\n return 1 + Math.floor(weekDiff)\n}\n\nfunction getDayIdentifier (date) {\n return date.getFullYear() * 10000 + date.getMonth() * 100 + date.getDate()\n}\n\nfunction getDateIdentifier (date, onlyDate /* = false */) {\n const d = new Date(date)\n return onlyDate === true ? getDayIdentifier(d) : d.getTime()\n}\n\nexport function isBetweenDates (date, from, to, opts = {}) {\n const\n d1 = getDateIdentifier(from, opts.onlyDate),\n d2 = getDateIdentifier(to, opts.onlyDate),\n cur = getDateIdentifier(date, opts.onlyDate)\n\n return (cur > d1 || (opts.inclusiveFrom === true && cur === d1))\n && (cur < d2 || (opts.inclusiveTo === true && cur === d2))\n}\n\nexport function addToDate (date, mod) {\n return getChange(date, mod, 1)\n}\nexport function subtractFromDate (date, mod) {\n return getChange(date, mod, -1)\n}\n\nexport function startOfDate (date, unit, utc) {\n const\n t = new Date(date),\n prefix = `set${ utc === true ? 'UTC' : '' }`\n\n switch (unit) {\n case 'year':\n case 'years':\n t[ `${ prefix }Month` ](0)\n case 'month':\n case 'months':\n t[ `${ prefix }Date` ](1)\n case 'day':\n case 'days':\n case 'date':\n t[ `${ prefix }Hours` ](0)\n case 'hour':\n case 'hours':\n t[ `${ prefix }Minutes` ](0)\n case 'minute':\n case 'minutes':\n t[ `${ prefix }Seconds` ](0)\n case 'second':\n case 'seconds':\n t[ `${ prefix }Milliseconds` ](0)\n }\n return t\n}\n\nexport function endOfDate (date, unit, utc) {\n const\n t = new Date(date),\n prefix = `set${ utc === true ? 'UTC' : '' }`\n\n switch (unit) {\n case 'year':\n case 'years':\n t[ `${ prefix }Month` ](11)\n case 'month':\n case 'months':\n t[ `${ prefix }Date` ](daysInMonth(t))\n case 'day':\n case 'days':\n case 'date':\n t[ `${ prefix }Hours` ](23)\n case 'hour':\n case 'hours':\n t[ `${ prefix }Minutes` ](59)\n case 'minute':\n case 'minutes':\n t[ `${ prefix }Seconds` ](59)\n case 'second':\n case 'seconds':\n t[ `${ prefix }Milliseconds` ](999)\n }\n return t\n}\n\nexport function getMaxDate (date /* , ...args */) {\n let t = new Date(date)\n Array.prototype.slice.call(arguments, 1).forEach(d => {\n t = Math.max(t, new Date(d))\n })\n return t\n}\n\nexport function getMinDate (date /*, ...args */) {\n let t = new Date(date)\n Array.prototype.slice.call(arguments, 1).forEach(d => {\n t = Math.min(t, new Date(d))\n })\n return t\n}\n\nfunction getDiff (t, sub, interval) {\n return (\n (t.getTime() - t.getTimezoneOffset() * MILLISECONDS_IN_MINUTE)\n - (sub.getTime() - sub.getTimezoneOffset() * MILLISECONDS_IN_MINUTE)\n ) / interval\n}\n\nexport function getDateDiff (date, subtract, unit = 'days') {\n const\n t = new Date(date),\n sub = new Date(subtract)\n\n switch (unit) {\n case 'years':\n case 'year':\n return (t.getFullYear() - sub.getFullYear())\n\n case 'months':\n case 'month':\n return (t.getFullYear() - sub.getFullYear()) * 12 + t.getMonth() - sub.getMonth()\n\n case 'days':\n case 'day':\n case 'date':\n return getDiff(startOfDate(t, 'day'), startOfDate(sub, 'day'), MILLISECONDS_IN_DAY)\n\n case 'hours':\n case 'hour':\n return getDiff(startOfDate(t, 'hour'), startOfDate(sub, 'hour'), MILLISECONDS_IN_HOUR)\n\n case 'minutes':\n case 'minute':\n return getDiff(startOfDate(t, 'minute'), startOfDate(sub, 'minute'), MILLISECONDS_IN_MINUTE)\n\n case 'seconds':\n case 'second':\n return getDiff(startOfDate(t, 'second'), startOfDate(sub, 'second'), 1000)\n }\n}\n\nexport function getDayOfYear (date) {\n return getDateDiff(date, startOfDate(date, 'year'), 'days') + 1\n}\n\nexport function inferDateFormat (date) {\n return isDate(date) === true\n ? 'date'\n : (typeof date === 'number' ? 'number' : 'string')\n}\n\nexport function getDateBetween (date, min, max) {\n const t = new Date(date)\n\n if (min) {\n const low = new Date(min)\n if (t < low) {\n return low\n }\n }\n\n if (max) {\n const high = new Date(max)\n if (t > high) {\n return high\n }\n }\n\n return t\n}\n\nexport function isSameDate (date, date2, unit) {\n const\n t = new Date(date),\n d = new Date(date2)\n\n if (unit === void 0) {\n return t.getTime() === d.getTime()\n }\n\n switch (unit) {\n case 'second':\n case 'seconds':\n if (t.getSeconds() !== d.getSeconds()) {\n return false\n }\n case 'minute': // intentional fall-through\n case 'minutes':\n if (t.getMinutes() !== d.getMinutes()) {\n return false\n }\n case 'hour': // intentional fall-through\n case 'hours':\n if (t.getHours() !== d.getHours()) {\n return false\n }\n case 'day': // intentional fall-through\n case 'days':\n case 'date':\n if (t.getDate() !== d.getDate()) {\n return false\n }\n case 'month': // intentional fall-through\n case 'months':\n if (t.getMonth() !== d.getMonth()) {\n return false\n }\n case 'year': // intentional fall-through\n case 'years':\n if (t.getFullYear() !== d.getFullYear()) {\n return false\n }\n break\n default:\n throw new Error(`date isSameDate unknown unit ${ unit }`)\n }\n\n return true\n}\n\nexport function daysInMonth (date) {\n return (new Date(date.getFullYear(), date.getMonth() + 1, 0)).getDate()\n}\n\nfunction getOrdinal (n) {\n if (n >= 11 && n <= 13) {\n return `${ n }th`\n }\n switch (n % 10) {\n case 1: return `${ n }st`\n case 2: return `${ n }nd`\n case 3: return `${ n }rd`\n }\n return `${ n }th`\n}\n\nconst formatter = {\n // Year: 00, 01, ..., 99\n YY (date, dateLocale, forcedYear) {\n // workaround for < 1900 with new Date()\n const y = this.YYYY(date, dateLocale, forcedYear) % 100\n return y >= 0\n ? pad(y)\n : '-' + pad(Math.abs(y))\n },\n\n // Year: 1900, 1901, ..., 2099\n YYYY (date, _dateLocale, forcedYear) {\n // workaround for < 1900 with new Date()\n return forcedYear !== void 0 && forcedYear !== null\n ? forcedYear\n : date.getFullYear()\n },\n\n // Month: 1, 2, ..., 12\n M (date) {\n return date.getMonth() + 1\n },\n\n // Month: 01, 02, ..., 12\n MM (date) {\n return pad(date.getMonth() + 1)\n },\n\n // Month Short Name: Jan, Feb, ...\n MMM (date, dateLocale) {\n return dateLocale.monthsShort[ date.getMonth() ]\n },\n\n // Month Name: January, February, ...\n MMMM (date, dateLocale) {\n return dateLocale.months[ date.getMonth() ]\n },\n\n // Quarter: 1, 2, 3, 4\n Q (date) {\n return Math.ceil((date.getMonth() + 1) / 3)\n },\n\n // Quarter: 1st, 2nd, 3rd, 4th\n Qo (date) {\n return getOrdinal(this.Q(date))\n },\n\n // Day of month: 1, 2, ..., 31\n D (date) {\n return date.getDate()\n },\n\n // Day of month: 1st, 2nd, ..., 31st\n Do (date) {\n return getOrdinal(date.getDate())\n },\n\n // Day of month: 01, 02, ..., 31\n DD (date) {\n return pad(date.getDate())\n },\n\n // Day of year: 1, 2, ..., 366\n DDD (date) {\n return getDayOfYear(date)\n },\n\n // Day of year: 001, 002, ..., 366\n DDDD (date) {\n return pad(getDayOfYear(date), 3)\n },\n\n // Day of week: 0, 1, ..., 6\n d (date) {\n return date.getDay()\n },\n\n // Day of week: Su, Mo, ...\n dd (date, dateLocale) {\n return this.dddd(date, dateLocale).slice(0, 2)\n },\n\n // Day of week: Sun, Mon, ...\n ddd (date, dateLocale) {\n return dateLocale.daysShort[ date.getDay() ]\n },\n\n // Day of week: Sunday, Monday, ...\n dddd (date, dateLocale) {\n return dateLocale.days[ date.getDay() ]\n },\n\n // Day of ISO week: 1, 2, ..., 7\n E (date) {\n return date.getDay() || 7\n },\n\n // Week of Year: 1 2 ... 52 53\n w (date) {\n return getWeekOfYear(date)\n },\n\n // Week of Year: 01 02 ... 52 53\n ww (date) {\n return pad(getWeekOfYear(date))\n },\n\n // Hour: 0, 1, ... 23\n H (date) {\n return date.getHours()\n },\n\n // Hour: 00, 01, ..., 23\n HH (date) {\n return pad(date.getHours())\n },\n\n // Hour: 1, 2, ..., 12\n h (date) {\n const hours = date.getHours()\n return hours === 0\n ? 12\n : (hours > 12 ? hours % 12 : hours)\n },\n\n // Hour: 01, 02, ..., 12\n hh (date) {\n return pad(this.h(date))\n },\n\n // Minute: 0, 1, ..., 59\n m (date) {\n return date.getMinutes()\n },\n\n // Minute: 00, 01, ..., 59\n mm (date) {\n return pad(date.getMinutes())\n },\n\n // Second: 0, 1, ..., 59\n s (date) {\n return date.getSeconds()\n },\n\n // Second: 00, 01, ..., 59\n ss (date) {\n return pad(date.getSeconds())\n },\n\n // 1/10 of second: 0, 1, ..., 9\n S (date) {\n return Math.floor(date.getMilliseconds() / 100)\n },\n\n // 1/100 of second: 00, 01, ..., 99\n SS (date) {\n return pad(Math.floor(date.getMilliseconds() / 10))\n },\n\n // Millisecond: 000, 001, ..., 999\n SSS (date) {\n return pad(date.getMilliseconds(), 3)\n },\n\n // Meridiem: AM, PM\n A (date) {\n return this.H(date) < 12 ? 'AM' : 'PM'\n },\n\n // Meridiem: am, pm\n a (date) {\n return this.H(date) < 12 ? 'am' : 'pm'\n },\n\n // Meridiem: a.m., p.m.\n aa (date) {\n return this.H(date) < 12 ? 'a.m.' : 'p.m.'\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n Z (date, _dateLocale, _forcedYear, forcedTimezoneOffset) {\n const tzOffset = forcedTimezoneOffset === void 0 || forcedTimezoneOffset === null\n ? date.getTimezoneOffset()\n : forcedTimezoneOffset\n\n return formatTimezone(tzOffset, ':')\n },\n\n // Timezone: -0100, +0000, ... +1200\n ZZ (date, _dateLocale, _forcedYear, forcedTimezoneOffset) {\n const tzOffset = forcedTimezoneOffset === void 0 || forcedTimezoneOffset === null\n ? date.getTimezoneOffset()\n : forcedTimezoneOffset\n\n return formatTimezone(tzOffset)\n },\n\n // Seconds timestamp: 512969520\n X (date) {\n return Math.floor(date.getTime() / 1000)\n },\n\n // Milliseconds timestamp: 512969520900\n x (date) {\n return date.getTime()\n }\n}\n\nexport function formatDate (val, mask, dateLocale, __forcedYear, __forcedTimezoneOffset) {\n if (\n (val !== 0 && !val)\n || val === Infinity\n || val === -Infinity\n ) {\n return\n }\n\n const date = new Date(val)\n\n if (isNaN(date)) {\n return\n }\n\n if (mask === void 0) {\n mask = defaultMask\n }\n\n const locale = getDateLocale(dateLocale, lang.props)\n\n return mask.replace(\n token,\n (match, text) => (\n match in formatter\n ? formatter[ match ](date, locale, __forcedYear, __forcedTimezoneOffset)\n : (text === void 0 ? match : text.split('\\\\]').join(']'))\n )\n )\n}\n\nexport function clone (date) {\n return isDate(date) === true\n ? new Date(date.getTime())\n : date\n}\n\nexport default {\n isValid,\n extractDate,\n buildDate,\n getDayOfWeek,\n getWeekOfYear,\n isBetweenDates,\n addToDate,\n subtractFromDate,\n adjustDate,\n startOfDate,\n endOfDate,\n getMaxDate,\n getMinDate,\n getDateDiff,\n getDayOfYear,\n inferDateFormat,\n getDateBetween,\n isSameDate,\n daysInMonth,\n formatDate,\n clone\n}\n","import { h, ref, computed, watch, Transition, nextTick, getCurrentInstance } from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useCache from '../../composables/private/use-cache.js'\nimport { useFormProps, useFormAttrs, useFormInject } from '../../composables/private/use-form.js'\nimport useDatetime, { useDatetimeProps, useDatetimeEmits, getDayHash } from './use-datetime.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { formatDate, __splitDate, getDateDiff } from '../../utils/date.js'\nimport { pad } from '../../utils/format.js'\nimport { jalaaliMonthLength, toGregorian } from '../../utils/private/date-persian.js'\nimport { isObject } from '../../utils/is.js'\n\nconst yearsInterval = 20\nconst views = [ 'Calendar', 'Years', 'Months' ]\nconst viewIsValid = v => views.includes(v)\nconst yearMonthValidator = v => /^-?[\\d]+\\/[0-1]\\d$/.test(v)\nconst lineStr = ' \\u2014 '\n\nfunction getMonthHash (date) {\n return date.year + '/' + pad(date.month)\n}\n\nexport default createComponent({\n name: 'QDate',\n\n props: {\n ...useDatetimeProps,\n ...useFormProps,\n ...useDarkProps,\n\n multiple: Boolean,\n range: Boolean,\n\n title: String,\n subtitle: String,\n\n mask: {\n // this mask is forced\n // when using persian calendar\n default: 'YYYY/MM/DD'\n },\n\n defaultYearMonth: {\n type: String,\n validator: yearMonthValidator\n },\n\n yearsInMonthView: Boolean,\n\n events: [ Array, Function ],\n eventColor: [ String, Function ],\n\n emitImmediately: Boolean,\n\n options: [ Array, Function ],\n\n navigationMinYearMonth: {\n type: String,\n validator: yearMonthValidator\n },\n\n navigationMaxYearMonth: {\n type: String,\n validator: yearMonthValidator\n },\n\n noUnset: Boolean,\n\n firstDayOfWeek: [ String, Number ],\n todayBtn: Boolean,\n minimal: Boolean,\n defaultView: {\n type: String,\n default: 'Calendar',\n validator: viewIsValid\n }\n },\n\n emits: [\n ...useDatetimeEmits,\n 'rangeStart', 'rangeEnd', 'navigation'\n ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const isDark = useDark(props, $q)\n const { getCache } = useCache()\n const { tabindex, headerClass, getLocale, getCurrentDate } = useDatetime(props, $q)\n\n let lastEmitValue\n\n const formAttrs = useFormAttrs(props)\n const injectFormInput = useFormInject(formAttrs)\n\n const blurTargetRef = ref(null)\n const innerMask = ref(getMask())\n const innerLocale = ref(getLocale())\n\n const mask = computed(() => getMask())\n const locale = computed(() => getLocale())\n\n const today = computed(() => getCurrentDate())\n\n // model of current calendar view:\n const viewModel = ref(getViewModel(innerMask.value, innerLocale.value))\n\n const view = ref(props.defaultView)\n\n const direction = $q.lang.rtl === true ? 'right' : 'left'\n const monthDirection = ref(direction.value)\n const yearDirection = ref(direction.value)\n\n const year = viewModel.value.year\n const startYear = ref(year - (year % yearsInterval) - (year < 0 ? yearsInterval : 0))\n const editRange = ref(null)\n\n const classes = computed(() => {\n const type = props.landscape === true ? 'landscape' : 'portrait'\n return `q-date q-date--${ type } q-date--${ type }-${ props.minimal === true ? 'minimal' : 'standard' }`\n + (isDark.value === true ? ' q-date--dark q-dark' : '')\n + (props.bordered === true ? ' q-date--bordered' : '')\n + (props.square === true ? ' q-date--square no-border-radius' : '')\n + (props.flat === true ? ' q-date--flat no-shadow' : '')\n + (props.disable === true ? ' disabled' : (props.readonly === true ? ' q-date--readonly' : ''))\n })\n\n const computedColor = computed(() => {\n return props.color || 'primary'\n })\n\n const computedTextColor = computed(() => {\n return props.textColor || 'white'\n })\n\n const isImmediate = computed(() =>\n props.emitImmediately === true\n && props.multiple !== true\n && props.range !== true\n )\n\n const normalizedModel = computed(() => (\n Array.isArray(props.modelValue) === true\n ? props.modelValue\n : (props.modelValue !== null && props.modelValue !== void 0 ? [ props.modelValue ] : [])\n ))\n\n const daysModel = computed(() =>\n normalizedModel.value\n .filter(date => typeof date === 'string')\n .map(date => decodeString(date, innerMask.value, innerLocale.value))\n .filter(date =>\n date.dateHash !== null\n && date.day !== null\n && date.month !== null\n && date.year !== null\n )\n )\n\n const rangeModel = computed(() => {\n const fn = date => decodeString(date, innerMask.value, innerLocale.value)\n return normalizedModel.value\n .filter(date => isObject(date) === true && date.from !== void 0 && date.to !== void 0)\n .map(range => ({ from: fn(range.from), to: fn(range.to) }))\n .filter(range => range.from.dateHash !== null && range.to.dateHash !== null && range.from.dateHash < range.to.dateHash)\n })\n\n const getNativeDateFn = computed(() => (\n props.calendar !== 'persian'\n ? model => new Date(model.year, model.month - 1, model.day)\n : model => {\n const gDate = toGregorian(model.year, model.month, model.day)\n return new Date(gDate.gy, gDate.gm - 1, gDate.gd)\n }\n ))\n\n const encodeObjectFn = computed(() => (\n props.calendar === 'persian'\n ? getDayHash\n : (date, mask, locale) => formatDate(\n new Date(\n date.year,\n date.month - 1,\n date.day,\n date.hour,\n date.minute,\n date.second,\n date.millisecond\n ),\n mask === void 0 ? innerMask.value : mask,\n locale === void 0 ? innerLocale.value : locale,\n date.year,\n date.timezoneOffset\n )\n ))\n\n const daysInModel = computed(() =>\n daysModel.value.length + rangeModel.value.reduce(\n (acc, range) => acc + 1 + getDateDiff(\n getNativeDateFn.value(range.to),\n getNativeDateFn.value(range.from)\n ),\n 0\n )\n )\n\n const headerTitle = computed(() => {\n if (props.title !== void 0 && props.title !== null && props.title.length > 0) {\n return props.title\n }\n\n if (editRange.value !== null) {\n const model = editRange.value.init\n const date = getNativeDateFn.value(model)\n\n return innerLocale.value.daysShort[ date.getDay() ] + ', '\n + innerLocale.value.monthsShort[ model.month - 1 ] + ' '\n + model.day + lineStr + '?'\n }\n\n if (daysInModel.value === 0) {\n return lineStr\n }\n\n if (daysInModel.value > 1) {\n return `${ daysInModel.value } ${ innerLocale.value.pluralDay }`\n }\n\n const model = daysModel.value[ 0 ]\n const date = getNativeDateFn.value(model)\n\n if (isNaN(date.valueOf()) === true) {\n return lineStr\n }\n\n if (innerLocale.value.headerTitle !== void 0) {\n return innerLocale.value.headerTitle(date, model)\n }\n\n return innerLocale.value.daysShort[ date.getDay() ] + ', '\n + innerLocale.value.monthsShort[ model.month - 1 ] + ' '\n + model.day\n })\n\n const minSelectedModel = computed(() => {\n const model = daysModel.value.concat(rangeModel.value.map(range => range.from))\n .sort((a, b) => a.year - b.year || a.month - b.month)\n\n return model[ 0 ]\n })\n\n const maxSelectedModel = computed(() => {\n const model = daysModel.value.concat(rangeModel.value.map(range => range.to))\n .sort((a, b) => b.year - a.year || b.month - a.month)\n\n return model[ 0 ]\n })\n\n const headerSubtitle = computed(() => {\n if (props.subtitle !== void 0 && props.subtitle !== null && props.subtitle.length > 0) {\n return props.subtitle\n }\n\n if (daysInModel.value === 0) {\n return lineStr\n }\n\n if (daysInModel.value > 1) {\n const from = minSelectedModel.value\n const to = maxSelectedModel.value\n const month = innerLocale.value.monthsShort\n\n return month[ from.month - 1 ] + (\n from.year !== to.year\n ? ' ' + from.year + lineStr + month[ to.month - 1 ] + ' '\n : (\n from.month !== to.month\n ? lineStr + month[ to.month - 1 ]\n : ''\n )\n ) + ' ' + to.year\n }\n\n return daysModel.value[ 0 ].year\n })\n\n const dateArrow = computed(() => {\n const val = [ $q.iconSet.datetime.arrowLeft, $q.iconSet.datetime.arrowRight ]\n return $q.lang.rtl === true ? val.reverse() : val\n })\n\n const computedFirstDayOfWeek = computed(() => (\n props.firstDayOfWeek !== void 0\n ? Number(props.firstDayOfWeek)\n : innerLocale.value.firstDayOfWeek\n ))\n\n const daysOfWeek = computed(() => {\n const\n days = innerLocale.value.daysShort,\n first = computedFirstDayOfWeek.value\n\n return first > 0\n ? days.slice(first, 7).concat(days.slice(0, first))\n : days\n })\n\n const daysInMonth = computed(() => {\n const date = viewModel.value\n return props.calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n })\n\n const evtColor = computed(() => (\n typeof props.eventColor === 'function'\n ? props.eventColor\n : () => props.eventColor\n ))\n\n const minNav = computed(() => {\n if (props.navigationMinYearMonth === void 0) {\n return null\n }\n\n const data = props.navigationMinYearMonth.split('/')\n return { year: parseInt(data[ 0 ], 10), month: parseInt(data[ 1 ], 10) }\n })\n\n const maxNav = computed(() => {\n if (props.navigationMaxYearMonth === void 0) {\n return null\n }\n\n const data = props.navigationMaxYearMonth.split('/')\n return { year: parseInt(data[ 0 ], 10), month: parseInt(data[ 1 ], 10) }\n })\n\n const navBoundaries = computed(() => {\n const data = {\n month: { prev: true, next: true },\n year: { prev: true, next: true }\n }\n\n if (minNav.value !== null && minNav.value.year >= viewModel.value.year) {\n data.year.prev = false\n if (minNav.value.year === viewModel.value.year && minNav.value.month >= viewModel.value.month) {\n data.month.prev = false\n }\n }\n\n if (maxNav.value !== null && maxNav.value.year <= viewModel.value.year) {\n data.year.next = false\n if (maxNav.value.year === viewModel.value.year && maxNav.value.month <= viewModel.value.month) {\n data.month.next = false\n }\n }\n\n return data\n })\n\n const daysMap = computed(() => {\n const map = {}\n\n daysModel.value.forEach(entry => {\n const hash = getMonthHash(entry)\n\n if (map[ hash ] === void 0) {\n map[ hash ] = []\n }\n\n map[ hash ].push(entry.day)\n })\n\n return map\n })\n\n const rangeMap = computed(() => {\n const map = {}\n\n rangeModel.value.forEach(entry => {\n const hashFrom = getMonthHash(entry.from)\n const hashTo = getMonthHash(entry.to)\n\n if (map[ hashFrom ] === void 0) {\n map[ hashFrom ] = []\n }\n\n map[ hashFrom ].push({\n from: entry.from.day,\n to: hashFrom === hashTo ? entry.to.day : void 0,\n range: entry\n })\n\n if (hashFrom < hashTo) {\n let hash\n const { year, month } = entry.from\n const cur = month < 12\n ? { year, month: month + 1 }\n : { year: year + 1, month: 1 }\n\n while ((hash = getMonthHash(cur)) <= hashTo) {\n if (map[ hash ] === void 0) {\n map[ hash ] = []\n }\n\n map[ hash ].push({\n from: void 0,\n to: hash === hashTo ? entry.to.day : void 0,\n range: entry\n })\n\n cur.month++\n if (cur.month > 12) {\n cur.year++\n cur.month = 1\n }\n }\n }\n })\n\n return map\n })\n\n const rangeView = computed(() => {\n if (editRange.value === null) {\n return\n }\n\n const { init, initHash, final, finalHash } = editRange.value\n\n const [ from, to ] = initHash <= finalHash\n ? [ init, final ]\n : [ final, init ]\n\n const fromHash = getMonthHash(from)\n const toHash = getMonthHash(to)\n\n if (fromHash !== viewMonthHash.value && toHash !== viewMonthHash.value) {\n return\n }\n\n const view = {}\n\n if (fromHash === viewMonthHash.value) {\n view.from = from.day\n view.includeFrom = true\n }\n else {\n view.from = 1\n }\n\n if (toHash === viewMonthHash.value) {\n view.to = to.day\n view.includeTo = true\n }\n else {\n view.to = daysInMonth.value\n }\n\n return view\n })\n\n const viewMonthHash = computed(() => getMonthHash(viewModel.value))\n\n const selectionDaysMap = computed(() => {\n const map = {}\n\n if (props.options === void 0) {\n for (let i = 1; i <= daysInMonth.value; i++) {\n map[ i ] = true\n }\n\n return map\n }\n\n const fn = typeof props.options === 'function'\n ? props.options\n : date => props.options.includes(date)\n\n for (let i = 1; i <= daysInMonth.value; i++) {\n const dayHash = viewMonthHash.value + '/' + pad(i)\n map[ i ] = fn(dayHash)\n }\n\n return map\n })\n\n const eventDaysMap = computed(() => {\n const map = {}\n\n if (props.events === void 0) {\n for (let i = 1; i <= daysInMonth.value; i++) {\n map[ i ] = false\n }\n }\n else {\n const fn = typeof props.events === 'function'\n ? props.events\n : date => props.events.includes(date)\n\n for (let i = 1; i <= daysInMonth.value; i++) {\n const dayHash = viewMonthHash.value + '/' + pad(i)\n map[ i ] = fn(dayHash) === true && evtColor.value(dayHash)\n }\n }\n\n return map\n })\n\n const viewDays = computed(() => {\n let date, endDay\n const { year, month } = viewModel.value\n\n if (props.calendar !== 'persian') {\n date = new Date(year, month - 1, 1)\n endDay = (new Date(year, month - 1, 0)).getDate()\n }\n else {\n const gDate = toGregorian(year, month, 1)\n date = new Date(gDate.gy, gDate.gm - 1, gDate.gd)\n let prevJM = month - 1\n let prevJY = year\n if (prevJM === 0) {\n prevJM = 12\n prevJY--\n }\n endDay = jalaaliMonthLength(prevJY, prevJM)\n }\n\n return {\n days: date.getDay() - computedFirstDayOfWeek.value - 1,\n endDay\n }\n })\n\n const days = computed(() => {\n const res = []\n const { days, endDay } = viewDays.value\n\n const len = days < 0 ? days + 7 : days\n if (len < 6) {\n for (let i = endDay - len; i <= endDay; i++) {\n res.push({ i, fill: true })\n }\n }\n\n const index = res.length\n\n for (let i = 1; i <= daysInMonth.value; i++) {\n const day = { i, event: eventDaysMap.value[ i ], classes: [] }\n\n if (selectionDaysMap.value[ i ] === true) {\n day.in = true\n day.flat = true\n }\n\n res.push(day)\n }\n\n // if current view has days in model\n if (daysMap.value[ viewMonthHash.value ] !== void 0) {\n daysMap.value[ viewMonthHash.value ].forEach(day => {\n const i = index + day - 1\n Object.assign(res[ i ], {\n selected: true,\n unelevated: true,\n flat: false,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n })\n }\n\n // if current view has ranges in model\n if (rangeMap.value[ viewMonthHash.value ] !== void 0) {\n rangeMap.value[ viewMonthHash.value ].forEach(entry => {\n if (entry.from !== void 0) {\n const from = index + entry.from - 1\n const to = index + (entry.to || daysInMonth.value) - 1\n\n for (let day = from; day <= to; day++) {\n Object.assign(res[ day ], {\n range: entry.range,\n unelevated: true,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n }\n\n Object.assign(res[ from ], {\n rangeFrom: true,\n flat: false\n })\n\n entry.to !== void 0 && Object.assign(res[ to ], {\n rangeTo: true,\n flat: false\n })\n }\n else if (entry.to !== void 0) {\n const to = index + entry.to - 1\n\n for (let day = index; day <= to; day++) {\n Object.assign(res[ day ], {\n range: entry.range,\n unelevated: true,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n }\n\n Object.assign(res[ to ], {\n flat: false,\n rangeTo: true\n })\n }\n else {\n const to = index + daysInMonth.value - 1\n for (let day = index; day <= to; day++) {\n Object.assign(res[ day ], {\n range: entry.range,\n unelevated: true,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n }\n }\n })\n }\n\n if (rangeView.value !== void 0) {\n const from = index + rangeView.value.from - 1\n const to = index + rangeView.value.to - 1\n\n for (let day = from; day <= to; day++) {\n res[ day ].color = computedColor.value\n res[ day ].editRange = true\n }\n\n if (rangeView.value.includeFrom === true) {\n res[ from ].editRangeFrom = true\n }\n if (rangeView.value.includeTo === true) {\n res[ to ].editRangeTo = true\n }\n }\n\n if (viewModel.value.year === today.value.year && viewModel.value.month === today.value.month) {\n res[ index + today.value.day - 1 ].today = true\n }\n\n const left = res.length % 7\n if (left > 0) {\n const afterDays = 7 - left\n for (let i = 1; i <= afterDays; i++) {\n res.push({ i, fill: true })\n }\n }\n\n res.forEach(day => {\n let cls = 'q-date__calendar-item '\n\n if (day.fill === true) {\n cls += 'q-date__calendar-item--fill'\n }\n else {\n cls += `q-date__calendar-item--${ day.in === true ? 'in' : 'out' }`\n\n if (day.range !== void 0) {\n cls += ` q-date__range${ day.rangeTo === true ? '-to' : (day.rangeFrom === true ? '-from' : '') }`\n }\n\n if (day.editRange === true) {\n cls += ` q-date__edit-range${ day.editRangeFrom === true ? '-from' : '' }${ day.editRangeTo === true ? '-to' : '' }`\n }\n\n if (day.range !== void 0 || day.editRange === true) {\n cls += ` text-${ day.color }`\n }\n }\n\n day.classes = cls\n })\n\n return res\n })\n\n const attributes = computed(() => (\n props.disable === true\n ? { 'aria-disabled': 'true' }\n : (props.readonly === true ? { 'aria-readonly': 'true' } : {})\n ))\n\n watch(() => props.modelValue, v => {\n if (lastEmitValue === v) {\n lastEmitValue = 0\n }\n else {\n const { year, month } = getViewModel(innerMask.value, innerLocale.value)\n updateViewModel(year, month)\n }\n })\n\n watch(view, () => {\n if (blurTargetRef.value !== null && proxy.$el.contains(document.activeElement) === true) {\n blurTargetRef.value.focus()\n }\n })\n\n watch(() => viewModel.value.year, year => {\n emit('navigation', { year, month: viewModel.value.month })\n })\n\n watch(() => viewModel.value.month, month => {\n emit('navigation', { year: viewModel.value.year, month })\n })\n\n watch(mask, val => {\n updateValue(val, innerLocale.value, 'mask')\n innerMask.value = val\n })\n\n watch(locale, val => {\n updateValue(innerMask.value, val, 'locale')\n innerLocale.value = val\n })\n\n function setToday () {\n const date = today.value\n const month = daysMap.value[ getMonthHash(date) ]\n\n if (month === void 0 || month.includes(date.day) === false) {\n addToModel(date)\n }\n\n setCalendarTo(date.year, date.month)\n }\n\n function setView (viewMode) {\n if (viewIsValid(viewMode) === true) {\n view.value = viewMode\n }\n }\n\n function offsetCalendar (type, descending) {\n if ([ 'month', 'year' ].includes(type)) {\n const fn = type === 'month' ? goToMonth : goToYear\n fn(descending === true ? -1 : 1)\n }\n }\n\n function setCalendarTo (year, month) {\n view.value = 'Calendar'\n updateViewModel(year, month)\n }\n\n function setEditingRange (from, to) {\n if (props.range === false || !from) {\n editRange.value = null\n return\n }\n\n const init = Object.assign({ ...viewModel.value }, from)\n const final = to !== void 0\n ? Object.assign({ ...viewModel.value }, to)\n : init\n\n editRange.value = {\n init,\n initHash: getDayHash(init),\n final,\n finalHash: getDayHash(final)\n }\n\n setCalendarTo(init.year, init.month)\n }\n\n function getMask () {\n return props.calendar === 'persian' ? 'YYYY/MM/DD' : props.mask\n }\n\n function decodeString (date, mask, locale) {\n return __splitDate(\n date,\n mask,\n locale,\n props.calendar,\n {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n }\n )\n }\n\n function getViewModel (mask, locale) {\n const model = Array.isArray(props.modelValue) === true\n ? props.modelValue\n : (props.modelValue ? [ props.modelValue ] : [])\n\n if (model.length === 0) {\n return getDefaultViewModel()\n }\n\n const target = model[ model.length - 1 ]\n const decoded = decodeString(\n target.from !== void 0 ? target.from : target,\n mask,\n locale\n )\n\n return decoded.dateHash === null\n ? getDefaultViewModel()\n : decoded\n }\n\n function getDefaultViewModel () {\n let year, month\n\n if (props.defaultYearMonth !== void 0) {\n const d = props.defaultYearMonth.split('/')\n year = parseInt(d[ 0 ], 10)\n month = parseInt(d[ 1 ], 10)\n }\n else {\n // may come from data() where computed\n // props are not yet available\n const d = today.value !== void 0\n ? today.value\n : getCurrentDate()\n\n year = d.year\n month = d.month\n }\n\n return {\n year,\n month,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n dateHash: year + '/' + pad(month) + '/01'\n }\n }\n\n function goToMonth (offset) {\n let year = viewModel.value.year\n let month = Number(viewModel.value.month) + offset\n\n if (month === 13) {\n month = 1\n year++\n }\n else if (month === 0) {\n month = 12\n year--\n }\n\n updateViewModel(year, month)\n isImmediate.value === true && emitImmediately('month')\n }\n\n function goToYear (offset) {\n const year = Number(viewModel.value.year) + offset\n updateViewModel(year, viewModel.value.month)\n isImmediate.value === true && emitImmediately('year')\n }\n\n function setYear (year) {\n updateViewModel(year, viewModel.value.month)\n view.value = props.defaultView === 'Years' ? 'Months' : 'Calendar'\n isImmediate.value === true && emitImmediately('year')\n }\n\n function setMonth (month) {\n updateViewModel(viewModel.value.year, month)\n view.value = 'Calendar'\n isImmediate.value === true && emitImmediately('month')\n }\n\n function toggleDate (date, monthHash) {\n const month = daysMap.value[ monthHash ]\n const fn = month !== void 0 && month.includes(date.day) === true\n ? removeFromModel\n : addToModel\n\n fn(date)\n }\n\n function getShortDate (date) {\n return { year: date.year, month: date.month, day: date.day }\n }\n\n function updateViewModel (year, month) {\n if (minNav.value !== null && year <= minNav.value.year) {\n year = minNav.value.year\n if (month < minNav.value.month) {\n month = minNav.value.month\n }\n }\n\n if (maxNav.value !== null && year >= maxNav.value.year) {\n year = maxNav.value.year\n if (month > maxNav.value.month) {\n month = maxNav.value.month\n }\n }\n\n const newHash = year + '/' + pad(month) + '/01'\n\n if (newHash !== viewModel.value.dateHash) {\n monthDirection.value = (viewModel.value.dateHash < newHash) === ($q.lang.rtl !== true) ? 'left' : 'right'\n if (year !== viewModel.value.year) {\n yearDirection.value = monthDirection.value\n }\n\n nextTick(() => {\n startYear.value = year - year % yearsInterval - (year < 0 ? yearsInterval : 0)\n Object.assign(viewModel.value, {\n year,\n month,\n day: 1,\n dateHash: newHash\n })\n })\n }\n }\n\n function emitValue (val, action, date) {\n const value = val !== null && val.length === 1 && props.multiple === false\n ? val[ 0 ]\n : val\n\n lastEmitValue = value\n\n const { reason, details } = getEmitParams(action, date)\n emit('update:modelValue', value, reason, details)\n }\n\n function emitImmediately (reason) {\n const date = daysModel.value[ 0 ] !== void 0 && daysModel.value[ 0 ].dateHash !== null\n ? { ...daysModel.value[ 0 ] }\n : { ...viewModel.value } // inherit day, hours, minutes, milliseconds...\n\n // nextTick required because of animation delay in viewModel\n nextTick(() => {\n date.year = viewModel.value.year\n date.month = viewModel.value.month\n\n const maxDay = props.calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n\n date.day = Math.min(Math.max(1, date.day), maxDay)\n\n const value = encodeEntry(date)\n lastEmitValue = value\n\n const { details } = getEmitParams('', date)\n emit('update:modelValue', value, reason, details)\n })\n }\n\n function getEmitParams (action, date) {\n return date.from !== void 0\n ? {\n reason: `${ action }-range`,\n details: {\n ...getShortDate(date.target),\n from: getShortDate(date.from),\n to: getShortDate(date.to)\n }\n }\n : {\n reason: `${ action }-day`,\n details: getShortDate(date)\n }\n }\n\n function encodeEntry (date, mask, locale) {\n return date.from !== void 0\n ? { from: encodeObjectFn.value(date.from, mask, locale), to: encodeObjectFn.value(date.to, mask, locale) }\n : encodeObjectFn.value(date, mask, locale)\n }\n\n function addToModel (date) {\n let value\n\n if (props.multiple === true) {\n if (date.from !== void 0) {\n // we also need to filter out intersections\n\n const fromHash = getDayHash(date.from)\n const toHash = getDayHash(date.to)\n\n const days = daysModel.value\n .filter(day => day.dateHash < fromHash || day.dateHash > toHash)\n\n const ranges = rangeModel.value\n .filter(({ from, to }) => to.dateHash < fromHash || from.dateHash > toHash)\n\n value = days.concat(ranges).concat(date).map(entry => encodeEntry(entry))\n }\n else {\n const model = normalizedModel.value.slice()\n model.push(encodeEntry(date))\n value = model\n }\n }\n else {\n value = encodeEntry(date)\n }\n\n emitValue(value, 'add', date)\n }\n\n function removeFromModel (date) {\n if (props.noUnset === true) {\n return\n }\n\n let model = null\n\n if (props.multiple === true && Array.isArray(props.modelValue) === true) {\n const val = encodeEntry(date)\n\n if (date.from !== void 0) {\n model = props.modelValue.filter(\n date => (\n date.from !== void 0\n ? (date.from !== val.from && date.to !== val.to)\n : true\n )\n )\n }\n else {\n model = props.modelValue.filter(date => date !== val)\n }\n\n if (model.length === 0) {\n model = null\n }\n }\n\n emitValue(model, 'remove', date)\n }\n\n function updateValue (mask, locale, reason) {\n const model = daysModel.value\n .concat(rangeModel.value)\n .map(entry => encodeEntry(entry, mask, locale))\n .filter(entry => {\n return entry.from !== void 0\n ? entry.from.dateHash !== null && entry.to.dateHash !== null\n : entry.dateHash !== null\n })\n\n emit('update:modelValue', (props.multiple === true ? model : model[ 0 ]) || null, reason)\n }\n\n function getHeader () {\n if (props.minimal === true) { return }\n\n return h('div', {\n class: 'q-date__header ' + headerClass.value\n }, [\n h('div', {\n class: 'relative-position'\n }, [\n h(Transition, {\n name: 'q-transition--fade'\n }, () => h('div', {\n key: 'h-yr-' + headerSubtitle.value,\n class: 'q-date__header-subtitle q-date__header-link '\n + (view.value === 'Years' ? 'q-date__header-link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n ...getCache('vY', {\n onClick () { view.value = 'Years' },\n onKeyup (e) { e.keyCode === 13 && (view.value = 'Years') }\n })\n }, [ headerSubtitle.value ]))\n ]),\n\n h('div', {\n class: 'q-date__header-title relative-position flex no-wrap'\n }, [\n h('div', {\n class: 'relative-position col'\n }, [\n h(Transition, {\n name: 'q-transition--fade'\n }, () => h('div', {\n key: 'h-sub' + headerTitle.value,\n class: 'q-date__header-title-label q-date__header-link '\n + (view.value === 'Calendar' ? 'q-date__header-link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n ...getCache('vC', {\n onClick () { view.value = 'Calendar' },\n onKeyup (e) { e.keyCode === 13 && (view.value = 'Calendar') }\n })\n }, [ headerTitle.value ]))\n ]),\n\n props.todayBtn === true ? h(QBtn, {\n class: 'q-date__header-today self-start',\n icon: $q.iconSet.datetime.today,\n flat: true,\n size: 'sm',\n round: true,\n tabindex: tabindex.value,\n onClick: setToday\n }) : null\n ])\n ])\n }\n\n function getNavigation ({ label, type, key, dir, goTo, boundaries, cls }) {\n return [\n h('div', {\n class: 'row items-center q-date__arrow'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n size: 'sm',\n flat: true,\n icon: dateArrow.value[ 0 ],\n tabindex: tabindex.value,\n disable: boundaries.prev === false,\n ...getCache('go-#' + type, { onClick () { goTo(-1) } })\n })\n ]),\n\n h('div', {\n class: 'relative-position overflow-hidden flex flex-center' + cls\n }, [\n h(Transition, {\n name: 'q-transition--jump-' + dir\n }, () => h('div', { key }, [\n h(QBtn, {\n flat: true,\n dense: true,\n noCaps: true,\n label,\n tabindex: tabindex.value,\n ...getCache('view#' + type, { onClick: () => { view.value = type } })\n })\n ]))\n ]),\n\n h('div', {\n class: 'row items-center q-date__arrow'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n size: 'sm',\n flat: true,\n icon: dateArrow.value[ 1 ],\n tabindex: tabindex.value,\n disable: boundaries.next === false,\n ...getCache('go+#' + type, { onClick () { goTo(1) } })\n })\n ])\n ]\n }\n\n const renderViews = {\n Calendar: () => ([\n h('div', {\n key: 'calendar-view',\n class: 'q-date__view q-date__calendar'\n }, [\n h('div', {\n class: 'q-date__navigation row items-center no-wrap'\n }, getNavigation({\n label: innerLocale.value.months[ viewModel.value.month - 1 ],\n type: 'Months',\n key: viewModel.value.month,\n dir: monthDirection.value,\n goTo: goToMonth,\n boundaries: navBoundaries.value.month,\n cls: ' col'\n }).concat(getNavigation({\n label: viewModel.value.year,\n type: 'Years',\n key: viewModel.value.year,\n dir: yearDirection.value,\n goTo: goToYear,\n boundaries: navBoundaries.value.year,\n cls: ''\n }))),\n\n h('div', {\n class: 'q-date__calendar-weekdays row items-center no-wrap'\n }, daysOfWeek.value.map(day => h('div', { class: 'q-date__calendar-item' }, [ h('div', day) ]))),\n\n h('div', {\n class: 'q-date__calendar-days-container relative-position overflow-hidden'\n }, [\n h(Transition, {\n name: 'q-transition--slide-' + monthDirection.value\n }, () => h('div', {\n key: viewMonthHash.value,\n class: 'q-date__calendar-days fit'\n }, days.value.map(day => h('div', { class: day.classes }, [\n day.in === true\n ? h(\n QBtn, {\n class: day.today === true ? 'q-date__today' : '',\n dense: true,\n flat: day.flat,\n unelevated: day.unelevated,\n color: day.color,\n textColor: day.textColor,\n label: day.i,\n tabindex: tabindex.value,\n ...getCache('day#' + day.i, {\n onClick: () => { onDayClick(day.i) },\n onMouseover: () => { onDayMouseover(day.i) }\n })\n },\n day.event !== false\n ? () => h('div', { class: 'q-date__event bg-' + day.event })\n : null\n )\n : h('div', '' + day.i)\n ]))))\n ])\n ])\n ]),\n\n Months () {\n const currentYear = viewModel.value.year === today.value.year\n const isDisabled = month => {\n return (\n (minNav.value !== null && viewModel.value.year === minNav.value.year && minNav.value.month > month)\n || (maxNav.value !== null && viewModel.value.year === maxNav.value.year && maxNav.value.month < month)\n )\n }\n\n const content = innerLocale.value.monthsShort.map((month, i) => {\n const active = viewModel.value.month === i + 1\n\n return h('div', {\n class: 'q-date__months-item flex flex-center'\n }, [\n h(QBtn, {\n class: currentYear === true && today.value.month === i + 1 ? 'q-date__today' : null,\n flat: active !== true,\n label: month,\n unelevated: active,\n color: active === true ? computedColor.value : null,\n textColor: active === true ? computedTextColor.value : null,\n tabindex: tabindex.value,\n disable: isDisabled(i + 1),\n ...getCache('month#' + i, { onClick: () => { setMonth(i + 1) } })\n })\n ])\n })\n\n props.yearsInMonthView === true && content.unshift(\n h('div', { class: 'row no-wrap full-width' }, [\n getNavigation({\n label: viewModel.value.year,\n type: 'Years',\n key: viewModel.value.year,\n dir: yearDirection.value,\n goTo: goToYear,\n boundaries: navBoundaries.value.year,\n cls: ' col'\n })\n ])\n )\n\n return h('div', {\n key: 'months-view',\n class: 'q-date__view q-date__months flex flex-center'\n }, content)\n },\n\n Years () {\n const\n start = startYear.value,\n stop = start + yearsInterval,\n years = []\n\n const isDisabled = year => {\n return (\n (minNav.value !== null && minNav.value.year > year)\n || (maxNav.value !== null && maxNav.value.year < year)\n )\n }\n\n for (let i = start; i <= stop; i++) {\n const active = viewModel.value.year === i\n\n years.push(\n h('div', {\n class: 'q-date__years-item flex flex-center'\n }, [\n h(QBtn, {\n key: 'yr' + i,\n class: today.value.year === i ? 'q-date__today' : null,\n flat: !active,\n label: i,\n dense: true,\n unelevated: active,\n color: active === true ? computedColor.value : null,\n textColor: active === true ? computedTextColor.value : null,\n tabindex: tabindex.value,\n disable: isDisabled(i),\n ...getCache('yr#' + i, { onClick: () => { setYear(i) } })\n })\n ])\n )\n }\n\n return h('div', {\n class: 'q-date__view q-date__years flex flex-center'\n }, [\n h('div', {\n class: 'col-auto'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n flat: true,\n icon: dateArrow.value[ 0 ],\n tabindex: tabindex.value,\n disable: isDisabled(start),\n ...getCache('y-', { onClick: () => { startYear.value -= yearsInterval } })\n })\n ]),\n\n h('div', {\n class: 'q-date__years-content col self-stretch row items-center'\n }, years),\n\n h('div', {\n class: 'col-auto'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n flat: true,\n icon: dateArrow.value[ 1 ],\n tabindex: tabindex.value,\n disable: isDisabled(stop),\n ...getCache('y+', { onClick: () => { startYear.value += yearsInterval } })\n })\n ])\n ])\n }\n }\n\n function onDayClick (dayIndex) {\n const day = { ...viewModel.value, day: dayIndex }\n\n if (props.range === false) {\n toggleDate(day, viewMonthHash.value)\n return\n }\n\n if (editRange.value === null) {\n const dayProps = days.value.find(day => day.fill !== true && day.i === dayIndex)\n\n if (props.noUnset !== true && dayProps.range !== void 0) {\n removeFromModel({ target: day, from: dayProps.range.from, to: dayProps.range.to })\n return\n }\n\n if (dayProps.selected === true) {\n removeFromModel(day)\n return\n }\n\n const initHash = getDayHash(day)\n\n editRange.value = {\n init: day,\n initHash,\n final: day,\n finalHash: initHash\n }\n\n emit('rangeStart', getShortDate(day))\n }\n else {\n const\n initHash = editRange.value.initHash,\n finalHash = getDayHash(day),\n payload = initHash <= finalHash\n ? { from: editRange.value.init, to: day }\n : { from: day, to: editRange.value.init }\n\n editRange.value = null\n addToModel(initHash === finalHash ? day : { target: day, ...payload })\n\n emit('rangeEnd', {\n from: getShortDate(payload.from),\n to: getShortDate(payload.to)\n })\n }\n }\n\n function onDayMouseover (dayIndex) {\n if (editRange.value !== null) {\n const final = { ...viewModel.value, day: dayIndex }\n\n Object.assign(editRange.value, {\n final,\n finalHash: getDayHash(final)\n })\n }\n }\n\n // expose public methods\n Object.assign(proxy, {\n setToday, setView, offsetCalendar, setCalendarTo, setEditingRange\n })\n\n return () => {\n const content = [\n h('div', {\n class: 'q-date__content col relative-position'\n }, [\n h(Transition, {\n name: 'q-transition--fade'\n }, renderViews[ view.value ])\n ])\n ]\n\n const def = hSlot(slots.default)\n def !== void 0 && content.push(\n h('div', { class: 'q-date__actions' }, def)\n )\n\n if (props.name !== void 0 && props.disable !== true) {\n injectFormInput(content, 'push')\n }\n\n return h('div', {\n class: classes.value,\n ...attributes.value\n }, [\n getHeader(),\n\n h('div', {\n ref: blurTargetRef,\n class: 'q-date__main col column',\n tabindex: -1\n }, content)\n ])\n }\n }\n})\n","import { getParentProxy } from './vm.js'\n\nexport const portalProxyList = []\n\nexport function getPortalProxy (el) {\n return portalProxyList.find(proxy =>\n proxy.contentEl !== null\n && proxy.contentEl.contains(el)\n )\n}\n\nexport function closePortalMenus (proxy, evt) {\n do {\n if (proxy.$options.name === 'QMenu') {\n proxy.hide(evt)\n\n // is this a point of separation?\n if (proxy.$props.separateClosePopup === true) {\n return getParentProxy(proxy)\n }\n }\n else if (proxy.__qPortal === true) {\n // treat it as point of separation if parent is QPopupProxy\n // (so mobile matches desktop behavior)\n // and hide it too\n const parent = getParentProxy(proxy)\n\n if (parent !== void 0 && parent.$options.name === 'QPopupProxy') {\n proxy.hide(evt)\n return parent\n }\n else {\n return proxy\n }\n }\n\n proxy = getParentProxy(proxy)\n } while (proxy !== void 0 && proxy !== null)\n}\n\nexport function closePortals (proxy, evt, depth) {\n while (depth !== 0 && proxy !== void 0 && proxy !== null) {\n if (proxy.__qPortal === true) {\n depth--\n\n if (proxy.$options.name === 'QMenu') {\n proxy = closePortalMenus(proxy, evt)\n continue\n }\n\n proxy.hide(evt)\n }\n\n proxy = getParentProxy(proxy)\n }\n}\n","import { ref, watch, onBeforeUnmount } from 'vue'\n\nimport { listenOpts } from '../../utils/event.js'\n\nexport default function (\n props,\n configureScrollTarget\n) {\n const localScrollTarget = ref(null)\n let scrollFn\n\n function changeScrollEvent (scrollTarget, fn) {\n const fnProp = `${ fn !== void 0 ? 'add' : 'remove' }EventListener`\n const fnHandler = fn !== void 0 ? fn : scrollFn\n\n if (scrollTarget !== window) {\n scrollTarget[ fnProp ]('scroll', fnHandler, listenOpts.passive)\n }\n\n window[ fnProp ]('scroll', fnHandler, listenOpts.passive)\n\n scrollFn = fn\n }\n\n function unconfigureScrollTarget () {\n if (localScrollTarget.value !== null) {\n changeScrollEvent(localScrollTarget.value)\n localScrollTarget.value = null\n }\n }\n\n const noParentEventWatcher = watch(() => props.noParentEvent, () => {\n if (localScrollTarget.value !== null) {\n unconfigureScrollTarget()\n configureScrollTarget()\n }\n })\n\n onBeforeUnmount(noParentEventWatcher)\n\n return {\n localScrollTarget,\n unconfigureScrollTarget,\n changeScrollEvent\n }\n}\n","/**\n * DO NOT EDIT THIS FILE. It is automatically generated\n * from its .mjs counterpart (same filename but with .mjs extension).\n * Edit that file instead (en-US.mjs).\n */\nmodule.exports = {\n isoName: 'en-US',\n nativeName: 'English (US)',\n label: {\n clear: 'Clear',\n ok: 'OK',\n cancel: 'Cancel',\n close: 'Close',\n set: 'Set',\n select: 'Select',\n reset: 'Reset',\n remove: 'Remove',\n update: 'Update',\n create: 'Create',\n search: 'Search',\n filter: 'Filter',\n refresh: 'Refresh',\n expand: label => (label ? `Expand \"${ label }\"` : 'Expand'),\n collapse: label => (label ? `Collapse \"${ label }\"` : 'Collapse')\n },\n date: {\n days: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n daysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...\n format24h: false,\n pluralDay: 'days'\n },\n table: {\n noData: 'No data available',\n noResults: 'No matching records found',\n loading: 'Loading...',\n selectedRecords: rows => (\n rows === 1\n ? '1 record selected.'\n : (rows === 0 ? 'No' : rows) + ' records selected.'\n ),\n recordsPerPage: 'Records per page:',\n allRows: 'All',\n pagination: (start, end, total) => start + '-' + end + ' of ' + total,\n columns: 'Columns'\n },\n editor: {\n url: 'URL',\n bold: 'Bold',\n italic: 'Italic',\n strikethrough: 'Strikethrough',\n underline: 'Underline',\n unorderedList: 'Unordered List',\n orderedList: 'Ordered List',\n subscript: 'Subscript',\n superscript: 'Superscript',\n hyperlink: 'Hyperlink',\n toggleFullscreen: 'Toggle Fullscreen',\n quote: 'Quote',\n left: 'Left align',\n center: 'Center align',\n right: 'Right align',\n justify: 'Justify align',\n print: 'Print',\n outdent: 'Decrease indentation',\n indent: 'Increase indentation',\n removeFormat: 'Remove formatting',\n formatting: 'Formatting',\n fontSize: 'Font Size',\n align: 'Align',\n hr: 'Insert Horizontal Rule',\n undo: 'Undo',\n redo: 'Redo',\n heading1: 'Heading 1',\n heading2: 'Heading 2',\n heading3: 'Heading 3',\n heading4: 'Heading 4',\n heading5: 'Heading 5',\n heading6: 'Heading 6',\n paragraph: 'Paragraph',\n code: 'Code',\n size1: 'Very small',\n size2: 'A bit small',\n size3: 'Normal',\n size4: 'Medium-large',\n size5: 'Big',\n size6: 'Very big',\n size7: 'Maximum',\n defaultFont: 'Default Font',\n viewSource: 'View Source'\n },\n tree: {\n noNodes: 'No nodes available',\n noResults: 'No matching nodes found'\n }\n}\n","import { client } from './plugins/Platform.js'\nimport { noop } from './utils/event.js'\n\nconst getTrue = () => true\n\nfunction filterInvalidPath (path) {\n return typeof path === 'string'\n && path !== ''\n && path !== '/'\n && path !== '#/'\n}\n\nfunction normalizeExitPath (path) {\n path.startsWith('#') === true && (path = path.substring(1))\n path.startsWith('/') === false && (path = '/' + path)\n path.endsWith('/') === true && (path = path.substring(0, path.length - 1))\n return '#' + path\n}\n\nfunction getShouldExitFn (cfg) {\n if (cfg.backButtonExit === false) {\n return () => false\n }\n\n if (cfg.backButtonExit === '*') {\n return getTrue\n }\n\n // Add default root path\n const exitPaths = [ '#/' ]\n\n // Add custom exit paths\n Array.isArray(cfg.backButtonExit) === true && exitPaths.push(\n ...cfg.backButtonExit.filter(filterInvalidPath).map(normalizeExitPath)\n )\n\n return () => exitPaths.includes(window.location.hash)\n}\n\nexport default {\n __history: [],\n add: noop,\n remove: noop,\n\n install ({ $q }) {\n if (__QUASAR_SSR_SERVER__ || this.__installed === true) { return }\n\n const { cordova, capacitor } = client.is\n\n if (cordova !== true && capacitor !== true) {\n return\n }\n\n const qConf = $q.config[ cordova === true ? 'cordova' : 'capacitor' ]\n\n if (qConf !== void 0 && qConf.backButton === false) {\n return\n }\n\n // if the '@capacitor/app' plugin is not installed\n // then we got nothing to do\n if (\n // if we're on Capacitor mode\n capacitor === true\n // and it's also not in Capacitor's main instance\n && (window.Capacitor === void 0 || window.Capacitor.Plugins.App === void 0)\n ) {\n return\n }\n\n this.add = entry => {\n if (entry.condition === void 0) {\n entry.condition = getTrue\n }\n this.__history.push(entry)\n }\n\n this.remove = entry => {\n const index = this.__history.indexOf(entry)\n if (index >= 0) {\n this.__history.splice(index, 1)\n }\n }\n\n const shouldExit = getShouldExitFn(\n Object.assign(\n { backButtonExit: true },\n qConf\n )\n )\n\n const backHandler = () => {\n if (this.__history.length) {\n const entry = this.__history[ this.__history.length - 1 ]\n\n if (entry.condition() === true) {\n this.__history.pop()\n entry.handler()\n }\n }\n else if (shouldExit() === true) {\n navigator.app.exitApp()\n }\n else {\n window.history.back()\n }\n }\n\n if (cordova === true) {\n document.addEventListener('deviceready', () => {\n document.addEventListener('backbutton', backHandler, false)\n })\n }\n else {\n window.Capacitor.Plugins.App.addListener('backButton', backHandler)\n }\n }\n}\n","import { ref, watch, onMounted, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport { clearSelection } from '../../utils/private/selection.js'\nimport { addEvt, cleanEvt, prevent } from '../../utils/event.js'\nimport { isKeyCode } from '../../utils/private/key-composition.js'\n\nexport const useAnchorProps = {\n target: {\n default: true\n },\n noParentEvent: Boolean,\n contextMenu: Boolean\n}\n\nexport default function ({\n showing,\n avoidEmit, // required for QPopupProxy (true)\n configureAnchorEl // optional\n}) {\n const { props, proxy, emit } = getCurrentInstance()\n\n const anchorEl = ref(null)\n\n let touchTimer\n\n function canShow (evt) {\n // abort with no parent configured or on multi-touch\n return anchorEl.value === null\n ? false\n : (evt === void 0 || evt.touches === void 0 || evt.touches.length <= 1)\n }\n\n const anchorEvents = {}\n\n if (configureAnchorEl === void 0) {\n // default configureAnchorEl is designed for\n // QMenu & QPopupProxy (which is why it's handled here)\n\n Object.assign(anchorEvents, {\n hide (evt) {\n proxy.hide(evt)\n },\n\n toggle (evt) {\n proxy.toggle(evt)\n evt.qAnchorHandled = true\n },\n\n toggleKey (evt) {\n isKeyCode(evt, 13) === true && anchorEvents.toggle(evt)\n },\n\n contextClick (evt) {\n proxy.hide(evt)\n prevent(evt)\n nextTick(() => {\n proxy.show(evt)\n evt.qAnchorHandled = true\n })\n },\n\n prevent,\n\n mobileTouch (evt) {\n anchorEvents.mobileCleanup(evt)\n\n if (canShow(evt) !== true) {\n return\n }\n\n proxy.hide(evt)\n anchorEl.value.classList.add('non-selectable')\n\n const target = evt.target\n addEvt(anchorEvents, 'anchor', [\n [ target, 'touchmove', 'mobileCleanup', 'passive' ],\n [ target, 'touchend', 'mobileCleanup', 'passive' ],\n [ target, 'touchcancel', 'mobileCleanup', 'passive' ],\n [ anchorEl.value, 'contextmenu', 'prevent', 'notPassive' ]\n ])\n\n touchTimer = setTimeout(() => {\n proxy.show(evt)\n evt.qAnchorHandled = true\n }, 300)\n },\n\n mobileCleanup (evt) {\n anchorEl.value.classList.remove('non-selectable')\n clearTimeout(touchTimer)\n\n if (showing.value === true && evt !== void 0) {\n clearSelection()\n }\n }\n })\n\n configureAnchorEl = function (context = props.contextMenu) {\n if (props.noParentEvent === true || anchorEl.value === null) { return }\n\n let evts\n\n if (context === true) {\n if (proxy.$q.platform.is.mobile === true) {\n evts = [\n [ anchorEl.value, 'touchstart', 'mobileTouch', 'passive' ]\n ]\n }\n else {\n evts = [\n [ anchorEl.value, 'mousedown', 'hide', 'passive' ],\n [ anchorEl.value, 'contextmenu', 'contextClick', 'notPassive' ]\n ]\n }\n }\n else {\n evts = [\n [ anchorEl.value, 'click', 'toggle', 'passive' ],\n [ anchorEl.value, 'keyup', 'toggleKey', 'passive' ]\n ]\n }\n\n addEvt(anchorEvents, 'anchor', evts)\n }\n }\n\n function unconfigureAnchorEl () {\n cleanEvt(anchorEvents, 'anchor')\n }\n\n function setAnchorEl (el) {\n anchorEl.value = el\n while (anchorEl.value.classList.contains('q-anchor--skip')) {\n anchorEl.value = anchorEl.value.parentNode\n }\n configureAnchorEl()\n }\n\n function pickAnchorEl () {\n if (props.target === false || props.target === '' || proxy.$el.parentNode === null) {\n anchorEl.value = null\n }\n else if (props.target === true) {\n setAnchorEl(proxy.$el.parentNode)\n }\n else {\n let el = props.target\n\n if (typeof props.target === 'string') {\n try {\n el = document.querySelector(props.target)\n }\n catch (err) {\n el = void 0\n }\n }\n\n if (el !== void 0 && el !== null) {\n anchorEl.value = el.$el || el\n configureAnchorEl()\n }\n else {\n anchorEl.value = null\n console.error(`Anchor: target \"${ props.target }\" not found`)\n }\n }\n }\n\n watch(() => props.contextMenu, val => {\n if (anchorEl.value !== null) {\n unconfigureAnchorEl()\n configureAnchorEl(val)\n }\n })\n\n watch(() => props.target, () => {\n if (anchorEl.value !== null) {\n unconfigureAnchorEl()\n }\n\n pickAnchorEl()\n })\n\n watch(() => props.noParentEvent, val => {\n if (anchorEl.value !== null) {\n if (val === true) {\n unconfigureAnchorEl()\n }\n else {\n configureAnchorEl()\n }\n }\n })\n\n onMounted(() => {\n pickAnchorEl()\n\n if (avoidEmit !== true && props.modelValue === true && anchorEl.value === null) {\n emit('update:modelValue', false)\n }\n })\n\n onBeforeUnmount(() => {\n clearTimeout(touchTimer)\n unconfigureAnchorEl()\n })\n\n return {\n anchorEl,\n canShow,\n anchorEvents\n }\n}\n","\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 (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 (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 (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).filter(key => a[ key ] !== void 0)\n length = keys.length\n\n if (length !== Object.keys(b).filter(key => b[ key ] !== void 0).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\n// not perfect, but what we ARE interested is for Arrays not to slip in\n// as spread operator will mess things up in various areas\nexport function isObject (v) {\n return v !== null && typeof v === 'object' && Array.isArray(v) !== true\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 default {\n deepEqual: isDeepEqual,\n object: isObject,\n date: isDate,\n regexp: isRegexp,\n number: isNumber\n}\n","import { h, ref, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useRouterLink, { useRouterLinkProps } from '../../composables/private/use-router-link.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hUniqueSlot } from '../../utils/private/render.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { isKeyCode } from '../../utils/private/key-composition.js'\n\nexport default createComponent({\n name: 'QItem',\n\n props: {\n ...useDarkProps,\n ...useRouterLinkProps,\n\n tag: {\n type: String,\n default: 'div'\n },\n\n active: {\n type: Boolean,\n default: null\n },\n\n clickable: Boolean,\n dense: Boolean,\n insetLevel: Number,\n\n tabindex: [ String, Number ],\n\n focused: Boolean,\n manualFocus: Boolean\n },\n\n emits: [ 'click', 'keyup' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const isDark = useDark(props, $q)\n const { hasLink, linkAttrs, linkClass, linkTag, navigateOnClick } = useRouterLink()\n\n const rootRef = ref(null)\n const blurTargetRef = ref(null)\n\n const isActionable = computed(() =>\n props.clickable === true\n || hasLink.value === true\n || props.tag === 'label'\n )\n\n const isClickable = computed(() =>\n props.disable !== true && isActionable.value === true\n )\n\n const classes = computed(() =>\n 'q-item q-item-type row no-wrap'\n + (props.dense === true ? ' q-item--dense' : '')\n + (isDark.value === true ? ' q-item--dark' : '')\n + (\n hasLink.value === true && props.active === null\n ? linkClass.value\n : (\n props.active === true\n ? ` q-item--active${ props.activeClass !== void 0 ? ` ${ props.activeClass }` : '' }`\n : ''\n )\n )\n + (props.disable === true ? ' disabled' : '')\n + (\n isClickable.value === true\n ? ' q-item--clickable q-link cursor-pointer '\n + (props.manualFocus === true ? 'q-manual-focusable' : 'q-focusable q-hoverable')\n + (props.focused === true ? ' q-manual-focusable--focused' : '')\n : ''\n )\n )\n\n const style = computed(() => {\n if (props.insetLevel === void 0) {\n return null\n }\n\n const dir = $q.lang.rtl === true ? 'Right' : 'Left'\n return {\n [ 'padding' + dir ]: (16 + props.insetLevel * 56) + 'px'\n }\n })\n\n function onClick (e) {\n if (isClickable.value === true) {\n if (blurTargetRef.value !== null) {\n if (e.qKeyEvent !== true && document.activeElement === rootRef.value) {\n blurTargetRef.value.focus()\n }\n else if (document.activeElement === blurTargetRef.value) {\n rootRef.value.focus()\n }\n }\n\n navigateOnClick(e)\n }\n }\n\n function onKeyup (e) {\n if (isClickable.value === true && isKeyCode(e, 13) === true) {\n stopAndPrevent(e)\n\n // for ripple\n e.qKeyEvent = true\n\n // for click trigger\n const evt = new MouseEvent('click', e)\n evt.qKeyEvent = true\n rootRef.value.dispatchEvent(evt)\n }\n\n emit('keyup', e)\n }\n\n function getContent () {\n const child = hUniqueSlot(slots.default, [])\n\n isClickable.value === true && child.unshift(\n h('div', { class: 'q-focus-helper', tabindex: -1, ref: blurTargetRef })\n )\n\n return child\n }\n\n return () => {\n const data = {\n ref: rootRef,\n class: classes.value,\n style: style.value,\n role: 'listitem',\n onClick,\n onKeyup\n }\n\n if (isClickable.value === true) {\n data.tabindex = props.tabindex || '0'\n Object.assign(data, linkAttrs.value)\n }\n else if (isActionable.value === true) {\n data[ 'aria-disabled' ] = 'true'\n }\n\n return h(\n linkTag.value,\n data,\n getContent()\n )\n }\n }\n})\n","import { inject, watch, getCurrentInstance, onMounted, onBeforeUnmount } from 'vue'\n\nimport { formKey } from '../utils/private/symbols.js'\n\nexport default function ({ validate, resetValidation, requiresQForm }) {\n const $form = inject(formKey, false)\n\n if ($form !== false) {\n const { props, proxy } = getCurrentInstance()\n\n // export public method (so it can be used in QForm)\n Object.assign(proxy, { validate, resetValidation })\n\n watch(() => props.disable, val => {\n if (val === true) {\n typeof resetValidation === 'function' && resetValidation()\n $form.unbindComponent(proxy)\n }\n else {\n $form.bindComponent(proxy)\n }\n })\n\n onMounted(() => {\n // register to parent QForm\n props.disable !== true && $form.bindComponent(proxy)\n })\n\n onBeforeUnmount(() => {\n // un-register from parent QForm\n props.disable !== true && $form.unbindComponent(proxy)\n })\n }\n else if (requiresQForm === true) {\n console.error('Parent QForm not found on useFormChild()!')\n }\n}\n","// file referenced from docs\n\nconst\n hex = /^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,\n hexa = /^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,\n hexOrHexa = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,\n rgb = /^rgb\\(((0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),){2}(0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5])\\)$/,\n rgba = /^rgba\\(((0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),){2}(0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),(0|0\\.[0-9]+[1-9]|0\\.[1-9]+|1)\\)$/\n\n// Keep in sync with ui/types/api/validation.d.ts\nexport const testPattern = {\n date: v => /^-?[\\d]+\\/[0-1]\\d\\/[0-3]\\d$/.test(v),\n time: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d$/.test(v),\n fulltime: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/.test(v),\n timeOrFulltime: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$/.test(v),\n\n // -- RFC 5322 --\n // -- Added in v2.6.6 --\n // This is a basic helper validation.\n // For something more complex (like RFC 822) you should write and use your own rule.\n // We won't be accepting PRs to enhance the one below because of the reason above.\n // eslint-disable-next-line\n email: v => /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(v),\n\n hexColor: v => hex.test(v),\n hexaColor: v => hexa.test(v),\n hexOrHexaColor: v => hexOrHexa.test(v),\n\n rgbColor: v => rgb.test(v),\n rgbaColor: v => rgba.test(v),\n rgbOrRgbaColor: v => rgb.test(v) || rgba.test(v),\n\n hexOrRgbColor: v => hex.test(v) || rgb.test(v),\n hexaOrRgbaColor: v => hexa.test(v) || rgba.test(v),\n anyColor: v => hexOrHexa.test(v) || rgb.test(v) || rgba.test(v)\n}\n\nexport default {\n testPattern\n}\n","import { ref, computed, watch, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useFormChild from '../use-form-child.js'\nimport { testPattern } from '../../utils/patterns.js'\nimport debounce from '../../utils/debounce.js'\nimport { injectProp } from '../../utils/private/inject-obj-prop.js'\n\nconst lazyRulesValues = [ true, false, 'ondemand' ]\n\nexport const useValidateProps = {\n modelValue: {},\n\n error: {\n type: Boolean,\n default: null\n },\n errorMessage: String,\n noErrorIcon: Boolean,\n\n rules: Array,\n reactiveRules: Boolean,\n lazyRules: {\n type: [ Boolean, String ],\n validator: v => lazyRulesValues.includes(v)\n }\n}\n\nexport default function (focused, innerLoading) {\n const { props, proxy } = getCurrentInstance()\n\n const innerError = ref(false)\n const innerErrorMessage = ref(null)\n const isDirtyModel = ref(null)\n\n useFormChild({ validate, resetValidation })\n\n let validateIndex = 0, unwatchRules\n\n const hasRules = computed(() =>\n props.rules !== void 0\n && props.rules !== null\n && props.rules.length > 0\n )\n\n const hasActiveRules = computed(() =>\n props.disable !== true\n && hasRules.value === true\n )\n\n const hasError = computed(() =>\n props.error === true || innerError.value === true\n )\n\n const errorMessage = computed(() => (\n typeof props.errorMessage === 'string' && props.errorMessage.length > 0\n ? props.errorMessage\n : innerErrorMessage.value\n ))\n\n watch(() => props.modelValue, () => {\n validateIfNeeded()\n })\n\n watch(() => props.reactiveRules, val => {\n if (val === true) {\n if (unwatchRules === void 0) {\n unwatchRules = watch(() => props.rules, () => {\n validateIfNeeded(true)\n })\n }\n }\n else if (unwatchRules !== void 0) {\n unwatchRules()\n unwatchRules = void 0\n }\n }, { immediate: true })\n\n watch(focused, val => {\n if (val === true) {\n if (isDirtyModel.value === null) {\n isDirtyModel.value = false\n }\n }\n else if (isDirtyModel.value === false) {\n isDirtyModel.value = true\n\n if (\n hasActiveRules.value === true\n && props.lazyRules !== 'ondemand'\n // Don't re-trigger if it's already in progress;\n // It might mean that focus switched to submit btn and\n // QForm's submit() has been called already (ENTER key)\n && innerLoading.value === false\n ) {\n debouncedValidate()\n }\n }\n })\n\n function resetValidation () {\n validateIndex++\n innerLoading.value = false\n isDirtyModel.value = null\n innerError.value = false\n innerErrorMessage.value = null\n debouncedValidate.cancel()\n }\n\n /*\n * Return value\n * - true (validation succeeded)\n * - false (validation failed)\n * - Promise (pending async validation)\n */\n function validate (val = props.modelValue) {\n if (hasActiveRules.value !== true) {\n return true\n }\n\n const index = ++validateIndex\n\n const setDirty = innerLoading.value !== true\n ? () => { isDirtyModel.value = true }\n : () => {}\n\n const update = (err, msg) => {\n err === true && setDirty()\n\n innerError.value = err\n innerErrorMessage.value = msg || null\n innerLoading.value = false\n }\n\n const promises = []\n\n for (let i = 0; i < props.rules.length; i++) {\n const rule = props.rules[ i ]\n let res\n\n if (typeof rule === 'function') {\n res = rule(val, testPattern)\n }\n else if (typeof rule === 'string' && testPattern[ rule ] !== void 0) {\n res = testPattern[ rule ](val)\n }\n\n if (res === false || typeof res === 'string') {\n update(true, res)\n return false\n }\n else if (res !== true && res !== void 0) {\n promises.push(res)\n }\n }\n\n if (promises.length === 0) {\n update(false)\n return true\n }\n\n innerLoading.value = true\n\n return Promise.all(promises).then(\n res => {\n if (res === void 0 || Array.isArray(res) === false || res.length === 0) {\n index === validateIndex && update(false)\n return true\n }\n\n const msg = res.find(r => r === false || typeof r === 'string')\n index === validateIndex && update(msg !== void 0, msg)\n return msg === void 0\n },\n e => {\n if (index === validateIndex) {\n console.error(e)\n update(true)\n }\n\n return false\n }\n )\n }\n\n function validateIfNeeded (changedRules) {\n if (\n hasActiveRules.value === true\n && props.lazyRules !== 'ondemand'\n && (isDirtyModel.value === true || (props.lazyRules !== true && changedRules !== true))\n ) {\n debouncedValidate()\n }\n }\n\n const debouncedValidate = debounce(validate, 0)\n\n onBeforeUnmount(() => {\n unwatchRules !== void 0 && unwatchRules()\n debouncedValidate.cancel()\n })\n\n // expose public methods & props\n Object.assign(proxy, { resetValidation, validate })\n injectProp(proxy, 'hasError', () => hasError.value)\n\n return {\n isDirtyModel,\n hasRules,\n hasError,\n errorMessage,\n\n validate,\n resetValidation\n }\n}\n","import { ref, onBeforeUpdate } from 'vue'\n\nconst listenerRE = /^on[A-Z]/\n\nexport default function (attrs, vnode) {\n const acc = {\n listeners: ref({}),\n attributes: ref({})\n }\n\n function update () {\n const attributes = {}\n const listeners = {}\n\n for (const key in attrs) {\n if (key !== 'class' && key !== 'style' && listenerRE.test(key) === false) {\n attributes[ key ] = attrs[ key ]\n }\n }\n\n for (const key in vnode.props) {\n if (listenerRE.test(key) === true) {\n listeners[ key ] = vnode.props[ key ]\n }\n }\n\n acc.attributes.value = attributes\n acc.listeners.value = listeners\n }\n\n onBeforeUpdate(update)\n\n update()\n\n return acc\n}\n","import { h, ref, computed, watch, Transition, nextTick, onActivated, onDeactivated, onBeforeUnmount, onMounted, getCurrentInstance } from 'vue'\n\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nimport QIcon from '../../components/icon/QIcon.js'\nimport QSpinner from '../../components/spinner/QSpinner.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useValidate, { useValidateProps } from './use-validate.js'\nimport useSplitAttrs from './use-split-attrs.js'\n\nimport { hSlot } from '../../utils/private/render.js'\nimport uid from '../../utils/uid.js'\nimport { prevent, stopAndPrevent } from '../../utils/event.js'\nimport { addFocusFn, removeFocusFn } from '../../utils/private/focus-manager.js'\n\nfunction getTargetUid (val) {\n return val === void 0 ? `f_${ uid() }` : val\n}\n\nexport function fieldValueIsFilled (val) {\n return val !== void 0\n && val !== null\n && ('' + val).length > 0\n}\n\nexport const useFieldProps = {\n ...useDarkProps,\n ...useValidateProps,\n\n label: String,\n stackLabel: Boolean,\n hint: String,\n hideHint: Boolean,\n prefix: String,\n suffix: String,\n\n labelColor: String,\n color: String,\n bgColor: String,\n\n filled: Boolean,\n outlined: Boolean,\n borderless: Boolean,\n standout: [ Boolean, String ],\n\n square: Boolean,\n\n loading: Boolean,\n\n labelSlot: Boolean,\n\n bottomSlots: Boolean,\n hideBottomSpace: Boolean,\n\n rounded: Boolean,\n dense: Boolean,\n itemAligned: Boolean,\n\n counter: Boolean,\n\n clearable: Boolean,\n clearIcon: String,\n\n disable: Boolean,\n readonly: Boolean,\n\n autofocus: Boolean,\n\n for: String,\n\n maxlength: [ Number, String ]\n}\n\nexport const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popupShow', 'popupHide' ]\n\nexport function useFieldState () {\n const { props, attrs, proxy, vnode } = getCurrentInstance()\n\n const isDark = useDark(props, proxy.$q)\n\n return {\n isDark,\n\n editable: computed(() =>\n props.disable !== true && props.readonly !== true\n ),\n\n innerLoading: ref(false),\n focused: ref(false),\n hasPopupOpen: false,\n\n splitAttrs: useSplitAttrs(attrs, vnode),\n targetUid: ref(getTargetUid(props.for)),\n\n rootRef: ref(null),\n targetRef: ref(null),\n controlRef: ref(null)\n\n /**\n * user supplied additionals:\n\n * innerValue - computed\n * floatingLabel - computed\n * inputRef - computed\n\n * fieldClass - computed\n * hasShadow - computed\n\n * controlEvents - Object with fn(e)\n\n * getControl - fn\n * getInnerAppend - fn\n * getControlChild - fn\n * getShadowControl - fn\n * showPopup - fn\n */\n }\n}\n\nexport default function (state) {\n const { props, emit, slots, attrs, proxy } = getCurrentInstance()\n const { $q } = proxy\n\n let focusoutTimer\n\n if (state.hasValue === void 0) {\n state.hasValue = computed(() => fieldValueIsFilled(props.modelValue))\n }\n\n if (state.emitValue === void 0) {\n state.emitValue = value => {\n emit('update:modelValue', value)\n }\n }\n\n if (state.controlEvents === void 0) {\n state.controlEvents = {\n onFocusin: onControlFocusin,\n onFocusout: onControlFocusout\n }\n }\n\n Object.assign(state, {\n clearValue,\n onControlFocusin,\n onControlFocusout,\n focus\n })\n\n if (state.computedCounter === void 0) {\n state.computedCounter = computed(() => {\n if (props.counter !== false) {\n const len = typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? ('' + props.modelValue).length\n : (Array.isArray(props.modelValue) === true ? props.modelValue.length : 0)\n\n const max = props.maxlength !== void 0\n ? props.maxlength\n : props.maxValues\n\n return len + (max !== void 0 ? ' / ' + max : '')\n }\n })\n }\n\n const {\n isDirtyModel,\n hasRules,\n hasError,\n errorMessage,\n resetValidation\n } = useValidate(state.focused, state.innerLoading)\n\n const floatingLabel = state.floatingLabel !== void 0\n ? computed(() => props.stackLabel === true || state.focused.value === true || state.floatingLabel.value === true)\n : computed(() => props.stackLabel === true || state.focused.value === true || state.hasValue.value === true)\n\n const shouldRenderBottom = computed(() =>\n props.bottomSlots === true\n || props.hint !== void 0\n || hasRules.value === true\n || props.counter === true\n || props.error !== null\n )\n\n const styleType = computed(() => {\n if (props.filled === true) { return 'filled' }\n if (props.outlined === true) { return 'outlined' }\n if (props.borderless === true) { return 'borderless' }\n if (props.standout) { return 'standout' }\n return 'standard'\n })\n\n const classes = computed(() =>\n `q-field row no-wrap items-start q-field--${ styleType.value }`\n + (state.fieldClass !== void 0 ? ` ${ state.fieldClass.value }` : '')\n + (props.rounded === true ? ' q-field--rounded' : '')\n + (props.square === true ? ' q-field--square' : '')\n + (floatingLabel.value === true ? ' q-field--float' : '')\n + (hasLabel.value === true ? ' q-field--labeled' : '')\n + (props.dense === true ? ' q-field--dense' : '')\n + (props.itemAligned === true ? ' q-field--item-aligned q-item-type' : '')\n + (state.isDark.value === true ? ' q-field--dark' : '')\n + (state.getControl === void 0 ? ' q-field--auto-height' : '')\n + (state.focused.value === true ? ' q-field--focused' : '')\n + (hasError.value === true ? ' q-field--error' : '')\n + (hasError.value === true || state.focused.value === true ? ' q-field--highlighted' : '')\n + (props.hideBottomSpace !== true && shouldRenderBottom.value === true ? ' q-field--with-bottom' : '')\n + (props.disable === true ? ' q-field--disabled' : (props.readonly === true ? ' q-field--readonly' : ''))\n )\n\n const contentClass = computed(() =>\n 'q-field__control relative-position row no-wrap'\n + (props.bgColor !== void 0 ? ` bg-${ props.bgColor }` : '')\n + (\n hasError.value === true\n ? ' text-negative'\n : (\n typeof props.standout === 'string' && props.standout.length > 0 && state.focused.value === true\n ? ` ${ props.standout }`\n : (props.color !== void 0 ? ` text-${ props.color }` : '')\n )\n )\n )\n\n const hasLabel = computed(() =>\n props.labelSlot === true || props.label !== void 0\n )\n\n const labelClass = computed(() =>\n 'q-field__label no-pointer-events absolute ellipsis'\n + (props.labelColor !== void 0 && hasError.value !== true ? ` text-${ props.labelColor }` : '')\n )\n\n const controlSlotScope = computed(() => ({\n id: state.targetUid.value,\n editable: state.editable.value,\n focused: state.focused.value,\n floatingLabel: floatingLabel.value,\n modelValue: props.modelValue,\n emitValue: state.emitValue\n }))\n\n const attributes = computed(() => {\n const acc = {\n for: state.targetUid.value\n }\n\n if (props.disable === true) {\n acc[ 'aria-disabled' ] = 'true'\n }\n else if (props.readonly === true) {\n acc[ 'aria-readonly' ] = 'true'\n }\n\n return acc\n })\n\n watch(() => props.for, val => {\n // don't transform targetUid into a computed\n // prop as it will break SSR\n state.targetUid.value = getTargetUid(val)\n })\n\n function focusHandler () {\n const el = document.activeElement\n let target = state.targetRef !== void 0 && state.targetRef.value\n\n if (target && (el === null || el.id !== state.targetUid.value)) {\n target.hasAttribute('tabindex') === true || (target = target.querySelector('[tabindex]'))\n if (target && target !== el) {\n target.focus({ preventScroll: true })\n }\n }\n }\n\n function focus () {\n addFocusFn(focusHandler)\n }\n\n function blur () {\n removeFocusFn(focusHandler)\n const el = document.activeElement\n if (el !== null && state.rootRef.value.contains(el)) {\n el.blur()\n }\n }\n\n function onControlFocusin (e) {\n clearTimeout(focusoutTimer)\n if (state.editable.value === true && state.focused.value === false) {\n state.focused.value = true\n emit('focus', e)\n }\n }\n\n function onControlFocusout (e, then) {\n clearTimeout(focusoutTimer)\n focusoutTimer = setTimeout(() => {\n if (\n document.hasFocus() === true && (\n state.hasPopupOpen === true\n || state.controlRef === void 0\n || state.controlRef.value === null\n || state.controlRef.value.contains(document.activeElement) !== false\n )\n ) {\n return\n }\n\n if (state.focused.value === true) {\n state.focused.value = false\n emit('blur', e)\n }\n\n then !== void 0 && then()\n })\n }\n\n function clearValue (e) {\n // prevent activating the field but keep focus on desktop\n stopAndPrevent(e)\n\n if ($q.platform.is.mobile !== true) {\n const el = (state.targetRef !== void 0 && state.targetRef.value) || state.rootRef.value\n el.focus()\n }\n else if (state.rootRef.value.contains(document.activeElement) === true) {\n document.activeElement.blur()\n }\n\n if (props.type === 'file') { // TODO vue3\n // do not let focus be triggered\n // as it will make the native file dialog\n // appear for another selection\n state.inputRef.value.value = null\n }\n\n emit('update:modelValue', null)\n emit('clear', props.modelValue)\n\n nextTick(() => {\n resetValidation()\n\n if ($q.platform.is.mobile !== true) {\n isDirtyModel.value = false\n }\n })\n }\n\n function getContent () {\n const node = []\n\n slots.prepend !== void 0 && node.push(\n h('div', {\n class: 'q-field__prepend q-field__marginal row no-wrap items-center',\n key: 'prepend',\n onClick: prevent\n }, slots.prepend())\n )\n\n node.push(\n h('div', {\n class: 'q-field__control-container col relative-position row no-wrap q-anchor--skip'\n }, getControlContainer())\n )\n\n hasError.value === true && props.noErrorIcon === false && node.push(\n getInnerAppendNode('error', [\n h(QIcon, { name: $q.iconSet.field.error, color: 'negative' })\n ])\n )\n\n if (props.loading === true || state.innerLoading.value === true) {\n node.push(\n getInnerAppendNode(\n 'inner-loading-append',\n slots.loading !== void 0\n ? slots.loading()\n : [ h(QSpinner, { color: props.color }) ]\n )\n )\n }\n else if (props.clearable === true && state.hasValue.value === true && state.editable.value === true) {\n node.push(\n getInnerAppendNode('inner-clearable-append', [\n h(QIcon, {\n class: 'q-field__focusable-action',\n tag: 'button',\n name: props.clearIcon || $q.iconSet.field.clear,\n tabindex: 0,\n type: 'button',\n 'aria-hidden': null,\n role: null,\n onClick: clearValue\n })\n ])\n )\n }\n\n slots.append !== void 0 && node.push(\n h('div', {\n class: 'q-field__append q-field__marginal row no-wrap items-center',\n key: 'append',\n onClick: prevent\n }, slots.append())\n )\n\n state.getInnerAppend !== void 0 && node.push(\n getInnerAppendNode('inner-append', state.getInnerAppend())\n )\n\n state.getControlChild !== void 0 && node.push(\n state.getControlChild()\n )\n\n return node\n }\n\n function getControlContainer () {\n const node = []\n\n props.prefix !== void 0 && props.prefix !== null && node.push(\n h('div', {\n class: 'q-field__prefix no-pointer-events row items-center'\n }, props.prefix)\n )\n\n if (state.getShadowControl !== void 0 && state.hasShadow.value === true) {\n node.push(\n state.getShadowControl()\n )\n }\n\n if (state.getControl !== void 0) {\n node.push(state.getControl())\n }\n // internal usage only:\n else if (slots.rawControl !== void 0) {\n node.push(slots.rawControl())\n }\n else if (slots.control !== void 0) {\n node.push(\n h('div', {\n ref: state.targetRef,\n class: 'q-field__native row',\n tabindex: -1,\n ...state.splitAttrs.attributes.value,\n 'data-autofocus': props.autofocus === true || void 0\n }, slots.control(controlSlotScope.value))\n )\n }\n\n hasLabel.value === true && node.push(\n h('div', {\n class: labelClass.value\n }, hSlot(slots.label, props.label))\n )\n\n props.suffix !== void 0 && props.suffix !== null && node.push(\n h('div', {\n class: 'q-field__suffix no-pointer-events row items-center'\n }, props.suffix)\n )\n\n return node.concat(hSlot(slots.default))\n }\n\n function getBottom () {\n let msg, key\n\n if (hasError.value === true) {\n if (errorMessage.value !== null) {\n msg = [ h('div', { role: 'alert' }, errorMessage.value) ]\n key = `q--slot-error-${ errorMessage.value }`\n }\n else {\n msg = hSlot(slots.error)\n key = 'q--slot-error'\n }\n }\n else if (props.hideHint !== true || state.focused.value === true) {\n if (props.hint !== void 0) {\n msg = [ h('div', props.hint) ]\n key = `q--slot-hint-${ props.hint }`\n }\n else {\n msg = hSlot(slots.hint)\n key = 'q--slot-hint'\n }\n }\n\n const hasCounter = props.counter === true || slots.counter !== void 0\n\n if (props.hideBottomSpace === true && hasCounter === false && msg === void 0) {\n return\n }\n\n const main = h('div', {\n key,\n class: 'q-field__messages col'\n }, msg)\n\n return h('div', {\n class: 'q-field__bottom row items-start q-field__bottom--'\n + (props.hideBottomSpace !== true ? 'animated' : 'stale'),\n onClick: prevent\n }, [\n props.hideBottomSpace === true\n ? main\n : h(Transition, { name: 'q-transition--field-message' }, () => main),\n\n hasCounter === true\n ? h('div', {\n class: 'q-field__counter'\n }, slots.counter !== void 0 ? slots.counter() : state.computedCounter.value)\n : null\n ])\n }\n\n function getInnerAppendNode (key, content) {\n return content === null\n ? null\n : h('div', {\n key,\n class: 'q-field__append q-field__marginal row no-wrap items-center q-anchor--skip'\n }, content)\n }\n\n let shouldActivate = false\n\n onDeactivated(() => {\n shouldActivate = true\n })\n\n onActivated(() => {\n shouldActivate === true && props.autofocus === true && proxy.focus()\n })\n\n onMounted(() => {\n if (isRuntimeSsrPreHydration.value === true && props.for === void 0) {\n state.targetUid.value = getTargetUid()\n }\n\n props.autofocus === true && proxy.focus()\n })\n\n onBeforeUnmount(() => {\n clearTimeout(focusoutTimer)\n })\n\n // expose public methods\n Object.assign(proxy, { focus, blur })\n\n return function renderField () {\n const labelAttrs = state.getControl === void 0 && slots.control === void 0\n ? {\n ...state.splitAttrs.attributes.value,\n 'data-autofocus': props.autofocus === true || void 0,\n ...attributes.value\n }\n : attributes.value\n\n return h('label', {\n ref: state.rootRef,\n class: [\n classes.value,\n attrs.class\n ],\n style: attrs.style,\n ...labelAttrs\n }, [\n slots.before !== void 0\n ? h('div', {\n class: 'q-field__before q-field__marginal row no-wrap items-center',\n onClick: prevent\n }, slots.before())\n : null,\n\n h('div', {\n class: 'q-field__inner relative-position col self-stretch'\n }, [\n h('div', {\n ref: state.controlRef,\n class: contentClass.value,\n tabindex: -1,\n ...state.controlEvents\n }, getContent()),\n\n shouldRenderBottom.value === true\n ? getBottom()\n : null\n ]),\n\n slots.after !== void 0\n ? h('div', {\n class: 'q-field__after q-field__marginal row no-wrap items-center',\n onClick: prevent\n }, slots.after())\n : null\n ])\n }\n}\n","export default function (fn, limit = 250) {\n let wait = false, result\n\n return function (/* ...args */) {\n if (wait === false) {\n wait = true\n setTimeout(() => { wait = false }, limit)\n result = fn.apply(this, arguments)\n }\n\n return result\n }\n}\n","import { createDirective } from '../utils/private/create.js'\nimport { css } from '../utils/dom.js'\nimport { position, stop, addEvt, cleanEvt } from '../utils/event.js'\nimport { isKeyCode } from '../utils/private/key-composition.js'\nimport throttle from '../utils/throttle.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.js'\n\nfunction showRipple (evt, el, ctx, forceCenter) {\n ctx.modifiers.stop === true && stop(evt)\n\n const color = ctx.modifiers.color\n let center = ctx.modifiers.center\n center = center === true || forceCenter === true\n\n const\n node = document.createElement('span'),\n innerNode = document.createElement('span'),\n pos = position(evt),\n { left, top, width, height } = el.getBoundingClientRect(),\n diameter = Math.sqrt(width * width + height * height),\n radius = diameter / 2,\n centerX = `${ (width - diameter) / 2 }px`,\n x = center ? centerX : `${ pos.left - left - radius }px`,\n centerY = `${ (height - diameter) / 2 }px`,\n y = center ? centerY : `${ pos.top - top - radius }px`\n\n innerNode.className = 'q-ripple__inner'\n css(innerNode, {\n height: `${ diameter }px`,\n width: `${ diameter }px`,\n transform: `translate3d(${ x },${ y },0) scale3d(.2,.2,1)`,\n opacity: 0\n })\n\n node.className = `q-ripple${ color ? ' text-' + color : '' }`\n node.setAttribute('dir', 'ltr')\n node.appendChild(innerNode)\n el.appendChild(node)\n\n const abort = () => {\n node.remove()\n clearTimeout(timer)\n }\n ctx.abort.push(abort)\n\n let timer = setTimeout(() => {\n innerNode.classList.add('q-ripple__inner--enter')\n innerNode.style.transform = `translate3d(${ centerX },${ centerY },0) scale3d(1,1,1)`\n innerNode.style.opacity = 0.2\n\n timer = setTimeout(() => {\n innerNode.classList.remove('q-ripple__inner--enter')\n innerNode.classList.add('q-ripple__inner--leave')\n innerNode.style.opacity = 0\n\n timer = setTimeout(() => {\n node.remove()\n ctx.abort.splice(ctx.abort.indexOf(abort), 1)\n }, 275)\n }, 250)\n }, 50)\n}\n\nfunction updateModifiers (ctx, { modifiers, value, arg }) {\n const cfg = Object.assign({}, ctx.cfg.ripple, modifiers, value)\n ctx.modifiers = {\n early: cfg.early === true,\n stop: cfg.stop === true,\n center: cfg.center === true,\n color: cfg.color || arg,\n keyCodes: [].concat(cfg.keyCodes || 13)\n }\n}\n\nexport default createDirective(__QUASAR_SSR_SERVER__\n ? { name: 'ripple', getSSRProps }\n : {\n name: 'ripple',\n\n beforeMount (el, binding) {\n const cfg = binding.instance.$.appContext.config.globalProperties.$q.config || {}\n\n if (cfg.ripple === false) {\n return\n }\n\n const ctx = {\n cfg,\n enabled: binding.value !== false,\n modifiers: {},\n abort: [],\n\n start (evt) {\n if (\n ctx.enabled === true\n && evt.qSkipRipple !== true\n && evt.type === (ctx.modifiers.early === true ? 'pointerdown' : 'click')\n ) {\n showRipple(evt, el, ctx, evt.qKeyEvent === true)\n }\n },\n\n keystart: throttle(evt => {\n if (\n ctx.enabled === true\n && evt.qSkipRipple !== true\n && isKeyCode(evt, ctx.modifiers.keyCodes) === true\n && evt.type === `key${ ctx.modifiers.early === true ? 'down' : 'up' }`\n ) {\n showRipple(evt, el, ctx, true)\n }\n }, 300)\n }\n\n updateModifiers(ctx, binding)\n\n el.__qripple = ctx\n\n addEvt(ctx, 'main', [\n [ el, 'pointerdown', 'start', 'passive' ],\n [ el, 'click', 'start', 'passive' ],\n [ el, 'keydown', 'keystart', 'passive' ],\n [ el, 'keyup', 'keystart', 'passive' ]\n ])\n },\n\n updated (el, binding) {\n if (binding.oldValue !== binding.value) {\n const ctx = el.__qripple\n if (ctx !== void 0) {\n ctx.enabled = binding.value !== false\n\n if (ctx.enabled === true && Object(binding.value) === binding.value) {\n updateModifiers(ctx, binding)\n }\n }\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qripple\n if (ctx !== void 0) {\n ctx.abort.forEach(fn => { fn() })\n cleanEvt(ctx, 'main')\n delete el._qripple\n }\n }\n }\n)\n","import { h, ref, computed, inject, onBeforeUnmount, onMounted, withDirectives, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport Ripple from '../../directives/Ripple.js'\n\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport { isKeyCode, shouldIgnoreKey } from '../../utils/private/key-composition.js'\nimport { tabsKey, emptyRenderFn } from '../../utils/private/symbols.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport uid from '../../utils/uid.js'\nimport { isDeepEqual } from '../../utils/is.js'\n\nlet id = 0\n\nexport const useTabEmits = [ 'click', 'keydown' ]\n\nexport const useTabProps = {\n icon: String,\n label: [ Number, String ],\n\n alert: [ Boolean, String ],\n alertIcon: String,\n\n name: {\n type: [ Number, String ],\n default: () => `t_${ id++ }`\n },\n\n noCaps: Boolean,\n\n tabindex: [ String, Number ],\n disable: Boolean,\n\n contentClass: String,\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n }\n}\n\nexport default function (props, slots, emit, routeData) {\n const $tabs = inject(tabsKey, emptyRenderFn)\n if ($tabs === emptyRenderFn) {\n console.error('QTab/QRouteTab component needs to be child of QTabs')\n return emptyRenderFn\n }\n\n const { proxy } = getCurrentInstance()\n\n const blurTargetRef = ref(null)\n const rootRef = ref(null)\n const tabIndicatorRef = ref(null)\n\n const ripple = computed(() => (\n props.disable === true || props.ripple === false\n ? false\n : Object.assign(\n { keyCodes: [ 13, 32 ], early: true },\n props.ripple === true ? {} : props.ripple\n )\n ))\n\n const isActive = computed(() => $tabs.currentModel.value === props.name)\n\n const classes = computed(() =>\n 'q-tab relative-position self-stretch flex flex-center text-center'\n + (\n isActive.value === true\n ? (\n ' q-tab--active'\n + ($tabs.tabProps.value.activeClass ? ' ' + $tabs.tabProps.value.activeClass : '')\n + ($tabs.tabProps.value.activeColor ? ` text-${ $tabs.tabProps.value.activeColor }` : '')\n + ($tabs.tabProps.value.activeBgColor ? ` bg-${ $tabs.tabProps.value.activeBgColor }` : '')\n )\n : ' q-tab--inactive'\n )\n + (props.icon && props.label && $tabs.tabProps.value.inlineLabel === false ? ' q-tab--full' : '')\n + (props.noCaps === true || $tabs.tabProps.value.noCaps === true ? ' q-tab--no-caps' : '')\n + (props.disable === true ? ' disabled' : ' q-focusable q-hoverable cursor-pointer')\n + (routeData !== void 0 ? routeData.linkClass.value : '')\n )\n\n const innerClass = computed(() =>\n 'q-tab__content self-stretch flex-center relative-position q-anchor--skip non-selectable '\n + ($tabs.tabProps.value.inlineLabel === true ? 'row no-wrap q-tab__content--inline' : 'column')\n + (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')\n )\n\n const tabIndex = computed(() => (\n (\n props.disable === true\n || $tabs.hasFocus.value === true\n || (isActive.value === false && $tabs.hasActiveTab.value === true)\n )\n ? -1\n : props.tabindex || 0\n ))\n\n function onClick (e, keyboard) {\n if (keyboard !== true && blurTargetRef.value !== null) {\n blurTargetRef.value.focus()\n }\n\n if (props.disable === true) {\n // we should hinder native navigation though\n if (routeData !== void 0 && routeData.hasRouterLink.value === true) {\n stopAndPrevent(e)\n }\n return\n }\n\n // do we have a QTab?\n if (routeData === void 0) {\n $tabs.updateModel({ name: props.name })\n emit('click', e)\n return\n }\n\n if (routeData.hasRouterLink.value === true) {\n const go = (opts = {}) => {\n // if requiring to go to another route, then we\n // let the QTabs route watcher do its job,\n // otherwise directly select this\n let hardError\n const reqId = opts.to === void 0 || isDeepEqual(opts.to, props.to) === true\n ? ($tabs.avoidRouteWatcher = uid())\n : null\n\n return routeData.navigateToRouterLink(e, { ...opts, returnRouterError: true })\n .catch(err => { hardError = err })\n .then(softError => {\n if (reqId === $tabs.avoidRouteWatcher) {\n $tabs.avoidRouteWatcher = false\n\n // if we don't have any hard errors or any soft errors, except for\n // when navigating to the same route (on all other soft errors,\n // like when navigation was aborted in a nav guard, we don't activate this tab)\n if (\n hardError === void 0 && (\n softError === void 0\n || softError.message.startsWith('Avoided redundant navigation') === true\n )\n ) {\n $tabs.updateModel({ name: props.name })\n }\n }\n\n if (opts.returnRouterError === true) {\n return hardError !== void 0 ? Promise.reject(hardError) : softError\n }\n })\n }\n\n emit('click', e, go)\n e.defaultPrevented !== true && go()\n\n return\n }\n\n emit('click', e)\n }\n\n function onKeydown (e) {\n if (isKeyCode(e, [ 13, 32 ])) {\n onClick(e, true)\n }\n else if (\n shouldIgnoreKey(e) !== true\n && e.keyCode >= 35\n && e.keyCode <= 40\n && e.altKey !== true\n && e.metaKey !== true\n ) {\n $tabs.onKbdNavigate(e.keyCode, proxy.$el) === true && stopAndPrevent(e)\n }\n\n emit('keydown', e)\n }\n\n function getContent () {\n const\n narrow = $tabs.tabProps.value.narrowIndicator,\n content = [],\n indicator = h('div', {\n ref: tabIndicatorRef,\n class: [\n 'q-tab__indicator',\n $tabs.tabProps.value.indicatorClass\n ]\n })\n\n props.icon !== void 0 && content.push(\n h(QIcon, {\n class: 'q-tab__icon',\n name: props.icon\n })\n )\n\n props.label !== void 0 && content.push(\n h('div', { class: 'q-tab__label' }, props.label)\n )\n\n props.alert !== false && content.push(\n props.alertIcon !== void 0\n ? h(QIcon, {\n class: 'q-tab__alert-icon',\n color: props.alert !== true\n ? props.alert\n : void 0,\n name: props.alertIcon\n })\n : h('div', {\n class: 'q-tab__alert'\n + (props.alert !== true ? ` text-${ props.alert }` : '')\n })\n )\n\n narrow === true && content.push(indicator)\n\n const node = [\n h('div', { class: 'q-focus-helper', tabindex: -1, ref: blurTargetRef }),\n h('div', { class: innerClass.value }, hMergeSlot(slots.default, content))\n ]\n\n narrow === false && node.push(indicator)\n\n return node\n }\n\n const tabData = {\n name: computed(() => props.name),\n rootRef,\n tabIndicatorRef,\n routeData\n }\n\n onBeforeUnmount(() => {\n $tabs.unregisterTab(tabData)\n })\n\n onMounted(() => {\n $tabs.registerTab(tabData)\n })\n\n function renderTab (tag, customData) {\n const data = {\n ref: rootRef,\n class: classes.value,\n tabindex: tabIndex.value,\n role: 'tab',\n 'aria-selected': isActive.value === true ? 'true' : 'false',\n 'aria-disabled': props.disable === true ? 'true' : void 0,\n onClick,\n onKeydown,\n ...customData\n }\n\n return withDirectives(\n h(tag, data, getContent()),\n [ [ Ripple, ripple.value ] ]\n )\n }\n\n return { renderTab, $tabs }\n}\n","import useTab, { useTabProps, useTabEmits } from './use-tab.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'QTab',\n\n props: useTabProps,\n\n emits: useTabEmits,\n\n setup (props, { slots, emit }) {\n const { renderTab } = useTab(props, slots, emit)\n return () => renderTab('div')\n }\n})\n","import { h, computed, Transition, getCurrentInstance } from 'vue'\n\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useTransition, { useTransitionProps } from '../../composables/private/use-transition.js'\n\nexport default createComponent({\n name: 'QInnerLoading',\n\n props: {\n ...useDarkProps,\n ...useTransitionProps,\n\n showing: Boolean,\n color: String,\n\n size: {\n type: [ String, Number ],\n default: 42\n },\n\n label: String,\n labelClass: String,\n labelStyle: [ String, Array, Object ]\n },\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const { transitionProps, transitionStyle } = useTransition(props)\n\n const classes = computed(() =>\n 'q-inner-loading absolute-full column flex-center'\n + (isDark.value === true ? ' q-inner-loading--dark' : '')\n )\n\n const labelClass = computed(() =>\n 'q-inner-loading__label'\n + (props.labelClass !== void 0 ? ` ${ props.labelClass }` : '')\n )\n\n function getInner () {\n const child = [\n h(QSpinner, {\n size: props.size,\n color: props.color\n })\n ]\n\n if (props.label !== void 0) {\n child.push(\n h('div', {\n class: labelClass.value,\n style: props.labelStyle\n }, [ props.label ])\n )\n }\n\n return child\n }\n\n function getContent () {\n return props.showing === true\n ? h(\n 'div',\n { class: classes.value, style: transitionStyle.value },\n slots.default !== void 0\n ? slots.default()\n : getInner()\n )\n : null\n }\n\n return () => h(Transition, transitionProps.value, getContent)\n }\n})\n","import { client } from '../plugins/Platform.js'\n\nimport { createDirective } from '../utils/private/create.js'\nimport { getModifierDirections, shouldStart } from '../utils/private/touch.js'\nimport { addEvt, cleanEvt, position, leftClick, prevent, stop, stopAndPrevent, preventDraggable, noop } from '../utils/event.js'\nimport { clearSelection } from '../utils/private/selection.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.js'\n\nfunction getChanges (evt, ctx, isFinal) {\n const pos = position(evt)\n let\n dir,\n distX = pos.left - ctx.event.x,\n distY = pos.top - ctx.event.y,\n absX = Math.abs(distX),\n absY = Math.abs(distY)\n\n const direction = ctx.direction\n\n if (direction.horizontal === true && direction.vertical !== true) {\n dir = distX < 0 ? 'left' : 'right'\n }\n else if (direction.horizontal !== true && direction.vertical === true) {\n dir = distY < 0 ? 'up' : 'down'\n }\n else if (direction.up === true && distY < 0) {\n dir = 'up'\n if (absX > absY) {\n if (direction.left === true && distX < 0) {\n dir = 'left'\n }\n else if (direction.right === true && distX > 0) {\n dir = 'right'\n }\n }\n }\n else if (direction.down === true && distY > 0) {\n dir = 'down'\n if (absX > absY) {\n if (direction.left === true && distX < 0) {\n dir = 'left'\n }\n else if (direction.right === true && distX > 0) {\n dir = 'right'\n }\n }\n }\n else if (direction.left === true && distX < 0) {\n dir = 'left'\n if (absX < absY) {\n if (direction.up === true && distY < 0) {\n dir = 'up'\n }\n else if (direction.down === true && distY > 0) {\n dir = 'down'\n }\n }\n }\n else if (direction.right === true && distX > 0) {\n dir = 'right'\n if (absX < absY) {\n if (direction.up === true && distY < 0) {\n dir = 'up'\n }\n else if (direction.down === true && distY > 0) {\n dir = 'down'\n }\n }\n }\n\n let synthetic = false\n\n if (dir === void 0 && isFinal === false) {\n if (ctx.event.isFirst === true || ctx.event.lastDir === void 0) {\n return {}\n }\n\n dir = ctx.event.lastDir\n synthetic = true\n\n if (dir === 'left' || dir === 'right') {\n pos.left -= distX\n absX = 0\n distX = 0\n }\n else {\n pos.top -= distY\n absY = 0\n distY = 0\n }\n }\n\n return {\n synthetic,\n payload: {\n evt,\n touch: ctx.event.mouse !== true,\n mouse: ctx.event.mouse === true,\n position: pos,\n direction: dir,\n isFirst: ctx.event.isFirst,\n isFinal: isFinal === true,\n duration: Date.now() - ctx.event.time,\n distance: {\n x: absX,\n y: absY\n },\n offset: {\n x: distX,\n y: distY\n },\n delta: {\n x: pos.left - ctx.event.lastX,\n y: pos.top - ctx.event.lastY\n }\n }\n }\n}\n\nlet uid = 0\n\nexport default createDirective(__QUASAR_SSR_SERVER__\n ? { name: 'touch-pan', getSSRProps }\n : {\n name: 'touch-pan',\n\n beforeMount (el, { value, modifiers }) {\n // early return, we don't need to do anything\n if (modifiers.mouse !== true && client.has.touch !== true) {\n return\n }\n\n function handleEvent (evt, mouseEvent) {\n if (modifiers.mouse === true && mouseEvent === true) {\n stopAndPrevent(evt)\n }\n else {\n modifiers.stop === true && stop(evt)\n modifiers.prevent === true && prevent(evt)\n }\n }\n\n const ctx = {\n uid: 'qvtp_' + (uid++),\n handler: value,\n modifiers,\n direction: getModifierDirections(modifiers),\n\n noop,\n\n mouseStart (evt) {\n if (shouldStart(evt, ctx) && leftClick(evt)) {\n addEvt(ctx, 'temp', [\n [ document, 'mousemove', 'move', 'notPassiveCapture' ],\n [ document, 'mouseup', 'end', 'passiveCapture' ]\n ])\n\n ctx.start(evt, true)\n }\n },\n\n touchStart (evt) {\n if (shouldStart(evt, ctx)) {\n const target = evt.target\n\n addEvt(ctx, 'temp', [\n [ target, 'touchmove', 'move', 'notPassiveCapture' ],\n [ target, 'touchcancel', 'end', 'passiveCapture' ],\n [ target, 'touchend', 'end', 'passiveCapture' ]\n ])\n\n ctx.start(evt)\n }\n },\n\n start (evt, mouseEvent) {\n client.is.firefox === true && preventDraggable(el, true)\n ctx.lastEvt = evt\n\n /*\n * Stop propagation so possible upper v-touch-pan don't catch this as well;\n * If we're not the target (based on modifiers), we'll re-emit the event later\n */\n if (mouseEvent === true || modifiers.stop === true) {\n /*\n * are we directly switching to detected state?\n * clone event only otherwise\n */\n if (\n ctx.direction.all !== true\n // account for UMD too where modifiers will be lowercased to work\n && (mouseEvent !== true || (ctx.modifiers.mouseAllDir !== true && ctx.modifiers.mousealldir !== true))\n ) {\n const clone = evt.type.indexOf('mouse') > -1\n ? new MouseEvent(evt.type, evt)\n : new TouchEvent(evt.type, evt)\n\n evt.defaultPrevented === true && prevent(clone)\n evt.cancelBubble === true && stop(clone)\n\n Object.assign(clone, {\n qKeyEvent: evt.qKeyEvent,\n qClickOutside: evt.qClickOutside,\n qAnchorHandled: evt.qAnchorHandled,\n qClonedBy: evt.qClonedBy === void 0\n ? [ ctx.uid ]\n : evt.qClonedBy.concat(ctx.uid)\n })\n\n ctx.initialEvent = {\n target: evt.target,\n event: clone\n }\n }\n\n stop(evt)\n }\n\n const { left, top } = position(evt)\n\n ctx.event = {\n x: left,\n y: top,\n time: Date.now(),\n mouse: mouseEvent === true,\n detected: false,\n isFirst: true,\n isFinal: false,\n lastX: left,\n lastY: top\n }\n },\n\n move (evt) {\n if (ctx.event === void 0) {\n return\n }\n\n const\n pos = position(evt),\n distX = pos.left - ctx.event.x,\n distY = pos.top - ctx.event.y\n\n // prevent buggy browser behavior (like Blink-based engine ones on Windows)\n // where the mousemove event occurs even if there's no movement after mousedown\n // https://bugs.chromium.org/p/chromium/issues/detail?id=161464\n // https://bugs.chromium.org/p/chromium/issues/detail?id=721341\n // https://github.com/quasarframework/quasar/issues/10721\n if (distX === 0 && distY === 0) {\n return\n }\n\n ctx.lastEvt = evt\n\n const isMouseEvt = ctx.event.mouse === true\n const start = () => {\n handleEvent(evt, isMouseEvt)\n\n let cursor\n if (modifiers.preserveCursor !== true && modifiers.preservecursor !== true) {\n cursor = document.documentElement.style.cursor || ''\n document.documentElement.style.cursor = 'grabbing'\n }\n\n isMouseEvt === true && document.body.classList.add('no-pointer-events--children')\n document.body.classList.add('non-selectable')\n clearSelection()\n\n ctx.styleCleanup = withDelayedFn => {\n ctx.styleCleanup = void 0\n\n if (cursor !== void 0) {\n document.documentElement.style.cursor = cursor\n }\n\n document.body.classList.remove('non-selectable')\n\n if (isMouseEvt === true) {\n const remove = () => {\n document.body.classList.remove('no-pointer-events--children')\n }\n\n if (withDelayedFn !== void 0) {\n setTimeout(() => {\n remove()\n withDelayedFn()\n }, 50)\n }\n else { remove() }\n }\n else if (withDelayedFn !== void 0) {\n withDelayedFn()\n }\n }\n }\n\n if (ctx.event.detected === true) {\n ctx.event.isFirst !== true && handleEvent(evt, ctx.event.mouse)\n\n const { payload, synthetic } = getChanges(evt, ctx, false)\n\n if (payload !== void 0) {\n if (ctx.handler(payload) === false) {\n ctx.end(evt)\n }\n else {\n if (ctx.styleCleanup === void 0 && ctx.event.isFirst === true) {\n start()\n }\n\n ctx.event.lastX = payload.position.left\n ctx.event.lastY = payload.position.top\n ctx.event.lastDir = synthetic === true ? void 0 : payload.direction\n ctx.event.isFirst = false\n }\n }\n\n return\n }\n\n if (\n ctx.direction.all === true\n // account for UMD too where modifiers will be lowercased to work\n || (isMouseEvt === true && (ctx.modifiers.mouseAllDir === true || ctx.modifiers.mousealldir === true))\n ) {\n start()\n ctx.event.detected = true\n ctx.move(evt)\n return\n }\n\n const\n absX = Math.abs(distX),\n absY = Math.abs(distY)\n\n if (absX !== absY) {\n if (\n (ctx.direction.horizontal === true && absX > absY)\n || (ctx.direction.vertical === true && absX < absY)\n || (ctx.direction.up === true && absX < absY && distY < 0)\n || (ctx.direction.down === true && absX < absY && distY > 0)\n || (ctx.direction.left === true && absX > absY && distX < 0)\n || (ctx.direction.right === true && absX > absY && distX > 0)\n ) {\n ctx.event.detected = true\n ctx.move(evt)\n }\n else {\n ctx.end(evt, true)\n }\n }\n },\n\n end (evt, abort) {\n if (ctx.event === void 0) {\n return\n }\n\n cleanEvt(ctx, 'temp')\n client.is.firefox === true && preventDraggable(el, false)\n\n if (abort === true) {\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n if (ctx.event.detected !== true && ctx.initialEvent !== void 0) {\n ctx.initialEvent.target.dispatchEvent(ctx.initialEvent.event)\n }\n }\n else if (ctx.event.detected === true) {\n ctx.event.isFirst === true && ctx.handler(getChanges(evt === void 0 ? ctx.lastEvt : evt, ctx).payload)\n\n const { payload } = getChanges(evt === void 0 ? ctx.lastEvt : evt, ctx, true)\n const fn = () => { ctx.handler(payload) }\n\n if (ctx.styleCleanup !== void 0) {\n ctx.styleCleanup(fn)\n }\n else {\n fn()\n }\n }\n\n ctx.event = void 0\n ctx.initialEvent = void 0\n ctx.lastEvt = void 0\n }\n }\n\n el.__qtouchpan = ctx\n\n if (modifiers.mouse === true) {\n // account for UMD too where modifiers will be lowercased to work\n const capture = modifiers.mouseCapture === true || modifiers.mousecapture === true\n ? 'Capture'\n : ''\n\n addEvt(ctx, 'main', [\n [ el, 'mousedown', 'mouseStart', `passive${ capture }` ]\n ])\n }\n\n client.has.touch === true && addEvt(ctx, 'main', [\n [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],\n [ el, 'touchmove', 'noop', 'notPassiveCapture' ] // cannot be passive (ex: iOS scroll)\n ])\n },\n\n updated (el, bindings) {\n const ctx = el.__qtouchpan\n\n if (ctx !== void 0) {\n if (bindings.oldValue !== bindings.value) {\n typeof value !== 'function' && ctx.end()\n ctx.handler = bindings.value\n }\n\n ctx.direction = getModifierDirections(bindings.modifiers)\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qtouchpan\n\n if (ctx !== void 0) {\n // emit the end event when the directive is destroyed while active\n // this is only needed in TouchPan because the rest of the touch directives do not emit an end event\n // the condition is also checked in the start of function but we avoid the call\n ctx.event !== void 0 && ctx.end()\n\n cleanEvt(ctx, 'main')\n cleanEvt(ctx, 'temp')\n\n client.is.firefox === true && preventDraggable(el, false)\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n delete el.__qtouchpan\n }\n }\n }\n)\n","import { globalConfig } from './global-config.js'\n\nconst globalNodes = []\nlet target = __QUASAR_SSR_SERVER__\n ? void 0\n : document.body\n\nexport function createGlobalNode (id) {\n const el = document.createElement('div')\n\n if (id !== void 0) {\n el.id = id\n }\n\n if (globalConfig.globalNodes !== void 0) {\n const cls = globalConfig.globalNodes.class\n if (cls !== void 0) {\n el.className = cls\n }\n }\n\n target.appendChild(el)\n globalNodes.push(el)\n\n return el\n}\n\nexport function removeGlobalNode (el) {\n globalNodes.splice(globalNodes.indexOf(el), 1)\n el.remove()\n}\n\nexport function changeGlobalNodesTarget (el) {\n if (el !== target) {\n target = el\n\n globalNodes.forEach(el => {\n if (el.contains(target) === false) {\n target.appendChild(el)\n }\n })\n }\n}\n","const units = [ 'B', 'KB', 'MB', 'GB', 'TB', 'PB' ]\n\nexport function humanStorageSize (bytes) {\n let u = 0\n\n while (parseInt(bytes, 10) >= 1024 && u < units.length - 1) {\n bytes /= 1024\n ++u\n }\n\n return `${ bytes.toFixed(1) }${ units[ u ] }`\n}\n\nexport function capitalize (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function between (v, min, max) {\n return max <= min\n ? min\n : Math.min(max, Math.max(min, v))\n}\n\nexport function normalizeToInterval (v, min, max) {\n if (max <= min) {\n return min\n }\n\n const size = (max - min + 1)\n\n let index = min + (v - min) % size\n if (index < min) {\n index = size + index\n }\n\n return index === 0 ? 0 : index // fix for (-a % a) => -0\n}\n\nexport function pad (v, length = 2, char = '0') {\n if (v === void 0 || v === null) {\n return v\n }\n\n const val = '' + v\n return val.length >= length\n ? val\n : new Array(length - val.length + 1).join(char) + val\n}\n\nexport default {\n humanStorageSize,\n capitalize,\n between,\n normalizeToInterval,\n pad\n}\n","import { listenOpts } from '../event.js'\nimport { portalProxyList } from '../private/portal.js'\n\nlet timer\n\nconst\n { notPassiveCapture } = listenOpts,\n registeredList = []\n\nfunction globalHandler (evt) {\n clearTimeout(timer)\n\n const target = evt.target\n\n if (\n target === void 0\n || target.nodeType === 8\n || target.classList.contains('no-pointer-events') === true\n ) {\n return\n }\n\n // check last portal vm if it's\n // a QDialog and not in seamless mode\n let portalIndex = portalProxyList.length - 1\n\n while (portalIndex >= 0) {\n const proxy = portalProxyList[ portalIndex ].$\n\n if (proxy.type.name !== 'QDialog') {\n break\n }\n\n if (proxy.props.seamless !== true) {\n return\n }\n\n portalIndex--\n }\n\n for (let i = registeredList.length - 1; i >= 0; i--) {\n const state = registeredList[ i ]\n\n if (\n (\n state.anchorEl.value === null\n || state.anchorEl.value.contains(target) === false\n )\n && (\n target === document.body\n || (\n state.innerRef.value !== null\n && state.innerRef.value.contains(target) === false\n )\n )\n ) {\n // mark the event as being processed by clickOutside\n // used to prevent refocus after menu close\n evt.qClickOutside = true\n state.onClickOutside(evt)\n }\n else {\n return\n }\n }\n}\n\nexport function addClickOutside (clickOutsideProps) {\n registeredList.push(clickOutsideProps)\n\n if (registeredList.length === 1) {\n document.addEventListener('mousedown', globalHandler, notPassiveCapture)\n document.addEventListener('touchstart', globalHandler, notPassiveCapture)\n }\n}\n\nexport function removeClickOutside (clickOutsideProps) {\n const index = registeredList.findIndex(h => h === clickOutsideProps)\n\n if (index > -1) {\n registeredList.splice(index, 1)\n\n if (registeredList.length === 0) {\n clearTimeout(timer)\n document.removeEventListener('mousedown', globalHandler, notPassiveCapture)\n document.removeEventListener('touchstart', globalHandler, notPassiveCapture)\n }\n }\n}\n","import { h, ref, computed, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport { useFormProps, useFormInject } from '../../composables/private/use-form.js'\n\nimport { between } from '../../utils/format.js'\nimport { position } from '../../utils/event.js'\nimport { isNumber, isObject } from '../../utils/is.js'\nimport { hDir } from '../../utils/private/render.js'\n\nconst markerPrefixClass = 'q-slider__marker-labels'\nconst defaultMarkerConvertFn = v => ({ value: v })\nconst defaultMarkerLabelRenderFn = ({ marker }) => h('div', {\n key: marker.value,\n style: marker.style,\n class: marker.classes\n}, marker.label)\n\n// PGDOWN, LEFT, DOWN, PGUP, RIGHT, UP\nexport const keyCodes = [ 34, 37, 40, 33, 39, 38 ]\n\nexport const useSliderProps = {\n ...useDarkProps,\n ...useFormProps,\n\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n innerMin: Number,\n innerMax: Number,\n\n step: {\n type: Number,\n default: 1,\n validator: v => v >= 0\n },\n\n snap: Boolean,\n\n vertical: Boolean,\n reverse: Boolean,\n\n hideSelection: Boolean,\n\n color: String,\n markerLabelsClass: String,\n\n label: Boolean,\n labelColor: String,\n labelTextColor: String,\n labelAlways: Boolean,\n switchLabelSide: Boolean,\n\n markers: [ Boolean, Number ],\n markerLabels: [ Boolean, Array, Object, Function ],\n switchMarkerLabelsSide: Boolean,\n\n trackImg: String,\n trackColor: String,\n innerTrackImg: String,\n innerTrackColor: String,\n selectionColor: String,\n selectionImg: String,\n\n thumbSize: {\n type: String,\n default: '20px'\n },\n trackSize: {\n type: String,\n default: '4px'\n },\n\n disable: Boolean,\n readonly: Boolean,\n dense: Boolean,\n\n tabindex: [ String, Number ],\n\n thumbColor: String,\n thumbPath: {\n type: String,\n default: 'M 4, 10 a 6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0'\n }\n}\n\nexport const useSliderEmits = [ 'pan', 'update:modelValue', 'change' ]\n\nexport default function ({ updateValue, updatePosition, getDragging, formAttrs }) {\n const { props, emit, slots, proxy: { $q } } = getCurrentInstance()\n const isDark = useDark(props, $q)\n\n const injectFormInput = useFormInject(formAttrs)\n\n const active = ref(false)\n const preventFocus = ref(false)\n const focus = ref(false)\n const dragging = ref(false)\n\n const axis = computed(() => (props.vertical === true ? '--v' : '--h'))\n const labelSide = computed(() => '-' + (props.switchLabelSide === true ? 'switched' : 'standard'))\n\n const isReversed = computed(() => (\n props.vertical === true\n ? props.reverse === true\n : props.reverse !== ($q.lang.rtl === true)\n ))\n\n const innerMin = computed(() => (\n isNaN(props.innerMin) === true || props.innerMin < props.min\n ? props.min\n : props.innerMin\n ))\n const innerMax = computed(() => (\n isNaN(props.innerMax) === true || props.innerMax > props.max\n ? props.max\n : props.innerMax\n ))\n\n const editable = computed(() => (\n props.disable !== true && props.readonly !== true\n && innerMin.value < innerMax.value\n ))\n\n const decimals = computed(() => (String(props.step).trim().split('.')[ 1 ] || '').length)\n const step = computed(() => (props.step === 0 ? 1 : props.step))\n const tabindex = computed(() => (editable.value === true ? props.tabindex || 0 : -1))\n\n const trackLen = computed(() => props.max - props.min)\n const innerBarLen = computed(() => innerMax.value - innerMin.value)\n\n const innerMinRatio = computed(() => convertModelToRatio(innerMin.value))\n const innerMaxRatio = computed(() => convertModelToRatio(innerMax.value))\n\n const positionProp = computed(() => (\n props.vertical === true\n ? (isReversed.value === true ? 'bottom' : 'top')\n : (isReversed.value === true ? 'right' : 'left')\n ))\n\n const sizeProp = computed(() => (props.vertical === true ? 'height' : 'width'))\n const thicknessProp = computed(() => (props.vertical === true ? 'width' : 'height'))\n const orientation = computed(() => (props.vertical === true ? 'vertical' : 'horizontal'))\n\n const attributes = computed(() => {\n const acc = {\n role: 'slider',\n 'aria-valuemin': innerMin.value,\n 'aria-valuemax': innerMax.value,\n 'aria-orientation': orientation.value,\n 'data-step': props.step\n }\n\n if (props.disable === true) {\n acc[ 'aria-disabled' ] = 'true'\n }\n else if (props.readonly === true) {\n acc[ 'aria-readonly' ] = 'true'\n }\n\n return acc\n })\n\n const classes = computed(() =>\n `q-slider q-slider${ axis.value } q-slider--${ active.value === true ? '' : 'in' }active inline no-wrap `\n + (props.vertical === true ? 'row' : 'column')\n + (props.disable === true ? ' disabled' : ' q-slider--enabled' + (editable.value === true ? ' q-slider--editable' : ''))\n + (focus.value === 'both' ? ' q-slider--focus' : '')\n + (props.label || props.labelAlways === true ? ' q-slider--label' : '')\n + (props.labelAlways === true ? ' q-slider--label-always' : '')\n + (isDark.value === true ? ' q-slider--dark' : '')\n + (props.dense === true ? ' q-slider--dense q-slider--dense' + axis.value : '')\n )\n\n function getPositionClass (name) {\n const cls = 'q-slider__' + name\n return `${ cls } ${ cls }${ axis.value } ${ cls }${ axis.value }${ labelSide.value }`\n }\n function getAxisClass (name) {\n const cls = 'q-slider__' + name\n return `${ cls } ${ cls }${ axis.value }`\n }\n\n const selectionBarClass = computed(() => {\n const color = props.selectionColor || props.color\n return 'q-slider__selection absolute'\n + (color !== void 0 ? ` text-${ color }` : '')\n })\n const markerClass = computed(() => getAxisClass('markers') + ' absolute overflow-hidden')\n const trackContainerClass = computed(() => getAxisClass('track-container'))\n const pinClass = computed(() => getPositionClass('pin'))\n const labelClass = computed(() => getPositionClass('label'))\n const textContainerClass = computed(() => getPositionClass('text-container'))\n const markerLabelsContainerClass = computed(() =>\n getPositionClass('marker-labels-container')\n + (props.markerLabelsClass !== void 0 ? ` ${ props.markerLabelsClass }` : '')\n )\n\n const trackClass = computed(() =>\n 'q-slider__track relative-position no-outline'\n + (props.trackColor !== void 0 ? ` bg-${ props.trackColor }` : '')\n )\n const trackStyle = computed(() => {\n const acc = { [ thicknessProp.value ]: props.trackSize }\n if (props.trackImg !== void 0) {\n acc.backgroundImage = `url(${ props.trackImg }) !important`\n }\n return acc\n })\n\n const innerBarClass = computed(() =>\n 'q-slider__inner absolute'\n + (props.innerTrackColor !== void 0 ? ` bg-${ props.innerTrackColor }` : '')\n )\n const innerBarStyle = computed(() => {\n const acc = {\n [ positionProp.value ]: `${ 100 * innerMinRatio.value }%`,\n [ sizeProp.value ]: `${ 100 * (innerMaxRatio.value - innerMinRatio.value) }%`\n }\n if (props.innerTrackImg !== void 0) {\n acc.backgroundImage = `url(${ props.innerTrackImg }) !important`\n }\n return acc\n })\n\n function convertRatioToModel (ratio) {\n const { min, max, step } = props\n let model = min + ratio * (max - min)\n\n if (step > 0) {\n const modulo = (model - min) % step\n model += (Math.abs(modulo) >= step / 2 ? (modulo < 0 ? -1 : 1) * step : 0) - modulo\n }\n\n if (decimals.value > 0) {\n model = parseFloat(model.toFixed(decimals.value))\n }\n\n return between(model, innerMin.value, innerMax.value)\n }\n\n function convertModelToRatio (model) {\n return trackLen.value === 0\n ? 0\n : (model - props.min) / trackLen.value\n }\n\n function getDraggingRatio (evt, dragging) {\n const\n pos = position(evt),\n val = props.vertical === true\n ? between((pos.top - dragging.top) / dragging.height, 0, 1)\n : between((pos.left - dragging.left) / dragging.width, 0, 1)\n\n return between(\n isReversed.value === true ? 1.0 - val : val,\n innerMinRatio.value,\n innerMaxRatio.value\n )\n }\n\n const markerStep = computed(() => (\n isNumber(props.markers) === true ? props.markers : step.value)\n )\n\n const markerTicks = computed(() => {\n const acc = []\n const step = markerStep.value\n const max = props.max\n\n let value = props.min\n do {\n acc.push(value)\n value += step\n } while (value < max)\n\n acc.push(max)\n return acc\n })\n\n const markerLabelClass = computed(() => {\n const prefix = ` ${ markerPrefixClass }${ axis.value }-`\n return markerPrefixClass\n + `${ prefix }${ props.switchMarkerLabelsSide === true ? 'switched' : 'standard' }`\n + `${ prefix }${ isReversed.value === true ? 'rtl' : 'ltr' }`\n })\n\n const markerLabelsList = computed(() => {\n if (props.markerLabels === false) { return null }\n\n return getMarkerList(props.markerLabels).map((entry, index) => ({\n index,\n value: entry.value,\n label: entry.label || entry.value,\n classes: markerLabelClass.value\n + (entry.classes !== void 0 ? ' ' + entry.classes : ''),\n style: {\n ...getMarkerLabelStyle(entry.value),\n ...(entry.style || {})\n }\n }))\n })\n\n const markerScope = computed(() => ({\n markerList: markerLabelsList.value,\n markerMap: markerLabelsMap.value,\n classes: markerLabelClass.value, // TODO ts definition\n getStyle: getMarkerLabelStyle\n }))\n\n const markerStyle = computed(() => {\n if (innerBarLen.value !== 0) {\n const size = 100 * markerStep.value / innerBarLen.value\n\n return {\n ...innerBarStyle.value,\n backgroundSize: props.vertical === true\n ? `2px ${ size }%`\n : `${ size }% 2px`\n }\n }\n\n return null\n })\n\n function getMarkerList (def) {\n if (def === false) { return null }\n\n if (def === true) {\n return markerTicks.value.map(defaultMarkerConvertFn)\n }\n\n if (typeof def === 'function') {\n return markerTicks.value.map(value => {\n const item = def(value)\n return isObject(item) === true ? { ...item, value } : { value, label: item }\n })\n }\n\n const filterFn = ({ value }) => value >= props.min && value <= props.max\n\n if (Array.isArray(def) === true) {\n return def\n .map(item => (isObject(item) === true ? item : { value: item }))\n .filter(filterFn)\n }\n\n return Object.keys(def).map(key => {\n const item = def[ key ]\n const value = Number(key)\n return isObject(item) === true ? { ...item, value } : { value, label: item }\n }).filter(filterFn)\n }\n\n function getMarkerLabelStyle (val) {\n return { [ positionProp.value ]: `${ 100 * (val - props.min) / trackLen.value }%` }\n }\n\n const markerLabelsMap = computed(() => {\n if (props.markerLabels === false) { return null }\n\n const acc = {}\n markerLabelsList.value.forEach(entry => {\n acc[ entry.value ] = entry\n })\n return acc\n })\n\n function getMarkerLabelsContent () {\n if (slots[ 'marker-label-group' ] !== void 0) {\n return slots[ 'marker-label-group' ](markerScope.value)\n }\n\n const fn = slots[ 'marker-label' ] || defaultMarkerLabelRenderFn\n return markerLabelsList.value.map(marker => fn({\n marker,\n ...markerScope.value\n }))\n }\n\n const panDirective = computed(() => {\n // if editable.value === true\n return [ [\n TouchPan,\n onPan,\n void 0,\n {\n [ orientation.value ]: true,\n prevent: true,\n stop: true,\n mouse: true,\n mouseAllDir: true\n }\n ] ]\n })\n\n function onPan (event) {\n if (event.isFinal === true) {\n if (dragging.value !== void 0) {\n updatePosition(event.evt)\n // only if touch, because we also have mousedown/up:\n event.touch === true && updateValue(true)\n dragging.value = void 0\n emit('pan', 'end')\n }\n active.value = false\n focus.value = false\n }\n else if (event.isFirst === true) {\n dragging.value = getDragging(event.evt)\n updatePosition(event.evt)\n updateValue()\n active.value = true\n emit('pan', 'start')\n }\n else {\n updatePosition(event.evt)\n updateValue()\n }\n }\n\n function onBlur () {\n focus.value = false\n }\n\n function onActivate (evt) {\n updatePosition(evt, getDragging(evt))\n updateValue()\n\n preventFocus.value = true\n active.value = true\n\n document.addEventListener('mouseup', onDeactivate, true)\n }\n\n function onDeactivate () {\n preventFocus.value = false\n active.value = false\n\n updateValue(true)\n onBlur()\n\n document.removeEventListener('mouseup', onDeactivate, true)\n }\n\n function onMobileClick (evt) {\n updatePosition(evt, getDragging(evt))\n updateValue(true)\n }\n\n function onKeyup (evt) {\n if (keyCodes.includes(evt.keyCode)) {\n updateValue(true)\n }\n }\n\n function getTextContainerStyle (ratio) {\n if (props.vertical === true) { return null }\n\n const p = $q.lang.rtl !== props.reverse ? 1 - ratio : ratio\n return {\n transform: `translateX(calc(${ 2 * p - 1 } * ${ props.thumbSize } / 2 + ${ 50 - 100 * p }%))`\n }\n }\n\n function getThumbRenderFn (thumb) {\n const focusClass = computed(() => (\n preventFocus.value === false && (focus.value === thumb.focusValue || focus.value === 'both')\n ? ' q-slider--focus'\n : ''\n ))\n\n const classes = computed(() =>\n `q-slider__thumb q-slider__thumb${ axis.value } q-slider__thumb${ axis.value }-${ isReversed.value === true ? 'rtl' : 'ltr' } absolute non-selectable`\n + focusClass.value\n + (thumb.thumbColor.value !== void 0 ? ` text-${ thumb.thumbColor.value }` : '')\n )\n\n const style = computed(() => ({\n width: props.thumbSize,\n height: props.thumbSize,\n [ positionProp.value ]: `${ 100 * thumb.ratio.value }%`,\n zIndex: focus.value === thumb.focusValue ? 2 : void 0\n }))\n\n const pinColor = computed(() => (\n thumb.labelColor.value !== void 0\n ? ` text-${ thumb.labelColor.value }`\n : ''\n ))\n\n const textContainerStyle = computed(() => getTextContainerStyle(thumb.ratio.value))\n\n const textClass = computed(() => (\n 'q-slider__text'\n + (thumb.labelTextColor.value !== void 0 ? ` text-${ thumb.labelTextColor.value }` : '')\n ))\n\n return () => {\n const thumbContent = [\n h('svg', {\n class: 'q-slider__thumb-shape absolute-full',\n viewBox: '0 0 20 20',\n 'aria-hidden': 'true'\n }, [\n h('path', { d: props.thumbPath })\n ]),\n\n h('div', { class: 'q-slider__focus-ring fit' })\n ]\n\n if (props.label === true || props.labelAlways === true) {\n thumbContent.push(\n h('div', {\n class: pinClass.value + ' absolute fit no-pointer-events' + pinColor.value\n }, [\n h('div', {\n class: labelClass.value,\n style: { minWidth: props.thumbSize }\n }, [\n h('div', {\n class: textContainerClass.value,\n style: textContainerStyle.value\n }, [\n h('span', { class: textClass.value }, thumb.label.value)\n ])\n ])\n ])\n )\n\n if (props.name !== void 0 && props.disable !== true) {\n injectFormInput(thumbContent, 'push')\n }\n }\n\n return h('div', {\n class: classes.value,\n style: style.value,\n ...thumb.getNodeData()\n }, thumbContent)\n }\n }\n\n function getContent (selectionBarStyle, trackContainerTabindex, trackContainerEvents, injectThumb) {\n const trackContent = []\n\n props.innerTrackColor !== 'transparent' && trackContent.push(\n h('div', {\n key: 'inner',\n class: innerBarClass.value,\n style: innerBarStyle.value\n })\n )\n\n props.selectionColor !== 'transparent' && trackContent.push(\n h('div', {\n key: 'selection',\n class: selectionBarClass.value,\n style: selectionBarStyle.value\n })\n )\n\n props.markers !== false && trackContent.push(\n h('div', {\n key: 'marker',\n class: markerClass.value,\n style: markerStyle.value\n })\n )\n\n injectThumb(trackContent)\n\n const content = [\n hDir(\n 'div',\n {\n key: 'trackC',\n class: trackContainerClass.value,\n tabindex: trackContainerTabindex.value,\n ...trackContainerEvents.value\n },\n [\n h('div', {\n class: trackClass.value,\n style: trackStyle.value\n }, trackContent)\n ],\n 'slide',\n editable.value, () => panDirective.value\n )\n ]\n\n if (props.markerLabels !== false) {\n const action = props.switchMarkerLabelsSide === true\n ? 'unshift'\n : 'push'\n\n content[ action ](\n h('div', {\n key: 'markerL',\n class: markerLabelsContainerClass.value\n }, getMarkerLabelsContent())\n )\n }\n\n return content\n }\n\n onBeforeUnmount(() => {\n document.removeEventListener('mouseup', onDeactivate, true)\n })\n\n return {\n state: {\n active,\n focus,\n preventFocus,\n dragging,\n\n editable,\n classes,\n tabindex,\n attributes,\n\n step,\n decimals,\n trackLen,\n innerMin,\n innerMinRatio,\n innerMax,\n innerMaxRatio,\n positionProp,\n sizeProp,\n isReversed\n },\n\n methods: {\n onActivate,\n onMobileClick,\n onBlur,\n onKeyup,\n getContent,\n getThumbRenderFn,\n convertRatioToModel,\n convertModelToRatio,\n getDraggingRatio\n }\n }\n}\n","import { h, ref, computed, watch, getCurrentInstance } from 'vue'\n\nimport useSlider, {\n useSliderProps,\n useSliderEmits,\n keyCodes\n} from '../slider/use-slider.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { between } from '../../utils/format.js'\n\nconst dragType = {\n MIN: 0,\n RANGE: 1,\n MAX: 2\n}\n\nexport default createComponent({\n name: 'QRange',\n\n props: {\n ...useSliderProps,\n\n modelValue: {\n type: Object,\n default: () => ({ min: null, max: null }),\n validator: v => 'min' in v && 'max' in v\n },\n\n dragRange: Boolean,\n dragOnlyRange: Boolean,\n\n leftLabelColor: String,\n leftLabelTextColor: String,\n rightLabelColor: String,\n rightLabelTextColor: String,\n\n leftLabelValue: [ String, Number ],\n rightLabelValue: [ String, Number ],\n\n leftThumbColor: String,\n rightThumbColor: String\n },\n\n emits: useSliderEmits,\n\n setup (props, { emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const { state, methods } = useSlider({\n updateValue, updatePosition, getDragging,\n formAttrs: computed(() => ({\n type: 'hidden',\n name: props.name,\n value: `${ props.modelValue.min }|${ props.modelValue.max }`\n }))\n })\n\n const rootRef = ref(null)\n const curMinRatio = ref(0)\n const curMaxRatio = ref(0)\n const model = ref({ min: 0, max: 0 })\n\n function normalizeModel () {\n model.value.min = props.modelValue.min === null\n ? state.innerMin.value\n : between(props.modelValue.min, state.innerMin.value, state.innerMax.value)\n\n model.value.max = props.modelValue.max === null\n ? state.innerMax.value\n : between(props.modelValue.max, state.innerMin.value, state.innerMax.value)\n }\n\n watch(\n () => `${ props.modelValue.min }|${ props.modelValue.max }|${ state.innerMin.value }|${ state.innerMax.value }`,\n normalizeModel\n )\n\n normalizeModel()\n\n const modelMinRatio = computed(() => methods.convertModelToRatio(model.value.min))\n const modelMaxRatio = computed(() => methods.convertModelToRatio(model.value.max))\n\n const ratioMin = computed(() => (\n state.active.value === true ? curMinRatio.value : modelMinRatio.value\n ))\n const ratioMax = computed(() => (\n state.active.value === true ? curMaxRatio.value : modelMaxRatio.value\n ))\n\n const selectionBarStyle = computed(() => {\n const acc = {\n [ state.positionProp.value ]: `${ 100 * ratioMin.value }%`,\n [ state.sizeProp.value ]: `${ 100 * (ratioMax.value - ratioMin.value) }%`\n }\n if (props.selectionImg !== void 0) {\n acc.backgroundImage = `url(${ props.selectionImg }) !important`\n }\n return acc\n })\n\n const trackContainerEvents = computed(() => {\n if (state.editable.value !== true) {\n return {}\n }\n\n if ($q.platform.is.mobile === true) {\n return { onClick: methods.onMobileClick }\n }\n\n const evt = { onMousedown: methods.onActivate }\n\n if (props.dragRange === true || props.dragOnlyRange === true) {\n Object.assign(evt, {\n onFocus: () => { state.focus.value = 'both' },\n onBlur: methods.onBlur,\n onKeydown,\n onKeyup: methods.onKeyup\n })\n }\n\n return evt\n })\n\n function getEvents (side) {\n return $q.platform.is.mobile !== true && state.editable.value === true && props.dragOnlyRange !== true\n ? {\n onFocus: () => { state.focus.value = side },\n onBlur: methods.onBlur,\n onKeydown,\n onKeyup: methods.onKeyup\n }\n : {}\n }\n\n const thumbTabindex = computed(() => (props.dragOnlyRange !== true ? state.tabindex.value : null))\n const trackContainerTabindex = computed(() => (\n $q.platform.is.mobile !== true && (props.dragRange || props.dragOnlyRange === true)\n ? state.tabindex.value\n : null\n ))\n\n const minThumbRef = ref(null)\n const minEvents = computed(() => getEvents('min'))\n const getMinThumb = methods.getThumbRenderFn({\n focusValue: 'min',\n getNodeData: () => ({\n ref: minThumbRef,\n key: 'tmin',\n ...minEvents.value,\n tabindex: thumbTabindex.value\n }),\n ratio: ratioMin,\n label: computed(() => (\n props.leftLabelValue !== void 0\n ? props.leftLabelValue\n : model.value.min\n )),\n thumbColor: computed(() => props.leftThumbColor || props.thumbColor || props.color),\n labelColor: computed(() => props.leftLabelColor || props.labelColor),\n labelTextColor: computed(() => props.leftLabelTextColor || props.labelTextColor)\n })\n\n const maxEvents = computed(() => getEvents('max'))\n const getMaxThumb = methods.getThumbRenderFn({\n focusValue: 'max',\n getNodeData: () => ({\n ...maxEvents.value,\n key: 'tmax',\n tabindex: thumbTabindex.value\n }),\n ratio: ratioMax,\n label: computed(() => (\n props.rightLabelValue !== void 0\n ? props.rightLabelValue\n : model.value.max\n )),\n thumbColor: computed(() => props.rightThumbColor || props.thumbColor || props.color),\n labelColor: computed(() => props.rightLabelColor || props.labelColor),\n labelTextColor: computed(() => props.rightLabelTextColor || props.labelTextColor)\n })\n\n function updateValue (change) {\n if (model.value.min !== props.modelValue.min || model.value.max !== props.modelValue.max) {\n emit('update:modelValue', { ...model.value })\n }\n change === true && emit('change', { ...model.value })\n }\n\n function getDragging (event) {\n const\n { left, top, width, height } = rootRef.value.getBoundingClientRect(),\n sensitivity = props.dragOnlyRange === true\n ? 0\n : (props.vertical === true\n ? minThumbRef.value.offsetHeight / (2 * height)\n : minThumbRef.value.offsetWidth / (2 * width)\n )\n\n const dragging = {\n left,\n top,\n width,\n height,\n valueMin: model.value.min,\n valueMax: model.value.max,\n ratioMin: modelMinRatio.value,\n ratioMax: modelMaxRatio.value\n }\n\n const ratio = methods.getDraggingRatio(event, dragging)\n\n if (props.dragOnlyRange !== true && ratio < dragging.ratioMin + sensitivity) {\n dragging.type = dragType.MIN\n }\n else if (props.dragOnlyRange === true || ratio < dragging.ratioMax - sensitivity) {\n if (props.dragRange === true || props.dragOnlyRange === true) {\n dragging.type = dragType.RANGE\n Object.assign(dragging, {\n offsetRatio: ratio,\n offsetModel: methods.convertRatioToModel(ratio),\n rangeValue: dragging.valueMax - dragging.valueMin,\n rangeRatio: dragging.ratioMax - dragging.ratioMin\n })\n }\n else {\n dragging.type = dragging.ratioMax - ratio < ratio - dragging.ratioMin\n ? dragType.MAX\n : dragType.MIN\n }\n }\n else {\n dragging.type = dragType.MAX\n }\n\n return dragging\n }\n\n function updatePosition (event, dragging = state.dragging.value) {\n let pos\n const ratio = methods.getDraggingRatio(event, dragging)\n const localModel = methods.convertRatioToModel(ratio)\n\n switch (dragging.type) {\n case dragType.MIN:\n if (ratio <= dragging.ratioMax) {\n pos = {\n minR: ratio,\n maxR: dragging.ratioMax,\n min: localModel,\n max: dragging.valueMax\n }\n state.focus.value = 'min'\n }\n else {\n pos = {\n minR: dragging.ratioMax,\n maxR: ratio,\n min: dragging.valueMax,\n max: localModel\n }\n state.focus.value = 'max'\n }\n break\n\n case dragType.MAX:\n if (ratio >= dragging.ratioMin) {\n pos = {\n minR: dragging.ratioMin,\n maxR: ratio,\n min: dragging.valueMin,\n max: localModel\n }\n state.focus.value = 'max'\n }\n else {\n pos = {\n minR: ratio,\n maxR: dragging.ratioMin,\n min: localModel,\n max: dragging.valueMin\n }\n state.focus.value = 'min'\n }\n break\n\n case dragType.RANGE:\n const\n ratioDelta = ratio - dragging.offsetRatio,\n minR = between(dragging.ratioMin + ratioDelta, 0, 1 - dragging.rangeRatio),\n modelDelta = localModel - dragging.offsetModel,\n min = between(dragging.valueMin + modelDelta, props.min, props.max - dragging.rangeValue)\n\n pos = {\n minR,\n maxR: minR + dragging.rangeRatio,\n min: parseFloat(min.toFixed(state.decimals.value)),\n max: parseFloat((min + dragging.rangeValue).toFixed(state.decimals.value))\n }\n\n state.focus.value = 'both'\n break\n }\n\n // If either of the values to be emitted are null, set them to the defaults the user has entered.\n model.value = model.value.min === null || model.value.max === null\n ? { min: pos.min || props.min, max: pos.max || props.max }\n : { min: pos.min, max: pos.max }\n\n if (props.snap !== true || props.step === 0) {\n curMinRatio.value = pos.minR\n curMaxRatio.value = pos.maxR\n }\n else {\n curMinRatio.value = methods.convertModelToRatio(model.value.min)\n curMaxRatio.value = methods.convertModelToRatio(model.value.max)\n }\n }\n\n function onKeydown (evt) {\n if (!keyCodes.includes(evt.keyCode)) {\n return\n }\n\n stopAndPrevent(evt)\n\n const\n stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.step.value,\n offset = (\n ([ 34, 37, 40 ].includes(evt.keyCode) ? -1 : 1)\n * (state.isReversed.value === true ? -1 : 1)\n * (props.vertical === true ? -1 : 1) * stepVal\n )\n\n if (state.focus.value === 'both') {\n const interval = model.value.max - model.value.min\n const min = between(\n parseFloat((model.value.min + offset).toFixed(state.decimals.value)),\n state.innerMin.value,\n state.innerMax.value - interval\n )\n\n model.value = {\n min,\n max: parseFloat((min + interval).toFixed(state.decimals.value))\n }\n }\n else if (state.focus.value === false) {\n return\n }\n else {\n const which = state.focus.value\n\n model.value = {\n ...model.value,\n [ which ]: between(\n parseFloat((model.value[ which ] + offset).toFixed(state.decimals.value)),\n which === 'min' ? state.innerMin.value : model.value.min,\n which === 'max' ? state.innerMax.value : model.value.max\n )\n }\n }\n\n updateValue()\n }\n\n return () => {\n const content = methods.getContent(\n selectionBarStyle,\n trackContainerTabindex,\n trackContainerEvents,\n node => {\n node.push(\n getMinThumb(),\n getMaxThumb()\n )\n }\n )\n\n return h('div', {\n ref: rootRef,\n class: 'q-range ' + state.classes.value + (\n props.modelValue.min === null || props.modelValue.max === null\n ? ' q-slider--no-value'\n : ''\n ),\n ...state.attributes.value,\n 'aria-valuenow': props.modelValue.min + '|' + props.modelValue.max\n }, content)\n }\n }\n})\n","const modifiersAll = {\n left: true,\n right: true,\n up: true,\n down: true,\n horizontal: true,\n vertical: true\n}\n\nconst directionList = Object.keys(modifiersAll)\n\nmodifiersAll.all = true\n\nexport function getModifierDirections (mod) {\n const dir = {}\n\n for (const direction of directionList) {\n if (mod[ direction ] === true) {\n dir[ direction ] = true\n }\n }\n\n if (Object.keys(dir).length === 0) {\n return modifiersAll\n }\n\n if (dir.horizontal === true) {\n dir.left = dir.right = true\n }\n else if (dir.left === true && dir.right === true) {\n dir.horizontal = true\n }\n\n if (dir.vertical === true) {\n dir.up = dir.down = true\n }\n else if (dir.up === true && dir.down === true) {\n dir.vertical = true\n }\n\n if (dir.horizontal === true && dir.vertical === true) {\n dir.all = true\n }\n\n return dir\n}\n\nexport function shouldStart (evt, ctx) {\n return ctx.event === void 0\n && evt.target !== void 0\n && evt.target.draggable !== true\n && typeof ctx.handler === 'function'\n && evt.target.nodeName.toUpperCase() !== 'INPUT'\n && (evt.qClonedBy === void 0 || evt.qClonedBy.indexOf(ctx.uid) === -1)\n}\n","import { h, ref, computed, watch, getCurrentInstance } from 'vue'\n\nimport QDialog from '../dialog/QDialog.js'\nimport QMenu from '../menu/QMenu.js'\n\nimport useAnchor, { useAnchorProps } from '../../composables/private/use-anchor.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { injectProp } from '../../utils/private/inject-obj-prop.js'\n\nexport default createComponent({\n name: 'QPopupProxy',\n\n props: {\n ...useAnchorProps,\n\n breakpoint: {\n type: [ String, Number ],\n default: 450\n }\n },\n\n emits: [ 'show', 'hide' ],\n\n setup (props, { slots, emit, attrs }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const showing = ref(false)\n const popupRef = ref(null)\n const breakpoint = computed(() => parseInt(props.breakpoint, 10))\n\n const { canShow } = useAnchor({ showing })\n\n function getType () {\n return $q.screen.width < breakpoint.value || $q.screen.height < breakpoint.value\n ? 'dialog'\n : 'menu'\n }\n\n const type = ref(getType())\n\n const popupProps = computed(() => (\n type.value === 'menu' ? { maxHeight: '99vh' } : {})\n )\n\n watch(() => getType(), val => {\n if (showing.value !== true) {\n type.value = val\n }\n })\n\n function onShow (evt) {\n showing.value = true\n emit('show', evt)\n }\n\n function onHide (evt) {\n showing.value = false\n type.value = getType()\n emit('hide', evt)\n }\n\n // expose public methods\n Object.assign(proxy, {\n show (evt) { canShow(evt) === true && popupRef.value.show(evt) },\n hide (evt) { popupRef.value.hide(evt) },\n toggle (evt) { popupRef.value.toggle(evt) }\n })\n\n injectProp(proxy, 'currentComponent', () => ({\n type: type.value,\n ref: popupRef.value\n }))\n\n return () => {\n const data = {\n ref: popupRef,\n ...popupProps.value,\n ...attrs,\n onShow,\n onHide\n }\n\n let component\n\n if (type.value === 'dialog') {\n component = QDialog\n }\n else {\n component = QMenu\n Object.assign(data, {\n target: props.target,\n contextMenu: props.contextMenu,\n noParentEvent: true,\n separateClosePopup: true\n })\n }\n\n return h(component, data, slots.default)\n }\n }\n})\n","import { createDirective } from '../utils/private/create.js'\nimport { closePortals, getPortalProxy } from '../utils/private/portal.js'\nimport { isKeyCode } from '../utils/private/key-composition.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.js'\n\n/*\n * depth\n * < 0 --> close all chain\n * 0 --> disabled\n * > 0 --> close chain up to N parent\n */\n\nfunction getDepth (value) {\n if (value === false) {\n return 0\n }\n if (value === true || value === void 0) {\n return 1\n }\n\n const depth = parseInt(value, 10)\n return isNaN(depth) ? 0 : depth\n}\n\nexport default createDirective(__QUASAR_SSR_SERVER__\n ? { name: 'close-popup', getSSRProps }\n : {\n name: 'close-popup',\n\n beforeMount (el, { value }) {\n const ctx = {\n depth: getDepth(value),\n\n handler (evt) {\n // allow @click to be emitted\n ctx.depth !== 0 && setTimeout(() => {\n const proxy = getPortalProxy(el)\n if (proxy !== void 0) {\n closePortals(proxy, evt, ctx.depth)\n }\n })\n },\n\n handlerKey (evt) {\n isKeyCode(evt, 13) === true && ctx.handler(evt)\n }\n }\n\n el.__qclosepopup = ctx\n\n el.addEventListener('click', ctx.handler)\n el.addEventListener('keyup', ctx.handlerKey)\n },\n\n updated (el, { value, oldValue }) {\n if (value !== oldValue) {\n el.__qclosepopup.depth = getDepth(value)\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qclosepopup\n el.removeEventListener('click', ctx.handler)\n el.removeEventListener('keyup', ctx.handlerKey)\n delete el.__qclosepopup\n }\n }\n)\n","import { h, ref, computed, watch, onBeforeUnmount, inject, getCurrentInstance } from 'vue'\n\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport { layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'\n\nexport default createComponent({\n name: 'QFooter',\n\n props: {\n modelValue: {\n type: Boolean,\n default: true\n },\n reveal: Boolean,\n bordered: Boolean,\n elevated: Boolean,\n\n heightHint: {\n type: [ String, Number ],\n default: 50\n }\n },\n\n emits: [ 'reveal', 'focusin' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const $layout = inject(layoutKey, emptyRenderFn)\n if ($layout === emptyRenderFn) {\n console.error('QFooter needs to be child of QLayout')\n return emptyRenderFn\n }\n\n const size = ref(parseInt(props.heightHint, 10))\n const revealed = ref(true)\n const windowHeight = ref(\n isRuntimeSsrPreHydration.value === true || $layout.isContainer.value === true\n ? 0\n : window.innerHeight\n )\n\n const fixed = computed(() =>\n props.reveal === true\n || $layout.view.value.indexOf('F') > -1\n || ($q.platform.is.ios && $layout.isContainer.value === true)\n )\n\n const containerHeight = computed(() => (\n $layout.isContainer.value === true\n ? $layout.containerHeight.value\n : windowHeight.value\n ))\n\n const offset = computed(() => {\n if (props.modelValue !== true) {\n return 0\n }\n if (fixed.value === true) {\n return revealed.value === true ? size.value : 0\n }\n const offset = $layout.scroll.value.position + containerHeight.value + size.value - $layout.height.value\n return offset > 0 ? offset : 0\n })\n\n const hidden = computed(() =>\n props.modelValue !== true || (fixed.value === true && revealed.value !== true)\n )\n\n const revealOnFocus = computed(() =>\n props.modelValue === true && hidden.value === true && props.reveal === true\n )\n\n const classes = computed(() =>\n 'q-footer q-layout__section--marginal '\n + (fixed.value === true ? 'fixed' : 'absolute') + '-bottom'\n + (props.bordered === true ? ' q-footer--bordered' : '')\n + (hidden.value === true ? ' q-footer--hidden' : '')\n + (\n props.modelValue !== true\n ? ' q-layout--prevent-focus' + (fixed.value !== true ? ' hidden' : '')\n : ''\n )\n )\n\n const style = computed(() => {\n const\n view = $layout.rows.value.bottom,\n css = {}\n\n if (view[ 0 ] === 'l' && $layout.left.space === true) {\n css[ $q.lang.rtl === true ? 'right' : 'left' ] = `${ $layout.left.size }px`\n }\n if (view[ 2 ] === 'r' && $layout.right.space === true) {\n css[ $q.lang.rtl === true ? 'left' : 'right' ] = `${ $layout.right.size }px`\n }\n\n return css\n })\n\n function updateLayout (prop, val) {\n $layout.update('footer', prop, val)\n }\n\n function updateLocal (prop, val) {\n if (prop.value !== val) {\n prop.value = val\n }\n }\n\n function onResize ({ height }) {\n updateLocal(size, height)\n updateLayout('size', height)\n }\n\n function updateRevealed () {\n if (props.reveal !== true) { return }\n\n const { direction, position, inflectionPoint } = $layout.scroll.value\n\n updateLocal(revealed, (\n direction === 'up'\n || position - inflectionPoint < 100\n || $layout.height.value - containerHeight.value - position - size.value < 300\n ))\n }\n\n function onFocusin (evt) {\n if (revealOnFocus.value === true) {\n updateLocal(revealed, true)\n }\n\n emit('focusin', evt)\n }\n\n watch(() => props.modelValue, val => {\n updateLayout('space', val)\n updateLocal(revealed, true)\n $layout.animate()\n })\n\n watch(offset, val => {\n updateLayout('offset', val)\n })\n\n watch(() => props.reveal, val => {\n val === false && updateLocal(revealed, props.modelValue)\n })\n\n watch(revealed, val => {\n $layout.animate()\n emit('reveal', val)\n })\n\n watch([ size, $layout.scroll, $layout.height ], updateRevealed)\n\n watch(() => $q.screen.height, val => {\n $layout.isContainer.value !== true && updateLocal(windowHeight, val)\n })\n\n const instance = {}\n\n $layout.instances.footer = instance\n props.modelValue === true && updateLayout('size', size.value)\n updateLayout('space', props.modelValue)\n updateLayout('offset', offset.value)\n\n onBeforeUnmount(() => {\n if ($layout.instances.footer === instance) {\n $layout.instances.footer = void 0\n updateLayout('size', 0)\n updateLayout('offset', 0)\n updateLayout('space', false)\n }\n })\n\n return () => {\n const child = hMergeSlot(slots.default, [\n h(QResizeObserver, {\n debounce: 0,\n onResize\n })\n ])\n\n props.elevated === true && child.push(\n h('div', {\n class: 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'\n })\n )\n\n return h('footer', {\n class: classes.value,\n style: style.value,\n onFocusin\n }, child)\n }\n }\n})\n","import { h } from 'vue'\n\nimport { usePanelChildProps } from '../../composables/private/use-panel.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QTabPanel',\n\n props: usePanelChildProps,\n\n setup (_, { slots }) {\n return () => h('div', { class: 'q-tab-panel', role: 'tabpanel' }, hSlot(slots.default))\n }\n})\n","import useField, { useFieldState, useFieldProps, useFieldEmits } from '../../composables/private/use-field.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'QField',\n\n inheritAttrs: false,\n\n props: useFieldProps,\n\n emits: useFieldEmits,\n\n setup () {\n return useField(useFieldState())\n }\n})\n","import { h, computed } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport useCheckbox, { useCheckboxProps, useCheckboxEmits } from './use-checkbox.js'\n\nconst bgNode = h('div', {\n key: 'svg',\n class: 'q-checkbox__bg absolute'\n}, [\n h('svg', {\n class: 'q-checkbox__svg fit absolute-full',\n viewBox: '0 0 24 24'\n }, [\n h('path', {\n class: 'q-checkbox__truthy',\n fill: 'none',\n d: 'M1.73,12.91 8.1,19.28 22.79,4.59'\n }),\n\n h('path', {\n class: 'q-checkbox__indet',\n d: 'M4,14H20V10H4'\n })\n ])\n])\n\nexport default createComponent({\n name: 'QCheckbox',\n\n props: useCheckboxProps,\n emits: useCheckboxEmits,\n\n setup (props) {\n function getInner (isTrue, isIndeterminate) {\n const icon = computed(() =>\n (isTrue.value === true\n ? props.checkedIcon\n : (isIndeterminate.value === true\n ? props.indeterminateIcon\n : props.uncheckedIcon\n )\n ) || null\n )\n\n return () => (\n icon.value !== null\n ? [\n h('div', {\n key: 'icon',\n class: 'q-checkbox__icon-container absolute-full flex flex-center no-wrap'\n }, [\n h(QIcon, {\n class: 'q-checkbox__icon',\n name: icon.value\n })\n ])\n ]\n : [ bgNode ]\n )\n }\n\n return useCheckbox('checkbox', getInner)\n }\n})\n","import { getEventPath, listenOpts, stopAndPrevent } from '../utils/event.js'\nimport { hasScrollbar, getVerticalScrollPosition, getHorizontalScrollPosition } from '../utils/scroll.js'\nimport { client } from '../plugins/Platform.js'\n\nlet\n registered = 0,\n scrollPositionX,\n scrollPositionY,\n maxScrollTop,\n vpPendingUpdate = false,\n bodyLeft,\n bodyTop,\n closeTimer\n\nfunction onWheel (e) {\n if (shouldPreventScroll(e)) {\n stopAndPrevent(e)\n }\n}\n\nfunction shouldPreventScroll (e) {\n if (e.target === document.body || e.target.classList.contains('q-layout__backdrop')) {\n return true\n }\n\n const\n path = getEventPath(e),\n shift = e.shiftKey && !e.deltaX,\n scrollY = !shift && Math.abs(e.deltaX) <= Math.abs(e.deltaY),\n delta = shift || scrollY ? e.deltaY : e.deltaX\n\n for (let index = 0; index < path.length; index++) {\n const el = path[ index ]\n\n if (hasScrollbar(el, scrollY)) {\n return scrollY\n ? (\n delta < 0 && el.scrollTop === 0\n ? true\n : delta > 0 && el.scrollTop + el.clientHeight === el.scrollHeight\n )\n : (\n delta < 0 && el.scrollLeft === 0\n ? true\n : delta > 0 && el.scrollLeft + el.clientWidth === el.scrollWidth\n )\n }\n }\n\n return true\n}\n\nfunction onAppleScroll (e) {\n if (e.target === document) {\n // required, otherwise iOS blocks further scrolling\n // until the mobile scrollbar dissappears\n document.scrollingElement.scrollTop = document.scrollingElement.scrollTop // eslint-disable-line\n }\n}\n\nfunction onAppleResize (evt) {\n if (vpPendingUpdate === true) {\n return\n }\n\n vpPendingUpdate = true\n\n requestAnimationFrame(() => {\n vpPendingUpdate = false\n\n const\n { height } = evt.target,\n { clientHeight, scrollTop } = document.scrollingElement\n\n if (maxScrollTop === void 0 || height !== window.innerHeight) {\n maxScrollTop = clientHeight - height\n document.scrollingElement.scrollTop = scrollTop\n }\n\n if (scrollTop > maxScrollTop) {\n document.scrollingElement.scrollTop -= Math.ceil((scrollTop - maxScrollTop) / 8)\n }\n })\n}\n\nfunction apply (action) {\n const\n body = document.body,\n hasViewport = window.visualViewport !== void 0\n\n if (action === 'add') {\n const { overflowY, overflowX } = window.getComputedStyle(body)\n\n scrollPositionX = getHorizontalScrollPosition(window)\n scrollPositionY = getVerticalScrollPosition(window)\n bodyLeft = body.style.left\n bodyTop = body.style.top\n\n body.style.left = `-${ scrollPositionX }px`\n body.style.top = `-${ scrollPositionY }px`\n\n if (overflowX !== 'hidden' && (overflowX === 'scroll' || body.scrollWidth > window.innerWidth)) {\n body.classList.add('q-body--force-scrollbar-x')\n }\n if (overflowY !== 'hidden' && (overflowY === 'scroll' || body.scrollHeight > window.innerHeight)) {\n body.classList.add('q-body--force-scrollbar-y')\n }\n\n body.classList.add('q-body--prevent-scroll')\n document.qScrollPrevented = true\n if (client.is.ios === true) {\n if (hasViewport === true) {\n window.scrollTo(0, 0)\n window.visualViewport.addEventListener('resize', onAppleResize, listenOpts.passiveCapture)\n window.visualViewport.addEventListener('scroll', onAppleResize, listenOpts.passiveCapture)\n window.scrollTo(0, 0)\n }\n else {\n window.addEventListener('scroll', onAppleScroll, listenOpts.passiveCapture)\n }\n }\n }\n\n if (client.is.desktop === true && client.is.mac === true) {\n // ref. https://developers.google.com/web/updates/2017/01/scrolling-intervention\n window[ `${ action }EventListener` ]('wheel', onWheel, listenOpts.notPassive)\n }\n\n if (action === 'remove') {\n if (client.is.ios === true) {\n if (hasViewport === true) {\n window.visualViewport.removeEventListener('resize', onAppleResize, listenOpts.passiveCapture)\n window.visualViewport.removeEventListener('scroll', onAppleResize, listenOpts.passiveCapture)\n }\n else {\n window.removeEventListener('scroll', onAppleScroll, listenOpts.passiveCapture)\n }\n }\n\n body.classList.remove('q-body--prevent-scroll')\n body.classList.remove('q-body--force-scrollbar-x')\n body.classList.remove('q-body--force-scrollbar-y')\n\n document.qScrollPrevented = false\n\n body.style.left = bodyLeft\n body.style.top = bodyTop\n\n window.scrollTo(scrollPositionX, scrollPositionY)\n maxScrollTop = void 0\n }\n}\n\nexport default function (state) {\n let action = 'add'\n\n if (state === true) {\n registered++\n\n if (closeTimer !== void 0) {\n clearTimeout(closeTimer)\n closeTimer = void 0\n return\n }\n\n if (registered > 1) {\n return\n }\n }\n else {\n if (registered === 0) {\n return\n }\n\n registered--\n\n if (registered > 0) {\n return\n }\n\n action = 'remove'\n\n if (client.is.ios === true && client.is.nativeMobile === true) {\n clearTimeout(closeTimer)\n\n closeTimer = setTimeout(() => {\n apply(action)\n closeTimer = void 0\n }, 100)\n return\n }\n }\n\n apply(action)\n}\n","import { computed } from 'vue'\n\nexport const alignMap = {\n left: 'start',\n center: 'center',\n right: 'end',\n between: 'between',\n around: 'around',\n evenly: 'evenly',\n stretch: 'stretch'\n}\n\nexport const alignValues = Object.keys(alignMap)\n\nexport const useAlignProps = {\n align: {\n type: String,\n validator: v => alignValues.includes(v)\n }\n}\n\nexport default function (props) {\n // return alignClass\n return computed(() => {\n const align = props.align === void 0\n ? props.vertical === true ? 'stretch' : 'left'\n : props.align\n\n return `${ props.vertical === true ? 'items' : 'justify' }-${ alignMap[ align ] }`\n })\n}\n","export default {\n name: 'material-icons',\n type: {\n positive: 'check_circle',\n negative: 'warning',\n info: 'info',\n warning: 'priority_high'\n },\n arrow: {\n up: 'arrow_upward',\n right: 'arrow_forward',\n down: 'arrow_downward',\n left: 'arrow_back',\n dropdown: 'arrow_drop_down'\n },\n chevron: {\n left: 'chevron_left',\n right: 'chevron_right'\n },\n colorPicker: {\n spectrum: 'gradient',\n tune: 'tune',\n palette: 'style'\n },\n pullToRefresh: {\n icon: 'refresh'\n },\n carousel: {\n left: 'chevron_left',\n right: 'chevron_right',\n up: 'keyboard_arrow_up',\n down: 'keyboard_arrow_down',\n navigationIcon: 'lens'\n },\n chip: {\n remove: 'cancel',\n selected: 'check'\n },\n datetime: {\n arrowLeft: 'chevron_left',\n arrowRight: 'chevron_right',\n now: 'access_time',\n today: 'today'\n },\n editor: {\n bold: 'format_bold',\n italic: 'format_italic',\n strikethrough: 'strikethrough_s',\n underline: 'format_underlined',\n unorderedList: 'format_list_bulleted',\n orderedList: 'format_list_numbered',\n subscript: 'vertical_align_bottom',\n superscript: 'vertical_align_top',\n hyperlink: 'link',\n toggleFullscreen: 'fullscreen',\n quote: 'format_quote',\n left: 'format_align_left',\n center: 'format_align_center',\n right: 'format_align_right',\n justify: 'format_align_justify',\n print: 'print',\n outdent: 'format_indent_decrease',\n indent: 'format_indent_increase',\n removeFormat: 'format_clear',\n formatting: 'text_format',\n fontSize: 'format_size',\n align: 'format_align_left',\n hr: 'remove',\n undo: 'undo',\n redo: 'redo',\n heading: 'format_size',\n code: 'code',\n size: 'format_size',\n font: 'font_download',\n viewSource: 'code'\n },\n expansionItem: {\n icon: 'keyboard_arrow_down',\n denseIcon: 'arrow_drop_down'\n },\n fab: {\n icon: 'add',\n activeIcon: 'close'\n },\n field: {\n clear: 'cancel',\n error: 'error'\n },\n pagination: {\n first: 'first_page',\n prev: 'keyboard_arrow_left',\n next: 'keyboard_arrow_right',\n last: 'last_page'\n },\n rating: {\n icon: 'grade'\n },\n stepper: {\n done: 'check',\n active: 'edit',\n error: 'warning'\n },\n tabs: {\n left: 'chevron_left',\n right: 'chevron_right',\n up: 'keyboard_arrow_up',\n down: 'keyboard_arrow_down'\n },\n table: {\n arrowUp: 'arrow_upward',\n warning: 'warning',\n firstPage: 'first_page',\n prevPage: 'chevron_left',\n nextPage: 'chevron_right',\n lastPage: 'last_page'\n },\n tree: {\n icon: 'play_arrow'\n },\n uploader: {\n done: 'done',\n clear: 'clear',\n add: 'add_box',\n upload: 'cloud_upload',\n removeQueue: 'clear_all',\n removeUploaded: 'done_all'\n }\n}\n","import defineReactivePlugin from './utils/private/define-reactive-plugin.js'\nimport { injectProp } from './utils/private/inject-obj-prop.js'\n// no extension on purpose for next one:\nimport materialIcons from '../icon-set/material-icons'\n\nconst Plugin = defineReactivePlugin({\n iconMapFn: null,\n __icons: {}\n}, {\n set (setObject, ssrContext) {\n const def = { ...setObject, rtl: setObject.rtl === true }\n\n if (__QUASAR_SSR_SERVER__) {\n if (ssrContext === void 0) {\n console.error('SSR ERROR: second param required: Quasar.iconSet.set(iconSet, ssrContext)')\n return\n }\n\n def.set = ssrContext.$q.iconSet.set\n Object.assign(ssrContext.$q.iconSet, def)\n }\n else {\n def.set = Plugin.set\n Object.assign(Plugin.__icons, def)\n }\n },\n\n install ({ $q, iconSet, ssrContext }) {\n if (__QUASAR_SSR_SERVER__) {\n const initialSet = iconSet || materialIcons\n\n $q.iconMapFn = ssrContext.$q.config.iconMapFn || this.iconMapFn || null\n $q.iconSet = {}\n $q.iconSet.set = setObject => {\n this.set(setObject, ssrContext)\n }\n\n $q.iconSet.set(initialSet)\n }\n else {\n if ($q.config.iconMapFn !== void 0) {\n this.iconMapFn = $q.config.iconMapFn\n }\n\n $q.iconSet = this.__icons\n\n injectProp($q, 'iconMapFn', () => this.iconMapFn, val => { this.iconMapFn = val })\n\n if (this.__installed === true) {\n iconSet !== void 0 && this.set(iconSet)\n }\n else {\n this.set(iconSet || materialIcons)\n }\n }\n }\n})\n\nexport default Plugin\n","import { computed } from 'vue'\n\nexport const useSizeDefaults = {\n xs: 18,\n sm: 24,\n md: 32,\n lg: 38,\n xl: 46\n}\n\nexport const useSizeProps = {\n size: String\n}\n\nexport default function (props, sizes = useSizeDefaults) {\n // return sizeStyle\n return computed(() => (\n props.size !== void 0\n ? { fontSize: props.size in sizes ? `${ sizes[ props.size ] }px` : props.size }\n : null\n ))\n}\n","import { h, ref, computed, Transition, onBeforeUnmount, withDirectives, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport Ripple from '../../directives/Ripple.js'\n\nimport useBtn, { useBtnProps } from './use-btn.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport { stop, prevent, stopAndPrevent, listenOpts } from '../../utils/event.js'\nimport { isKeyCode } from '../../utils/private/key-composition.js'\n\nconst { passiveCapture } = listenOpts\n\nlet\n touchTarget = null,\n keyboardTarget = null,\n mouseTarget = null\n\nexport default createComponent({\n name: 'QBtn',\n\n props: {\n ...useBtnProps,\n\n percentage: Number,\n darkPercentage: Boolean,\n\n onTouchstart: [ Function, Array ]\n },\n\n emits: [ 'click', 'keydown', 'mousedown', 'keyup' ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n\n const {\n classes, style, innerClasses,\n attributes,\n hasLink, linkTag, navigateOnClick,\n isActionable\n } = useBtn(props)\n\n const rootRef = ref(null)\n const blurTargetRef = ref(null)\n\n let localTouchTargetEl = null, avoidMouseRipple, mouseTimer\n\n const hasLabel = computed(() =>\n props.label !== void 0 && props.label !== null && props.label !== ''\n )\n\n const ripple = computed(() => (\n props.disable === true || props.ripple === false\n ? false\n : {\n keyCodes: hasLink.value === true ? [ 13, 32 ] : [ 13 ],\n ...(props.ripple === true ? {} : props.ripple)\n }\n ))\n\n const rippleProps = computed(() => ({ center: props.round }))\n\n const percentageStyle = computed(() => {\n const val = Math.max(0, Math.min(100, props.percentage))\n return val > 0\n ? { transition: 'transform 0.6s', transform: `translateX(${ val - 100 }%)` }\n : {}\n })\n\n const onEvents = computed(() => {\n if (props.loading === true) {\n return {\n onMousedown: onLoadingEvt,\n onTouchstart: onLoadingEvt,\n onClick: onLoadingEvt,\n onKeydown: onLoadingEvt,\n onKeyup: onLoadingEvt\n }\n }\n\n if (isActionable.value === true) {\n const acc = {\n onClick,\n onKeydown,\n onMousedown\n }\n\n if (proxy.$q.platform.has.touch === true) {\n const suffix = props.onTouchstart !== void 0\n ? ''\n : 'Passive'\n\n acc[ `onTouchstart${ suffix }` ] = onTouchstart\n }\n\n return acc\n }\n\n return {\n // needed; especially for disabled tags\n onClick: stopAndPrevent\n }\n })\n\n const nodeProps = computed(() => ({\n ref: rootRef,\n class: 'q-btn q-btn-item non-selectable no-outline ' + classes.value,\n style: style.value,\n ...attributes.value,\n ...onEvents.value\n }))\n\n function onClick (e) {\n // is it already destroyed?\n if (rootRef.value === null) { return }\n\n if (e !== void 0) {\n if (e.defaultPrevented === true) {\n return\n }\n\n const el = document.activeElement\n // focus button if it came from ENTER on form\n // prevent the new submit (already done)\n if (\n props.type === 'submit'\n && el !== document.body\n && rootRef.value.contains(el) === false\n // required for iOS and desktop Safari\n && el.contains(rootRef.value) === false\n ) {\n rootRef.value.focus()\n\n const onClickCleanup = () => {\n document.removeEventListener('keydown', stopAndPrevent, true)\n document.removeEventListener('keyup', onClickCleanup, passiveCapture)\n rootRef.value !== null && rootRef.value.removeEventListener('blur', onClickCleanup, passiveCapture)\n }\n\n document.addEventListener('keydown', stopAndPrevent, true)\n document.addEventListener('keyup', onClickCleanup, passiveCapture)\n rootRef.value.addEventListener('blur', onClickCleanup, passiveCapture)\n }\n }\n\n navigateOnClick(e)\n }\n\n function onKeydown (e) {\n // is it already destroyed?\n if (rootRef.value === null) { return }\n\n emit('keydown', e)\n\n if (isKeyCode(e, [ 13, 32 ]) === true && keyboardTarget !== rootRef.value) {\n keyboardTarget !== null && cleanup()\n\n if (e.defaultPrevented !== true) {\n // focus external button if the focus helper was focused before\n rootRef.value.focus()\n\n keyboardTarget = rootRef.value\n rootRef.value.classList.add('q-btn--active')\n document.addEventListener('keyup', onPressEnd, true)\n rootRef.value.addEventListener('blur', onPressEnd, passiveCapture)\n }\n\n stopAndPrevent(e)\n }\n }\n\n function onTouchstart (e) {\n // is it already destroyed?\n if (rootRef.value === null) { return }\n\n emit('touchstart', e)\n\n if (e.defaultPrevented === true) { return }\n\n if (touchTarget !== rootRef.value) {\n touchTarget !== null && cleanup()\n touchTarget = rootRef.value\n\n localTouchTargetEl = e.target\n localTouchTargetEl.addEventListener('touchcancel', onPressEnd, passiveCapture)\n localTouchTargetEl.addEventListener('touchend', onPressEnd, passiveCapture)\n }\n\n // avoid duplicated mousedown event\n // triggering another early ripple\n avoidMouseRipple = true\n clearTimeout(mouseTimer)\n mouseTimer = setTimeout(() => {\n avoidMouseRipple = false\n }, 200)\n }\n\n function onMousedown (e) {\n // is it already destroyed?\n if (rootRef.value === null) { return }\n\n e.qSkipRipple = avoidMouseRipple === true\n emit('mousedown', e)\n\n if (e.defaultPrevented !== true && mouseTarget !== rootRef.value) {\n mouseTarget !== null && cleanup()\n mouseTarget = rootRef.value\n rootRef.value.classList.add('q-btn--active')\n document.addEventListener('mouseup', onPressEnd, passiveCapture)\n }\n }\n\n function onPressEnd (e) {\n // is it already destroyed?\n if (rootRef.value === null) { return }\n\n // needed for IE (because it emits blur when focusing button from focus helper)\n if (e !== void 0 && e.type === 'blur' && document.activeElement === rootRef.value) {\n return\n }\n\n if (e !== void 0 && e.type === 'keyup') {\n if (keyboardTarget === rootRef.value && isKeyCode(e, [ 13, 32 ]) === true) {\n // for click trigger\n const evt = new MouseEvent('click', e)\n evt.qKeyEvent = true\n e.defaultPrevented === true && prevent(evt)\n e.cancelBubble === true && stop(evt)\n rootRef.value.dispatchEvent(evt)\n\n stopAndPrevent(e)\n\n // for ripple\n e.qKeyEvent = true\n }\n\n emit('keyup', e)\n }\n\n cleanup()\n }\n\n function cleanup (destroying) {\n const blurTarget = blurTargetRef.value\n\n if (\n destroying !== true\n && (touchTarget === rootRef.value || mouseTarget === rootRef.value)\n && blurTarget !== null\n && blurTarget !== document.activeElement\n ) {\n blurTarget.setAttribute('tabindex', -1)\n blurTarget.focus()\n }\n\n if (touchTarget === rootRef.value) {\n if (localTouchTargetEl !== null) {\n localTouchTargetEl.removeEventListener('touchcancel', onPressEnd, passiveCapture)\n localTouchTargetEl.removeEventListener('touchend', onPressEnd, passiveCapture)\n }\n touchTarget = localTouchTargetEl = null\n }\n\n if (mouseTarget === rootRef.value) {\n document.removeEventListener('mouseup', onPressEnd, passiveCapture)\n mouseTarget = null\n }\n\n if (keyboardTarget === rootRef.value) {\n document.removeEventListener('keyup', onPressEnd, true)\n rootRef.value !== null && rootRef.value.removeEventListener('blur', onPressEnd, passiveCapture)\n keyboardTarget = null\n }\n\n rootRef.value !== null && rootRef.value.classList.remove('q-btn--active')\n }\n\n function onLoadingEvt (evt) {\n stopAndPrevent(evt)\n evt.qSkipRipple = true\n }\n\n onBeforeUnmount(() => {\n cleanup(true)\n })\n\n // expose public methods\n Object.assign(proxy, { click: onClick })\n\n return () => {\n let inner = []\n\n props.icon !== void 0 && inner.push(\n h(QIcon, {\n name: props.icon,\n left: props.stack === false && hasLabel.value === true,\n role: 'img',\n 'aria-hidden': 'true'\n })\n )\n\n hasLabel.value === true && inner.push(\n h('span', { class: 'block' }, [ props.label ])\n )\n\n inner = hMergeSlot(slots.default, inner)\n\n if (props.iconRight !== void 0 && props.round === false) {\n inner.push(\n h(QIcon, {\n name: props.iconRight,\n right: props.stack === false && hasLabel.value === true,\n role: 'img',\n 'aria-hidden': 'true'\n })\n )\n }\n\n const child = [\n h('span', {\n class: 'q-focus-helper',\n ref: blurTargetRef\n })\n ]\n\n if (props.loading === true && props.percentage !== void 0) {\n child.push(\n h('span', {\n class: 'q-btn__progress absolute-full overflow-hidden' + (props.darkPercentage === true ? ' q-btn__progress--dark' : '')\n }, [\n h('span', {\n class: 'q-btn__progress-indicator fit block',\n style: percentageStyle.value\n })\n ])\n )\n }\n\n child.push(\n h('span', {\n class: 'q-btn__content text-center col items-center q-anchor--skip ' + innerClasses.value\n }, inner)\n )\n\n props.loading !== null && child.push(\n h(Transition, {\n name: 'q-transition--fade'\n }, () => (\n props.loading === true\n ? [\n h('span', {\n key: 'loading',\n class: 'absolute-full flex flex-center'\n }, slots.loading !== void 0 ? slots.loading() : [ h(QSpinner) ])\n ]\n : null\n ))\n )\n\n return withDirectives(\n h(\n linkTag.value,\n nodeProps.value,\n child\n ),\n [ [\n Ripple,\n ripple.value,\n void 0,\n rippleProps.value\n ] ]\n )\n }\n }\n})\n","export function injectProp (target, propName, get, set) {\n Object.defineProperty(target, propName, {\n get,\n set,\n enumerable: true\n })\n return target\n}\n\nexport function injectMultipleProps (target, props) {\n for (const key in props) {\n injectProp(target, key, props[ key ])\n }\n return target\n}\n","import { h, computed } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport useCheckbox, { useCheckboxProps, useCheckboxEmits } from '../checkbox/use-checkbox.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'QToggle',\n\n props: {\n ...useCheckboxProps,\n\n icon: String,\n iconColor: String\n },\n\n emits: useCheckboxEmits,\n\n setup (props) {\n function getInner (isTrue, isIndeterminate) {\n const icon = computed(() =>\n (isTrue.value === true\n ? props.checkedIcon\n : (isIndeterminate.value === true ? props.indeterminateIcon : props.uncheckedIcon)\n ) || props.icon\n )\n\n const color = computed(() => (isTrue.value === true ? props.iconColor : null))\n\n return () => [\n h('div', { class: 'q-toggle__track' }),\n\n h('div', {\n class: 'q-toggle__thumb absolute flex flex-center no-wrap'\n }, icon.value !== void 0\n ? [\n h(QIcon, {\n name: icon.value,\n color: color.value\n })\n ]\n : void 0\n )\n ]\n }\n\n return useCheckbox('toggle', getInner)\n }\n})\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport QRadio from '../radio/QRadio.js'\nimport QCheckbox from '../checkbox/QCheckbox.js'\nimport QToggle from '../toggle/QToggle.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nconst components = {\n radio: QRadio,\n checkbox: QCheckbox,\n toggle: QToggle\n}\n\nconst typeValues = Object.keys(components)\n\nexport default createComponent({\n name: 'QOptionGroup',\n\n props: {\n ...useDarkProps,\n\n modelValue: {\n required: true\n },\n options: {\n type: Array,\n validator: opts => opts.every(opt => 'value' in opt && 'label' in opt)\n },\n\n name: String,\n\n type: {\n default: 'radio',\n validator: v => typeValues.includes(v)\n },\n\n color: String,\n keepColor: Boolean,\n dense: Boolean,\n\n size: String,\n\n leftLabel: Boolean,\n inline: Boolean,\n disable: Boolean\n },\n\n emits: [ 'update:modelValue' ],\n\n setup (props, { emit, slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const arrayModel = Array.isArray(props.modelValue)\n\n if (props.type === 'radio') {\n if (arrayModel === true) {\n console.error('q-option-group: model should not be array')\n }\n }\n else if (arrayModel === false) {\n console.error('q-option-group: model should be array in your case')\n }\n\n const isDark = useDark(props, $q)\n\n const component = computed(() => components[ props.type ])\n\n const classes = computed(() =>\n 'q-option-group q-gutter-x-sm'\n + (props.inline === true ? ' q-option-group--inline' : '')\n )\n\n const attrs = computed(() => {\n const attrs = { role: 'group' }\n\n if (props.type === 'radio') {\n attrs.role = 'radiogroup'\n\n if (props.disable === true) {\n attrs[ 'aria-disabled' ] = 'true'\n }\n }\n\n return attrs\n })\n\n function onUpdateModelValue (value) {\n emit('update:modelValue', value)\n }\n\n return () => h('div', {\n class: classes.value,\n ...attrs.value\n }, props.options.map((opt, i) => {\n // TODO: (Qv3) Make the 'opt' a separate property instead of\n // the whole scope for consistency and flexibility\n // (e.g. { opt } instead of opt)\n const child = slots[ 'label-' + i ] !== void 0\n ? () => slots[ 'label-' + i ](opt)\n : (\n slots.label !== void 0\n ? () => slots.label(opt)\n : void 0\n )\n\n return h('div', [\n h(component.value, {\n modelValue: props.modelValue,\n val: opt.value,\n name: opt.name === void 0 ? props.name : opt.name,\n disable: props.disable || opt.disable,\n label: child === void 0 ? opt.label : null,\n leftLabel: opt.leftLabel === void 0 ? props.leftLabel : opt.leftLabel,\n color: opt.color === void 0 ? props.color : opt.color,\n checkedIcon: opt.checkedIcon,\n uncheckedIcon: opt.uncheckedIcon,\n dark: opt.dark || isDark.value,\n size: opt.size === void 0 ? props.size : opt.size,\n dense: props.dense,\n keepColor: opt.keepColor === void 0 ? props.keepColor : opt.keepColor,\n 'onUpdate:modelValue': onUpdateModelValue\n }, child)\n ])\n }))\n }\n})\n","import { h, ref, onUnmounted, Teleport } from 'vue'\n\nimport { noop } from '../../utils/event.js'\nimport { addFocusWaitFlag, removeFocusWaitFlag } from '../../utils/private/focus-manager.js'\nimport { createGlobalNode, removeGlobalNode } from '../../utils/private/global-nodes.js'\nimport { portalProxyList } from '../../utils/private/portal.js'\nimport { injectProp } from '../../utils/private/inject-obj-prop.js'\n\nfunction isOnGlobalDialog (vm) {\n vm = vm.parent\n\n while (vm !== void 0 && vm !== null) {\n if (vm.type.name === 'QGlobalDialog') {\n return true\n }\n if (vm.type.name === 'QDialog' || vm.type.name === 'QMenu') {\n return false\n }\n\n vm = vm.parent\n }\n\n return false\n}\n\n// Warning!\n// You MUST specify \"inheritAttrs: false\" in your component\n\nexport default function (vm, innerRef, renderPortalContent, checkGlobalDialog) {\n // showing, including while in show/hide transition\n const portalIsActive = ref(false)\n\n // showing & not in any show/hide transition\n const portalIsAccessible = ref(false)\n\n if (__QUASAR_SSR_SERVER__) {\n return {\n portalIsActive,\n portalIsAccessible,\n\n showPortal: noop,\n hidePortal: noop,\n renderPortal: noop\n }\n }\n\n let portalEl = null\n const focusObj = {}\n const onGlobalDialog = checkGlobalDialog === true && isOnGlobalDialog(vm)\n\n function showPortal (isReady) {\n if (isReady === true) {\n removeFocusWaitFlag(focusObj)\n portalIsAccessible.value = true\n return\n }\n\n portalIsAccessible.value = false\n\n if (portalIsActive.value === false) {\n if (onGlobalDialog === false && portalEl === null) {\n portalEl = createGlobalNode()\n }\n\n portalIsActive.value = true\n\n // register portal\n portalProxyList.push(vm.proxy)\n\n addFocusWaitFlag(focusObj)\n }\n }\n\n function hidePortal (isReady) {\n portalIsAccessible.value = false\n\n if (isReady !== true) { return }\n\n removeFocusWaitFlag(focusObj)\n portalIsActive.value = false\n\n // unregister portal\n const index = portalProxyList.indexOf(vm.proxy)\n if (index !== -1) {\n portalProxyList.splice(index, 1)\n }\n\n if (portalEl !== null) {\n removeGlobalNode(portalEl)\n portalEl = null\n }\n }\n\n onUnmounted(() => { hidePortal(true) })\n\n // needed for portal vm detection\n vm.proxy.__qPortal = true\n\n // public way of accessing the rendered content\n injectProp(vm.proxy, 'contentEl', () => innerRef.value)\n\n return {\n showPortal,\n hidePortal,\n\n portalIsActive,\n portalIsAccessible,\n\n renderPortal: () => (\n onGlobalDialog === true\n ? renderPortalContent()\n : (\n portalIsActive.value === true\n ? [ h(Teleport, { to: portalEl }, renderPortalContent()) ]\n : void 0\n )\n )\n }\n}\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QCardSection',\n\n props: {\n tag: {\n type: String,\n default: 'div'\n },\n\n horizontal: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() =>\n 'q-card__section'\n + ` q-card__section--${ props.horizontal === true ? 'horiz row no-wrap' : 'vert' }`\n )\n\n return () => h(props.tag, { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { computed } from 'vue'\n\nexport const useTransitionProps = {\n transitionShow: {\n type: String,\n default: 'fade'\n },\n\n transitionHide: {\n type: String,\n default: 'fade'\n },\n\n transitionDuration: {\n type: [ String, Number ],\n default: 300\n }\n}\n\nexport default function (props, defaultShowFn = () => {}, defaultHideFn = () => {}) {\n return {\n transitionProps: computed(() => {\n const show = `q-transition--${ props.transitionShow || defaultShowFn() }`\n const hide = `q-transition--${ props.transitionHide || defaultHideFn() }`\n\n return {\n appear: true,\n\n enterFromClass: `${ show }-enter-from`,\n enterActiveClass: `${ show }-enter-active`,\n enterToClass: `${ show }-enter-to`,\n\n leaveFromClass: `${ hide }-leave-from`,\n leaveActiveClass: `${ hide }-leave-active`,\n leaveToClass: `${ hide }-leave-to`\n }\n }),\n\n transitionStyle: computed(() => `--q-transition-duration: ${ props.transitionDuration }ms`)\n }\n}\n","/**\n * DO NOT EDIT THIS FILE. It is automatically generated\n * from its .mjs counterpart (same filename but with .mjs extension).\n * Edit that file instead (zh-CN.mjs).\n */\nmodule.exports = {\n isoName: 'zh-CN',\n nativeName: '中文(简体)',\n label: {\n clear: '清空',\n ok: '确定',\n cancel: '取消',\n close: '关闭',\n set: '设置',\n select: '选择',\n reset: '重置',\n remove: '移除',\n update: '更新',\n create: '创建',\n search: '搜索',\n filter: '过滤',\n refresh: '刷新',\n expand: label => (label ? `展开\"${ label }\"` : '扩张'),\n collapse: label => (label ? `折叠\"${ label }\"` : '坍塌')\n },\n date: {\n days: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n daysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n headerTitle: date => new Intl.DateTimeFormat('zh-CN', {\n weekday: 'short', month: 'short', day: 'numeric'\n }).format(date),\n firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...\n format24h: false,\n pluralDay: '天'\n },\n table: {\n noData: '没有可用数据',\n noResults: '找不到匹配的数据',\n loading: '正在加载...',\n selectedRecords: rows => '已选择' + rows + '行',\n recordsPerPage: '每页的行数:',\n allRows: '全部',\n pagination: (start, end, total) => start + '-' + end + ' / ' + total,\n columns: '列'\n },\n editor: {\n url: 'URL',\n bold: '粗体',\n italic: '斜体',\n strikethrough: '删除线',\n underline: '下划线',\n unorderedList: '无序列表',\n orderedList: '有序列表',\n subscript: '下标',\n superscript: '上标',\n hyperlink: '超链接',\n toggleFullscreen: '全屏切换',\n quote: '引号',\n left: '左对齐',\n center: '居中对齐',\n right: '右对齐',\n justify: '两端对齐',\n print: '打印',\n outdent: '减少缩进',\n indent: '增加缩进',\n removeFormat: '清除样式',\n formatting: '格式化',\n fontSize: '字体大小',\n align: '对齐',\n hr: '插入水平线',\n undo: '撤消',\n redo: '重做',\n heading1: '标题一',\n heading2: '标题二',\n heading3: '标题三',\n heading4: '标题四',\n heading5: '标题五',\n heading6: '标题六',\n paragraph: '段落',\n code: '代码',\n size1: '非常小',\n size2: '比较小',\n size3: '正常',\n size4: '中等偏大',\n size5: '大',\n size6: '非常大',\n size7: '超级大',\n defaultFont: '默认字体',\n viewSource: '查看资料'\n },\n tree: {\n noNodes: '没有可用节点',\n noResults: '找不到匹配的节点'\n }\n}\n","import { computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport usePanel, { usePanelProps, usePanelEmits } from '../../composables/private/use-panel.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hDir } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QTabPanels',\n\n props: {\n ...usePanelProps,\n ...useDarkProps\n },\n\n emits: usePanelEmits,\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const { updatePanelsList, getPanelContent, panelDirectives } = usePanel()\n\n const classes = computed(() =>\n 'q-tab-panels q-panel-parent'\n + (isDark.value === true ? ' q-tab-panels--dark q-dark' : '')\n )\n\n return () => {\n updatePanelsList(slots)\n\n return hDir(\n 'div',\n { class: classes.value },\n getPanelContent(),\n 'pan',\n props.swipeable,\n () => panelDirectives.value\n )\n }\n }\n})\n","import { client } from '../../plugins/Platform.js'\nimport { isKeyCode } from './key-composition.js'\n\nconst handlers = []\nlet escDown\n\nfunction onKeydown (evt) {\n escDown = evt.keyCode === 27\n}\n\nfunction onBlur () {\n if (escDown === true) {\n escDown = false\n }\n}\n\nfunction onKeyup (evt) {\n if (escDown === true) {\n escDown = false\n\n if (isKeyCode(evt, 27) === true) {\n handlers[ handlers.length - 1 ](evt)\n }\n }\n}\n\nfunction update (action) {\n window[ action ]('keydown', onKeydown)\n window[ action ]('blur', onBlur)\n window[ action ]('keyup', onKeyup)\n escDown = false\n}\n\nexport function addEscapeKey (fn) {\n if (client.is.desktop === true) {\n handlers.push(fn)\n\n if (handlers.length === 1) {\n update('addEventListener')\n }\n }\n}\n\nexport function removeEscapeKey (fn) {\n const index = handlers.indexOf(fn)\n if (index > -1) {\n handlers.splice(index, 1)\n\n if (handlers.length === 0) {\n update('removeEventListener')\n }\n }\n}\n","import installQuasar from './install-quasar.js'\nimport lang from './lang.js'\nimport iconSet from './icon-set.js'\n\nexport default {\n version: __QUASAR_VERSION__,\n install: installQuasar,\n lang,\n iconSet\n}\n","import { inject } from 'vue'\nimport { quasarKey } from '../utils/private/symbols.js'\n\n/**\n * Returns the $q instance.\n * Equivalent to `this.$q` inside templates.\n */\nexport default function useQuasar () {\n return inject(quasarKey)\n}\n","\n// copied to docs too\nexport function getParentProxy (proxy) {\n if (Object(proxy.$parent) === proxy.$parent) {\n return proxy.$parent\n }\n\n let { parent } = proxy.$\n\n while (Object(parent) === parent) {\n if (Object(parent.proxy) === parent.proxy) {\n return parent.proxy\n }\n\n parent = parent.parent\n }\n}\n\nfunction fillNormalizedVNodes (children, vnode) {\n if (typeof vnode.type === 'symbol') {\n if (Array.isArray(vnode.children) === true) {\n vnode.children.forEach(child => {\n fillNormalizedVNodes(children, child)\n })\n }\n }\n else {\n children.add(vnode)\n }\n}\n\n// vnodes from rendered in advanced slots\nexport function getNormalizedVNodes (vnodes) {\n const children = new Set()\n\n vnodes.forEach(vnode => {\n fillNormalizedVNodes(children, vnode)\n })\n\n return Array.from(children)\n}\n\nexport function vmHasRouter (vm) {\n return vm.appContext.config.globalProperties.$router !== void 0\n}\n\nexport function vmIsDestroyed (vm) {\n return vm.isUnmounted === true || vm.isDeactivated === true\n}\n","import { h, ref, computed, getCurrentInstance, toRaw } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\nimport useRefocusTarget from '../../composables/private/use-refocus-target.js'\nimport { useFormInject, useFormProps } from '../../composables/private/use-form.js'\n\nimport optionSizes from '../../utils/private/option-sizes.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { hSlot, hMergeSlot } from '../../utils/private/render.js'\n\nexport const useCheckboxProps = {\n ...useDarkProps,\n ...useSizeProps,\n ...useFormProps,\n\n modelValue: {\n required: true,\n default: null\n },\n val: {},\n\n trueValue: { default: true },\n falseValue: { default: false },\n indeterminateValue: { default: null },\n\n checkedIcon: String,\n uncheckedIcon: String,\n indeterminateIcon: String,\n\n toggleOrder: {\n type: String,\n validator: v => v === 'tf' || v === 'ft'\n },\n toggleIndeterminate: Boolean,\n\n label: String,\n leftLabel: Boolean,\n\n color: String,\n keepColor: Boolean,\n dense: Boolean,\n\n disable: Boolean,\n tabindex: [ String, Number ]\n}\n\nexport const useCheckboxEmits = [ 'update:modelValue' ]\n\nexport default function (type, getInner) {\n const { props, slots, emit, proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const isDark = useDark(props, $q)\n\n const rootRef = ref(null)\n const { refocusTargetEl, refocusTarget } = useRefocusTarget(props, rootRef)\n const sizeStyle = useSize(props, optionSizes)\n\n const modelIsArray = computed(() =>\n props.val !== void 0 && Array.isArray(props.modelValue)\n )\n\n const index = computed(() => {\n const val = toRaw(props.val)\n return modelIsArray.value === true\n ? props.modelValue.findIndex(opt => toRaw(opt) === val)\n : -1\n })\n\n const isTrue = computed(() => (\n modelIsArray.value === true\n ? index.value > -1\n : toRaw(props.modelValue) === toRaw(props.trueValue)\n ))\n\n const isFalse = computed(() => (\n modelIsArray.value === true\n ? index.value === -1\n : toRaw(props.modelValue) === toRaw(props.falseValue)\n ))\n\n const isIndeterminate = computed(() =>\n isTrue.value === false && isFalse.value === false\n )\n\n const tabindex = computed(() => (\n props.disable === true ? -1 : props.tabindex || 0\n ))\n\n const classes = computed(() =>\n `q-${ type } cursor-pointer no-outline row inline no-wrap items-center`\n + (props.disable === true ? ' disabled' : '')\n + (isDark.value === true ? ` q-${ type }--dark` : '')\n + (props.dense === true ? ` q-${ type }--dense` : '')\n + (props.leftLabel === true ? ' reverse' : '')\n )\n\n const innerClass = computed(() => {\n const state = isTrue.value === true ? 'truthy' : (isFalse.value === true ? 'falsy' : 'indet')\n const color = props.color !== void 0 && (\n props.keepColor === true\n || (type === 'toggle' ? isTrue.value === true : isFalse.value !== true)\n )\n ? ` text-${ props.color }`\n : ''\n\n return `q-${ type }__inner relative-position non-selectable q-${ type }__inner--${ state }${ color }`\n })\n\n const formAttrs = computed(() => {\n const prop = { type: 'checkbox' }\n\n props.name !== void 0 && Object.assign(prop, {\n '^checked': isTrue.value === true ? 'checked' : void 0,\n name: props.name,\n value: modelIsArray.value === true\n ? props.val\n : props.trueValue\n })\n\n return prop\n })\n\n const injectFormInput = useFormInject(formAttrs)\n\n const attributes = computed(() => {\n const attrs = {\n tabindex: tabindex.value,\n role: type === 'toggle' ? 'switch' : 'checkbox',\n 'aria-label': props.label,\n 'aria-checked': isIndeterminate.value === true\n ? 'mixed'\n : (isTrue.value === true ? 'true' : 'false')\n }\n\n if (props.disable === true) {\n attrs[ 'aria-disabled' ] = 'true'\n }\n\n return attrs\n })\n\n function onClick (e) {\n if (e !== void 0) {\n stopAndPrevent(e)\n refocusTarget(e)\n }\n\n if (props.disable !== true) {\n emit('update:modelValue', getNextValue(), e)\n }\n }\n\n function getNextValue () {\n if (modelIsArray.value === true) {\n if (isTrue.value === true) {\n const val = props.modelValue.slice()\n val.splice(index.value, 1)\n return val\n }\n\n return props.modelValue.concat([ props.val ])\n }\n\n if (isTrue.value === true) {\n if (props.toggleOrder !== 'ft' || props.toggleIndeterminate === false) {\n return props.falseValue\n }\n }\n else if (isFalse.value === true) {\n if (props.toggleOrder === 'ft' || props.toggleIndeterminate === false) {\n return props.trueValue\n }\n }\n else {\n return props.toggleOrder !== 'ft'\n ? props.trueValue\n : props.falseValue\n }\n\n return props.indeterminateValue\n }\n\n function onKeydown (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n stopAndPrevent(e)\n }\n }\n\n function onKeyup (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n onClick(e)\n }\n }\n\n const getInnerContent = getInner(isTrue, isIndeterminate)\n\n // expose public methods\n Object.assign(proxy, { toggle: onClick })\n\n return () => {\n const inner = getInnerContent()\n\n props.disable !== true && injectFormInput(\n inner,\n 'unshift',\n ` q-${ type }__native absolute q-ma-none q-pa-none`\n )\n\n const child = [\n h('div', {\n class: innerClass.value,\n style: sizeStyle.value,\n 'aria-hidden': 'true'\n }, inner)\n ]\n\n if (refocusTargetEl.value !== null) {\n child.push(refocusTargetEl.value)\n }\n\n const label = props.label !== void 0\n ? hMergeSlot(slots.default, [ props.label ])\n : hSlot(slots.default)\n\n label !== void 0 && child.push(\n h('div', {\n class: `q-${ type }__label q-anchor--skip`\n }, label)\n )\n\n return h('div', {\n ref: rootRef,\n class: classes.value,\n ...attributes.value,\n onClick,\n onKeydown,\n onKeyup\n }, child)\n }\n}\n","import { h, withDirectives } from 'vue'\n\nexport function hSlot (slot, otherwise) {\n return slot !== void 0\n ? slot() || otherwise\n : otherwise\n}\n\nexport function hUniqueSlot (slot, otherwise) {\n if (slot !== void 0) {\n const vnode = slot()\n if (vnode !== void 0 && vnode !== null) {\n return vnode.slice()\n }\n }\n\n return otherwise\n}\n\n/**\n * Source definitely exists,\n * so it's merged with the possible slot\n */\nexport function hMergeSlot (slot, source) {\n return slot !== void 0\n ? source.concat(slot())\n : source\n}\n\n/**\n * Merge with possible slot,\n * even if source might not exist\n */\nexport function hMergeSlotSafely (slot, source) {\n if (slot === void 0) {\n return source\n }\n\n return source !== void 0\n ? source.concat(slot())\n : slot()\n}\n\n/*\n * (String) key - unique vnode key\n * (Boolean) condition - should change ONLY when adding/removing directive\n */\nexport function hDir (\n tag,\n data,\n children,\n key,\n condition,\n getDirsFn\n) {\n data.key = key + condition\n\n const vnode = h(tag, data, children)\n\n return condition === true\n ? withDirectives(vnode, getDirsFn())\n : vnode\n}\n","\nimport { reactive } from 'vue'\nimport { injectProp } from './inject-obj-prop'\n\nexport default __QUASAR_SSR_SERVER__\n ? (state, plugin) => {\n Object.assign(plugin, state)\n return plugin\n }\n : (state, plugin) => {\n const reactiveState = reactive(state)\n\n for (const name in state) {\n injectProp(\n plugin,\n name,\n () => reactiveState[ name ],\n val => { reactiveState[ name ] = val }\n )\n }\n\n return plugin\n }\n","/*\n * Inspired by RouterLink from Vue Router\n * --> API should match!\n */\n\nimport { computed, getCurrentInstance } from 'vue'\n\nimport { vmHasRouter } from '../../utils/private/vm.js'\n\n// Get the original path value of a record by following its aliasOf\nfunction getOriginalPath (record) {\n return record\n ? (\n record.aliasOf\n ? record.aliasOf.path\n : record.path\n ) : ''\n}\n\nfunction isSameRouteRecord (a, b) {\n // since the original record has an undefined value for aliasOf\n // but all aliases point to the original record, this will always compare\n // the original record\n return (a.aliasOf || a) === (b.aliasOf || b)\n}\n\nfunction includesParams (outer, inner) {\n for (const key in inner) {\n const\n innerValue = inner[ key ],\n outerValue = outer[ key ]\n\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue) {\n return false\n }\n }\n else if (\n Array.isArray(outerValue) === false\n || outerValue.length !== innerValue.length\n || innerValue.some((value, i) => value !== outerValue[ i ])\n ) {\n return false\n }\n }\n\n return true\n}\n\nfunction isEquivalentArray (a, b) {\n return Array.isArray(b) === true\n ? a.length === b.length && a.every((value, i) => value === b[ i ])\n : a.length === 1 && a[ 0 ] === b\n}\n\nfunction isSameRouteLocationParamsValue (a, b) {\n return Array.isArray(a) === true\n ? isEquivalentArray(a, b)\n : (\n Array.isArray(b) === true\n ? isEquivalentArray(b, a)\n : a === b\n )\n}\n\nfunction isSameRouteLocationParams (a, b) {\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n\n for (const key in a) {\n if (isSameRouteLocationParamsValue(a[ key ], b[ key ]) === false) {\n return false\n }\n }\n\n return true\n}\n\nexport const useRouterLinkProps = {\n // router-link\n to: [ String, Object ],\n replace: Boolean,\n exact: Boolean,\n activeClass: {\n type: String,\n default: 'q-router-link--active'\n },\n exactActiveClass: {\n type: String,\n default: 'q-router-link--exact-active'\n },\n\n // regular link\n href: String,\n target: String,\n\n // state\n disable: Boolean\n}\n\n// external props: type, tag\n\nexport default function ({ fallbackTag, useDisableForRouterLinkProps = true } = {}) {\n const vm = getCurrentInstance()\n const { props, proxy, emit } = vm\n\n const hasRouter = vmHasRouter(vm)\n const hasHrefLink = computed(() => props.disable !== true && props.href !== void 0)\n\n // for perf reasons, we use minimum amount of runtime work\n const hasRouterLinkProps = useDisableForRouterLinkProps === true\n ? computed(() =>\n hasRouter === true\n && props.disable !== true\n && hasHrefLink.value !== true\n && props.to !== void 0 && props.to !== null && props.to !== ''\n )\n : computed(() =>\n hasRouter === true\n && hasHrefLink.value !== true\n && props.to !== void 0 && props.to !== null && props.to !== ''\n )\n\n const resolvedLink = computed(() => (\n hasRouterLinkProps.value === true\n ? getLink(props.to)\n : null\n ))\n\n const hasRouterLink = computed(() => resolvedLink.value !== null)\n const hasLink = computed(() => hasHrefLink.value === true || hasRouterLink.value === true)\n\n const linkTag = computed(() => (\n props.type === 'a' || hasLink.value === true\n ? 'a'\n : (props.tag || fallbackTag || 'div')\n ))\n\n const linkAttrs = computed(() => (\n hasHrefLink.value === true\n ? {\n href: props.href,\n target: props.target\n }\n : (\n hasRouterLink.value === true\n ? {\n href: resolvedLink.value.href,\n target: props.target\n }\n : {}\n )\n ))\n\n const linkActiveIndex = computed(() => {\n if (hasRouterLink.value === false) {\n return -1\n }\n\n const\n { matched } = resolvedLink.value,\n { length } = matched,\n routeMatched = matched[ length - 1 ]\n\n if (routeMatched === void 0) {\n return -1\n }\n\n const currentMatched = proxy.$route.matched\n\n if (currentMatched.length === 0) {\n return -1\n }\n\n const index = currentMatched.findIndex(\n isSameRouteRecord.bind(null, routeMatched)\n )\n\n if (index > -1) {\n return index\n }\n\n // possible parent record\n const parentRecordPath = getOriginalPath(matched[ length - 2 ])\n\n return (\n // we are dealing with nested routes\n length > 1\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n && getOriginalPath(routeMatched) === parentRecordPath\n // avoid comparing the child with its parent\n && currentMatched[ currentMatched.length - 1 ].path !== parentRecordPath\n ? currentMatched.findIndex(\n isSameRouteRecord.bind(null, matched[ length - 2 ])\n )\n : index\n )\n })\n\n const linkIsActive = computed(() =>\n hasRouterLink.value === true\n && linkActiveIndex.value !== -1\n && includesParams(proxy.$route.params, resolvedLink.value.params)\n )\n\n const linkIsExactActive = computed(() =>\n linkIsActive.value === true\n && linkActiveIndex.value === proxy.$route.matched.length - 1\n && isSameRouteLocationParams(proxy.$route.params, resolvedLink.value.params)\n )\n\n const linkClass = computed(() => (\n hasRouterLink.value === true\n ? (\n linkIsExactActive.value === true\n ? ` ${ props.exactActiveClass } ${ props.activeClass }`\n : (\n props.exact === true\n ? ''\n : (linkIsActive.value === true ? ` ${ props.activeClass }` : '')\n )\n )\n : ''\n ))\n\n function getLink (to) {\n try { return proxy.$router.resolve(to) }\n catch (_) {}\n\n return null\n }\n\n /**\n * @returns Promise\n */\n function navigateToRouterLink (\n e,\n { returnRouterError, to = props.to, replace = props.replace } = {}\n ) {\n if (props.disable === true) {\n // ensure native navigation is prevented in all cases,\n // like when useDisableForRouterLinkProps === false (QRouteTab)\n e.preventDefault()\n return Promise.resolve(false)\n }\n\n if (\n // don't redirect with control keys;\n // should match RouterLink from Vue Router\n e.metaKey || e.altKey || e.ctrlKey || e.shiftKey\n\n // don't redirect on right click\n || (e.button !== void 0 && e.button !== 0)\n\n // don't redirect if it should open in a new window\n || props.target === '_blank'\n ) {\n return Promise.resolve(false)\n }\n\n // hinder the native navigation\n e.preventDefault()\n\n // then() can also return a \"soft\" router error (Vue Router behavior)\n const promise = proxy.$router[ replace === true ? 'replace' : 'push' ](to)\n\n return returnRouterError === true\n ? promise\n // else catching hard errors and also \"soft\" ones - then(err => ...)\n : promise.then(() => {}).catch(() => {})\n }\n\n // warning! ensure that the component using it has 'click' included in its 'emits' definition prop\n function navigateOnClick (e) {\n if (hasRouterLink.value === true) {\n const go = opts => navigateToRouterLink(e, opts)\n\n emit('click', e, go)\n e.defaultPrevented !== true && go()\n }\n else {\n emit('click', e)\n }\n }\n\n return {\n hasRouterLink,\n hasHrefLink,\n hasLink,\n\n linkTag,\n resolvedLink,\n linkIsActive,\n linkIsExactActive,\n linkClass,\n linkAttrs,\n\n getLink,\n navigateToRouterLink,\n navigateOnClick\n }\n}\n","import { watch, nextTick, onMounted, getCurrentInstance } from 'vue'\n\nimport { vmHasRouter } from '../../utils/private/vm.js'\n\nexport const useModelToggleProps = {\n modelValue: {\n type: Boolean,\n default: null\n },\n\n 'onUpdate:modelValue': [ Function, Array ]\n}\n\nexport const useModelToggleEmits = [\n 'beforeShow', 'show', 'beforeHide', 'hide'\n]\n\n// handleShow/handleHide -> removeTick(), self (& emit show)\n\nexport default function ({\n showing,\n canShow, // optional\n hideOnRouteChange, // optional\n handleShow, // optional\n handleHide, // optional\n processOnMount // optional\n}) {\n const vm = getCurrentInstance()\n const { props, emit, proxy } = vm\n\n let payload\n\n function toggle (evt) {\n if (showing.value === true) {\n hide(evt)\n }\n else {\n show(evt)\n }\n }\n\n function show (evt) {\n if (\n props.disable === true\n || (evt !== void 0 && evt.qAnchorHandled === true)\n || (canShow !== void 0 && canShow(evt) !== true)\n ) {\n return\n }\n\n const listener = props[ 'onUpdate:modelValue' ] !== void 0\n\n if (listener === true && __QUASAR_SSR_SERVER__ !== true) {\n emit('update:modelValue', true)\n payload = evt\n nextTick(() => {\n if (payload === evt) {\n payload = void 0\n }\n })\n }\n\n if (props.modelValue === null || listener === false || __QUASAR_SSR_SERVER__) {\n processShow(evt)\n }\n }\n\n function processShow (evt) {\n if (showing.value === true) {\n return\n }\n\n showing.value = true\n\n emit('beforeShow', evt)\n\n if (handleShow !== void 0) {\n handleShow(evt)\n }\n else {\n emit('show', evt)\n }\n }\n\n function hide (evt) {\n if (__QUASAR_SSR_SERVER__ || props.disable === true) {\n return\n }\n\n const listener = props[ 'onUpdate:modelValue' ] !== void 0\n\n if (listener === true && __QUASAR_SSR_SERVER__ !== true) {\n emit('update:modelValue', false)\n payload = evt\n nextTick(() => {\n if (payload === evt) {\n payload = void 0\n }\n })\n }\n\n if (props.modelValue === null || listener === false || __QUASAR_SSR_SERVER__) {\n processHide(evt)\n }\n }\n\n function processHide (evt) {\n if (showing.value === false) {\n return\n }\n\n showing.value = false\n\n emit('beforeHide', evt)\n\n if (handleHide !== void 0) {\n handleHide(evt)\n }\n else {\n emit('hide', evt)\n }\n }\n\n function processModelChange (val) {\n if (props.disable === true && val === true) {\n if (props[ 'onUpdate:modelValue' ] !== void 0) {\n emit('update:modelValue', false)\n }\n }\n else if ((val === true) !== showing.value) {\n const fn = val === true ? processShow : processHide\n fn(payload)\n }\n }\n\n watch(() => props.modelValue, processModelChange)\n\n if (hideOnRouteChange !== void 0 && vmHasRouter(vm) === true) {\n watch(() => proxy.$route.fullPath, () => {\n if (hideOnRouteChange.value === true && showing.value === true) {\n hide()\n }\n })\n }\n\n processOnMount === true && onMounted(() => {\n processModelChange(props.modelValue)\n })\n\n // expose public methods\n const publicMethods = { show, hide, toggle }\n Object.assign(proxy, publicMethods)\n\n return publicMethods\n}\n","import { client } from '../../plugins/Platform.js'\n\nconst handlers = []\n\nfunction trigger (e) {\n handlers[ handlers.length - 1 ](e)\n}\n\nexport function addFocusout (fn) {\n if (client.is.desktop === true) {\n handlers.push(fn)\n\n if (handlers.length === 1) {\n document.body.addEventListener('focusin', trigger)\n }\n }\n}\n\nexport function removeFocusout (fn) {\n const index = handlers.indexOf(fn)\n if (index > -1) {\n handlers.splice(index, 1)\n\n if (handlers.length === 0) {\n document.body.removeEventListener('focusin', trigger)\n }\n }\n}\n","export const listenOpts = {\n hasPassive: false,\n passiveCapture: true,\n notPassiveCapture: true\n}\n\ntry {\n const opts = Object.defineProperty({}, 'passive', {\n get () {\n Object.assign(listenOpts, {\n hasPassive: true,\n passive: { passive: true },\n notPassive: { passive: false },\n passiveCapture: { passive: true, capture: true },\n notPassiveCapture: { passive: false, capture: true }\n })\n }\n })\n window.addEventListener('qtest', null, opts)\n window.removeEventListener('qtest', null, opts)\n}\ncatch (e) {}\n\nexport function noop () {}\n\nexport function leftClick (e) {\n return e.button === 0\n}\n\nexport function middleClick (e) {\n return e.button === 1\n}\n\nexport function rightClick (e) {\n return e.button === 2\n}\n\nexport function position (e) {\n if (e.touches && e.touches[ 0 ]) {\n e = e.touches[ 0 ]\n }\n else if (e.changedTouches && e.changedTouches[ 0 ]) {\n e = e.changedTouches[ 0 ]\n }\n else if (e.targetTouches && e.targetTouches[ 0 ]) {\n e = e.targetTouches[ 0 ]\n }\n\n return {\n top: e.clientY,\n left: e.clientX\n }\n}\n\nexport function getEventPath (e) {\n if (e.path) {\n return e.path\n }\n if (e.composedPath) {\n return e.composedPath()\n }\n\n const path = []\n let el = e.target\n\n while (el) {\n path.push(el)\n\n if (el.tagName === 'HTML') {\n path.push(document)\n path.push(window)\n return path\n }\n\n el = el.parentElement\n }\n}\n\n// Reasonable defaults\nconst\n LINE_HEIGHT = 40,\n PAGE_HEIGHT = 800\n\nexport function getMouseWheelDistance (e) {\n let x = e.deltaX, y = e.deltaY\n\n if ((x || y) && e.deltaMode) {\n const multiplier = e.deltaMode === 1 ? LINE_HEIGHT : PAGE_HEIGHT\n x *= multiplier\n y *= multiplier\n }\n\n if (e.shiftKey && !x) {\n [ y, x ] = [ x, y ]\n }\n\n return { x, y }\n}\n\nexport function stop (e) {\n e.stopPropagation()\n}\n\nexport function prevent (e) {\n e.cancelable !== false && e.preventDefault()\n}\n\nexport function stopAndPrevent (e) {\n e.cancelable !== false && e.preventDefault()\n e.stopPropagation()\n}\n\nexport function preventDraggable (el, status) {\n if (el === void 0 || (status === true && el.__dragPrevented === true)) {\n return\n }\n\n const fn = status === true\n ? el => {\n el.__dragPrevented = true\n el.addEventListener('dragstart', prevent, listenOpts.notPassiveCapture)\n }\n : el => {\n delete el.__dragPrevented\n el.removeEventListener('dragstart', prevent, listenOpts.notPassiveCapture)\n }\n\n el.querySelectorAll('a, img').forEach(fn)\n}\n\nexport function addEvt (ctx, targetName, events) {\n const name = `__q_${ targetName }_evt`\n\n ctx[ name ] = ctx[ name ] !== void 0\n ? ctx[ name ].concat(events)\n : events\n\n events.forEach(evt => {\n evt[ 0 ].addEventListener(evt[ 1 ], ctx[ evt[ 2 ] ], listenOpts[ evt[ 3 ] ])\n })\n}\n\nexport function cleanEvt (ctx, targetName) {\n const name = `__q_${ targetName }_evt`\n\n if (ctx[ name ] !== void 0) {\n ctx[ name ].forEach(evt => {\n evt[ 0 ].removeEventListener(evt[ 1 ], ctx[ evt[ 2 ] ], listenOpts[ evt[ 3 ] ])\n })\n ctx[ name ] = void 0\n }\n}\n\n/*\n * also update /types/utils/event.d.ts\n */\n\nexport default {\n listenOpts,\n leftClick,\n middleClick,\n rightClick,\n position,\n getEventPath,\n getMouseWheelDistance,\n stop,\n prevent,\n stopAndPrevent,\n preventDraggable\n}\n","let lastKeyCompositionStatus = false\n\nexport function onKeyDownComposition (evt) {\n lastKeyCompositionStatus = evt.isComposing === true\n}\n\nexport function shouldIgnoreKey (evt) {\n return lastKeyCompositionStatus === true\n || evt !== Object(evt)\n || evt.isComposing === true\n || evt.qKeyEvent === true\n}\n\nexport function isKeyCode (evt, keyCodes) {\n return shouldIgnoreKey(evt) === true\n ? false\n : [].concat(keyCodes).includes(evt.keyCode)\n}\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport Ripple from '../../directives/Ripple.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { hMergeSlotSafely, hDir } from '../../utils/private/render.js'\n\nexport const defaultSizes = {\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n}\n\nexport default createComponent({\n name: 'QChip',\n\n props: {\n ...useDarkProps,\n ...useSizeProps,\n\n dense: Boolean,\n\n icon: String,\n iconRight: String,\n iconRemove: String,\n iconSelected: String,\n label: [ String, Number ],\n\n color: String,\n textColor: String,\n\n modelValue: {\n type: Boolean,\n default: true\n },\n selected: {\n type: Boolean,\n default: null\n },\n\n square: Boolean,\n outline: Boolean,\n clickable: Boolean,\n removable: Boolean,\n\n removeAriaLabel: String,\n\n tabindex: [ String, Number ],\n disable: Boolean,\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n }\n },\n\n emits: [ 'update:modelValue', 'update:selected', 'remove', 'click' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const isDark = useDark(props, $q)\n const sizeStyle = useSize(props, defaultSizes)\n\n const hasLeftIcon = computed(() => props.selected === true || props.icon !== void 0)\n\n const leftIcon = computed(() => (\n props.selected === true\n ? props.iconSelected || $q.iconSet.chip.selected\n : props.icon\n ))\n\n const removeIcon = computed(() => props.iconRemove || $q.iconSet.chip.remove)\n\n const isClickable = computed(() =>\n props.disable === false\n && (props.clickable === true || props.selected !== null)\n )\n\n const classes = computed(() => {\n const text = props.outline === true\n ? props.color || props.textColor\n : props.textColor\n\n return 'q-chip row inline no-wrap items-center'\n + (props.outline === false && props.color !== void 0 ? ` bg-${ props.color }` : '')\n + (text ? ` text-${ text } q-chip--colored` : '')\n + (props.disable === true ? ' disabled' : '')\n + (props.dense === true ? ' q-chip--dense' : '')\n + (props.outline === true ? ' q-chip--outline' : '')\n + (props.selected === true ? ' q-chip--selected' : '')\n + (isClickable.value === true ? ' q-chip--clickable cursor-pointer non-selectable q-hoverable' : '')\n + (props.square === true ? ' q-chip--square' : '')\n + (isDark.value === true ? ' q-chip--dark q-dark' : '')\n })\n\n const attributes = computed(() => {\n const chip = props.disable === true\n ? { tabindex: -1, 'aria-disabled': 'true' }\n : { tabindex: props.tabindex || 0 }\n const remove = {\n ...chip,\n role: 'button',\n 'aria-hidden': 'false',\n 'aria-label': props.removeAriaLabel || $q.lang.label.remove\n }\n\n return { chip, remove }\n })\n\n function onKeyup (e) {\n e.keyCode === 13 /* ENTER */ && onClick(e)\n }\n\n function onClick (e) {\n if (!props.disable) {\n emit('update:selected', !props.selected)\n emit('click', e)\n }\n }\n\n function onRemove (e) {\n if (e.keyCode === void 0 || e.keyCode === 13) {\n stopAndPrevent(e)\n if (props.disable === false) {\n emit('update:modelValue', false)\n emit('remove')\n }\n }\n }\n\n function getContent () {\n const child = []\n\n isClickable.value === true && child.push(\n h('div', { class: 'q-focus-helper' })\n )\n\n hasLeftIcon.value === true && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--left',\n name: leftIcon.value\n })\n )\n\n const label = props.label !== void 0\n ? [ h('div', { class: 'ellipsis' }, [ props.label ]) ]\n : void 0\n\n child.push(\n h('div', {\n class: 'q-chip__content col row no-wrap items-center q-anchor--skip'\n }, hMergeSlotSafely(slots.default, label))\n )\n\n props.iconRight && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--right',\n name: props.iconRight\n })\n )\n\n props.removable === true && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--remove cursor-pointer',\n name: removeIcon.value,\n ...attributes.value.remove,\n onClick: onRemove,\n onKeyup: onRemove\n })\n )\n\n return child\n }\n\n return () => {\n if (props.modelValue === false) { return }\n\n const data = {\n class: classes.value,\n style: sizeStyle.value\n }\n\n isClickable.value === true && Object.assign(\n data,\n attributes.value.chip,\n { onClick, onKeyup }\n )\n\n return hDir(\n 'div',\n data,\n getContent(),\n 'ripple',\n props.ripple !== false && props.disable !== true,\n () => [ [ Ripple, props.ripple ] ]\n )\n }\n }\n})\n","import { h, ref, computed, watch, onActivated, onDeactivated, onBeforeMount, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport debounce from '../../utils/debounce.js'\nimport { noop } from '../../utils/event.js'\nimport { rtlHasScrollBug } from '../../utils/private/rtl.js'\n\nconst aggBucketSize = 1000\n\nconst scrollToEdges = [\n 'start',\n 'center',\n 'end',\n 'start-force',\n 'center-force',\n 'end-force'\n]\n\nconst filterProto = Array.prototype.filter\n\nconst setOverflowAnchor = __QUASAR_SSR__ || window.getComputedStyle(document.body).overflowAnchor === void 0\n ? noop\n : function (contentEl, index) {\n if (contentEl === null) {\n return\n }\n\n cancelAnimationFrame(contentEl._qOverflowAnimationFrame)\n contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {\n if (contentEl === null) {\n return\n }\n\n const children = contentEl.children || []\n\n filterProto\n .call(children, el => el.dataset && el.dataset.qVsAnchor !== void 0)\n .forEach(el => {\n delete el.dataset.qVsAnchor\n })\n\n const el = children[ index ]\n\n if (el && el.dataset) {\n el.dataset.qVsAnchor = ''\n }\n })\n }\n\nfunction sumFn (acc, h) {\n return acc + h\n}\n\nfunction getScrollDetails (\n parent,\n child,\n beforeRef,\n afterRef,\n horizontal,\n rtl,\n stickyStart,\n stickyEnd\n) {\n const\n parentCalc = parent === window ? document.scrollingElement || document.documentElement : parent,\n propElSize = horizontal === true ? 'offsetWidth' : 'offsetHeight',\n details = {\n scrollStart: 0,\n scrollViewSize: -stickyStart - stickyEnd,\n scrollMaxSize: 0,\n offsetStart: -stickyStart,\n offsetEnd: -stickyEnd\n }\n\n if (horizontal === true) {\n if (parent === window) {\n details.scrollStart = window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n details.scrollViewSize += document.documentElement.clientWidth\n }\n else {\n details.scrollStart = parentCalc.scrollLeft\n details.scrollViewSize += parentCalc.clientWidth\n }\n details.scrollMaxSize = parentCalc.scrollWidth\n\n if (rtl === true) {\n details.scrollStart = (rtlHasScrollBug === true ? details.scrollMaxSize - details.scrollViewSize : 0) - details.scrollStart\n }\n }\n else {\n if (parent === window) {\n details.scrollStart = window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n details.scrollViewSize += document.documentElement.clientHeight\n }\n else {\n details.scrollStart = parentCalc.scrollTop\n details.scrollViewSize += parentCalc.clientHeight\n }\n details.scrollMaxSize = parentCalc.scrollHeight\n }\n\n if (beforeRef !== null) {\n for (let el = beforeRef.previousElementSibling; el !== null; el = el.previousElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetStart += el[ propElSize ]\n }\n }\n }\n\n if (afterRef !== null) {\n for (let el = afterRef.nextElementSibling; el !== null; el = el.nextElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetEnd += el[ propElSize ]\n }\n }\n }\n\n if (child !== parent) {\n const\n parentRect = parentCalc.getBoundingClientRect(),\n childRect = child.getBoundingClientRect()\n\n if (horizontal === true) {\n details.offsetStart += childRect.left - parentRect.left\n details.offsetEnd -= childRect.width\n }\n else {\n details.offsetStart += childRect.top - parentRect.top\n details.offsetEnd -= childRect.height\n }\n\n if (parent !== window) {\n details.offsetStart += details.scrollStart\n }\n details.offsetEnd += details.scrollMaxSize - details.offsetStart\n }\n\n return details\n}\n\nfunction setScroll (parent, scroll, horizontal, rtl) {\n if (scroll === 'end') {\n scroll = (parent === window ? document.body : parent)[\n horizontal === true ? 'scrollWidth' : 'scrollHeight'\n ]\n }\n\n if (parent === window) {\n if (horizontal === true) {\n if (rtl === true) {\n scroll = (rtlHasScrollBug === true ? document.body.scrollWidth - document.documentElement.clientWidth : 0) - scroll\n }\n window.scrollTo(scroll, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n }\n else {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, scroll)\n }\n }\n else if (horizontal === true) {\n if (rtl === true) {\n scroll = (rtlHasScrollBug === true ? parent.scrollWidth - parent.offsetWidth : 0) - scroll\n }\n parent.scrollLeft = scroll\n }\n else {\n parent.scrollTop = scroll\n }\n}\n\nfunction sumSize (sizeAgg, size, from, to) {\n if (from >= to) { return 0 }\n\n const\n lastTo = size.length,\n fromAgg = Math.floor(from / aggBucketSize),\n toAgg = Math.floor((to - 1) / aggBucketSize) + 1\n\n let total = sizeAgg.slice(fromAgg, toAgg).reduce(sumFn, 0)\n\n if (from % aggBucketSize !== 0) {\n total -= size.slice(fromAgg * aggBucketSize, from).reduce(sumFn, 0)\n }\n if (to % aggBucketSize !== 0 && to !== lastTo) {\n total -= size.slice(to, toAgg * aggBucketSize).reduce(sumFn, 0)\n }\n\n return total\n}\n\nconst commonVirtScrollProps = {\n virtualScrollSliceSize: {\n type: [ Number, String ],\n default: null\n },\n\n virtualScrollSliceRatioBefore: {\n type: [ Number, String ],\n default: 1\n },\n\n virtualScrollSliceRatioAfter: {\n type: [ Number, String ],\n default: 1\n },\n\n virtualScrollItemSize: {\n type: [ Number, String ],\n default: 24\n },\n\n virtualScrollStickySizeStart: {\n type: [ Number, String ],\n default: 0\n },\n\n virtualScrollStickySizeEnd: {\n type: [ Number, String ],\n default: 0\n },\n\n tableColspan: [ Number, String ]\n}\n\nexport const commonVirtPropsList = Object.keys(commonVirtScrollProps)\n\nexport const useVirtualScrollProps = {\n virtualScrollHorizontal: Boolean,\n onVirtualScroll: Function,\n ...commonVirtScrollProps\n}\n\nexport function useVirtualScroll ({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl,\n virtualScrollItemSizeComputed // optional\n}) {\n const vm = getCurrentInstance()\n\n const { props, emit, proxy } = vm\n const { $q } = proxy\n\n let prevScrollStart, prevToIndex, localScrollViewSize, virtualScrollSizesAgg = [], virtualScrollSizes\n\n const virtualScrollPaddingBefore = ref(0)\n const virtualScrollPaddingAfter = ref(0)\n const virtualScrollSliceSizeComputed = ref({})\n\n const beforeRef = ref(null)\n const afterRef = ref(null)\n const contentRef = ref(null)\n\n const virtualScrollSliceRange = ref({ from: 0, to: 0 })\n\n const colspanAttr = computed(() => (props.tableColspan !== void 0 ? props.tableColspan : 100))\n\n if (virtualScrollItemSizeComputed === void 0) {\n virtualScrollItemSizeComputed = computed(() => props.virtualScrollItemSize)\n }\n\n const needsReset = computed(() => virtualScrollItemSizeComputed.value + ';' + props.virtualScrollHorizontal)\n\n const needsSliceRecalc = computed(() =>\n needsReset.value + ';' + props.virtualScrollSliceRatioBefore + ';' + props.virtualScrollSliceRatioAfter\n )\n\n watch(needsSliceRecalc, () => { setVirtualScrollSize() })\n watch(needsReset, reset)\n\n function reset () {\n localResetVirtualScroll(prevToIndex, true)\n }\n\n function refresh (toIndex) {\n localResetVirtualScroll(toIndex === void 0 ? prevToIndex : toIndex)\n }\n\n function scrollTo (toIndex, edge) {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const scrollDetails = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n )\n\n localScrollViewSize !== scrollDetails.scrollViewSize && setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n Math.min(virtualScrollLength.value - 1, Math.max(0, parseInt(toIndex, 10) || 0)),\n 0,\n scrollToEdges.indexOf(edge) > -1 ? edge : (prevToIndex > -1 && toIndex > prevToIndex ? 'end' : 'start')\n )\n }\n\n function localOnVirtualScrollEvt () {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const\n scrollDetails = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n ),\n listLastIndex = virtualScrollLength.value - 1,\n listEndOffset = scrollDetails.scrollMaxSize - scrollDetails.offsetStart - scrollDetails.offsetEnd - virtualScrollPaddingAfter.value\n\n if (prevScrollStart === scrollDetails.scrollStart) {\n return\n }\n\n if (scrollDetails.scrollMaxSize <= 0) {\n setVirtualScrollSliceRange(scrollEl, scrollDetails, 0, 0)\n return\n }\n\n localScrollViewSize !== scrollDetails.scrollViewSize && setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n updateVirtualScrollSizes(virtualScrollSliceRange.value.from)\n\n const scrollMaxStart = Math.floor(scrollDetails.scrollMaxSize\n - Math.max(scrollDetails.scrollViewSize, scrollDetails.offsetEnd)\n - Math.min(virtualScrollSizes[ listLastIndex ], scrollDetails.scrollViewSize / 2))\n\n if (scrollMaxStart > 0 && Math.ceil(scrollDetails.scrollStart) >= scrollMaxStart) {\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n listLastIndex,\n scrollDetails.scrollMaxSize - scrollDetails.offsetEnd - virtualScrollSizesAgg.reduce(sumFn, 0)\n )\n\n return\n }\n\n let\n toIndex = 0,\n listOffset = scrollDetails.scrollStart - scrollDetails.offsetStart,\n offset = listOffset\n\n if (listOffset <= listEndOffset && listOffset + scrollDetails.scrollViewSize >= virtualScrollPaddingBefore.value) {\n listOffset -= virtualScrollPaddingBefore.value\n toIndex = virtualScrollSliceRange.value.from\n offset = listOffset\n }\n else {\n for (let j = 0; listOffset >= virtualScrollSizesAgg[ j ] && toIndex < listLastIndex; j++) {\n listOffset -= virtualScrollSizesAgg[ j ]\n toIndex += aggBucketSize\n }\n }\n\n while (listOffset > 0 && toIndex < listLastIndex) {\n listOffset -= virtualScrollSizes[ toIndex ]\n if (listOffset > -scrollDetails.scrollViewSize) {\n toIndex++\n offset = listOffset\n }\n else {\n offset = virtualScrollSizes[ toIndex ] + listOffset\n }\n }\n\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n toIndex,\n offset\n )\n }\n\n function setVirtualScrollSliceRange (scrollEl, scrollDetails, toIndex, offset, align) {\n const alignForce = typeof align === 'string' && align.indexOf('-force') > -1\n const alignEnd = alignForce === true ? align.replace('-force', '') : align\n const alignRange = alignEnd !== void 0 ? alignEnd : 'start'\n\n let\n from = Math.max(0, toIndex - virtualScrollSliceSizeComputed.value[ alignRange ]),\n to = from + virtualScrollSliceSizeComputed.value.total\n\n if (to > virtualScrollLength.value) {\n to = virtualScrollLength.value\n from = Math.max(0, to - virtualScrollSliceSizeComputed.value.total)\n }\n\n prevScrollStart = scrollDetails.scrollStart\n\n const rangeChanged = from !== virtualScrollSliceRange.value.from || to !== virtualScrollSliceRange.value.to\n\n if (rangeChanged === false && alignEnd === void 0) {\n emitScroll(toIndex)\n return\n }\n\n const { activeElement } = document\n const contentEl = contentRef.value\n if (\n rangeChanged === true\n && contentEl !== null\n && contentEl !== activeElement\n && contentEl.contains(activeElement) === true\n ) {\n contentEl.addEventListener('focusout', onBlurRefocusFn)\n\n setTimeout(() => {\n contentEl !== null && contentEl.removeEventListener('focusout', onBlurRefocusFn)\n })\n }\n\n setOverflowAnchor(contentEl, toIndex - from)\n\n const sizeBefore = alignEnd !== void 0 ? virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0) : 0\n\n if (rangeChanged === true) {\n // vue key matching algorithm works only if\n // the array of VNodes changes on only one of the ends\n // so we first change one end and then the other\n\n const tempTo = to >= virtualScrollSliceRange.value.from && from <= virtualScrollSliceRange.value.to\n ? virtualScrollSliceRange.value.to\n : to\n\n virtualScrollSliceRange.value = { from, to: tempTo }\n virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, from)\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, to, virtualScrollLength.value)\n\n requestAnimationFrame(() => {\n if (virtualScrollSliceRange.value.to !== to && prevScrollStart === scrollDetails.scrollStart) {\n virtualScrollSliceRange.value = { from: virtualScrollSliceRange.value.from, to }\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, to, virtualScrollLength.value)\n }\n })\n }\n\n requestAnimationFrame(() => {\n // if the scroll was changed give up\n // (another call to setVirtualScrollSliceRange before animation frame)\n if (prevScrollStart !== scrollDetails.scrollStart) {\n return\n }\n\n if (rangeChanged === true) {\n updateVirtualScrollSizes(from)\n }\n\n const\n sizeAfter = virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0),\n posStart = sizeAfter + scrollDetails.offsetStart + virtualScrollPaddingBefore.value,\n posEnd = posStart + virtualScrollSizes[ toIndex ]\n\n let scrollPosition = posStart + offset\n\n if (alignEnd !== void 0) {\n const sizeDiff = sizeAfter - sizeBefore\n const scrollStart = scrollDetails.scrollStart + sizeDiff\n\n scrollPosition = alignForce !== true && scrollStart < posStart && posEnd < scrollStart + scrollDetails.scrollViewSize\n ? scrollStart\n : (\n alignEnd === 'end'\n ? posEnd - scrollDetails.scrollViewSize\n : posStart - (alignEnd === 'start' ? 0 : Math.round((scrollDetails.scrollViewSize - virtualScrollSizes[ toIndex ]) / 2))\n )\n }\n\n prevScrollStart = scrollPosition\n\n setScroll(\n scrollEl,\n scrollPosition,\n props.virtualScrollHorizontal,\n $q.lang.rtl\n )\n\n emitScroll(toIndex)\n })\n }\n\n function updateVirtualScrollSizes (from) {\n const contentEl = contentRef.value\n\n if (contentEl) {\n const\n children = filterProto.call(\n contentEl.children,\n el => el.classList && el.classList.contains('q-virtual-scroll--skip') === false\n ),\n childrenLength = children.length,\n sizeFn = props.virtualScrollHorizontal === true\n ? el => el.getBoundingClientRect().width\n : el => el.offsetHeight\n\n let\n index = from,\n size, diff\n\n for (let i = 0; i < childrenLength;) {\n size = sizeFn(children[ i ])\n i++\n\n while (i < childrenLength && children[ i ].classList.contains('q-virtual-scroll--with-prev') === true) {\n size += sizeFn(children[ i ])\n i++\n }\n\n diff = size - virtualScrollSizes[ index ]\n\n if (diff !== 0) {\n virtualScrollSizes[ index ] += diff\n virtualScrollSizesAgg[ Math.floor(index / aggBucketSize) ] += diff\n }\n\n index++\n }\n }\n }\n\n function onBlurRefocusFn () {\n contentRef.value !== null && contentRef.value !== void 0 && contentRef.value.focus()\n }\n\n function localResetVirtualScroll (toIndex, fullReset) {\n const defaultSize = 1 * virtualScrollItemSizeComputed.value\n\n if (fullReset === true || Array.isArray(virtualScrollSizes) === false) {\n virtualScrollSizes = []\n }\n\n const oldVirtualScrollSizesLength = virtualScrollSizes.length\n\n virtualScrollSizes.length = virtualScrollLength.value\n\n for (let i = virtualScrollLength.value - 1; i >= oldVirtualScrollSizesLength; i--) {\n virtualScrollSizes[ i ] = defaultSize\n }\n\n const jMax = Math.floor((virtualScrollLength.value - 1) / aggBucketSize)\n virtualScrollSizesAgg = []\n for (let j = 0; j <= jMax; j++) {\n let size = 0\n const iMax = Math.min((j + 1) * aggBucketSize, virtualScrollLength.value)\n for (let i = j * aggBucketSize; i < iMax; i++) {\n size += virtualScrollSizes[ i ]\n }\n virtualScrollSizesAgg.push(size)\n }\n\n prevToIndex = -1\n prevScrollStart = void 0\n\n virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, virtualScrollSliceRange.value.from)\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, virtualScrollSliceRange.value.to, virtualScrollLength.value)\n\n if (toIndex >= 0) {\n updateVirtualScrollSizes(virtualScrollSliceRange.value.from)\n nextTick(() => { scrollTo(toIndex) })\n }\n else {\n onVirtualScrollEvt()\n }\n }\n\n function setVirtualScrollSize (scrollViewSize) {\n if (scrollViewSize === void 0 && typeof window !== 'undefined') {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {\n scrollViewSize = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n ).scrollViewSize\n }\n }\n\n localScrollViewSize = scrollViewSize\n\n const virtualScrollSliceRatioBefore = parseFloat(props.virtualScrollSliceRatioBefore) || 0\n const virtualScrollSliceRatioAfter = parseFloat(props.virtualScrollSliceRatioAfter) || 0\n const multiplier = 1 + virtualScrollSliceRatioBefore + virtualScrollSliceRatioAfter\n const view = scrollViewSize === void 0 || scrollViewSize <= 0\n ? 1\n : Math.ceil(scrollViewSize / virtualScrollItemSizeComputed.value)\n\n const baseSize = Math.max(\n 1,\n view,\n Math.ceil((props.virtualScrollSliceSize > 0 ? props.virtualScrollSliceSize : 10) / multiplier)\n )\n\n virtualScrollSliceSizeComputed.value = {\n total: Math.ceil(baseSize * multiplier),\n start: Math.ceil(baseSize * virtualScrollSliceRatioBefore),\n center: Math.ceil(baseSize * (0.5 + virtualScrollSliceRatioBefore)),\n end: Math.ceil(baseSize * (1 + virtualScrollSliceRatioBefore)),\n view\n }\n }\n\n function padVirtualScroll (tag, content) {\n const paddingSize = props.virtualScrollHorizontal === true ? 'width' : 'height'\n const style = {\n [ '--q-virtual-scroll-item-' + paddingSize ]: virtualScrollItemSizeComputed.value + 'px'\n }\n\n return [\n tag === 'tbody'\n ? h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'before',\n ref: beforeRef\n }, [\n h('tr', [\n h('td', {\n style: { [ paddingSize ]: `${ virtualScrollPaddingBefore.value }px`, ...style },\n colspan: colspanAttr.value\n })\n ])\n ])\n : h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'before',\n ref: beforeRef,\n style: { [ paddingSize ]: `${ virtualScrollPaddingBefore.value }px`, ...style }\n }),\n\n h(tag, {\n class: 'q-virtual-scroll__content',\n key: 'content',\n ref: contentRef,\n tabindex: -1\n }, content.flat()),\n\n tag === 'tbody'\n ? h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'after',\n ref: afterRef\n }, [\n h('tr', [\n h('td', {\n style: { [ paddingSize ]: `${ virtualScrollPaddingAfter.value }px`, ...style },\n colspan: colspanAttr.value\n })\n ])\n ])\n : h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'after',\n ref: afterRef,\n style: { [ paddingSize ]: `${ virtualScrollPaddingAfter.value }px`, ...style }\n })\n ]\n }\n\n function emitScroll (index) {\n if (prevToIndex !== index) {\n props.onVirtualScroll !== void 0 && emit('virtualScroll', {\n index,\n from: virtualScrollSliceRange.value.from,\n to: virtualScrollSliceRange.value.to - 1,\n direction: index < prevToIndex ? 'decrease' : 'increase',\n ref: proxy\n })\n\n prevToIndex = index\n }\n }\n\n setVirtualScrollSize()\n const onVirtualScrollEvt = debounce(\n localOnVirtualScrollEvt,\n $q.platform.is.ios === true ? 120 : 35\n )\n\n onBeforeMount(() => {\n setVirtualScrollSize()\n })\n\n let shouldActivate = false\n\n onDeactivated(() => {\n shouldActivate = true\n })\n\n onActivated(() => {\n if (shouldActivate !== true) { return }\n\n const scrollEl = getVirtualScrollTarget()\n\n if (prevScrollStart !== void 0 && scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {\n setScroll(\n scrollEl,\n prevScrollStart,\n props.virtualScrollHorizontal,\n $q.lang.rtl\n )\n }\n else {\n scrollTo(prevToIndex)\n }\n })\n\n __QUASAR_SSR__ || onBeforeUnmount(() => {\n onVirtualScrollEvt.cancel()\n })\n\n // expose public methods\n Object.assign(proxy, { scrollTo, reset, refresh })\n\n return {\n virtualScrollSliceRange,\n virtualScrollSliceSizeComputed,\n\n setVirtualScrollSize,\n onVirtualScrollEvt,\n localResetVirtualScroll,\n padVirtualScroll,\n\n scrollTo,\n reset,\n refresh\n }\n}\n","import { h, ref, computed, watch, onBeforeUpdate, onUpdated, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport QField from '../field/QField.js'\nimport QIcon from '../icon/QIcon.js'\nimport QChip from '../chip/QChip.js'\n\nimport QItem from '../item/QItem.js'\nimport QItemSection from '../item/QItemSection.js'\nimport QItemLabel from '../item/QItemLabel.js'\n\nimport QMenu from '../menu/QMenu.js'\nimport QDialog from '../dialog/QDialog.js'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits, fieldValueIsFilled } from '../../composables/private/use-field.js'\nimport { useVirtualScroll, useVirtualScrollProps } from '../virtual-scroll/use-virtual-scroll.js'\nimport { useFormProps, useFormInputNameAttr } from '../../composables/private/use-form.js'\nimport useKeyComposition from '../../composables/private/use-key-composition.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { isDeepEqual } from '../../utils/is.js'\nimport { stop, prevent, stopAndPrevent } from '../../utils/event.js'\nimport { normalizeToInterval } from '../../utils/format.js'\nimport { shouldIgnoreKey, isKeyCode } from '../../utils/private/key-composition.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\n\nconst validateNewValueMode = v => [ 'add', 'add-unique', 'toggle' ].includes(v)\nconst reEscapeList = '.*+?^${}()|[]\\\\'\nconst fieldPropsList = Object.keys(useFieldProps)\n\nexport default createComponent({\n name: 'QSelect',\n\n inheritAttrs: false,\n\n props: {\n ...useVirtualScrollProps,\n ...useFormProps,\n ...useFieldProps,\n\n modelValue: {\n required: true\n },\n\n multiple: Boolean,\n\n displayValue: [ String, Number ],\n displayValueHtml: Boolean,\n dropdownIcon: String,\n\n options: {\n type: Array,\n default: () => []\n },\n\n optionValue: [ Function, String ],\n optionLabel: [ Function, String ],\n optionDisable: [ Function, String ],\n\n hideSelected: Boolean,\n hideDropdownIcon: Boolean,\n fillInput: Boolean,\n\n maxValues: [ Number, String ],\n\n optionsDense: Boolean,\n optionsDark: {\n type: Boolean,\n default: null\n },\n optionsSelectedClass: String,\n optionsHtml: Boolean,\n\n optionsCover: Boolean,\n\n menuShrink: Boolean,\n menuAnchor: String,\n menuSelf: String,\n menuOffset: Array,\n\n popupContentClass: String,\n popupContentStyle: [ String, Array, Object ],\n\n useInput: Boolean,\n useChips: Boolean,\n\n newValueMode: {\n type: String,\n validator: validateNewValueMode\n },\n\n mapOptions: Boolean,\n emitValue: Boolean,\n\n inputDebounce: {\n type: [ Number, String ],\n default: 500\n },\n\n inputClass: [ Array, String, Object ],\n inputStyle: [ Array, String, Object ],\n\n tabindex: {\n type: [ String, Number ],\n default: 0\n },\n\n autocomplete: String,\n\n transitionShow: String,\n transitionHide: String,\n transitionDuration: [ String, Number ],\n\n behavior: {\n type: String,\n validator: v => [ 'default', 'menu', 'dialog' ].includes(v),\n default: 'default'\n },\n\n virtualScrollItemSize: {\n type: [ Number, String ],\n default: void 0\n },\n\n onNewValue: Function,\n onFilter: Function\n },\n\n emits: [\n ...useFieldEmits,\n 'add', 'remove', 'inputValue', 'newValue',\n 'keyup', 'keypress', 'keydown',\n 'filterAbort'\n ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const menu = ref(false)\n const dialog = ref(false)\n const optionIndex = ref(-1)\n const inputValue = ref('')\n const dialogFieldFocused = ref(false)\n const innerLoadingIndicator = ref(false)\n\n let inputTimer, innerValueCache,\n hasDialog, userInputValue, filterId, defaultInputValue,\n transitionShowComputed, searchBuffer, searchBufferExp\n\n const inputRef = ref(null)\n const targetRef = ref(null)\n const menuRef = ref(null)\n const dialogRef = ref(null)\n const menuContentRef = ref(null)\n\n const nameProp = useFormInputNameAttr(props)\n\n const onComposition = useKeyComposition(onInput)\n\n const virtualScrollLength = computed(() => (\n Array.isArray(props.options)\n ? props.options.length\n : 0\n ))\n\n const virtualScrollItemSizeComputed = computed(() => (\n props.virtualScrollItemSize === void 0\n ? (props.optionsDense === true ? 24 : 48)\n : props.virtualScrollItemSize\n ))\n\n const {\n virtualScrollSliceRange,\n virtualScrollSliceSizeComputed,\n localResetVirtualScroll,\n padVirtualScroll,\n onVirtualScrollEvt,\n scrollTo,\n setVirtualScrollSize\n } = useVirtualScroll({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl,\n virtualScrollItemSizeComputed\n })\n\n const state = useFieldState()\n\n const innerValue = computed(() => {\n const\n mapNull = props.mapOptions === true && props.multiple !== true,\n val = props.modelValue !== void 0 && (props.modelValue !== null || mapNull === true)\n ? (props.multiple === true && Array.isArray(props.modelValue) ? props.modelValue : [ props.modelValue ])\n : []\n\n if (props.mapOptions === true && Array.isArray(props.options) === true) {\n const cache = props.mapOptions === true && innerValueCache !== void 0\n ? innerValueCache\n : []\n const values = val.map(v => getOption(v, cache))\n\n return props.modelValue === null && mapNull === true\n ? values.filter(v => v !== null)\n : values\n }\n\n return val\n })\n\n const innerFieldProps = computed(() => {\n const acc = {}\n fieldPropsList.forEach(key => {\n const val = props[ key ]\n if (val !== void 0) {\n acc[ key ] = val\n }\n })\n return acc\n })\n\n const isOptionsDark = computed(() => (\n props.optionsDark === null\n ? state.isDark.value\n : props.optionsDark\n ))\n\n const hasValue = computed(() => fieldValueIsFilled(innerValue.value))\n\n const computedInputClass = computed(() => {\n let cls = 'q-field__input q-placeholder col'\n\n if (props.hideSelected === true || innerValue.value.length === 0) {\n return [ cls, props.inputClass ]\n }\n\n cls += ' q-field__input--padding'\n\n return props.inputClass === void 0\n ? cls\n : [ cls, props.inputClass ]\n })\n\n const menuContentClass = computed(() =>\n (props.virtualScrollHorizontal === true ? 'q-virtual-scroll--horizontal' : '')\n + (props.popupContentClass ? ' ' + props.popupContentClass : '')\n )\n\n const noOptions = computed(() => virtualScrollLength.value === 0)\n\n const selectedString = computed(() =>\n innerValue.value\n .map(opt => getOptionLabel.value(opt))\n .join(', ')\n )\n\n const ariaCurrentValue = computed(() => (props.displayValue !== void 0\n ? props.displayValue\n : selectedString.value\n ))\n\n const needsHtmlFn = computed(() => (\n props.optionsHtml === true\n ? () => true\n : opt => opt !== void 0 && opt !== null && opt.html === true\n ))\n\n const valueAsHtml = computed(() => (\n props.displayValueHtml === true || (\n props.displayValue === void 0 && (\n props.optionsHtml === true\n || innerValue.value.some(needsHtmlFn.value)\n )\n )\n ))\n\n const tabindex = computed(() => (state.focused.value === true ? props.tabindex : -1))\n\n const comboboxAttrs = computed(() => {\n const attrs = {\n tabindex: props.tabindex,\n role: 'combobox',\n 'aria-label': props.label,\n 'aria-readonly': props.readonly === true ? 'true' : 'false',\n 'aria-autocomplete': props.useInput === true ? 'list' : 'none',\n 'aria-expanded': menu.value === true ? 'true' : 'false',\n 'aria-controls': `${ state.targetUid.value }_lb`\n }\n\n if (optionIndex.value >= 0) {\n attrs[ 'aria-activedescendant' ] = `${ state.targetUid.value }_${ optionIndex.value }`\n }\n\n return attrs\n })\n\n const listboxAttrs = computed(() => ({\n id: `${ state.targetUid.value }_lb`,\n role: 'listbox',\n 'aria-multiselectable': props.multiple === true ? 'true' : 'false'\n }))\n\n const selectedScope = computed(() => {\n return innerValue.value.map((opt, i) => ({\n index: i,\n opt,\n html: needsHtmlFn.value(opt),\n selected: true,\n removeAtIndex: removeAtIndexAndFocus,\n toggleOption,\n tabindex: tabindex.value\n }))\n })\n\n const optionScope = computed(() => {\n if (virtualScrollLength.value === 0) {\n return []\n }\n\n const { from, to } = virtualScrollSliceRange.value\n\n return props.options.slice(from, to).map((opt, i) => {\n const disable = isOptionDisabled.value(opt) === true\n const index = from + i\n\n const itemProps = {\n clickable: true,\n active: false,\n activeClass: computedOptionsSelectedClass.value,\n manualFocus: true,\n focused: false,\n disable,\n tabindex: -1,\n dense: props.optionsDense,\n dark: isOptionsDark.value,\n role: 'option',\n id: `${ state.targetUid.value }_${ index }`,\n onClick: () => { toggleOption(opt) }\n }\n\n if (disable !== true) {\n isOptionSelected(opt) === true && (itemProps.active = true)\n optionIndex.value === index && (itemProps.focused = true)\n\n itemProps[ 'aria-selected' ] = itemProps.active === true ? 'true' : 'false'\n\n if ($q.platform.is.desktop === true) {\n itemProps.onMousemove = () => { menu.value === true && setOptionIndex(index) }\n }\n }\n\n return {\n index,\n opt,\n html: needsHtmlFn.value(opt),\n label: getOptionLabel.value(opt),\n selected: itemProps.active,\n focused: itemProps.focused,\n toggleOption,\n setOptionIndex,\n itemProps\n }\n })\n })\n\n const dropdownArrowIcon = computed(() => (\n props.dropdownIcon !== void 0\n ? props.dropdownIcon\n : $q.iconSet.arrow.dropdown\n ))\n\n const squaredMenu = computed(() =>\n props.optionsCover === false\n && props.outlined !== true\n && props.standout !== true\n && props.borderless !== true\n && props.rounded !== true\n )\n\n const computedOptionsSelectedClass = computed(() => (\n props.optionsSelectedClass !== void 0\n ? props.optionsSelectedClass\n : (props.color !== void 0 ? `text-${ props.color }` : '')\n ))\n\n // returns method to get value of an option;\n // takes into account 'option-value' prop\n const getOptionValue = computed(() => getPropValueFn(props.optionValue, 'value'))\n\n // returns method to get label of an option;\n // takes into account 'option-label' prop\n const getOptionLabel = computed(() => getPropValueFn(props.optionLabel, 'label'))\n\n // returns method to tell if an option is disabled;\n // takes into account 'option-disable' prop\n const isOptionDisabled = computed(() => getPropValueFn(props.optionDisable, 'disable'))\n\n const innerOptionsValue = computed(() => innerValue.value.map(opt => getOptionValue.value(opt)))\n\n const inputControlEvents = computed(() => {\n const evt = {\n onInput,\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n onChange: onComposition,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetAutocomplete,\n onKeypress: onTargetKeypress,\n onFocus: selectInputText,\n onClick (e) { hasDialog === true && stop(e) }\n }\n\n evt.onCompositionstart = evt.onCompositionupdate = evt.onCompositionend = onComposition\n\n return evt\n })\n\n watch(innerValue, val => {\n innerValueCache = val\n\n if (\n props.useInput === true\n && props.fillInput === true\n && props.multiple !== true\n // Prevent re-entering in filter while filtering\n // Also prevent clearing inputValue while filtering\n && state.innerLoading.value !== true\n && ((dialog.value !== true && menu.value !== true) || hasValue.value !== true)\n ) {\n userInputValue !== true && resetInputValue()\n if (dialog.value === true || menu.value === true) {\n filter('')\n }\n }\n }, { immediate: true })\n\n watch(() => props.fillInput, resetInputValue)\n\n watch(menu, updateMenu)\n\n watch(virtualScrollLength, rerenderMenu)\n\n function getEmittingOptionValue (opt) {\n return props.emitValue === true\n ? getOptionValue.value(opt)\n : opt\n }\n\n function removeAtIndex (index) {\n if (index > -1 && index < innerValue.value.length) {\n if (props.multiple === true) {\n const model = props.modelValue.slice()\n emit('remove', { index, value: model.splice(index, 1)[ 0 ] })\n emit('update:modelValue', model)\n }\n else {\n emit('update:modelValue', null)\n }\n }\n }\n\n function removeAtIndexAndFocus (index) {\n removeAtIndex(index)\n state.focus()\n }\n\n function add (opt, unique) {\n const val = getEmittingOptionValue(opt)\n\n if (props.multiple !== true) {\n props.fillInput === true && updateInputValue(\n getOptionLabel.value(opt),\n true,\n true\n )\n\n emit('update:modelValue', val)\n return\n }\n\n if (innerValue.value.length === 0) {\n emit('add', { index: 0, value: val })\n emit('update:modelValue', props.multiple === true ? [ val ] : val)\n return\n }\n\n if (unique === true && isOptionSelected(opt) === true) {\n return\n }\n\n if (props.maxValues !== void 0 && props.modelValue.length >= props.maxValues) {\n return\n }\n\n const model = props.modelValue.slice()\n\n emit('add', { index: model.length, value: val })\n model.push(val)\n emit('update:modelValue', model)\n }\n\n function toggleOption (opt, keepOpen) {\n if (state.editable.value !== true || opt === void 0 || isOptionDisabled.value(opt) === true) {\n return\n }\n\n const optValue = getOptionValue.value(opt)\n\n if (props.multiple !== true) {\n if (keepOpen !== true) {\n updateInputValue(\n props.fillInput === true ? getOptionLabel.value(opt) : '',\n true,\n true\n )\n\n hidePopup()\n }\n\n targetRef.value !== null && targetRef.value.focus()\n\n if (\n innerValue.value.length === 0\n || isDeepEqual(getOptionValue.value(innerValue.value[ 0 ]), optValue) !== true\n ) {\n emit('update:modelValue', props.emitValue === true ? optValue : opt)\n }\n return\n }\n\n (hasDialog !== true || dialogFieldFocused.value === true) && state.focus()\n\n selectInputText()\n\n if (innerValue.value.length === 0) {\n const val = props.emitValue === true ? optValue : opt\n emit('add', { index: 0, value: val })\n emit('update:modelValue', props.multiple === true ? [ val ] : val)\n return\n }\n\n const\n model = props.modelValue.slice(),\n index = innerOptionsValue.value.findIndex(v => isDeepEqual(v, optValue))\n\n if (index > -1) {\n emit('remove', { index, value: model.splice(index, 1)[ 0 ] })\n }\n else {\n if (props.maxValues !== void 0 && model.length >= props.maxValues) {\n return\n }\n\n const val = props.emitValue === true ? optValue : opt\n\n emit('add', { index: model.length, value: val })\n model.push(val)\n }\n\n emit('update:modelValue', model)\n }\n\n function setOptionIndex (index) {\n if ($q.platform.is.desktop !== true) { return }\n\n const val = index > -1 && index < virtualScrollLength.value\n ? index\n : -1\n\n if (optionIndex.value !== val) {\n optionIndex.value = val\n }\n }\n\n function moveOptionSelection (offset = 1, skipInputValue) {\n if (menu.value === true) {\n let index = optionIndex.value\n do {\n index = normalizeToInterval(\n index + offset,\n -1,\n virtualScrollLength.value - 1\n )\n }\n while (index !== -1 && index !== optionIndex.value && isOptionDisabled.value(props.options[ index ]) === true)\n\n if (optionIndex.value !== index) {\n setOptionIndex(index)\n scrollTo(index)\n\n if (skipInputValue !== true && props.useInput === true && props.fillInput === true) {\n setInputValue(index >= 0\n ? getOptionLabel.value(props.options[ index ])\n : defaultInputValue\n )\n }\n }\n }\n }\n\n function getOption (value, valueCache) {\n const fn = opt => isDeepEqual(getOptionValue.value(opt), value)\n return props.options.find(fn) || valueCache.find(fn) || value\n }\n\n function getPropValueFn (propValue, defaultVal) {\n const val = propValue !== void 0\n ? propValue\n : defaultVal\n\n return typeof val === 'function'\n ? val\n : opt => (opt !== null && typeof opt === 'object' && val in opt ? opt[ val ] : opt)\n }\n\n function isOptionSelected (opt) {\n const val = getOptionValue.value(opt)\n return innerOptionsValue.value.find(v => isDeepEqual(v, val)) !== void 0\n }\n\n function selectInputText (e) {\n if (\n props.useInput === true\n && targetRef.value !== null\n && (e === void 0 || (targetRef.value === e.target && e.target.value === selectedString.value))\n ) {\n targetRef.value.select()\n }\n }\n\n function onTargetKeyup (e) {\n // if ESC and we have an opened menu\n // then stop propagation (might be caught by a QDialog\n // and so it will also close the QDialog, which is wrong)\n if (isKeyCode(e, 27) === true && menu.value === true) {\n stop(e)\n // on ESC we need to close the dialog also\n hidePopup()\n resetInputValue()\n }\n\n emit('keyup', e)\n }\n\n function onTargetAutocomplete (e) {\n const { value } = e.target\n\n if (e.keyCode !== void 0) {\n onTargetKeyup(e)\n return\n }\n\n e.target.value = ''\n clearTimeout(inputTimer)\n resetInputValue()\n\n if (typeof value === 'string' && value.length > 0) {\n const needle = value.toLocaleLowerCase()\n const findFn = extractFn => {\n const option = props.options.find(opt => extractFn.value(opt).toLocaleLowerCase() === needle)\n\n if (option === void 0) {\n return false\n }\n\n if (innerValue.value.indexOf(option) === -1) {\n toggleOption(option)\n }\n else {\n hidePopup()\n }\n\n return true\n }\n const fillFn = afterFilter => {\n if (findFn(getOptionValue) === true) {\n return\n }\n if (findFn(getOptionLabel) === true || afterFilter === true) {\n return\n }\n\n filter(value, true, () => fillFn(true))\n }\n\n fillFn()\n }\n else {\n state.clearValue(e)\n }\n }\n\n function onTargetKeypress (e) {\n emit('keypress', e)\n }\n\n function onTargetKeydown (e) {\n emit('keydown', e)\n\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const newValueModeValid = inputValue.value.length > 0\n && (props.newValueMode !== void 0 || props.onNewValue !== void 0)\n\n const tabShouldSelect = e.shiftKey !== true\n && props.multiple !== true\n && (optionIndex.value > -1 || newValueModeValid === true)\n\n // escape\n if (e.keyCode === 27) {\n prevent(e) // prevent clearing the inputValue\n return\n }\n\n // tab\n if (e.keyCode === 9 && tabShouldSelect === false) {\n closeMenu()\n return\n }\n\n if (e.target === void 0 || e.target.id !== state.targetUid.value) { return }\n\n // down\n if (\n e.keyCode === 40\n && state.innerLoading.value !== true\n && menu.value === false\n ) {\n stopAndPrevent(e)\n showPopup()\n return\n }\n\n // backspace\n if (\n e.keyCode === 8\n && props.hideSelected !== true\n && inputValue.value.length === 0\n ) {\n if (props.multiple === true && Array.isArray(props.modelValue) === true) {\n removeAtIndex(props.modelValue.length - 1)\n }\n else if (props.multiple !== true && props.modelValue !== null) {\n emit('update:modelValue', null)\n }\n return\n }\n\n // home, end - 36, 35\n if (\n (e.keyCode === 35 || e.keyCode === 36)\n && (typeof inputValue.value !== 'string' || inputValue.value.length === 0)\n ) {\n stopAndPrevent(e)\n optionIndex.value = -1\n moveOptionSelection(e.keyCode === 36 ? 1 : -1, props.multiple)\n }\n\n // pg up, pg down - 33, 34\n if (\n (e.keyCode === 33 || e.keyCode === 34)\n && virtualScrollSliceSizeComputed.value !== void 0\n ) {\n stopAndPrevent(e)\n optionIndex.value = Math.max(\n -1,\n Math.min(\n virtualScrollLength.value,\n optionIndex.value + (e.keyCode === 33 ? -1 : 1) * virtualScrollSliceSizeComputed.value.view\n )\n )\n moveOptionSelection(e.keyCode === 33 ? 1 : -1, props.multiple)\n }\n\n // up, down\n if (e.keyCode === 38 || e.keyCode === 40) {\n stopAndPrevent(e)\n moveOptionSelection(e.keyCode === 38 ? -1 : 1, props.multiple)\n }\n\n const optionsLength = virtualScrollLength.value\n\n // clear search buffer if expired\n if (searchBuffer === void 0 || searchBufferExp < Date.now()) {\n searchBuffer = ''\n }\n\n // keyboard search when not having use-input\n if (\n optionsLength > 0\n && props.useInput !== true\n && e.key !== void 0\n && e.key.length === 1 // printable char\n && e.altKey === false // not kbd shortcut\n && e.ctrlKey === false // not kbd shortcut\n && e.metaKey === false // not kbd shortcut, especially on macOS with Command key\n && (e.keyCode !== 32 || searchBuffer.length > 0) // space in middle of search\n ) {\n menu.value !== true && showPopup(e)\n\n const\n char = e.key.toLocaleLowerCase(),\n keyRepeat = searchBuffer.length === 1 && searchBuffer[ 0 ] === char\n\n searchBufferExp = Date.now() + 1500\n if (keyRepeat === false) {\n stopAndPrevent(e)\n searchBuffer += char\n }\n\n const searchRe = new RegExp('^' + searchBuffer.split('').map(l => (reEscapeList.indexOf(l) > -1 ? '\\\\' + l : l)).join('.*'), 'i')\n\n let index = optionIndex.value\n\n if (keyRepeat === true || index < 0 || searchRe.test(getOptionLabel.value(props.options[ index ])) !== true) {\n do {\n index = normalizeToInterval(index + 1, -1, optionsLength - 1)\n }\n while (index !== optionIndex.value && (\n isOptionDisabled.value(props.options[ index ]) === true\n || searchRe.test(getOptionLabel.value(props.options[ index ])) !== true\n ))\n }\n\n if (optionIndex.value !== index) {\n nextTick(() => {\n setOptionIndex(index)\n scrollTo(index)\n\n if (index >= 0 && props.useInput === true && props.fillInput === true) {\n setInputValue(getOptionLabel.value(props.options[ index ]))\n }\n })\n }\n\n return\n }\n\n // enter, space (when not using use-input and not in search), or tab (when not using multiple and option selected)\n // same target is checked above\n if (\n e.keyCode !== 13\n && (e.keyCode !== 32 || props.useInput === true || searchBuffer !== '')\n && (e.keyCode !== 9 || tabShouldSelect === false)\n ) { return }\n\n e.keyCode !== 9 && stopAndPrevent(e)\n\n if (optionIndex.value > -1 && optionIndex.value < optionsLength) {\n toggleOption(props.options[ optionIndex.value ])\n return\n }\n\n if (newValueModeValid === true) {\n const done = (val, mode) => {\n if (mode) {\n if (validateNewValueMode(mode) !== true) {\n return\n }\n }\n else {\n mode = props.newValueMode\n }\n\n if (val === void 0 || val === null) {\n return\n }\n\n updateInputValue('', props.multiple !== true, true)\n\n const fn = mode === 'toggle' ? toggleOption : add\n fn(val, mode === 'add-unique')\n\n if (props.multiple !== true) {\n targetRef.value !== null && targetRef.value.focus()\n hidePopup()\n }\n }\n\n if (props.onNewValue !== void 0) {\n emit('newValue', inputValue.value, done)\n }\n else {\n done(inputValue.value)\n }\n\n if (props.multiple !== true) {\n return\n }\n }\n\n if (menu.value === true) {\n closeMenu()\n }\n else if (state.innerLoading.value !== true) {\n showPopup()\n }\n }\n\n function getVirtualScrollEl () {\n return hasDialog === true\n ? menuContentRef.value\n : (\n menuRef.value !== null && menuRef.value.contentEl !== null\n ? menuRef.value.contentEl\n : void 0\n )\n }\n\n function getVirtualScrollTarget () {\n return getVirtualScrollEl()\n }\n\n function getSelection () {\n if (props.hideSelected === true) {\n return []\n }\n\n if (slots[ 'selected-item' ] !== void 0) {\n return selectedScope.value.map(scope => slots[ 'selected-item' ](scope)).slice()\n }\n\n if (slots.selected !== void 0) {\n return [].concat(slots.selected())\n }\n\n if (props.useChips === true) {\n return selectedScope.value.map((scope, i) => h(QChip, {\n key: 'option-' + i,\n removable: state.editable.value === true && isOptionDisabled.value(scope.opt) !== true,\n dense: true,\n textColor: props.color,\n tabindex: tabindex.value,\n onRemove () { scope.removeAtIndex(i) }\n }, () => h('span', {\n class: 'ellipsis',\n [ scope.html === true ? 'innerHTML' : 'textContent' ]: getOptionLabel.value(scope.opt)\n })))\n }\n\n return [\n h('span', {\n [ valueAsHtml.value === true ? 'innerHTML' : 'textContent' ]: ariaCurrentValue.value\n })\n ]\n }\n\n function getAllOptions () {\n if (noOptions.value === true) {\n return slots[ 'no-option' ] !== void 0\n ? slots[ 'no-option' ]({ inputValue: inputValue.value })\n : void 0\n }\n\n const fn = slots.option !== void 0\n ? slots.option\n : scope => {\n return h(QItem, {\n key: scope.index,\n ...scope.itemProps\n }, () => {\n return h(\n QItemSection,\n () => h(\n QItemLabel,\n () => h('span', {\n [ scope.html === true ? 'innerHTML' : 'textContent' ]: scope.label\n })\n )\n )\n })\n }\n\n let options = padVirtualScroll('div', optionScope.value.map(fn))\n\n if (slots[ 'before-options' ] !== void 0) {\n options = slots[ 'before-options' ]().concat(options)\n }\n\n return hMergeSlot(slots[ 'after-options' ], options)\n }\n\n function getInput (fromDialog, isTarget) {\n const attrs = isTarget === true ? { ...comboboxAttrs.value, ...state.splitAttrs.attributes.value } : void 0\n\n const data = {\n ref: isTarget === true ? targetRef : void 0,\n key: 'i_t',\n class: computedInputClass.value,\n style: props.inputStyle,\n value: inputValue.value !== void 0 ? inputValue.value : '',\n // required for Android in order to show ENTER key when in form\n type: 'search',\n ...attrs,\n id: isTarget === true ? state.targetUid.value : void 0,\n maxlength: props.maxlength,\n autocomplete: props.autocomplete,\n 'data-autofocus': fromDialog === true || props.autofocus === true || void 0,\n disabled: props.disable === true,\n readonly: props.readonly === true,\n ...inputControlEvents.value\n }\n\n if (fromDialog !== true && hasDialog === true) {\n if (Array.isArray(data.class) === true) {\n data.class = [ ...data.class, 'no-pointer-events' ]\n }\n else {\n data.class += ' no-pointer-events'\n }\n }\n\n return h('input', data)\n }\n\n function onInput (e) {\n clearTimeout(inputTimer)\n\n if (e && e.target && e.target.qComposing === true) {\n return\n }\n\n setInputValue(e.target.value || '')\n // mark it here as user input so that if updateInputValue is called\n // before filter is called the indicator is reset\n userInputValue = true\n defaultInputValue = inputValue.value\n\n if (\n state.focused.value !== true\n && (hasDialog !== true || dialogFieldFocused.value === true)\n ) {\n state.focus()\n }\n\n if (props.onFilter !== void 0) {\n inputTimer = setTimeout(() => {\n filter(inputValue.value)\n }, props.inputDebounce)\n }\n }\n\n function setInputValue (val) {\n if (inputValue.value !== val) {\n inputValue.value = val\n emit('inputValue', val)\n }\n }\n\n function updateInputValue (val, noFiltering, internal) {\n userInputValue = internal !== true\n\n if (props.useInput === true) {\n setInputValue(val)\n\n if (noFiltering === true || internal !== true) {\n defaultInputValue = val\n }\n\n noFiltering !== true && filter(val)\n }\n }\n\n function filter (val, keepClosed, afterUpdateFn) {\n if (props.onFilter === void 0 || (keepClosed !== true && state.focused.value !== true)) {\n return\n }\n\n if (state.innerLoading.value === true) {\n emit('filterAbort')\n }\n else {\n state.innerLoading.value = true\n innerLoadingIndicator.value = true\n }\n\n if (\n val !== ''\n && props.multiple !== true\n && innerValue.value.length > 0\n && userInputValue !== true\n && val === getOptionLabel.value(innerValue.value[ 0 ])\n ) {\n val = ''\n }\n\n const localFilterId = setTimeout(() => {\n menu.value === true && (menu.value = false)\n }, 10)\n\n clearTimeout(filterId)\n filterId = localFilterId\n\n emit(\n 'filter',\n val,\n (fn, afterFn) => {\n if ((keepClosed === true || state.focused.value === true) && filterId === localFilterId) {\n clearTimeout(filterId)\n\n typeof fn === 'function' && fn()\n\n // hide indicator to allow arrow to animate\n innerLoadingIndicator.value = false\n\n nextTick(() => {\n state.innerLoading.value = false\n\n if (state.editable.value === true) {\n if (keepClosed === true) {\n menu.value === true && hidePopup()\n }\n else if (menu.value === true) {\n updateMenu(true)\n }\n else {\n menu.value = true\n }\n }\n\n typeof afterFn === 'function' && nextTick(() => { afterFn(proxy) })\n typeof afterUpdateFn === 'function' && nextTick(() => { afterUpdateFn(proxy) })\n })\n }\n },\n () => {\n if (state.focused.value === true && filterId === localFilterId) {\n clearTimeout(filterId)\n state.innerLoading.value = false\n innerLoadingIndicator.value = false\n }\n menu.value === true && (menu.value = false)\n }\n )\n }\n\n function getMenu () {\n return h(QMenu, {\n ref: menuRef,\n class: menuContentClass.value,\n style: props.popupContentStyle,\n modelValue: menu.value,\n fit: props.menuShrink !== true,\n cover: props.optionsCover === true && noOptions.value !== true && props.useInput !== true,\n anchor: props.menuAnchor,\n self: props.menuSelf,\n offset: props.menuOffset,\n dark: isOptionsDark.value,\n noParentEvent: true,\n noRefocus: true,\n noFocus: true,\n square: squaredMenu.value,\n transitionShow: props.transitionShow,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n separateClosePopup: true,\n ...listboxAttrs.value,\n onScrollPassive: onVirtualScrollEvt,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onMenuBeforeHide,\n onShow: onMenuShow\n }, getAllOptions)\n }\n\n function onMenuBeforeHide (e) {\n onControlPopupHide(e)\n closeMenu()\n }\n\n function onMenuShow () {\n setVirtualScrollSize()\n }\n\n function onDialogFieldFocus (e) {\n stop(e)\n targetRef.value !== null && targetRef.value.focus()\n dialogFieldFocused.value = true\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, 0)\n }\n\n function onDialogFieldBlur (e) {\n stop(e)\n nextTick(() => {\n dialogFieldFocused.value = false\n })\n }\n\n function getDialog () {\n const content = [\n h(QField, {\n class: `col-auto ${ state.fieldClass.value }`,\n ...innerFieldProps.value,\n for: state.targetUid.value,\n dark: isOptionsDark.value,\n square: true,\n loading: innerLoadingIndicator.value,\n itemAligned: false,\n filled: true,\n stackLabel: inputValue.value.length > 0,\n ...state.splitAttrs.listeners.value,\n onFocus: onDialogFieldFocus,\n onBlur: onDialogFieldBlur\n }, {\n ...slots,\n rawControl: () => state.getControl(true),\n before: void 0,\n after: void 0\n })\n ]\n\n menu.value === true && content.push(\n h('div', {\n ref: menuContentRef,\n class: menuContentClass.value + ' scroll',\n style: props.popupContentStyle,\n ...listboxAttrs.value,\n onClick: prevent,\n onScrollPassive: onVirtualScrollEvt\n }, getAllOptions())\n )\n\n return h(QDialog, {\n ref: dialogRef,\n modelValue: dialog.value,\n position: props.useInput === true ? 'top' : void 0,\n transitionShow: transitionShowComputed,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onDialogBeforeHide,\n onHide: onDialogHide,\n onShow: onDialogShow\n }, () => h('div', {\n class: 'q-select__dialog'\n + (isOptionsDark.value === true ? ' q-select__dialog--dark q-dark' : '')\n + (dialogFieldFocused.value === true ? ' q-select__dialog--focused' : '')\n }, content))\n }\n\n function onDialogBeforeHide (e) {\n onControlPopupHide(e)\n\n if (dialogRef.value !== null) {\n dialogRef.value.__updateRefocusTarget(\n state.rootRef.value.querySelector('.q-field__native > [tabindex]:last-child')\n )\n }\n\n state.focused.value = false\n }\n\n function onDialogHide (e) {\n hidePopup()\n state.focused.value === false && emit('blur', e)\n resetInputValue()\n }\n\n function onDialogShow () {\n const el = document.activeElement\n if (\n (el === null || el.id !== state.targetUid.value)\n && targetRef.value !== null\n && targetRef.value !== el\n ) {\n targetRef.value.focus()\n }\n\n setVirtualScrollSize()\n }\n\n function closeMenu () {\n if (dialog.value === true) {\n return\n }\n\n optionIndex.value = -1\n\n if (menu.value === true) {\n menu.value = false\n }\n\n if (state.focused.value === false) {\n clearTimeout(filterId)\n filterId = void 0\n\n if (state.innerLoading.value === true) {\n emit('filterAbort')\n state.innerLoading.value = false\n innerLoadingIndicator.value = false\n }\n }\n }\n\n function showPopup (e) {\n if (state.editable.value !== true) {\n return\n }\n\n if (hasDialog === true) {\n state.onControlFocusin(e)\n dialog.value = true\n nextTick(() => {\n state.focus()\n })\n }\n else {\n state.focus()\n }\n\n if (props.onFilter !== void 0) {\n filter(inputValue.value)\n }\n else if (noOptions.value !== true || slots[ 'no-option' ] !== void 0) {\n menu.value = true\n }\n }\n\n function hidePopup () {\n dialog.value = false\n closeMenu()\n }\n\n function resetInputValue () {\n props.useInput === true && updateInputValue(\n props.multiple !== true && props.fillInput === true && innerValue.value.length > 0\n ? getOptionLabel.value(innerValue.value[ 0 ]) || ''\n : '',\n true,\n true\n )\n }\n\n function updateMenu (show) {\n let optionIndex = -1\n\n if (show === true) {\n if (innerValue.value.length > 0) {\n const val = getOptionValue.value(innerValue.value[ 0 ])\n optionIndex = props.options.findIndex(v => isDeepEqual(getOptionValue.value(v), val))\n }\n\n localResetVirtualScroll(optionIndex)\n }\n\n setOptionIndex(optionIndex)\n }\n\n function rerenderMenu (newLength, oldLength) {\n if (menu.value === true && state.innerLoading.value === false) {\n localResetVirtualScroll(-1, true)\n\n nextTick(() => {\n if (menu.value === true && state.innerLoading.value === false) {\n if (newLength > oldLength) {\n localResetVirtualScroll()\n }\n else {\n updateMenu(true)\n }\n }\n })\n }\n }\n\n function updateMenuPosition () {\n if (dialog.value === false && menuRef.value !== null) {\n menuRef.value.updatePosition()\n }\n }\n\n function onControlPopupShow (e) {\n e !== void 0 && stop(e)\n emit('popupShow', e)\n state.hasPopupOpen = true\n state.onControlFocusin(e)\n }\n\n function onControlPopupHide (e) {\n e !== void 0 && stop(e)\n emit('popupHide', e)\n state.hasPopupOpen = false\n state.onControlFocusout(e)\n }\n\n function updatePreState () {\n hasDialog = $q.platform.is.mobile !== true && props.behavior !== 'dialog'\n ? false\n : props.behavior !== 'menu' && (\n props.useInput === true\n ? slots[ 'no-option' ] !== void 0 || props.onFilter !== void 0 || noOptions.value === false\n : true\n )\n\n transitionShowComputed = $q.platform.is.ios === true && hasDialog === true && props.useInput === true\n ? 'fade'\n : props.transitionShow\n }\n\n onBeforeUpdate(updatePreState)\n onUpdated(updateMenuPosition)\n\n updatePreState()\n\n onBeforeUnmount(() => {\n clearTimeout(inputTimer)\n })\n\n // expose public methods\n Object.assign(proxy, {\n showPopup, hidePopup,\n removeAtIndex, add, toggleOption,\n getOptionIndex: () => optionIndex.value,\n setOptionIndex, moveOptionSelection,\n filter, updateMenuPosition, updateInputValue,\n isOptionSelected,\n getEmittingOptionValue,\n isOptionDisabled: (...args) => isOptionDisabled.value.apply(null, args) === true,\n getOptionValue: (...args) => getOptionValue.value.apply(null, args),\n getOptionLabel: (...args) => getOptionLabel.value.apply(null, args)\n })\n\n Object.assign(state, {\n innerValue,\n\n fieldClass: computed(() =>\n `q-select q-field--auto-height q-select--with${ props.useInput !== true ? 'out' : '' }-input`\n + ` q-select--with${ props.useChips !== true ? 'out' : '' }-chips`\n + ` q-select--${ props.multiple === true ? 'multiple' : 'single' }`\n ),\n\n inputRef,\n targetRef,\n hasValue,\n showPopup,\n\n floatingLabel: computed(() =>\n (props.hideSelected !== true && hasValue.value === true)\n || typeof inputValue.value === 'number'\n || inputValue.value.length > 0\n || fieldValueIsFilled(props.displayValue)\n ),\n\n getControlChild: () => {\n if (\n state.editable.value !== false && (\n dialog.value === true // dialog always has menu displayed, so need to render it\n || noOptions.value !== true\n || slots[ 'no-option' ] !== void 0\n )\n ) {\n return hasDialog === true ? getDialog() : getMenu()\n }\n else if (state.hasPopupOpen === true) {\n // explicitly set it otherwise TAB will not blur component\n state.hasPopupOpen = false\n }\n },\n\n controlEvents: {\n onFocusin (e) { state.onControlFocusin(e) },\n onFocusout (e) {\n state.onControlFocusout(e, () => {\n resetInputValue()\n closeMenu()\n })\n },\n onClick (e) {\n // label from QField will propagate click on the input\n prevent(e)\n\n if (hasDialog !== true && menu.value === true) {\n closeMenu()\n targetRef.value !== null && targetRef.value.focus()\n return\n }\n\n showPopup(e)\n }\n },\n\n getControl: fromDialog => {\n const child = getSelection()\n const isTarget = fromDialog === true || dialog.value !== true || hasDialog !== true\n\n if (props.useInput === true) {\n child.push(getInput(fromDialog, isTarget))\n }\n // there can be only one (when dialog is opened the control in dialog should be target)\n else if (state.editable.value === true) {\n const attrs = isTarget === true ? comboboxAttrs.value : void 0\n\n child.push(\n h('input', {\n ref: isTarget === true ? targetRef : void 0,\n key: 'd_t',\n class: 'q-select__focus-target',\n id: isTarget === true ? state.targetUid.value : void 0,\n value: ariaCurrentValue.value,\n readonly: true,\n 'data-autofocus': fromDialog === true || props.autofocus === true || void 0,\n ...attrs,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetKeyup,\n onKeypress: onTargetKeypress\n })\n )\n\n if (isTarget === true && typeof props.autocomplete === 'string' && props.autocomplete.length > 0) {\n child.push(\n h('input', {\n class: 'q-select__autocomplete-input',\n autocomplete: props.autocomplete,\n tabindex: -1,\n onKeyup: onTargetAutocomplete\n })\n )\n }\n }\n\n if (nameProp.value !== void 0 && props.disable !== true && innerOptionsValue.value.length > 0) {\n const opts = innerOptionsValue.value.map(value => h('option', { value, selected: true }))\n\n child.push(\n h('select', {\n class: 'hidden',\n name: nameProp.value,\n multiple: props.multiple\n }, opts)\n )\n }\n\n const attrs = props.useInput === true || isTarget !== true ? void 0 : state.splitAttrs.attributes.value\n\n return h('div', {\n class: 'q-field__native row items-center',\n ...attrs\n }, child)\n },\n\n getInnerAppend: () => (\n props.loading !== true && innerLoadingIndicator.value !== true && props.hideDropdownIcon !== true\n ? [\n h(QIcon, {\n class: 'q-select__dropdown-icon' + (menu.value === true ? ' rotate-180' : ''),\n name: dropdownArrowIcon.value\n })\n ]\n : null\n )\n })\n\n return useField(state)\n }\n})\n","export const quasarKey = '_q_'\nexport const timelineKey = '_q_t_'\nexport const stepperKey = '_q_s_'\nexport const layoutKey = '_q_l_'\nexport const pageContainerKey = '_q_pc_'\nexport const fabKey = '_q_f_'\nexport const formKey = '_q_fo_'\nexport const tabsKey = '_q_tabs_'\nexport const uploaderKey = '_q_u_'\n\nexport const emptyRenderFn = () => {}\n","import { nextTick, onDeactivated, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport { vmIsDestroyed } from '../../utils/private/vm'\n\n/*\n * Usage:\n * registerTick(fn)\n * removeTick()\n */\n\nexport default function () {\n let tickFn\n const vm = getCurrentInstance()\n\n function removeTick () {\n tickFn = void 0\n }\n\n onDeactivated(removeTick)\n onBeforeUnmount(removeTick)\n\n return {\n removeTick,\n\n registerTick (fn) {\n tickFn = fn\n\n nextTick(() => {\n if (tickFn === fn) {\n // we also check if VM is destroyed, since if it\n // got to trigger one nextTick() we cannot stop it\n vmIsDestroyed(vm) === false && tickFn()\n tickFn = void 0\n }\n })\n }\n }\n}\n","import { h, ref, computed, watch, onBeforeUnmount, inject, getCurrentInstance } from 'vue'\n\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hUniqueSlot } from '../../utils/private/render.js'\nimport { layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'\n\nexport default createComponent({\n name: 'QHeader',\n\n props: {\n modelValue: {\n type: Boolean,\n default: true\n },\n reveal: Boolean,\n revealOffset: {\n type: Number,\n default: 250\n },\n bordered: Boolean,\n elevated: Boolean,\n\n heightHint: {\n type: [ String, Number ],\n default: 50\n }\n },\n\n emits: [ 'reveal', 'focusin' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const $layout = inject(layoutKey, emptyRenderFn)\n if ($layout === emptyRenderFn) {\n console.error('QHeader needs to be child of QLayout')\n return emptyRenderFn\n }\n\n const size = ref(parseInt(props.heightHint, 10))\n const revealed = ref(true)\n\n const fixed = computed(() =>\n props.reveal === true\n || $layout.view.value.indexOf('H') > -1\n || ($q.platform.is.ios && $layout.isContainer.value === true)\n )\n\n const offset = computed(() => {\n if (props.modelValue !== true) {\n return 0\n }\n if (fixed.value === true) {\n return revealed.value === true ? size.value : 0\n }\n const offset = size.value - $layout.scroll.value.position\n return offset > 0 ? offset : 0\n })\n\n const hidden = computed(() => props.modelValue !== true\n || (fixed.value === true && revealed.value !== true)\n )\n\n const revealOnFocus = computed(() =>\n props.modelValue === true && hidden.value === true && props.reveal === true\n )\n\n const classes = computed(() =>\n 'q-header q-layout__section--marginal '\n + (fixed.value === true ? 'fixed' : 'absolute') + '-top'\n + (props.bordered === true ? ' q-header--bordered' : '')\n + (hidden.value === true ? ' q-header--hidden' : '')\n + (props.modelValue !== true ? ' q-layout--prevent-focus' : '')\n )\n\n const style = computed(() => {\n const\n view = $layout.rows.value.top,\n css = {}\n\n if (view[ 0 ] === 'l' && $layout.left.space === true) {\n css[ $q.lang.rtl === true ? 'right' : 'left' ] = `${ $layout.left.size }px`\n }\n if (view[ 2 ] === 'r' && $layout.right.space === true) {\n css[ $q.lang.rtl === true ? 'left' : 'right' ] = `${ $layout.right.size }px`\n }\n\n return css\n })\n\n function updateLayout (prop, val) {\n $layout.update('header', prop, val)\n }\n\n function updateLocal (prop, val) {\n if (prop.value !== val) {\n prop.value = val\n }\n }\n\n function onResize ({ height }) {\n updateLocal(size, height)\n updateLayout('size', height)\n }\n\n function onFocusin (evt) {\n if (revealOnFocus.value === true) {\n updateLocal(revealed, true)\n }\n\n emit('focusin', evt)\n }\n\n watch(() => props.modelValue, val => {\n updateLayout('space', val)\n updateLocal(revealed, true)\n $layout.animate()\n })\n\n watch(offset, val => {\n updateLayout('offset', val)\n })\n\n watch(() => props.reveal, val => {\n val === false && updateLocal(revealed, props.modelValue)\n })\n\n watch(revealed, val => {\n $layout.animate()\n emit('reveal', val)\n })\n\n watch($layout.scroll, scroll => {\n props.reveal === true && updateLocal(revealed,\n scroll.direction === 'up'\n || scroll.position <= props.revealOffset\n || scroll.position - scroll.inflectionPoint < 100\n )\n })\n\n const instance = {}\n\n $layout.instances.header = instance\n props.modelValue === true && updateLayout('size', size.value)\n updateLayout('space', props.modelValue)\n updateLayout('offset', offset.value)\n\n onBeforeUnmount(() => {\n if ($layout.instances.header === instance) {\n $layout.instances.header = void 0\n updateLayout('size', 0)\n updateLayout('offset', 0)\n updateLayout('space', false)\n }\n })\n\n return () => {\n const child = hUniqueSlot(slots.default, [])\n\n props.elevated === true && child.push(\n h('div', {\n class: 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'\n })\n )\n\n child.push(\n h(QResizeObserver, {\n debounce: 0,\n onResize\n })\n )\n\n return h('header', {\n class: classes.value,\n style: style.value,\n onFocusin\n }, child)\n }\n }\n})\n","import { h, computed, ref } from 'vue'\n\nexport default function (props, rootRef) {\n const refocusRef = ref(null)\n\n const refocusTargetEl = computed(() => {\n if (props.disable === true) {\n return null\n }\n\n return h('span', {\n ref: refocusRef,\n class: 'no-outline',\n tabindex: -1\n })\n })\n\n function refocusTarget (e) {\n const root = rootRef.value\n\n if (e !== void 0 && e.type.indexOf('key') === 0) {\n if (\n root !== null\n && document.activeElement !== root\n && root.contains(document.activeElement) === true\n ) {\n root.focus()\n }\n }\n else if (\n refocusRef.value !== null\n && (e === void 0 || (root !== null && root.contains(e.target) === true))\n ) {\n refocusRef.value.focus()\n }\n }\n\n return {\n refocusTargetEl,\n refocusTarget\n }\n}\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nconst insetMap = {\n true: 'inset',\n item: 'item-inset',\n 'item-thumbnail': 'item-thumbnail-inset'\n}\n\nexport const margins = {\n xs: 2,\n sm: 4,\n md: 8,\n lg: 16,\n xl: 24\n}\n\nexport default createComponent({\n name: 'QSeparator',\n\n props: {\n ...useDarkProps,\n\n spaced: [ Boolean, String ],\n inset: [ Boolean, String ],\n vertical: Boolean,\n color: String,\n size: String\n },\n\n setup (props) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const orientation = computed(() => (\n props.vertical === true\n ? 'vertical'\n : 'horizontal'\n ))\n\n const orientClass = computed(() => ` q-separator--${ orientation.value }`)\n\n const insetClass = computed(() => (\n props.inset !== false\n ? `${ orientClass.value }-${ insetMap[ props.inset ] }`\n : ''\n ))\n\n const classes = computed(() =>\n `q-separator${ orientClass.value }${ insetClass.value }`\n + (props.color !== void 0 ? ` bg-${ props.color }` : '')\n + (isDark.value === true ? ' q-separator--dark' : '')\n )\n\n const style = computed(() => {\n const acc = {}\n\n if (props.size !== void 0) {\n acc[ props.vertical === true ? 'width' : 'height' ] = props.size\n }\n\n if (props.spaced !== false) {\n const size = props.spaced === true\n ? `${ margins.md }px`\n : props.spaced in margins ? `${ margins[ props.spaced ] }px` : props.spaced\n\n const dir = props.vertical === true\n ? [ 'Left', 'Right' ]\n : [ 'Top', 'Bottom' ]\n\n acc[ `margin${ dir[ 0 ] }` ] = acc[ `margin${ dir[ 1 ] }` ] = size\n }\n\n return acc\n })\n\n return () => h('hr', {\n class: classes.value,\n style: style.value,\n 'aria-orientation': orientation.value\n })\n }\n})\n","export default {\n isoName: 'en-US',\n nativeName: 'English (US)',\n label: {\n clear: 'Clear',\n ok: 'OK',\n cancel: 'Cancel',\n close: 'Close',\n set: 'Set',\n select: 'Select',\n reset: 'Reset',\n remove: 'Remove',\n update: 'Update',\n create: 'Create',\n search: 'Search',\n filter: 'Filter',\n refresh: 'Refresh',\n expand: label => (label ? `Expand \"${ label }\"` : 'Expand'),\n collapse: label => (label ? `Collapse \"${ label }\"` : 'Collapse')\n },\n date: {\n days: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n daysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...\n format24h: false,\n pluralDay: 'days'\n },\n table: {\n noData: 'No data available',\n noResults: 'No matching records found',\n loading: 'Loading...',\n selectedRecords: rows => (\n rows === 1\n ? '1 record selected.'\n : (rows === 0 ? 'No' : rows) + ' records selected.'\n ),\n recordsPerPage: 'Records per page:',\n allRows: 'All',\n pagination: (start, end, total) => start + '-' + end + ' of ' + total,\n columns: 'Columns'\n },\n editor: {\n url: 'URL',\n bold: 'Bold',\n italic: 'Italic',\n strikethrough: 'Strikethrough',\n underline: 'Underline',\n unorderedList: 'Unordered List',\n orderedList: 'Ordered List',\n subscript: 'Subscript',\n superscript: 'Superscript',\n hyperlink: 'Hyperlink',\n toggleFullscreen: 'Toggle Fullscreen',\n quote: 'Quote',\n left: 'Left align',\n center: 'Center align',\n right: 'Right align',\n justify: 'Justify align',\n print: 'Print',\n outdent: 'Decrease indentation',\n indent: 'Increase indentation',\n removeFormat: 'Remove formatting',\n formatting: 'Formatting',\n fontSize: 'Font Size',\n align: 'Align',\n hr: 'Insert Horizontal Rule',\n undo: 'Undo',\n redo: 'Redo',\n heading1: 'Heading 1',\n heading2: 'Heading 2',\n heading3: 'Heading 3',\n heading4: 'Heading 4',\n heading5: 'Heading 5',\n heading6: 'Heading 6',\n paragraph: 'Paragraph',\n code: 'Code',\n size1: 'Very small',\n size2: 'A bit small',\n size3: 'Normal',\n size4: 'Medium-large',\n size5: 'Big',\n size6: 'Very big',\n size7: 'Maximum',\n defaultFont: 'Default Font',\n viewSource: 'View Source'\n },\n tree: {\n noNodes: 'No nodes available',\n noResults: 'No matching nodes found'\n }\n}\n","import defineReactivePlugin from './utils/private/define-reactive-plugin.js'\n// no extension on purpose for next one:\nimport defaultLang from '../lang/en-US'\n\nfunction getLocale () {\n if (__QUASAR_SSR_SERVER__) { return }\n\n const val = Array.isArray(navigator.languages) === true && navigator.languages.length > 0\n ? navigator.languages[ 0 ]\n : navigator.language\n\n if (typeof val === 'string') {\n return val.split(/[-_]/).map((v, i) => (\n i === 0\n ? v.toLowerCase()\n : (\n i > 1 || v.length < 4\n ? v.toUpperCase()\n : (v[ 0 ].toUpperCase() + v.slice(1).toLowerCase())\n )\n )).join('-')\n }\n}\n\nconst Plugin = defineReactivePlugin({\n __langPack: {}\n}, {\n getLocale,\n\n set (langObject = defaultLang, ssrContext) {\n const lang = {\n ...langObject,\n rtl: langObject.rtl === true,\n getLocale\n }\n\n if (__QUASAR_SSR_SERVER__) {\n if (ssrContext === void 0) {\n console.error('SSR ERROR: second param required: Quasar.lang.set(lang, ssrContext)')\n return\n }\n\n const dir = lang.rtl === true ? 'rtl' : 'ltr'\n const attrs = `lang=${ lang.isoName } dir=${ dir }`\n\n lang.set = ssrContext.$q.lang.set\n\n ssrContext._meta.htmlAttrs = ssrContext.__qPrevLang !== void 0\n ? ssrContext._meta.htmlAttrs.replace(ssrContext.__qPrevLang, attrs)\n : attrs\n\n ssrContext.__qPrevLang = attrs\n ssrContext.$q.lang = lang\n }\n else {\n const el = document.documentElement\n el.setAttribute('dir', lang.rtl === true ? 'rtl' : 'ltr')\n el.setAttribute('lang', lang.isoName)\n\n lang.set = Plugin.set\n\n Object.assign(Plugin.__langPack, lang)\n\n Plugin.props = lang\n Plugin.isoName = lang.isoName\n Plugin.nativeName = lang.nativeName\n }\n },\n\n install ({ $q, lang, ssrContext }) {\n if (__QUASAR_SSR_SERVER__) {\n const initialLang = lang || defaultLang\n\n $q.lang = {}\n $q.lang.set = langObject => {\n this.set(langObject, ssrContext)\n }\n\n $q.lang.set(initialLang)\n\n // one-time SSR server operation\n if (this.isoName !== initialLang.isoName) {\n this.isoName = initialLang.isoName\n this.nativeName = initialLang.nativeName\n this.props = initialLang\n }\n }\n else {\n $q.lang = Plugin.__langPack\n\n if (this.__installed === true) {\n lang !== void 0 && this.set(lang)\n }\n else {\n this.set(lang || defaultLang)\n }\n }\n }\n})\n\nexport default Plugin\nexport { defaultLang }\n","import { watch, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { getScrollTarget, getVerticalScrollPosition, getHorizontalScrollPosition } from '../../utils/scroll.js'\nimport { listenOpts, noop } from '../../utils/event.js'\n\nconst { passive } = listenOpts\nconst axisValues = [ 'both', 'horizontal', 'vertical' ]\n\nexport default createComponent({\n name: 'QScrollObserver',\n\n props: {\n axis: {\n type: String,\n validator: v => axisValues.includes(v),\n default: 'vertical'\n },\n\n debounce: [ String, Number ],\n\n scrollTarget: {\n default: void 0\n }\n },\n\n emits: [ 'scroll' ],\n\n setup (props, { emit }) {\n const scroll = {\n position: {\n top: 0,\n left: 0\n },\n\n direction: 'down',\n directionChanged: false,\n\n delta: {\n top: 0,\n left: 0\n },\n\n inflectionPoint: {\n top: 0,\n left: 0\n }\n }\n\n let clearTimer = null, localScrollTarget, parentEl\n\n watch(() => props.scrollTarget, () => {\n unconfigureScrollTarget()\n configureScrollTarget()\n })\n\n function emitEvent () {\n clearTimer !== null && clearTimer()\n\n const top = Math.max(0, getVerticalScrollPosition(localScrollTarget))\n const left = getHorizontalScrollPosition(localScrollTarget)\n\n const delta = {\n top: top - scroll.position.top,\n left: left - scroll.position.left\n }\n\n if (\n (props.axis === 'vertical' && delta.top === 0)\n || (props.axis === 'horizontal' && delta.left === 0)\n ) {\n return\n }\n\n const curDir = Math.abs(delta.top) >= Math.abs(delta.left)\n ? (delta.top < 0 ? 'up' : 'down')\n : (delta.left < 0 ? 'left' : 'right')\n\n scroll.position = { top, left }\n scroll.directionChanged = scroll.direction !== curDir\n scroll.delta = delta\n\n if (scroll.directionChanged === true) {\n scroll.direction = curDir\n scroll.inflectionPoint = scroll.position\n }\n\n emit('scroll', { ...scroll })\n }\n\n function configureScrollTarget () {\n localScrollTarget = getScrollTarget(parentEl, props.scrollTarget)\n localScrollTarget.addEventListener('scroll', trigger, passive)\n trigger(true)\n }\n\n function unconfigureScrollTarget () {\n if (localScrollTarget !== void 0) {\n localScrollTarget.removeEventListener('scroll', trigger, passive)\n localScrollTarget = void 0\n }\n }\n\n function trigger (immediately) {\n if (immediately === true || props.debounce === 0 || props.debounce === '0') {\n emitEvent()\n }\n else if (clearTimer === null) {\n const [ timer, fn ] = props.debounce\n ? [ setTimeout(emitEvent, props.debounce), clearTimeout ]\n : [ requestAnimationFrame(emitEvent), cancelAnimationFrame ]\n\n clearTimer = () => {\n fn(timer)\n clearTimer = null\n }\n }\n }\n\n const { proxy } = getCurrentInstance()\n\n watch(() => proxy.$q.lang.rtl, emitEvent)\n\n onMounted(() => {\n parentEl = proxy.$el.parentNode\n configureScrollTarget()\n })\n\n onBeforeUnmount(() => {\n clearTimer !== null && clearTimer()\n unconfigureScrollTarget()\n })\n\n // expose public methods\n Object.assign(proxy, {\n trigger,\n getPosition: () => scroll\n })\n\n return noop\n }\n})\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QCard',\n\n props: {\n ...useDarkProps,\n\n tag: {\n type: String,\n default: 'div'\n },\n\n square: Boolean,\n flat: Boolean,\n bordered: Boolean\n },\n\n setup (props, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n const isDark = useDark(props, $q)\n\n const classes = computed(() =>\n 'q-card'\n + (isDark.value === true ? ' q-card--dark q-dark' : '')\n + (props.bordered === true ? ' q-card--bordered' : '')\n + (props.square === true ? ' q-card--square no-border-radius' : '')\n + (props.flat === true ? ' q-card--flat no-shadow' : '')\n )\n\n return () => h(props.tag, { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QBtnGroup',\n\n props: {\n unelevated: Boolean,\n outline: Boolean,\n flat: Boolean,\n rounded: Boolean,\n square: Boolean,\n push: Boolean,\n stretch: Boolean,\n glossy: Boolean,\n spread: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() => {\n const cls = [ 'unelevated', 'outline', 'flat', 'rounded', 'square', 'push', 'stretch', 'glossy' ]\n .filter(t => props[ t ] === true)\n .map(t => `q-btn-group--${ t }`).join(' ')\n\n return `q-btn-group row no-wrap${ cls.length > 0 ? ' ' + cls : '' }`\n + (props.spread === true ? ' q-btn-group--spread' : ' inline')\n })\n\n return () => h('div', { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, ref, computed, watch, onMounted, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QBtn from '../btn/QBtn.js'\nimport QBtnGroup from '../btn-group/QBtnGroup.js'\nimport QMenu from '../menu/QMenu.js'\n\nimport { getBtnDesignAttr, useBtnProps } from '../btn/use-btn.js'\nimport { useTransitionProps } from '../../composables/private/use-transition.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stop } from '../../utils/event.js'\nimport uid from '../../utils/uid.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nconst btnPropsList = Object.keys(useBtnProps)\n\nexport const passBtnProps = props => btnPropsList.reduce(\n (acc, key) => {\n const val = props[ key ]\n if (val !== void 0) {\n acc[ key ] = val\n }\n return acc\n },\n {}\n)\n\nexport default createComponent({\n name: 'QBtnDropdown',\n\n props: {\n ...useBtnProps,\n ...useTransitionProps,\n\n modelValue: Boolean,\n split: Boolean,\n dropdownIcon: String,\n\n contentClass: [ Array, String, Object ],\n contentStyle: [ Array, String, Object ],\n\n cover: Boolean,\n persistent: Boolean,\n noRouteDismiss: Boolean,\n autoClose: Boolean,\n\n menuAnchor: {\n type: String,\n default: 'bottom end'\n },\n menuSelf: {\n type: String,\n default: 'top end'\n },\n menuOffset: Array,\n\n disableMainBtn: Boolean,\n disableDropdown: Boolean,\n\n noIconAnimation: Boolean,\n\n toggleAriaLabel: String\n },\n\n emits: [ 'update:modelValue', 'click', 'beforeShow', 'show', 'beforeHide', 'hide' ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n\n const showing = ref(props.modelValue)\n const menuRef = ref(null)\n const targetUid = uid()\n\n const ariaAttrs = computed(() => {\n const acc = {\n 'aria-expanded': showing.value === true ? 'true' : 'false',\n 'aria-haspopup': 'true',\n 'aria-controls': targetUid,\n 'aria-label': props.toggleAriaLabel || proxy.$q.lang.label[ showing.value === true ? 'collapse' : 'expand' ](props.label)\n }\n\n if (\n props.disable === true\n || (\n (props.split === false && props.disableMainBtn === true)\n || props.disableDropdown === true\n )\n ) {\n acc[ 'aria-disabled' ] = 'true'\n }\n\n return acc\n })\n\n const iconClass = computed(() =>\n 'q-btn-dropdown__arrow'\n + (showing.value === true && props.noIconAnimation === false ? ' rotate-180' : '')\n + (props.split === false ? ' q-btn-dropdown__arrow-container' : '')\n )\n\n const btnDesignAttr = computed(() => getBtnDesignAttr(props))\n const btnProps = computed(() => passBtnProps(props))\n\n watch(() => props.modelValue, val => {\n menuRef.value !== null && menuRef.value[ val ? 'show' : 'hide' ]()\n })\n\n watch(() => props.split, hide)\n\n function onBeforeShow (e) {\n showing.value = true\n emit('beforeShow', e)\n }\n\n function onShow (e) {\n emit('show', e)\n emit('update:modelValue', true)\n }\n\n function onBeforeHide (e) {\n showing.value = false\n emit('beforeHide', e)\n }\n\n function onHide (e) {\n emit('hide', e)\n emit('update:modelValue', false)\n }\n\n function onClick (e) {\n emit('click', e)\n }\n\n function onClickHide (e) {\n stop(e)\n hide()\n emit('click', e)\n }\n\n function toggle (evt) {\n menuRef.value !== null && menuRef.value.toggle(evt)\n }\n\n function show (evt) {\n menuRef.value !== null && menuRef.value.show(evt)\n }\n\n function hide (evt) {\n menuRef.value !== null && menuRef.value.hide(evt)\n }\n\n // expose public methods\n Object.assign(proxy, {\n show, hide, toggle\n })\n\n onMounted(() => {\n props.modelValue === true && show()\n })\n\n return () => {\n const Arrow = [\n h(QIcon, {\n class: iconClass.value,\n name: props.dropdownIcon || proxy.$q.iconSet.arrow.dropdown\n })\n ]\n\n props.disableDropdown !== true && Arrow.push(\n h(QMenu, {\n ref: menuRef,\n id: targetUid,\n class: props.contentClass,\n style: props.contentStyle,\n cover: props.cover,\n fit: true,\n persistent: props.persistent,\n noRouteDismiss: props.noRouteDismiss,\n autoClose: props.autoClose,\n anchor: props.menuAnchor,\n self: props.menuSelf,\n offset: props.menuOffset,\n separateClosePopup: true,\n transitionShow: props.transitionShow,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n onBeforeShow,\n onShow,\n onBeforeHide,\n onHide\n }, slots.default)\n )\n\n if (props.split === false) {\n return h(QBtn, {\n class: 'q-btn-dropdown q-btn-dropdown--simple',\n ...btnProps.value,\n ...ariaAttrs.value,\n disable: props.disable === true || props.disableMainBtn === true,\n noWrap: true,\n round: false,\n onClick\n }, {\n default: () => hSlot(slots.label, []).concat(Arrow),\n loading: slots.loading\n })\n }\n\n return h(QBtnGroup, {\n class: 'q-btn-dropdown q-btn-dropdown--split no-wrap q-btn-item',\n rounded: props.rounded,\n square: props.square,\n ...btnDesignAttr.value,\n glossy: props.glossy,\n stretch: props.stretch\n }, () => [\n h(QBtn, {\n class: 'q-btn-dropdown--current',\n ...btnProps.value,\n disable: props.disable === true || props.disableMainBtn === true,\n noWrap: true,\n round: false,\n onClick: onClickHide\n }, {\n default: slots.label,\n loading: slots.loading\n }),\n\n h(QBtn, {\n class: 'q-btn-dropdown__arrow-container q-anchor--skip',\n ...ariaAttrs.value,\n ...btnDesignAttr.value,\n disable: props.disable === true || props.disableDropdown === true,\n rounded: props.rounded,\n color: props.color,\n textColor: props.textColor,\n dense: props.dense,\n size: props.size,\n padding: props.padding,\n ripple: props.ripple\n }, () => Arrow)\n ])\n }\n }\n})\n","import Platform from '../../plugins/Platform.js'\n\nexport function clearSelection () {\n if (window.getSelection !== void 0) {\n const selection = window.getSelection()\n if (selection.empty !== void 0) {\n selection.empty()\n }\n else if (selection.removeAllRanges !== void 0) {\n selection.removeAllRanges()\n Platform.is.mobile !== true && selection.addRange(document.createRange())\n }\n }\n else if (document.selection !== void 0) {\n document.selection.empty()\n }\n}\n","import { unref } from 'vue'\n\nexport function offset (el) {\n if (el === window) {\n return { top: 0, left: 0 }\n }\n const { top, left } = el.getBoundingClientRect()\n return { top, left }\n}\n\nexport function style (el, property) {\n return window.getComputedStyle(el).getPropertyValue(property)\n}\n\nexport function height (el) {\n return el === window\n ? window.innerHeight\n : el.getBoundingClientRect().height\n}\n\nexport function width (el) {\n return el === window\n ? window.innerWidth\n : el.getBoundingClientRect().width\n}\n\nexport function css (element, css) {\n const style = element.style\n\n for (const prop in css) {\n style[ prop ] = css[ prop ]\n }\n}\n\nexport function cssBatch (elements, style) {\n elements.forEach(el => css(el, style))\n}\n\nexport function ready (fn) {\n if (typeof fn !== 'function') {\n return\n }\n\n if (document.readyState !== 'loading') {\n return fn()\n }\n\n document.addEventListener('DOMContentLoaded', fn, false)\n}\n\n// internal\nexport function getElement (el) {\n if (el === void 0 || el === null) {\n return void 0\n }\n\n if (typeof el === 'string') {\n try {\n return document.querySelector(el) || void 0\n }\n catch (err) {\n return void 0\n }\n }\n\n const target = unref(el)\n if (target) {\n return target.$el || target\n }\n}\n\n// internal\nexport function childHasFocus (el, focusedEl) {\n if (el === void 0 || el === null || el.contains(focusedEl) === true) {\n return true\n }\n\n for (let next = el.nextElementSibling; next !== null; next = next.nextElementSibling) {\n if (next.contains(focusedEl)) {\n return true\n }\n }\n\n return false\n}\n\nexport default {\n offset,\n style,\n height,\n width,\n css,\n cssBatch,\n ready\n}\n","import { h, createApp, Transition, onMounted } from 'vue'\n\nimport QSpinner from '../components/spinner/QSpinner.js'\n\nimport defineReactivePlugin from '../utils/private/define-reactive-plugin.js'\nimport { createGlobalNode, removeGlobalNode } from '../utils/private/global-nodes.js'\nimport preventScroll from '../utils/prevent-scroll.js'\nimport { isObject } from '../utils/is.js'\n\nlet\n app,\n vm,\n uid = 0,\n timeout,\n props = {},\n activeGroups = {}\n\nconst originalDefaults = {\n group: '__default_quasar_group__',\n delay: 0,\n message: false,\n html: false,\n spinnerSize: 80,\n spinnerColor: '',\n messageColor: '',\n backgroundColor: '',\n boxClass: '',\n spinner: QSpinner,\n customClass: ''\n}\n\nconst defaults = { ...originalDefaults }\n\nfunction registerProps (opts) {\n if (opts && opts.group !== void 0 && activeGroups[ opts.group ] !== void 0) {\n return Object.assign(activeGroups[ opts.group ], opts)\n }\n\n const newProps = isObject(opts) === true && opts.ignoreDefaults === true\n ? { ...originalDefaults, ...opts }\n : { ...defaults, ...opts }\n\n activeGroups[ newProps.group ] = newProps\n return newProps\n}\n\nconst Plugin = defineReactivePlugin({\n isActive: false\n}, {\n show (opts) {\n if (__QUASAR_SSR_SERVER__) { return }\n\n props = registerProps(opts)\n const { group } = props\n\n Plugin.isActive = true\n\n if (app !== void 0) {\n props.uid = uid\n vm.$forceUpdate()\n }\n else {\n props.uid = ++uid\n clearTimeout(timeout)\n\n timeout = setTimeout(() => {\n timeout = void 0\n\n const el = createGlobalNode('q-loading')\n\n app = createApp({\n name: 'QLoading',\n\n setup () {\n onMounted(() => {\n preventScroll(true)\n })\n\n function onAfterLeave () {\n // might be called to finalize\n // previous leave, even if it was cancelled\n if (Plugin.isActive !== true && app !== void 0) {\n preventScroll(false)\n app.unmount(el)\n removeGlobalNode(el)\n app = void 0\n vm = void 0\n }\n }\n\n function getContent () {\n if (Plugin.isActive !== true) {\n return null\n }\n\n const content = [\n h(props.spinner, {\n class: 'q-loading__spinner',\n color: props.spinnerColor,\n size: props.spinnerSize\n })\n ]\n\n props.message && content.push(\n h('div', {\n class: 'q-loading__message'\n + (props.messageColor ? ` text-${ props.messageColor }` : ''),\n [ props.html === true ? 'innerHTML' : 'textContent' ]: props.message\n })\n )\n\n return h('div', {\n class: 'q-loading fullscreen flex flex-center z-max ' + props.customClass.trim(),\n key: props.uid\n }, [\n h('div', {\n class: 'q-loading__backdrop'\n + (props.backgroundColor ? ` bg-${ props.backgroundColor }` : '')\n }),\n\n h('div', {\n class: 'q-loading__box column items-center ' + props.boxClass\n }, content)\n ])\n }\n\n return () => h(Transition, {\n name: 'q-transition--fade',\n appear: true,\n onAfterLeave\n }, getContent)\n }\n })\n\n vm = app.mount(el)\n }, props.delay)\n }\n\n return paramProps => {\n // if we don't have params (or not an Object param) then we need to hide this group\n if (paramProps === void 0 || Object(paramProps) !== paramProps) {\n Plugin.hide(group)\n return\n }\n\n // else we have params so we need to update this group\n Plugin.show({ ...paramProps, group })\n }\n },\n\n hide (group) {\n if (__QUASAR_SSR_SERVER__ !== true && Plugin.isActive === true) {\n if (group === void 0) {\n // clear out any active groups\n activeGroups = {}\n }\n else if (activeGroups[ group ] === void 0) {\n // we've already hidden it so nothing to do\n return\n }\n else {\n // remove active group\n delete activeGroups[ group ]\n\n const keys = Object.keys(activeGroups)\n\n // if there are other groups registered then\n // show last registered one since that one is still active\n if (keys.length !== 0) {\n // get last registered group\n const lastGroup = keys[ keys.length - 1 ]\n Plugin.show({ group: lastGroup })\n return\n }\n }\n\n if (timeout !== void 0) {\n clearTimeout(timeout)\n timeout = void 0\n }\n\n Plugin.isActive = false\n }\n },\n\n setDefaults (opts) {\n if (__QUASAR_SSR_SERVER__ !== true) {\n isObject(opts) === true && Object.assign(defaults, opts)\n }\n },\n\n install ({ $q }) {\n $q.loading = this\n\n if (__QUASAR_SSR_SERVER__ !== true && $q.config.loading !== void 0) {\n this.setDefaults($q.config.loading)\n }\n }\n})\n\nexport default Plugin\n","let queue = []\nlet waitFlags = []\n\nfunction clearFlag (flag) {\n waitFlags = waitFlags.filter(entry => entry !== flag)\n}\n\nexport function addFocusWaitFlag (flag) {\n clearFlag(flag)\n waitFlags.push(flag)\n}\n\nexport function removeFocusWaitFlag (flag) {\n clearFlag(flag)\n\n if (waitFlags.length === 0 && queue.length > 0) {\n // only call last focus handler (can't focus multiple things at once)\n queue[ queue.length - 1 ]()\n queue = []\n }\n}\n\nexport function addFocusFn (fn) {\n if (waitFlags.length === 0) {\n fn()\n }\n else {\n queue.push(fn)\n }\n}\n\nexport function removeFocusFn (fn) {\n queue = queue.filter(entry => entry !== fn)\n}\n","export default function () {\n const cache = new Map()\n\n return {\n getCache: __QUASAR_SSR_SERVER__\n ? function (_, obj) { return obj }\n : function (key, obj) {\n return cache[ key ] === void 0\n ? (cache[ key ] = obj)\n : cache[ key ]\n },\n\n getCacheWithFn: __QUASAR_SSR_SERVER__\n ? function (_, fn) { return fn() }\n : function (key, fn) {\n return cache[ key ] === void 0\n ? (cache[ key ] = fn())\n : cache[ key ]\n }\n }\n}\n"],"sourceRoot":""}