{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/quasar/src/utils/is.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/quasar/src/utils/format.js","webpack:///./node_modules/quasar/src/utils/export-file.js","webpack:///./node_modules/quasar/src/utils/date-persian.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/quasar/src/utils/date.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/quasar/src/utils/cache.js","webpack:///./node_modules/quasar/src/mixins/attrs.js","webpack:///./node_modules/quasar/src/components/ajax-bar/QAjaxBar.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/quasar/src/mixins/size.js","webpack:///./node_modules/quasar/src/mixins/tag.js","webpack:///./node_modules/quasar/src/mixins/listeners.js","webpack:///./node_modules/quasar/src/utils/slot.js","webpack:///./node_modules/quasar/src/components/icon/QIcon.js","webpack:///./node_modules/quasar/src/components/avatar/QAvatar.js","webpack:///./node_modules/quasar/src/components/badge/QBadge.js","webpack:///./node_modules/quasar/src/mixins/dark.js","webpack:///./node_modules/quasar/src/components/banner/QBanner.js","webpack:///./node_modules/quasar/src/components/bar/QBar.js","webpack:///./node_modules/quasar/src/mixins/align.js","webpack:///./node_modules/quasar/src/components/breadcrumbs/QBreadcrumbs.js","webpack:///./node_modules/quasar/src/mixins/router-link.js","webpack:///./node_modules/quasar/src/components/breadcrumbs/QBreadcrumbsEl.js","webpack:///./node_modules/quasar/src/components/spinner/spinner-mixin.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinner.js","webpack:///./node_modules/quasar/src/utils/dom.js","webpack:///./node_modules/quasar/src/utils/throttle.js","webpack:///./node_modules/quasar/src/directives/Ripple.js","webpack:///./node_modules/quasar/src/mixins/ripple.js","webpack:///./node_modules/quasar/src/mixins/btn.js","webpack:///./node_modules/quasar/src/utils/touch.js","webpack:///./node_modules/quasar/src/components/btn/QBtn.js","webpack:///./node_modules/quasar/src/components/btn-group/QBtnGroup.js","webpack:///./node_modules/quasar/src/utils/selection.js","webpack:///./node_modules/quasar/src/mixins/anchor.js","webpack:///./node_modules/quasar/src/mixins/timeout.js","webpack:///./node_modules/quasar/src/mixins/model-toggle.js","webpack:///./node_modules/quasar/src/mixins/portal.js","webpack:///./node_modules/quasar/src/components/menu/ClickOutside.js","webpack:///./node_modules/quasar/src/mixins/transition.js","webpack:///./node_modules/quasar/src/utils/vm.js","webpack:///./node_modules/quasar/src/utils/scroll.js","webpack:///./node_modules/quasar/src/utils/position-engine.js","webpack:///./node_modules/quasar/src/utils/escape-key.js","webpack:///./node_modules/quasar/src/components/menu/QMenu.js","webpack:///./node_modules/quasar/src/components/btn-dropdown/QBtnDropdown.js","webpack:///./node_modules/quasar/src/mixins/form.js","webpack:///./node_modules/quasar/src/components/btn-toggle/QBtnToggle.js","webpack:///./node_modules/quasar/src/components/card/QCard.js","webpack:///./node_modules/quasar/src/components/card/QCardSection.js","webpack:///./node_modules/quasar/src/components/card/QCardActions.js","webpack:///./node_modules/quasar/src/directives/TouchSwipe.js","webpack:///./node_modules/quasar/src/mixins/panel.js","webpack:///./node_modules/quasar/src/mixins/fullscreen.js","webpack:///./node_modules/quasar/src/components/carousel/QCarousel.js","webpack:///./node_modules/quasar/src/components/carousel/QCarouselSlide.js","webpack:///./node_modules/quasar/src/components/carousel/QCarouselControl.js","webpack:///./node_modules/quasar/src/components/chat/QChatMessage.js","webpack:///./node_modules/quasar/src/mixins/option-size.js","webpack:///./node_modules/quasar/src/mixins/refocus-target.js","webpack:///./node_modules/quasar/src/mixins/checkbox.js","webpack:///./node_modules/quasar/src/components/checkbox/QCheckbox.js","webpack:///./node_modules/quasar/src/components/chip/QChip.js","webpack:///./node_modules/quasar/src/components/circular-progress/QCircularProgress.js","webpack:///./node_modules/quasar/src/utils/patterns.js","webpack:///./node_modules/quasar/src/directives/TouchPan.js","webpack:///./node_modules/quasar/src/components/slider/slider-utils.js","webpack:///./node_modules/quasar/src/components/slider/QSlider.js","webpack:///./node_modules/quasar/src/mixins/can-render.js","webpack:///./node_modules/quasar/src/components/resize-observer/QResizeObserver.js","webpack:///./node_modules/quasar/src/components/tabs/QTabs.js","webpack:///./node_modules/quasar/src/components/tabs/QTab.js","webpack:///./node_modules/quasar/src/components/tab-panels/QTabPanels.js","webpack:///./node_modules/quasar/src/components/tab-panels/QTabPanel.js","webpack:///./node_modules/quasar/src/components/color/QColor.js","webpack:///./node_modules/quasar/src/mixins/datetime.js","webpack:///./node_modules/quasar/src/components/date/QDate.js","webpack:///./node_modules/quasar/src/mixins/prevent-scroll.js","webpack:///./node_modules/quasar/src/mixins/history.js","webpack:///./node_modules/quasar/src/utils/uid.js","webpack:///./node_modules/quasar/src/components/dialog/QDialog.js","webpack:///./node_modules/quasar/src/components/drawer/QDrawer.js","webpack:///./node_modules/quasar/src/mixins/validate.js","webpack:///./node_modules/quasar/src/components/field/QField.js","webpack:///./node_modules/quasar/src/mixins/file.js","webpack:///./node_modules/quasar/src/mixins/mask.js","webpack:///./node_modules/quasar/src/mixins/composition.js","webpack:///./node_modules/quasar/src/components/input/QInput.js","webpack:///./node_modules/quasar/src/components/tooltip/QTooltip.js","webpack:///./node_modules/quasar/src/components/item/QList.js","webpack:///./node_modules/quasar/src/components/item/QItem.js","webpack:///./node_modules/quasar/src/components/item/QItemSection.js","webpack:///./node_modules/quasar/src/components/editor/editor-utils.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/quasar/src/components/editor/editor-caret.js","webpack:///./node_modules/quasar/src/utils/extend.js","webpack:///./node_modules/quasar/src/components/editor/QEditor.js","webpack:///./node_modules/quasar/src/components/item/QItemLabel.js","webpack:///./node_modules/quasar/src/components/slide-transition/QSlideTransition.js","webpack:///./node_modules/quasar/src/components/separator/QSeparator.js","webpack:///./node_modules/quasar/src/components/expansion-item/QExpansionItem.js","webpack:///./node_modules/quasar/src/mixins/fab.js","webpack:///./node_modules/quasar/src/components/fab/QFab.js","webpack:///./node_modules/quasar/src/components/fab/QFabAction.js","webpack:///./node_modules/quasar/src/components/file/QFile.js","webpack:///./node_modules/quasar/src/components/footer/QFooter.js","webpack:///./node_modules/quasar/src/components/form/QForm.js","webpack:///./node_modules/quasar/src/components/header/QHeader.js","webpack:///./node_modules/quasar/src/mixins/ratio.js","webpack:///./node_modules/quasar/src/components/img/QImg.js","webpack:///./node_modules/quasar/src/components/infinite-scroll/QInfiniteScroll.js","webpack:///./node_modules/quasar/src/components/inner-loading/QInnerLoading.js","webpack:///./node_modules/quasar/src/directives/Intersection.js","webpack:///./node_modules/quasar/src/components/intersection/QIntersection.js","webpack:///./node_modules/quasar/src/components/knob/QKnob.js","webpack:///./node_modules/quasar/src/components/scroll-observer/QScrollObserver.js","webpack:///./node_modules/quasar/src/components/layout/QLayout.js","webpack:///./node_modules/quasar/src/components/markup-table/QMarkupTable.js","webpack:///./node_modules/quasar/src/components/no-ssr/QNoSsr.js","webpack:///./node_modules/quasar/src/components/radio/QRadio.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/components/page/QPage.js","webpack:///./node_modules/quasar/src/components/page/QPageContainer.js","webpack:///./node_modules/quasar/src/components/page-sticky/QPageSticky.js","webpack:///./node_modules/quasar/src/components/page-scroller/QPageScroller.js","webpack:///./node_modules/quasar/src/components/pagination/QPagination.js","webpack:///./node_modules/quasar/src/utils/frame-debounce.js","webpack:///./node_modules/quasar/src/components/parallax/QParallax.js","webpack:///./node_modules/quasar/src/utils/clone.js","webpack:///./node_modules/quasar/src/components/popup-edit/QPopupEdit.js","webpack:///./node_modules/quasar/src/components/popup-proxy/QPopupProxy.js","webpack:///./node_modules/quasar/src/components/linear-progress/QLinearProgress.js","webpack:///./node_modules/quasar/src/components/pull-to-refresh/QPullToRefresh.js","webpack:///./node_modules/quasar/src/components/range/QRange.js","webpack:///./node_modules/quasar/src/components/rating/QRating.js","webpack:///./node_modules/quasar/src/components/responsive/QResponsive.js","webpack:///./node_modules/quasar/src/components/scroll-area/QScrollArea.js","webpack:///./node_modules/quasar/src/mixins/virtual-scroll.js","webpack:///./node_modules/quasar/src/components/select/QSelect.js","webpack:///./node_modules/quasar/src/components/skeleton/QSkeleton.js","webpack:///./node_modules/quasar/src/components/slide-item/QSlideItem.js","webpack:///./node_modules/quasar/src/components/space/QSpace.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerAudio.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerBall.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerBars.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerComment.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerCube.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerDots.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerFacebook.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerGears.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerGrid.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerHearts.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerHourglass.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerInfinity.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerIos.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerOval.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerPie.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerPuff.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerRadio.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerRings.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerTail.js","webpack:///./node_modules/quasar/src/components/splitter/QSplitter.js","webpack:///./node_modules/quasar/src/components/stepper/StepHeader.js","webpack:///./node_modules/quasar/src/components/stepper/QStep.js","webpack:///./node_modules/quasar/src/components/stepper/QStepper.js","webpack:///./node_modules/quasar/src/components/stepper/QStepperNavigation.js","webpack:///./node_modules/quasar/src/components/table/table-top.js","webpack:///./node_modules/quasar/src/components/table/QTh.js","webpack:///./node_modules/quasar/src/components/table/table-header.js","webpack:///./node_modules/quasar/src/components/table/table-body.js","webpack:///./node_modules/quasar/src/components/table/table-bottom.js","webpack:///./node_modules/quasar/src/components/table/table-grid.js","webpack:///./node_modules/quasar/src/components/table/get-table-middle.js","webpack:///./node_modules/quasar/src/components/virtual-scroll/QVirtualScroll.js","webpack:///./node_modules/quasar/src/utils/sort.js","webpack:///./node_modules/quasar/src/components/table/table-sort.js","webpack:///./node_modules/quasar/src/components/table/table-filter.js","webpack:///./node_modules/quasar/src/components/table/table-pagination.js","webpack:///./node_modules/quasar/src/components/table/table-row-selection.js","webpack:///./node_modules/quasar/src/components/table/table-row-expand.js","webpack:///./node_modules/quasar/src/components/table/table-column-selection.js","webpack:///./node_modules/quasar/src/components/table/QTable.js","webpack:///./node_modules/quasar/src/components/table/QTr.js","webpack:///./node_modules/quasar/src/components/table/QTd.js","webpack:///./node_modules/quasar/src/utils/router.js","webpack:///./node_modules/quasar/src/components/tabs/QRouteTab.js","webpack:///./node_modules/quasar/src/components/time/QTime.js","webpack:///./node_modules/quasar/src/components/timeline/QTimeline.js","webpack:///./node_modules/quasar/src/components/timeline/QTimelineEntry.js","webpack:///./node_modules/quasar/src/components/toolbar/QToolbar.js","webpack:///./node_modules/quasar/src/components/toolbar/QToolbarTitle.js","webpack:///./node_modules/quasar/src/components/tree/QTree.js","webpack:///./node_modules/quasar/src/components/uploader/QUploaderBase.js","webpack:///./node_modules/quasar/src/components/uploader/uploader-xhr-mixin.js","webpack:///./node_modules/quasar/src/components/uploader/QUploader.js","webpack:///./node_modules/quasar/src/components/uploader/QUploaderAddTrigger.js","webpack:///./node_modules/quasar/src/components/video/QVideo.js","webpack:///./node_modules/quasar/src/directives/ClosePopup.js","webpack:///./node_modules/quasar/src/directives/GoBack.js","webpack:///./node_modules/quasar/src/utils/morph.js","webpack:///./node_modules/quasar/src/directives/Morph.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./node_modules/quasar/src/directives/Mutation.js","webpack:///./node_modules/quasar/src/directives/ScrollFire.js","webpack:///./node_modules/quasar/src/directives/Scroll.js","webpack:///./node_modules/quasar/src/directives/TouchHold.js","webpack:///./node_modules/quasar/src/directives/TouchRepeat.js","webpack:///./node_modules/quasar/src/plugins/AddressbarColor.js","webpack:///./node_modules/quasar/src/plugins/AppFullscreen.js","webpack:///./node_modules/quasar/src/plugins/AppVisibility.js","webpack:///./node_modules/quasar/src/components/dialog-bottom-sheet/BottomSheet.js","webpack:///./node_modules/quasar/src/utils/global-dialog.js","webpack:///./node_modules/quasar/src/plugins/BottomSheet.js","webpack:///./node_modules/quasar/src/plugins/Cookies.js","webpack:///./node_modules/quasar/src/components/dialog-plugin/DialogPlugin.js","webpack:///./node_modules/quasar/src/plugins/Dialog.js","webpack:///./node_modules/quasar/src/plugins/LoadingBar.js","webpack:///./node_modules/quasar/src/plugins/Loading.js","webpack:///./node_modules/quasar/src/plugins/Meta.js","webpack:///./node_modules/quasar/src/plugins/Notify.js","webpack:///./node_modules/quasar/src/utils/web-storage.js","webpack:///./node_modules/quasar/src/plugins/LocalStorage.js","webpack:///./node_modules/quasar/src/plugins/SessionStorage.js","webpack:///./node_modules/quasar/src/index.esm.js"],"names":["ctx","$export","toObject","call","isArrayIter","toLength","createProperty","getIterFn","S","F","iter","Array","from","arrayLike","length","result","step","iterator","O","C","this","aLen","arguments","mapfn","undefined","mapping","index","iterFn","next","done","value","fails","module","exports","method","arg","init","data","byteOffset","strong","validate","SET","get","add","def","aFunction","$sort","sort","test","P","comparefn","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isDeepEqual","a","b","constructor","i","size","entries","has","buffer","RegExp","source","flags","valueOf","Object","prototype","toString","keys","key","isDate","v","isNumber","isFinite","fill","units","humanStorageSize","bytes","u","parseInt","toFixed","capitalize","str","charAt","toUpperCase","slice","between","min","max","Math","normalizeToInterval","pad","char","val","join","clean","link","setTimeout","window","URL","revokeObjectURL","href","remove","fileName","rawData","mimeType","blob","Blob","type","navigator","msSaveOrOpenBlob","document","createElement","download","createObjectURL","classList","style","position","body","appendChild","click","err","breaks","toJalaali","gy","gm","gd","getDate","getMonth","getFullYear","d2j","g2d","toGregorian","jy","jm","jd","d2g","j2d","isLeapJalaaliYear","jalCalLeap","jalaaliMonthLength","jump","leap","n","bl","jp","Error","div","mod","jalCal","withoutLeap","leapJ","leapG","march","r","jdn","k","jdn1f","d","j","isObject","it","TYPE","_t","TypeError","MILLISECONDS_IN_DAY","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","defaultMask","token","reverseToken","regexStore","getRegexData","mask","dateLocale","days","daysShort","months","monthsShort","map","regexText","replace","match","YY","YYYY","M","MMM","MMMM","D","H","h","m","s","A","aa","Z","ZZ","X","x","substring","res","regex","extractDate","__splitDate","date","Date","year","month","day","hour","minute","second","millisecond","tzOffset","getTimezoneOffset","timezoneOffset","getChange","minutes","calendar","defaultModel","dateHash","timeHash","assign","langOpts","lang","props","tzString","stamp","isNaN","getHours","getMinutes","getSeconds","getMilliseconds","y","indexOf","maxDay","formatTimezone","offset","delimeter","sign","absOffset","abs","hours","floor","setMonth","newMonth","t","forEach","op","isValid","parse","buildDate","utc","adjustDate","getDayOfWeek","dow","getDay","getWeekOfYear","thursday","setDate","firstThursday","ds","setHours","weekDiff","getDayIdentifier","getDateIdentifier","onlyDate","getTime","isBetweenDates","to","opts","d1","d2","cur","inclusiveFrom","inclusiveTo","addToDate","subtractFromDate","prefix","startOfDate","unit","setMinutes","setSeconds","setMilliseconds","endOfDate","daysInMonth","getMaxDate","getMinDate","getDiff","sub","interval","getDateDiff","subtract","getDayOfYear","inferDateFormat","getDateBetween","low","high","isSameDate","date2","getOrdinal","formatter","_","forcedYear","MM","Q","ceil","Qo","Do","DD","DDD","DDDD","dd","dddd","ddd","E","w","ww","HH","hh","mm","ss","SS","SSS","forcedTimezoneOffset","formatDate","__forcedYear","__forcedTimezoneOffset","Infinity","locale","text","split","clone","dP","f","create","redefineAll","anInstance","forOf","$iterDefine","setSpecies","DESCRIPTORS","fastKey","SIZE","getEntry","that","entry","_i","_f","getConstructor","wrapper","NAME","IS_MAP","ADDER","iterable","_l","clear","p","prev","callbackfn","setStrong","iterated","kind","_k","global","redefine","meta","$iterDetect","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","Base","proto","fixMethod","KEY","fn","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","target","NEED","G","W","MAP","set","cache","vm","obj","isSSR","cacheWithFn","getPropCacheMixin","propName","proxyPropName","prop","watch","newObj","oldObj","$delete","$set","ariaHidden","xhr","XMLHttpRequest","send","stackStart","stackStop","highjackCount","translate","pos","active","horiz","reverse","dir","transform","inc","amount","random","highjackAjax","start","stop","endHandler","push","addEventListener","apply","restoreAjax","splice","Vue","extend","name","String","default","validator","includes","color","skipHijack","Boolean","calls","progress","onScreen","animate","computed","classes","o","horizontal","$q","rtl","sizeProp","opacity","attrs","role","speed","oldSpeed","__work","clearTimeout","timer","$emit","increment","end","mounted","hijacked","beforeDestroy","render","class","_arrayWithHoles","arr","isArray","_iterableToArrayLimit","Symbol","_arr","_n","_d","_e","_s","_nonIterableRest","_slicedToArray","unsupportedIterableToArray","sizes","xs","sm","md","lg","xl","getSizeMixin","sizeStyle","fontSize","tag","slot","slotName","otherwise","$scopedSlots","uniqueSlot","mergeSlot","concat","mergeSlotSafely","mixins","ListenersMixin","SizeMixin","TagMixin","left","right","cls","icon","none","iconMapFn","content","startsWith","viewBox","svg","nodes","path","$createElement","img","src","svguse","platform","is","ios","substr","on","qListeners","focusable","textColor","square","rounded","contentStyle","QIcon","staticClass","floating","transparent","multiLine","outline","label","Number","align","verticalAlign","dark","isDark","isActive","DarkMixin","inlineActions","dense","actions","child","alignMap","center","around","evenly","stretch","alignValues","alignClass","vertical","AlignMixin","separator","separatorColor","activeColor","gutter","sepClass","activeClass","els","len","filter","c","endsWith","comp","middle","routerLinkProps","exact","append","exactActiveClass","disable","RouterLinkMixin","hasRouterLink","event","cSize","mixin","thickness","el","top","getBoundingClientRect","height","innerHeight","css","element","childHasFocus","focusedEl","contains","nextElementSibling","getBodyFullscreenElement","isFullscreen","activeEl","documentElement","limit","wait","showRipple","evt","forceCenter","modifiers","node","innerNode","width","diameter","sqrt","radius","centerX","centerY","className","setAttribute","abort","updateModifiers","cfg","config","ripple","early","keyCodes","destroy","__qripple","cleanEvt","_qripple","inserted","binding","__qripple_destroyed","enabled","qSkipRipple","client","ie","clientX","qKeyEvent","keystart","throttle","isKeyCode","addEvt","update","oldValue","unbind","directives","Ripple","padding","RippleMixin","iconRight","round","flat","unelevated","glossy","fab","fabMini","noCaps","noWrap","tabindex","stack","loading","isRounded","isActionable","computedTabIndex","isLink","design","currentLocation","$router","resolve","$route","percentage","disabled","colors","innerClasses","wrapperStyle","minWidth","minHeight","directions","modifiersAll","up","down","all","getModifierDirections","direction","getTouchTarget","iosEmulated","vendor","toLowerCase","shouldStart","draggable","handler","nodeName","qClonedBy","uid","passiveCapture","listenOpts","touchTarget","keyboardTarget","mouseTarget","iconAttrs","BtnMixin","darkPercentage","hasLabel","computedRipple","percentageStyle","transition","onEvents","mousedown","__onLoadingEvt","touchstart","keydown","keyup","__onKeydown","__onMousedown","touch","__onTouchstart","e","defaultPrevented","activeElement","clientY","$el","focus","onClickCleanup","removeEventListener","stopAndPrevent","ctrlKey","shiftKey","altKey","metaKey","go","route","noop","navigate","__cleanup","__onPressEnd","touchTargetEl","avoidMouseRipple","mouseTimer","MouseEvent","prevent","cancelBubble","dispatchEvent","destroying","blurTarget","$refs","inner","ref","QSpinner","spread","clearSelection","getSelection","selection","empty","removeAllRanges","Platform","mobile","addRange","createRange","noParentEvent","contextMenu","anchorEl","__unconfigureAnchorEl","__configureAnchorEl","__pickAnchorEl","__showCondition","touches","__contextClick","hide","$nextTick","show","__toggleKey","toggle","__mobileCleanup","touchTimer","showing","__mobilePrevent","__mobileTouch","evts","context","__setAnchorEl","parentNode","parentEl","querySelector","_isVue","console","error","__changeScrollEvent","scrollTarget","fnProp","fnHandler","__scrollFn","passive","created","__configureScrollTarget","__unconfigureScrollTarget","noParentEventWatcher","$watch","__scrollTarget","__anchorCleanup","__nextTick","__tickFn","__prepareTick","__clearTick","__setTimeout","delay","__timer","__clearTimeout","TimeoutMixin","__processModelChange","hideOnRouteChange","input","payload","__processShow","__preparePortal","__show","__processHide","__hide","closePortalMenus","$options","separateClosePopup","$parent","__renderPortal","closePortals","depth","isOnGlobalDialog","Portal","inheritAttrs","contentClass","__showPortal","fullscreen","isCapable","__portal","newParent","parentElement","__onGlobalDialog","unwatchFullscreen","__hidePortal","$destroy","parent","components","$mount","$forceUpdate","transitionShow","transitionHide","transitionState","getVmOfNode","__vue__","isVmChildOf","childVm","parentVm","notPassiveCapture","handlers","execHandlers","list","globalHandler","hasAttribute","bind","vnode","vmEl","componentInstance","trigger","toggleEl","nodeType","qClickOutside","__qclickoutside","__qclickoutside_old","timerFocusin","indexClick","findIndex","indexFocus","scrollTargets","scrollingElement","getScrollTarget","closest","getScrollHeight","scrollHeight","getScrollPosition","pageYOffset","scrollY","scrollTop","getHorizontalScrollPosition","pageXOffset","scrollX","scrollLeft","animScrollTo","duration","setScroll","requestAnimationFrame","newPos","animHorizontalScrollTo","setHorizontalScroll","scrollTo","setScrollPosition","setHorizontalScrollPosition","getScrollbarWidth","outer","visibility","overflow","w1","offsetWidth","w2","clientWidth","hasScrollbar","onY","Node","ELEMENT_NODE","clientHeight","getComputedStyle","scrollWidth","vpLeft","vpTop","escDown","__install","__installed","keyCode","register","desktop","pop","validatePosition","parts","validateOffset","parsePosition","getAnchorProps","bottom","getTargetProps","offsetHeight","setPosition","visualViewport","offsetLeft","offsetTop","setProperty","anchorProps","absoluteOffset","cover","anchorTop","anchorLeft","elStyle","maxHeight","maxWidth","fit","targetProps","anchorOrigin","selfOrigin","applyBoundaries","currentHeight","currentWidth","margin","innerWidth","anchorY","anchorX","AttrsMixin","AnchorMixin","ModelToggleMixin","PortalMixin","TransitionMixin","ClickOutside","persistent","autoClose","noRouteDismiss","noRefocus","noFocus","anchor","self","touchPosition","horizSide","menuClass","__onAutoClose","qAttrs","__refocusTarget","EscapeKey","unwatch","screen","updatePosition","bubbles","blur","__avoidAutoClose","hiding","__onClickOutside","targetClassList","dropdownIcon","menuAnchor","menuSelf","menuOffset","disableMainBtn","disableDropdown","noIconAnimation","menu","Arrow","iconSet","arrow","dropdown","QMenu","QBtn","$props","Btn","QBtnGroup","formAttrs","__injectFormInput","action","domProps","formDomProps","FormFieldMixin","nameProp","for","FormMixin","required","options","every","opt","toggleColor","toggleTextColor","readonly","clearable","hasActiveValue","find","btnOptions","mergeOption","__set","bordered","parseArg","parseFloat","__qtouchswipe","firefox","preventDraggable","styleCleanup","__qtouchswipe_destroyed","mouse","mouseCapture","sensitivity","mouseStart","leftClick","touchStart","mouseEvent","time","now","move","distX","absX","distY","absY","velX","velY","withDelay","distance","capture","PanelWrapper","PanelParentMixin","TouchSwipe","animated","infinite","swipeable","transitionPrev","transitionNext","keepAlive","panelIndex","panelTransition","panelDirectives","__swipe","contentKey","transitionPrevComputed","transitionNextComputed","newVal","oldVal","__isValidPanelName","__getPanelIndex","__forcedPanelTransition","__updatePanelTransition","__go","previous","goTo","panels","panel","componentOptions","propsData","__getAllPanels","__getAvailablePanels","startIndex","slots","__updatePanelIndex","__getPanelContent","__renderPanels","PanelChildMixin","noRouteFullscreenExit","inFullscreen","exitFullscreen","toggleFullscreen","setFullscreen","container","replaceChild","fullscreenFillerNode","__historyFullscreen","History","scrollIntoView","beforeMount","FullscreenMixin","controlType","controlColor","controlTextColor","autoplay","arrows","prevIcon","nextIcon","navigation","navigationPosition","navigationIcon","navigationActiveIcon","thumbnails","navigationPositionComputed","arrowIcons","ico","carousel","navIcon","navActiveIcon","controlProps","clearInterval","__startTimer","__getNavigationContainer","__getContent","btnProps","onClick","maxIndex","slide","imgSrc","backgroundImage","sent","bgColor","avatar","labelSanitize","nameSanitize","textSanitize","stampSanitize","textClass","messageClass","containerClass","sizeClass","__getText","domPropText","domPropStamp","msg","__getMessage","__refocusTargetEl","refocusTarget","OptionSizeMixin","RefocusTargetMixin","trueValue","falseValue","indeterminateValue","toggleOrder","toggleIndeterminate","leftLabel","keepColor","isTrue","modelIsArray","isFalse","isIndeterminate","computedTabindex","labelStyle","innerClass","state","checked","__getNextValue","__onKeyup","__getInner","CheckboxMixin","model","iconRemove","selected","clickable","removable","isClickable","hasLeftIcon","__onClick","__onRemove","chip","circumference","PI","strokeDashArray","centerColor","trackColor","angle","indeterminate","showValue","instantFeedback","normalizedValue","svgStyle","circleStyle","viewBoxAttr","strokeDashOffset","strokeWidth","__getCircle","stroke","cx","cy","svgChild","hex","hexa","hexOrHexa","rgb","rgba","testPattern","fulltime","timeOrFulltime","hexColor","hexaColor","hexOrHexaColor","rgbColor","rgbaColor","rgbOrRgbaColor","hexOrRgbColor","hexaOrRgbaColor","anyColor","getChanges","isFinal","synthetic","isFirst","lastDir","delta","lastX","lastY","__qtouchpan","__qtouchpan_destroyed","lastEvt","mouseAllDir","TouchEvent","initialEvent","detected","isMouseEvt","handleEvent","preserveCursor","cursor","withDelayedFn","getRatio","dragging","getModel","ratio","decimals","modulo","SliderMixin","TouchPan","labelColor","labelTextColor","labelAlways","markers","snap","thumbPath","preventFocus","axis","isReversed","editable","trim","computedStep","markerStyle","backgroundSize","positionProp","orientation","panDirectives","__pan","__getThumbSvg","__getPinStyle","percent","pin","transformOrigin","pinTextContainer","__updatePosition","__updateValue","__getDragging","__blur","__activate","__deactivate","__mobileClick","__keyup","labelValue","curRatio","modelRatio","trackStyle","thumbStyle","thumbClass","pinClass","pinTextClass","events","__focus","__keydown","computedLabel","pinStyle","change","track","canRender","onSSR","CanRenderMixin","debounce","hasObserver","url","__onResize","curDocView","__onObjLoad","contentDocument","defaultView","load","beforeCreate","ResizeObserver","observer","observe","unobserve","getIndicatorClass","bufferPrioritySort","t1","t2","priorityMatched","priorityHref","bufferCleanSelected","bufferFilters","redirected","bufferFiltersLen","provide","tabs","__recalculateScroll","__activateTab","__activateRoute","breakpoint","shrink","activeBgColor","indicatorColor","leftIcon","rightIcon","outsideArrows","mobileArrows","switchIndicator","narrowIndicator","inlineLabel","current","indicatorClass","scrollable","leftArrow","rightArrow","justify","arrowsEnabled","__updateArrows","__updateArrowsFn","posLeft","posRight","setCurrent","skipEmit","__animate","params","bufferRoute","bufferTimer","_isDestroyed","__updateContainer","domSize","scrollSize","scroll","oldName","newName","oldTab","$children","tab","newTab","oldEl","getElementsByClassName","newEl","animateTimer","oldPos","rect","__animScrollTo","__stopAnimScroll","__scrollTowards","scrollTimer","setInterval","__scrollToStart","__scrollToEnd","QResizeObserver","resize","mouseup","mouseleave","touchend","inject","alert","alertIcon","keyboard","narrow","indicator","__renderTab","palette","defaultValue","formatModel","noHeader","noFooter","topView","view","__parseModel","forceHex","forceAlpha","isHex","isOutputHex","hasAlpha","currentBgColor","backgroundColor","headerClass","light","luminosity","spectrumStyle","background","spectrumPointerStyle","inputsArray","inp","computedPalette","__spectrumChange","unshift","__getHeader","__getFooter","QTabs","QTab","__updateErrorIcon","__onEditorChange","negative","QTabPanels","QTabPanel","__getSpectrumTab","__getTuneTab","__getPaletteTab","colorPicker","spectrum","tune","__spectrumClick","__spectrumPan","paddingBottom","QSlider","fillHandleAlways","__onHueChange","__onNumericChange","maxlength","g","__onPalettePick","__onSpectrumChange","hsvToRgb","__update","hsv","rgbToHsv","selectionEnd","setSelectionRange","hexToRgb","rgbToHex","rgbToString","errorIcon","textToRgb","pageX","pageY","calendars","landscape","computedMask","__getMask","computedLocale","__getLocale","computedColor","computedTextColor","__getCurrentDate","jDate","__getCurrentTime","scrollPositionX","scrollPositionY","maxScrollTop","bodyLeft","bodyTop","closeTimer","yearsInterval","views","viewIsValid","yearMonthValidator","lineStr","DateTimeMixin","multiple","range","title","subtitle","defaultYearMonth","yearsInMonthView","Function","eventColor","emitImmediately","navigationMinYearMonth","navigationMaxYearMonth","noUnset","firstDayOfWeek","todayBtn","minimal","innerMask","innerLocale","viewModel","__getViewModel","monthDirection","yearDirection","startYear","editRange","lastEmitValue","__updateViewModel","isImmediate","daysModel","normalizedModel","__decodeString","rangeModel","getNativeDateFn","gDate","encodeObjectFn","__getDayHash","daysInModel","reduce","acc","headerTitle","pluralDay","headerSubtitle","minSelectedModel","maxSelectedModel","dateArrow","datetime","arrowLeft","arrowRight","computedFirstDayOfWeek","daysOfWeek","first","today","evtColor","minNav","maxNav","navBoundaries","daysMap","hash","__getMonthHash","rangeMap","hashFrom","hashTo","rangeView","initHash","final","finalHash","fromHash","toHash","viewMonthHash","includeFrom","includeTo","selectionDaysMap","dayHash","eventDaysMap","viewDays","endDay","prevJM","prevJY","in","rangeFrom","rangeTo","editRangeFrom","editRangeTo","afterDays","setToday","__toggleDate","setCalendarTo","setView","offsetCalendar","descending","setEditingRange","__getDefaultViewModel","decoded","__getNavigation","boundaries","__getCalendarView","__goToMonth","__goToYear","__onDayClick","mouseover","__onDayMouseover","__getMonthsView","currentYear","isDisabled","__setMonth","__getYearsView","years","__setYear","__emitImmediately","monthHash","__removeFromModel","__addToModel","__getShortDate","dayIndex","dayProps","newHash","__emitValue","__getEmitParams","reason","details","__encodeEntry","changed","ranges","__addHistory","__historyEntry","condition","__removeHistory","registered","vpPendingUpdate","onWheel","shouldPreventScroll","getEventPath","shift","deltaX","deltaY","onAppleScroll","onAppleResize","hasViewport","overflowY","qScrollPrevented","mac","notPassive","preventScroll","nativeMobile","__preventScroll","preventedScroll","buf","maximizedModals","positionClass","standard","transitions","HistoryMixin","PreventScrollMixin","noEscDismiss","noBackdropDismiss","seamless","maximized","fullWidth","fullHeight","transitionShowComputed","transitionHideComputed","__updateMaximized","useBackdrop","__preventFocusout","__getInnerNode","shake","shakeTimeout","isMaximized","__onFocusChange","__onBackdropClick","mouseEvents","layout","side","mini","miniToOverlay","miniWidth","showIfAbove","behavior","elevated","overlay","noSwipeOpen","noSwipeClose","noSwipeBackdrop","belowBreakpoint","totalWidth","lastDesktopState","__applyPosition","__applyBackdrop","__updateLocal","newSide","oldSide","instances","space","onLayout","rightSide","__updateSizeOnLayout","__animateMini","isMini","otherSide","fixed","onScreenOverlay","backdropClass","headerSlot","rows","footerSlot","aboveStyle","header","footer","stateDirection","onNativeEvents","openDirective","__openByTouch","contentCloseDirective","__closeByTouch","backdropCloseDirective","scrollbarWidth","__lastPosition","retry","backdrop","lastBackdropBg","__setBackdropVisible","__setScrollable","timerMini","opened","noEvent","watcher","lazyRulesValues","errorMessage","noErrorIcon","rules","reactiveRules","lazyRules","isDirty","innerError","innerErrorMessage","__validateIfNeeded","unwatchRules","immediate","focused","hasRules","hasError","computedErrorMessage","validateIndex","resetValidation","innerLoading","promises","rule","Promise","then","changedRules","bufIdx","hexBytes","randomBytes","lib","crypto","msCrypto","getRandomValues","Uint8Array","BUFFER_SIZE","getTargetUid","ValidateMixin","stackLabel","hint","hideHint","suffix","filled","outlined","borderless","standout","labelSlot","bottomSlots","hideBottomSpace","itemAligned","counter","clearIcon","autofocus","maxValues","targetUid","hasValue","__getControl","innerValue","computedCounter","floatingLabel","inputValue","hideSelected","displayValue","shouldRenderBottom","fieldClass","styleType","labelClass","controlSlotScope","id","field","emitValue","showPopup","hasDialog","prepend","slotsEvents","__getControlContainer","__getInnerAppendNode","clearableEvents","__getInnerAppend","__getControlChild","hasShadow","__getShadowControl","rawControl","control","__getDefaultSlot","__getBottom","hasCounter","main","__onControlPopupShow","hasPopupOpen","__onControlFocusin","__onControlPopupHide","__onControlFocusout","focusoutTimer","hasFocus","__clearValue","__onPreRender","__onPostRender","before","controlEvents","after","__getControlEvents","focusin","focusout","fromSSR","filterFiles","files","rejectedFiles","failedPropValidation","filterFn","acceptedFiles","file","accept","maxFileSize","maxTotalSize","maxFiles","extensions","ext","maxFilesNumber","maxTotalSizeNumber","pickFiles","__getFileInput","addFiles","__addFiles","__processFiles","filesToProcess","currentFileList","some","total","filteredFiles","filesNumber","__onDragOver","dnd","__onDragLeave","__onDrop","dataTransfer","__getDnd","dragenter","dragover","dragleave","drop","FileValueMixin","dt","DataTransfer","ClipboardEvent","clipboardData","items","NAMED_MASKS","phone","card","TOKENS","pattern","negate","N","toLocaleUpperCase","toLocaleLowerCase","KEYS","tokenRegexMask","escRegex","MARKER","fromCharCode","reverseFillMask","fillMask","unmaskedValue","__updateMaskInternals","__updateMaskValue","__unmask","hasMask","__getInitialMaskedValue","masked","__mask","__fillWithMask","__getPaddedMaskMarked","maskMarked","padPos","computedUnmask","maskReplaced","fillChar","fillCharEscaped","unmask","extract","firstMatch","unmaskChar","negateChar","char1","esc","char2","unmaskMatcher","extractLast","extractMatcher","re","unmaskMatch","exec","extractMatch","extractMatcherLength","rawVal","updateMaskInternals","inputType","endReverse","unmasked","preMasked","__moveCursorRightReverse","__moveCursorRight","__moveCursorForPaste","__moveCursorLeft","noMarkBefore","__moveCursorLeftReverse","__onMaskedKeydown","shouldIgnoreKey","selectionStart","preventDefault","__maskReverse","valIndex","output","maskIndex","valChar","maskDef","firstTokenIndex","isJapanese","isChinese","isKorean","__onComposition","composing","__onInput","QField","MaskMixin","CompositionMixin","shadowText","autogrow","inputClass","inputStyle","stopValueWatcher","hasOwnProperty","typedNumber","tempValue","__adjustHeight","isTextarea","paste","__onPaste","__onChange","__onFinishEditing","compositionstart","compositionupdate","compositionend","animationend","inputAttrs","select","stopWatcher","emitValueFn","emitTimer","parentStyle","marginBottom","__getCurValue","hideDelay","MutationObserver","attributes","childList","characterData","subtree","disconnect","__delayShow","__delayHide","insetLevel","manualFocus","thumbnail","run","btn","caret","runCmd","cmd","param","__getGroup","children","getBtn","clickHandler","toggled","tip","Key","QTooltip","innerHTML","buttonProps","toolbarToggleColor","toolbarColor","toolbarPush","toolbarTextColor","getDropdown","Items","onlyIcons","closeDropdown","Dropdown","toolbarBackgroundClass","inactiveClass","htmlTip","QItem","restore","QItemSection","QList","highlight","QBtnDropdown","fixedLabel","fixedIcon","getToolbar","buttons","isViewingSource","fb","group","getFonts","defaultFont","defaultFontLabel","defaultFontIcon","fonts","aliases","default_font","alias","getLinkEditor","ie11","editLinkUrl","updateLink","execCommand","editor","QInput","_classCallCheck","Constructor","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","_createClass","protoProps","staticProps","getBlockElement","currentStyle","display","isChildOf","chars","selectNode","setStart","count","setEnd","TEXT_NODE","textContent","lp","childNodes","urlRegex","Caret","_range","sel","startContainer","startOffset","endContainer","endOffset","selectAllChildren","collapseToEnd","charCount","focusNode","focusOffset","previousSibling","savedPos","collapse","spanLevel","blockParent","recursive","hasParents","hasParent","queryCommandValue","queryCommandState","attrib","getAttribute","win","open","write","print","close","getParentAttribute","selectWord","save","getRangeAt","selectNodeContents","__setContent","isCollapsed","modify","anchorNode","anchorOffset","collapsed","detach","endNode","rangeCount","hasOwn","class2type","isPlainObject","copy","copyIsArray","deep","definitions","placeholder","toolbar","toolbarBg","toolbarOutline","toolbarRounded","hasToolbar","buttonDef","bold","italic","strike","strikethrough","underline","unordered","unorderedList","ordered","orderedList","subscript","superscript","can","hyperlink","viewsource","viewSource","quote","outdent","indent","removeFormat","hr","undo","redo","h1","heading1","heading","h2","heading2","h3","heading3","h4","heading4","h5","heading5","h6","heading6","paragraph","code","size1","size2","size3","size4","size5","size6","size7","userDef","font","item","innerStyle","col","lastEmit","innerText","refreshToolbar","__onBlur","__offsetBottom","__onFocus","__onMouseup","__onTouchend","edge","getContentEl","restorePosition","savePosition","fontFamily","toolbars","bars","contenteditable","overline","caption","lines","appear","__begin","animating","__end","lastEvent","timerFallback","animListener","enter","ev","leave","insetMap","true","margins","spaced","inset","classPrefix","insetClass","eventName","labelLines","captionLines","expandIcon","expandedIcon","expandIconClass","headerInsetLevel","contentInsetLevel","expandSeparator","defaultOpened","expandIconToggle","switchToggleSide","denseToggle","popup","headerStyle","$root","$on","__eventHandler","$off","expansionIcon","expansionItem","activeToggleIcon","__onHeaderClick","__toggleIconKeyboard","__toggleIcon","__getToggleIcon","QItemLabel","evtProp","QSlideTransition","QSeparator","labelPositions","labelPosition","externalLabel","hideLabel","formClass","stacked","labelProps","FabMixin","__qFab","activeIcon","hideIcon","verticalActionsAlign","__onChildClick","anchorMap","anchorValues","FileMixin","File","FileList","useChips","counterLabel","selectedString","totalSize","counterProps","isAppending","removeAtIndex","removeFile","fileList","__getInput","__getSelection","QChip","reveal","heightHint","revealed","windowHeight","__updateRevealed","containerHeight","hidden","revealOnFocus","__onFocusin","inflexionPosition","noErrorFocus","noResetFocus","greedy","submit","reset","shouldFocus","getValidationComponents","emit","valid","errors","querySelectorAll","tabIndex","revealOffset","ratioStyle","naturalRatio","RatioMixin","srcset","alt","placeholderSrc","basic","contain","imgClass","imgStyle","nativeContextMenu","noDefaultSpinner","spinnerColor","spinnerSize","currentSrc","image","isLoading","__load","__updateWatcher","att","imgContainerStyle","backgroundPosition","__onLoad","__computeRatio","__updateSrc","__onError","ratioTimer","Image","onerror","destroyed","onload","decode","catch","naturalHeight","naturalWidth","__getImage","nativeImg","slotVm","initialIndex","fetching","working","resume","updateScrollTarget","__setDebounce","poll","scrollPosition","heightBefore","heightAfter","heightDifference","immediatePoll","setIndex","defaultCfg","threshold","root","rootMargin","IntersectionObserver","rootBounds","_inactive","once","isIntersecting","__qvisible","__qvisible_destroyed","Intersection","ssrPrerender","__trigger","QCircularProgress","computedInstantFeedback","__click","__updateCenterPosition","centerPosition","asin","__getNameInput","scopedSlots","internal","dirChanged","dirChangePos","getPosition","directionChanged","immediately","__emit","cancelAnimationFrame","targetStyle","targetChildStyle","QScrollObserver","__onPageScroll","__onPageResize","__onContainerResize","resized","__updateScrollbarWidth","wrapCells","checkedIcon","uncheckedIcon","indeterminateIcon","iconColor","computedIcon","computedIconColor","radio","QRadio","checkbox","QCheckbox","QToggle","typeValues","inline","component","pageContainer","styleFn","paddingTop","expand","attach","posX","posY","QPageSticky","scrollOffset","__isVisible","__updateVisibility","heightWatcher","iconPrev","iconNext","iconFirst","iconLast","toFn","boundaryLinks","boundaryNumbers","directionLinks","ellipses","maxPages","newPage","inputPlaceholder","__boundaryLinks","__getBool","__boundaryNumbers","__directionLinks","__ellipses","icons","pagination","last","setByOffset","__getBtn","page","contentStart","contentEnd","contentMiddle","pgFrom","pgTo","ellipsesStart","ellipsesEnd","boundaryStart","boundaryEnd","frame","callArgs","debounced","cancel","scrolling","percentScrolled","__updatePos","__stop","__start","containerTop","containerBottom","__setPos","mediaHeight","media","videoHeight","__resizeHandler","frameDebounce","mediaParent","onloadstart","loadedmetadata","JSON","stringify","labelSet","labelCancel","autoSave","initialValue","defaultSlotScope","menuProps","__hasChanged","__close","validated","__reposition","parsedBreakpoint","__onHide","__updateType","Ctor","sealedOptions","QDialog","stripe","query","motion","trackClass","modelStyle","modelClasses","stripeStyle","PULLER_HEIGHT","OFFSET_TOP","noMouse","pullRatio","pulling","pullPosition","positionCSS","mightPrevent","__pull","__animateTo","getPropertyValue","pullToRefresh","dragType","MIN","RANGE","MAX","dragRange","dragOnlyRange","leftLabelColor","leftLabelTextColor","rightLabelColor","rightLabelTextColor","leftLabelValue","rightLabelValue","curMinRatio","curMaxRatio","ratioMin","modelMinRatio","ratioMax","modelMaxRatio","minThumbStyle","__nextFocus","maxThumbStyle","minThumbClass","maxThumbClass","minEvents","maxEvents","minPinClass","minPinTextClass","maxPinClass","maxPinTextClass","minLabel","maxLabel","minPinStyle","maxPinStyle","minThumb","diff","valueMin","valueMax","offsetRatio","offsetModel","rangeValue","rangeRatio","minR","maxR","ratioDelta","modelDelta","which","__getThumb","iconHalf","iconSelected","colorHalf","colorSelected","noReset","noDimming","mouseModel","iconData","iconLen","selIconLen","halfIconLen","colorLen","selColorLen","halfColorLen","selIcon","halfIcon","selColor","halfColor","__setHoverValue","halfIndex","half","exSelected","rating","mouseout","barStyle","contentActiveStyle","visible","tempShowing","panning","hover","containerWidth","thumbHidden","containerSize","thumbSize","scrollPercentage","mainStyle","dirProps","classSuffix","dist","barClass","thumbDirectives","__panThumb","setScrollPercentage","__updateScroll","info","__updateScrollSize","refPos","multiplier","__setScroll","__mouseDown","thumb","__emitScroll","mouseenter","$listeners","aggBucketSize","scrollToEdges","buggyRTL","detectBuggyRTL","scroller","spacer","sumFn","getScrollDetails","beforeRef","afterRef","stickyStart","stickyEnd","parentCalc","propElSize","scrollStart","scrollViewSize","scrollMaxSize","offsetStart","offsetEnd","previousElementSibling","parentRect","childRect","sumSize","sizeAgg","lastTo","fromAgg","toAgg","commonVirtScrollProps","virtualScrollSliceSize","virtualScrollItemSize","virtualScrollStickySizeStart","virtualScrollStickySizeEnd","tableColspan","commonVirtPropsList","virtualScrollHorizontal","virtualScrollSliceRange","__setVirtualScrollSize","needsReset","colspanAttr","colspan","__resetVirtualScroll","prevToIndex","refresh","toIndex","scrollEl","__getVirtualScrollTarget","scrollDetails","__getVirtualScrollEl","__scrollViewSize","__setVirtualScrollSliceRange","virtualScrollLength","__onVirtualScrollEvt","listLastIndex","listEndOffset","virtualScrollPaddingAfter","prevScrollStart","__updateVirtualScrollSizes","scrollMaxStart","virtualScrollSizes","virtualScrollSizesAgg","listOffset","virtualScrollPaddingBefore","alignForce","alignEnd","virtualScrollSliceSizeComputed","rangeChanged","hadFocus","sizeBefore","__activeScrollStart","sizeAfter","posStart","posEnd","sizeDiff","contentEl","childrenLength","sizeFn","fullReset","defaultSize","oldVirtualScrollSizesLength","jMax","iMax","__padVirtualScroll","paddingSize","validateNewValueMode","reEscapeList","VirtualScroll","displayValueSanitize","optionValue","optionLabel","optionDisable","hideDropdownIcon","fillInput","optionsDense","optionsDark","optionsSelectedClass","optionsSanitize","optionsCover","menuShrink","popupContentClass","popupContentStyle","useInput","newValueMode","mapOptions","inputDebounce","dialog","optionIndex","dialogFieldFocused","innerValueCache","userInputValue","__resetInputValue","__updateMenu","isOptionsDark","computedInputClass","menuContentClass","mapNull","values","__getOption","noOptions","getOptionLabel","sanitizeFn","sanitize","displayAsText","selectedScope","__removeAtIndexAndFocus","toggleOption","optionScope","isOptionDisabled","itemProps","computedOptionsSelectedClass","isOptionSelected","itemEvents","mousemove","setOptionIndex","dropdownArrowIcon","squaredMenu","innerOptionsValue","getOptionValue","__getPropValueFn","inputControlEvents","__onTargetKeydown","__onTargetKeyup","keypress","__onTargetKeypress","__selectInputText","getEmittingOptionValue","unique","updateInputValue","keepOpen","optValue","hidePopup","moveOptionSelection","skipInputValue","__setInputValue","defaultInputValue","defaultVal","__onTargetAutocomplete","needle","option","newValueModeValid","tabShouldSelect","optionsLength","searchBuffer","searchBufferExp","keyRepeat","searchRe","l","mode","__closeMenu","menuContent","fromDialog","scope","isTarget","autocomplete","__getOptions","inputTimer","noFiltering","filterId","afterFn","__getMenu","__onDialogFieldFocus","__onDialogFieldBlur","__getDialog","__onDialogBeforeHide","__onDialogHide","__onDialogShow","updateMenuPosition","skeletonTypes","skeletonAnimations","animation","slotsDef","leftColor","rightColor","topColor","bottomColor","langDir","__dir","__size","__scale","__axis","__showing","dirs","limits","beforeClass","afterClass","separatorClass","separatorStyle","__normalize","computedLimits","styles","__getCSSValue","separatorDirectives","__maxValue","__value","__multiplier","__normalized","stepper","isDisable","isError","isDone","headerNav","nav","hasPrefix","doneIcon","inactiveIcon","errorColor","doneColor","inactiveColor","activate","StepWrapper","StepHeader","alternativeLabels","contracted","headerClasses","marginalsProps","computedPagination","pagesNumber","isFirstPage","isLastPage","firstPage","prevPage","nextPage","lastPage","getTop","topLeft","topRight","topSelection","hasSelection","hasSelectionMode","rowsSelectedNumber","titleClass","autoWidth","$vnode","colsMap","sortable","table","arrowUp","__iconClass","__thClass","getTableHeader","getTableHeaderRow","computedColspan","__getProgress","headerCell","addTableHeaderRowMeta","cols","computedCols","computedColsMap","headerCellCol","QTh","singleSelection","grid","multipleSelection","someRowsSelected","allRowsSelected","__updateSelection","computedRows","getRowKey","tableHeaderStyle","tableHeaderClass","partialSelected","multipleSelect","getTableRowBody","row","pageIndex","isRowSelected","addBodyRowMeta","__trClass","getTableRow","bodyCell","bodyCellCol","addBodyCellMetaData","__tdClass","getCellValue","adding","dblclick","getTableBody","topRow","bottomRow","mapFn","getTableRowVirtual","rowIndex","firstRowIndex","isRowExpanded","__updateExpanded","format","hideBottom","hideSelectedBanner","hideNoData","hidePagination","iconFirstPage","iconPrevPage","iconNextPage","iconLastPage","getBottom","nothingToDisplay","message","loadingLabel","noResultsLabel","noResults","noDataLabel","noData","warning","selectedRowsLabel","selectedRecords","getPaginationRow","rowsPerPage","paginationLabel","paginationSlot","hasOpts","rowsPerPageOptions","rowsPerPageLabel","recordsPerPage","QSelect","computedRowsPerPageOptions","allRows","pag","setPagination","lastRowIndex","computedRowsNumber","filteredSortedRowsNumber","getGridBody","cardDefaultClass","cardClass","cardStyle","cardContainerClass","cardContainerStyle","getGridHeader","gridHeader","conf","comps","QMarkupTable","itemsFn","itemsSize","virtualScrollScope","getTableMiddle","sortDate","sortMethod","sortBy","colList","B","toLocaleString","columnToSort","binaryStateSort","filterMethod","terms","cellValue","lowerTerms","haystack","samePagination","oldPag","newPag","fixPagination","innerPagination","oldLastPage","currentPage","__sendServerRequest","requestServerInteraction","forceServerRequest","newPagination","isServerSide","selectedKeys","added","getVal","expanded","innerExpanded","setExpanded","visibleColumns","columns","names","commonVirtPropsObj","Top","TableHeader","TableBody","Bottom","TableGrid","Sort","Filter","Pagination","RowSelection","RowExpand","ColumnSelection","rowKey","hideHeader","virtualScroll","tableStyle","tableClass","hasVirtScroll","virtScroll","filteredSortedRows","rowsNumber","virtProps","getBody","resetVirtualScroll","QVirtualScroll","__onVScroll","rowEl","QLinearProgress","noHover","trailingSlashRE","queryIncludes","isSameRoute","isIncludedRoute","__checkActivation","checkFn","location","redirectedFrom","isSameRouteCheck","checkFunction","matched","format24h","defaultDate","hourOptions","minuteOptions","secondOptions","withSeconds","nowBtn","__getDefaultDateModel","isAM","innerModel","defaultDateModel","stringModel","computedFormat24h","pointerStyle","forHour","divider","degrees","minLink","secLink","hourInSelection","minuteInSelection","secondInSelection","hourSnappingGrid","__getSnapGrid","minuteSnappingGrid","secondSnappingGrid","positions","inSel","actualVal","setNow","snappingGrid","consecutiveGaps","lastIndexOf","sideCount","previousVal","previousValStart","currentVal","currentValStart","previousPosition","_isBeingDestroyed","__updateClock","__getClockRect","__goToNextView","clock","__drag","draggingClockRect","dragCache","clockRect","cacheVal","pow","__onKeyupHour","wrap","__setHour","__onKeyupMinute","__setMinute","__onKeyupSecond","__setSecond","__setAm","__setPm","__getClock","__verifyAndUpdate","__timeline","colorClass","dot","nodeKey","labelKey","childrenKey","selectedColor","tickStrategy","ticked","defaultExpandAll","accordion","filt","noConnectors","noNodesLabel","tree","computedControlColor","textColorClass","selectedColorClass","travel","isParent","isLeaf","selectable","expandable","hasTicking","strictTicking","leafFilteredTicking","leafTicking","tickable","lazy","matchesFilter","noTick","innerTicked","indeterminateNextState","getNodeByKey","getTickedNodes","getExpandedNodes","isExpanded","collapseAll","expandAll","__setExpanded","fail","isTicked","setTicked","__getSlotScope","__getChildren","__getNode","__getNodeMedia","slotScope","__onExpandClick","__onTickedClick","noNodes","noThumbnails","autoUpload","hideUploadBtn","__qUploaderGetInput","__getInputControl","queuedFiles","uploadedFiles","uploadSize","uploadedSize","isUploading","canUpload","isBusy","canAddFiles","uploadProgress","uploadProgressLabel","__getProgressLabel","uploadedSizeLabel","uploadSizeLabel","__revokeImgURLs","removeUploadedFiles","__status","_img","removeQueuedFiles","removedFiles","__abort","__updateFile","status","__uploaded","__progress","__sizeLabel","__progressLabel","processedFiles","__img","upload","uploader","__getList","getFn","fieldName","headers","formFields","withCredentials","sendRaw","batch","factory","xhrs","workingThreads","xhrProps","abortPromises","queue","__runFactory","failed","__uploadFiles","form","FormData","getProp","fields","aborted","uploadIndex","uploadIndexSize","maxUploadSize","loaded","uploaded","onreadystatechange","readyState","head","setRequestHeader","QUploaderBase","UploaderXHRMixin","iframeData","frameborder","allowfullscreen","getDepth","__qclosepopup","handlerKey","__qclosepopup_destroyed","__qgoback","goBack","goBackKey","__qgoback_destroyed","history","single","router","offsetBase","getAbsolutePosition","cssText","boundingRect","baseRect","marginLeft","marginRight","marginTop","marginH","marginV","widthM","heightM","getAbsoluteSize","styleEdges","styleBorderRadiuses","styleLen","subProp","val1","val2","normalizeElements","normalizeOptions","onEnd","waitFor","easing","useCSS","hideFromClone","keepToClone","tween","tweenFromOpacity","tweenToOpacity","getElement","isValidElement","ownerDocument","morph","_options","cancelStatus","endElementTo","elements","elFrom","qMorphCancel","animationFromClone","animationFromTween","animationToClone","animationTo","elFromParent","elFromNext","elFromPosition","elFromParentWidthBefore","elFromParentHeightBefore","elFromBorderWidth","borderWidth","elFromBorderStyle","borderStyle","elFromBorderColor","borderColor","elFromBorderRadius","borderRadius","elFromBackground","elFromTransform","elFromPositioningType","elFromCssText","elFromClassSaved","elFromStyleSaved","elFromClone","cloneNode","elFromTween","pointerEvents","insertBefore","calculateFinalState","elTo","elFromParentWidthAfter","elFromParentHeightAfter","elToParentWidthBefore","elToParentHeightBefore","elToParent","elToParentWidthAfter","elToParentHeightAfter","elToClone","elToNext","elToBorderWidth","elToBorderStyle","elToBorderColor","elToBorderRadius","elToBackground","elToTransform","elToPositioningType","elToCssText","elToClassSaved","elToStyleSaved","elToPosition","scaleX","scaleY","elFromParentWidthDiff","elFromParentHeightDiff","elToParentWidthDiff","elToParentHeightDiff","elFromCloneWidth","elFromCloneHeight","elToCloneWidth","elToCloneHeight","elSharedSize","elToNeedsFixedPosition","flex","documentScroll","overflowX","commonCleanup","resizeFrom","resizeTo","resizeFromTween","resizeToTween","tweenFrom","tweenTo","cleanup","qAnimId","keyframesFromTween","keyframesFrom","keyframeToStart","keyframesTo","animationDirection","animationName","delayPromise","endFn","onToggle","morphGroups","mods","changeClass","clsAction","cancelFn","insertArgs","updateArgs","updateModel","updateValue","__qmorph","__qmorph_destroyed","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","attributeOldValue","characterDataOldValue","__qmutation","__qmutation_destroyed","__qscrollfire","__qscrollfire_destroyed","elBottom","__qscroll","__qscroll_destroyed","__qtouchhold","__qtouchhold_destroyed","origin","startTime","triggered","mouseSensitivity","touchSensitivity","keyRegex","shouldEnd","__qtouchrepeat","metaValue","__qtouchrepeat_destroyed","durations","durationsLast","keyboardStart","keyboardEvent","repeatCount","keyCapture","winphone","safari","getMetaTag","getElementsByTagName","setColor","metaTag","newTag","install","webkit","vivaldi","getBrand","StatusBar","backgroundColorByHexString","addressbarColor","prefixes","promisify","reject","request","__getErr","exit","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","util","defineReactive","appVisible","msHidden","webkitHidden","dialogProps","onOk","__getGrid","QCardSection","QCard","ssrAPI","okCancel","DefaultComponent","klass","okFns","cancelFns","API","onCancel","onDismiss","emittedOK","ok","observable","DialogComponent","bottomSheet","globalDialog","BottomSheet","encode","string","encodeURIComponent","decodeURIComponent","stringifyCookieValue","read","getString","msOffset","toUTCString","parseExpireString","timestamp","seconds","expire","expireValue","ssr","expires","keyValue","cookie","domain","sameSite","httpOnly","secure","other","req","qCookies","setHeader","cookieSource","cookies","getObject","getAll","parseSSR","ssrContext","queues","server","q","prompt","html","stackButtons","hasForm","okLabel","cancelLabel","vmColor","okDisabled","okProps","cancelProps","getPrompt","getOptions","QOptionGroup","getButtons","QCardActions","getData","getSection","DialogPlugin","setDefaults","loadingBar","bar","QAjaxBar","timeout","originalDefaults","messageColor","spinner","customClass","defaults","Loading","ignoreDefaults","updateId","ssrTakeover","normalize","titleTemplate","metaType","metaProp","metaLink","template","old","bodyFilter","htmlFilter","htmlAttr","removeAttribute","bodyAttr","parseMeta","hasMeta","__qMeta","stopPropagation","updateClient","__currentMeta","__Q_META__","script","getAttr","seed","getHead","getServerMeta","app","noscript","nonce","tokens","triggerMeta","__qMetaUpdate","$getMetaHTML","Q_HTML_ATTRS","Q_HEAD_TAGS","Q_BODY_ATTRS","Q_BODY_TAGS","__qMetaUnwatch","activated","deactivated","positionList","badgePositions","notifTypes","positive","groups","Notifications","notifs","vert","notif","hasMedia","progressStyle","animationDuration","closeBtn","noDismiss","wrapperClass","multiline","actionsClass","groupNotif","badge","original","badgePosition","badgeStaticClass","badgeColor","badgeTextColor","msgChild","msgData","msgNode","mainChild","QAvatar","progressClass","badgeStyle","badgeClass","__vm","registerType","typeName","typeOpts","notify","getEmptyStorage","getLength","getItem","getIndex","isEmpty","getStorage","webStorage","getKey","getAllKeys","setItem","removeItem","storage","localStorage","sessionStorage","VuePlugin","plugins"],"mappings":"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","file":"js/chunk-d8dacae2.1f418467.js","sourcesContent":["'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","const\n hasMap = typeof Map === 'function',\n hasSet = typeof Set === 'function',\n hasArrayBuffer = typeof ArrayBuffer === 'function'\n\nexport function isDeepEqual (a, b) {\n if (a === b) {\n return true\n }\n\n if (a !== null && b !== null && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false\n }\n\n let length, i\n\n if (a.constructor === Array) {\n length = a.length\n\n if (length !== b.length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n if (isDeepEqual(a[i], b[i]) !== true) {\n return false\n }\n }\n\n return true\n }\n\n if (hasMap === true && a.constructor === Map) {\n if (a.size !== b.size) {\n return false\n }\n\n i = a.entries().next()\n while (i.done !== true) {\n if (b.has(i.value[0]) !== true) {\n return false\n }\n i = i.next()\n }\n\n i = a.entries().next()\n while (i.done !== true) {\n if (isDeepEqual(i.value[1], b.get(i.value[0])) !== true) {\n return false\n }\n i = i.next()\n }\n\n return true\n }\n\n if (hasSet === true && a.constructor === Set) {\n if (a.size !== b.size) {\n return false\n }\n\n i = a.entries().next()\n while (i.done !== true) {\n if (b.has(i.value[0]) !== true) {\n return false\n }\n i = i.next()\n }\n\n return true\n }\n\n if (hasArrayBuffer === true && a.buffer != null && a.buffer.constructor === ArrayBuffer) {\n length = a.length\n\n if (length !== b.length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n\n return true\n }\n\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags\n }\n\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf()\n }\n\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString()\n }\n\n const keys = Object.keys(a)\n length = keys.length\n\n if (length !== Object.keys(b).length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n const key = keys[i]\n if (isDeepEqual(a[key], b[key]) !== true) {\n return false\n }\n }\n\n return true\n }\n\n // true if both NaN, false otherwise\n return a !== a && b !== b // eslint-disable-line no-self-compare\n}\n\nexport function isPrintableChar (v) {\n return (v > 47 && v < 58) || // number keys\n v === 32 || v === 13 || // spacebar & return key(s) (if you want to allow carriage returns)\n (v > 64 && v < 91) || // letter keys\n (v > 95 && v < 112) || // numpad keys\n (v > 185 && v < 193) || // ;=,-./` (in order)\n (v > 218 && v < 223)\n}\n\nexport function isObject (v) {\n return Object(v) === v\n}\n\nexport function isDate (v) {\n return Object.prototype.toString.call(v) === '[object Date]'\n}\n\nexport function isRegexp (v) {\n return Object.prototype.toString.call(v) === '[object RegExp]'\n}\n\nexport function isNumber (v) {\n return typeof v === 'number' && isFinite(v)\n}\n\nexport function isString (v) {\n return typeof v === 'string'\n}\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\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","function clean (link) {\n // allow time for iOS\n setTimeout(() => {\n window.URL.revokeObjectURL(link.href)\n }, 10000)\n link.remove()\n}\n\nexport default function (fileName, rawData, mimeType) {\n const blob = new Blob([ rawData ], { type: mimeType || 'text/plain' })\n\n // IE11 has its own stuff...\n if (window.navigator.msSaveOrOpenBlob) {\n return window.navigator.msSaveOrOpenBlob(blob, fileName)\n }\n\n const link = document.createElement('a')\n\n link.download = fileName\n link.href = window.URL.createObjectURL(blob)\n\n link.classList.add('hidden')\n link.style.position = 'fixed' // avoid scrolling to bottom\n document.body.appendChild(link)\n\n try {\n link.click()\n clean(link)\n return true\n }\n catch (err) {\n clean(link)\n return err\n }\n}\n","// taken from https://github.com/jalaali/jalaali-js\n\n/*\n Jalaali years starting the 33-year rule.\n*/\nconst breaks = [ -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 Checks whether a Jalaali date is valid or not.\n*/\nexport function isValidJalaaliDate (jy, jm, jd) {\n return jy >= -61 && jy <= 3177 &&\n jm >= 1 && jm <= 12 &&\n jd >= 1 && jd <= jalaaliMonthLength(jy, jm)\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: leap,\n gy: gy,\n march: 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 { jy: jy,\n jm: jm,\n jd: 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 { jy: jy,\n jm: jm,\n jd: 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: gy,\n gm: gm,\n gd: 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","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","/* eslint no-fallthrough: 0 */\n\nimport { isDate } from './is.js'\nimport { pad, capitalize } from './format.js'\nimport { jalaaliMonthLength } from './date-persian.js'\nimport lang 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\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,\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 }, true)\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 = dateLocale !== void 0 ? dateLocale : lang.props.date,\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 = date.year + '/' + 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\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 setMonth (date, newMonth /* 1-based */) {\n const\n test = new Date(date.getFullYear(), newMonth, 0, 0, 0, 0, 0),\n days = test.getDate()\n\n date.setMonth(newMonth - 1, Math.min(days, date.getDate()))\n}\n\nfunction getChange (date, mod, add) {\n const\n t = new Date(date),\n sign = (add ? 1 : -1)\n\n Object.keys(mod).forEach(key => {\n if (key === 'month') {\n setMonth(t, t.getMonth() + 1 + sign * mod.month)\n return\n }\n\n const op = key === 'year'\n ? 'FullYear'\n : capitalize(key === 'days' ? 'date' : key)\n t[`set${op}`](t[`get${op}`]() + sign * mod[key])\n })\n return t\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, true)\n}\nexport function subtractFromDate (date, mod) {\n return getChange(date, mod, false)\n}\n\nexport function adjustDate (date, mod, utc) {\n const\n t = new Date(date),\n prefix = `set${utc ? 'UTC' : ''}`\n\n Object.keys(mod).forEach(key => {\n if (key === 'month') {\n setMonth(t, mod.month)\n return\n }\n\n const op = key === 'year'\n ? 'FullYear'\n : key.charAt(0).toUpperCase() + key.slice(1)\n t[`${prefix}${op}`](mod[key])\n })\n\n return t\n}\n\nexport function startOfDate (date, unit) {\n const t = new Date(date)\n switch (unit) {\n case 'year':\n t.setMonth(0)\n case 'month':\n t.setDate(1)\n case 'day':\n t.setHours(0)\n case 'hour':\n t.setMinutes(0)\n case 'minute':\n t.setSeconds(0)\n case 'second':\n t.setMilliseconds(0)\n }\n return t\n}\n\nexport function endOfDate (date, unit) {\n const t = new Date(date)\n switch (unit) {\n case 'year':\n t.setMonth(11)\n case 'month':\n t.setDate(daysInMonth(t))\n case 'day':\n t.setHours(23)\n case 'hour':\n t.setMinutes(59)\n case 'minute':\n t.setSeconds(59)\n case 'second':\n t.setMilliseconds(59)\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 return (t.getFullYear() - sub.getFullYear())\n\n case 'months':\n return (t.getFullYear() - sub.getFullYear()) * 12 + t.getMonth() - sub.getMonth()\n\n case 'days':\n return getDiff(startOfDate(t, 'day'), startOfDate(sub, 'day'), MILLISECONDS_IN_DAY)\n\n case 'hours':\n return getDiff(startOfDate(t, 'hour'), startOfDate(sub, 'hour'), MILLISECONDS_IN_HOUR)\n\n case 'minutes':\n return getDiff(startOfDate(t, 'minute'), startOfDate(sub, 'minute'), MILLISECONDS_IN_MINUTE)\n\n case 'seconds':\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 if (t.getSeconds() !== d.getSeconds()) {\n return false\n }\n case 'minute': // intentional fall-through\n if (t.getMinutes() !== d.getMinutes()) {\n return false\n }\n case 'hour': // intentional fall-through\n if (t.getHours() !== d.getHours()) {\n return false\n }\n case 'day': // intentional fall-through\n if (t.getDate() !== d.getDate()) {\n return false\n }\n case 'month': // intentional fall-through\n if (t.getMonth() !== d.getMonth()) {\n return false\n }\n case 'year': // intentional fall-through\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, _, forcedYear) {\n // workaround for < 1900 with new Date()\n const y = this.YYYY(date, _, forcedYear) % 100\n return y > 0\n ? pad(y)\n : '-' + pad(Math.abs(y))\n },\n\n // Year: 1900, 1901, ..., 2099\n YYYY (date, _, 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 if (hours === 0) {\n return 12\n }\n if (hours > 12) {\n return hours % 12\n }\n return 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 = dateLocale !== void 0\n ? dateLocale\n : lang.props.date\n\n return mask.replace(\n token,\n (match, text) => match in formatter\n ? formatter[match](date, locale, __forcedYear, __forcedTimezoneOffset)\n : (text === void 0 ? match : text.split('\\\\]').join(']'))\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","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","import { isSSR } from '../plugins/Platform.js'\n\nexport default function cache (vm, key, obj) {\n if (isSSR === true) return obj\n\n const k = `__qcache_${key}`\n return vm[k] === void 0\n ? (vm[k] = obj)\n : vm[k]\n}\n\nexport function cacheWithFn (vm, key, fn) {\n if (isSSR === true) return fn()\n\n const k = `__qcache_${key}`\n return vm[k] === void 0\n ? (vm[k] = fn())\n : vm[k]\n}\n\nexport function getPropCacheMixin (propName, proxyPropName) {\n return {\n data () {\n const target = {}\n const source = this[propName]\n\n for (const prop in source) {\n target[prop] = source[prop]\n }\n\n return { [proxyPropName]: target }\n },\n\n watch: {\n [propName] (newObj, oldObj) {\n const target = this[proxyPropName]\n\n if (oldObj !== void 0) {\n // we first delete obsolete events\n for (const prop in oldObj) {\n if (newObj[prop] === void 0) {\n this.$delete(target, prop)\n }\n }\n }\n\n for (const prop in newObj) {\n // we then update changed events\n if (target[prop] !== newObj[prop]) {\n this.$set(target, prop, newObj[prop])\n }\n }\n }\n }\n }\n}\n","import { getPropCacheMixin } from '../utils/cache.js'\n\nexport const ariaHidden = { 'aria-hidden': 'true' }\n\nexport default getPropCacheMixin('$attrs', 'qAttrs')\n","import Vue from 'vue'\n\nimport { between } from '../../utils/format.js'\nimport { isSSR } from '../../plugins/Platform.js'\nimport { ariaHidden } from '../../mixins/attrs'\n\nconst\n xhr = isSSR ? null : XMLHttpRequest,\n send = isSSR ? null : xhr.prototype.send,\n stackStart = [],\n stackStop = []\n\nlet highjackCount = 0\n\nfunction translate ({ p, pos, active, horiz, reverse, dir }) {\n let x = 1, y = 1\n\n if (horiz) {\n if (reverse) { x = -1 }\n if (pos === 'bottom') { y = -1 }\n return { transform: `translate3d(${x * (p - 100)}%,${active ? 0 : y * -200}%,0)` }\n }\n\n if (reverse) { y = -1 }\n if (pos === 'right') { x = -1 }\n return { transform: `translate3d(${active ? 0 : dir * x * -200}%,${y * (p - 100)}%,0)` }\n}\n\nfunction inc (p, amount) {\n if (typeof amount !== 'number') {\n if (p < 25) {\n amount = Math.random() * 3 + 3\n }\n else if (p < 65) {\n amount = Math.random() * 3\n }\n else if (p < 85) {\n amount = Math.random() * 2\n }\n else if (p < 99) {\n amount = 0.6\n }\n else {\n amount = 0\n }\n }\n return between(p + amount, 0, 100)\n}\n\nfunction highjackAjax (start, stop) {\n stackStart.push(start)\n stackStop.push(stop)\n\n highjackCount++\n\n if (highjackCount > 1) { return }\n\n function endHandler () {\n stackStop.forEach(fn => { fn() })\n }\n\n xhr.prototype.send = function (/* ...args */) {\n stackStart.forEach(fn => { fn() })\n this.addEventListener('loadend', endHandler, false)\n send.apply(this, arguments)\n }\n}\n\nfunction restoreAjax (start, stop) {\n stackStart.splice(stackStart.indexOf(start), 1)\n stackStop.splice(stackStop.indexOf(stop), 1)\n\n highjackCount = Math.max(0, highjackCount - 1)\n if (!highjackCount) {\n xhr.prototype.send = send\n }\n}\n\nexport default Vue.extend({\n name: 'QAjaxBar',\n\n props: {\n position: {\n type: String,\n default: 'top',\n validator: val => ['top', 'right', 'bottom', 'left'].includes(val)\n },\n size: {\n type: String,\n default: '2px'\n },\n color: String,\n skipHijack: Boolean,\n reverse: Boolean\n },\n\n data () {\n return {\n calls: 0,\n progress: 0,\n onScreen: false,\n animate: true\n }\n },\n\n computed: {\n classes () {\n return `q-loading-bar q-loading-bar--${this.position}` +\n (this.color !== void 0 ? ` bg-${this.color}` : '') +\n (this.animate === true ? '' : ' no-transition')\n },\n\n style () {\n const active = this.onScreen\n\n const o = translate({\n p: this.progress,\n pos: this.position,\n active,\n horiz: this.horizontal,\n reverse: this.$q.lang.rtl === true && ['top', 'bottom'].includes(this.position)\n ? !this.reverse\n : this.reverse,\n dir: this.$q.lang.rtl === true ? -1 : 1\n })\n\n o[this.sizeProp] = this.size\n o.opacity = active ? 1 : 0\n\n return o\n },\n\n horizontal () {\n return this.position === 'top' || this.position === 'bottom'\n },\n\n sizeProp () {\n return this.horizontal ? 'height' : 'width'\n },\n\n attrs () {\n return this.onScreen === true\n ? {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.progress\n }\n : ariaHidden\n }\n },\n\n methods: {\n start (speed = 300) {\n const oldSpeed = this.speed\n this.speed = Math.max(0, speed) || 0\n\n this.calls++\n\n if (this.calls > 1) {\n if (oldSpeed === 0 && speed > 0) {\n this.__work()\n }\n else if (oldSpeed > 0 && speed <= 0) {\n clearTimeout(this.timer)\n }\n return\n }\n\n clearTimeout(this.timer)\n this.$emit('start')\n\n this.progress = 0\n\n if (this.onScreen === true) { return }\n\n this.onScreen = true\n this.animate = false\n this.timer = setTimeout(() => {\n this.animate = true\n speed > 0 && this.__work()\n }, 100)\n },\n\n increment (amount) {\n if (this.calls > 0) {\n this.progress = inc(this.progress, amount)\n }\n },\n\n stop () {\n this.calls = Math.max(0, this.calls - 1)\n if (this.calls > 0) { return }\n\n clearTimeout(this.timer)\n this.$emit('stop')\n\n const end = () => {\n this.animate = true\n this.progress = 100\n this.timer = setTimeout(() => {\n this.onScreen = false\n }, 1000)\n }\n\n if (this.progress === 0) {\n this.timer = setTimeout(end, 1)\n }\n else {\n end()\n }\n },\n\n __work () {\n if (this.progress < 100) {\n this.timer = setTimeout(() => {\n this.increment()\n this.__work()\n }, this.speed)\n }\n }\n },\n\n mounted () {\n if (this.skipHijack !== true) {\n this.hijacked = true\n highjackAjax(this.start, this.stop)\n }\n },\n\n beforeDestroy () {\n clearTimeout(this.timer)\n this.hijacked === true && restoreAjax(this.start, this.stop)\n },\n\n render (h) {\n return h('div', {\n class: this.classes,\n style: this.style,\n attrs: this.attrs\n })\n }\n})\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export const sizes = {\n xs: 18,\n sm: 24,\n md: 32,\n lg: 38,\n xl: 46\n}\n\nexport function getSizeMixin (sizes) {\n return {\n props: {\n size: String\n },\n\n computed: {\n sizeStyle () {\n if (this.size !== void 0) {\n return { fontSize: this.size in sizes ? `${sizes[this.size]}px` : this.size }\n }\n }\n }\n }\n}\n\nexport default getSizeMixin(sizes)\n","export default {\n props: {\n tag: {\n type: String,\n default: 'div'\n }\n }\n}\n","import { getPropCacheMixin } from '../utils/cache.js'\nexport default getPropCacheMixin('$listeners', 'qListeners')\n","export function slot (vm, slotName, otherwise) {\n return vm.$scopedSlots[slotName] !== void 0\n ? vm.$scopedSlots[slotName]()\n : otherwise\n}\n\nexport function uniqueSlot (vm, slotName, otherwise) {\n return vm.$scopedSlots[slotName] !== void 0\n ? vm.$scopedSlots[slotName]().slice()\n : otherwise\n}\n\n/**\n * Source definitely exists,\n * so it's merged with the possible slot\n */\nexport function mergeSlot (source, vm, slotName) {\n return vm.$scopedSlots[slotName] !== void 0\n ? source.concat(vm.$scopedSlots[slotName]())\n : source\n}\n\n/**\n * Merge with possible slot,\n * even if source might not exist\n */\nexport function mergeSlotSafely (source, vm, slotName) {\n if (vm.$scopedSlots[slotName] === void 0) {\n return source\n }\n\n const slot = vm.$scopedSlots[slotName]()\n return source !== void 0\n ? source.concat(slot)\n : slot\n}\n","import Vue from 'vue'\n\nimport SizeMixin from '../../mixins/size.js'\nimport TagMixin from '../../mixins/tag.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot, mergeSlot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QIcon',\n\n mixins: [ ListenersMixin, SizeMixin, TagMixin ],\n\n props: {\n tag: {\n default: 'i'\n },\n\n name: String,\n color: String,\n left: Boolean,\n right: Boolean\n },\n\n computed: {\n classes () {\n // \"notranslate\" class is for Google Translate\n // to avoid tampering with Material Icons ligature font\n return 'q-icon notranslate' +\n (this.left === true ? ' on-left' : '') +\n (this.right === true ? ' on-right' : '') +\n (this.color !== void 0 ? ` text-${this.color}` : '')\n },\n\n type () {\n let cls\n let icon = this.name\n\n if (!icon) {\n return {\n none: true,\n cls: this.classes\n }\n }\n\n if (this.$q.iconMapFn !== void 0) {\n const res = this.$q.iconMapFn(icon)\n if (res !== void 0) {\n if (res.icon !== void 0) {\n icon = res.icon\n }\n else {\n return {\n cls: res.cls + ' ' + this.classes,\n content: res.content !== void 0\n ? res.content\n : ' '\n }\n }\n }\n }\n\n if (icon.startsWith('M') === true) {\n const [ def, viewBox ] = icon.split('|')\n\n return {\n svg: true,\n cls: this.classes,\n nodes: def.split('&&').map(path => {\n const [ d, style, transform ] = path.split('@@')\n return this.$createElement('path', {\n attrs: {\n d,\n transform\n },\n style\n })\n }),\n viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'\n }\n }\n\n if (icon.startsWith('img:') === true) {\n return {\n img: true,\n cls: this.classes,\n src: icon.substring(4)\n }\n }\n\n if (icon.startsWith('svguse:') === true) {\n const [ def, viewBox ] = icon.split('|')\n\n return {\n svguse: true,\n cls: this.classes,\n src: def.substring(7),\n viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'\n }\n }\n\n let content = ' '\n\n if (/^[l|f]a[s|r|l|b|d]{0,1} /.test(icon) || icon.startsWith('icon-') === true) {\n cls = icon\n }\n else if (icon.startsWith('bt-') === true) {\n cls = `bt ${icon}`\n }\n else if (icon.startsWith('eva-') === true) {\n cls = `eva ${icon}`\n }\n else if (/^ion-(md|ios|logo)/.test(icon) === true) {\n cls = `ionicons ${icon}`\n }\n else if (icon.startsWith('ion-') === true) {\n cls = `ionicons ion-${this.$q.platform.is.ios === true ? 'ios' : 'md'}${icon.substr(3)}`\n }\n else if (icon.startsWith('mdi-') === true) {\n cls = `mdi ${icon}`\n }\n else if (icon.startsWith('iconfont ') === true) {\n cls = `${icon}`\n }\n else if (icon.startsWith('ti-') === true) {\n cls = `themify-icon ${icon}`\n }\n else {\n cls = 'material-icons'\n\n if (icon.startsWith('o_') === true) {\n icon = icon.substring(2)\n cls += '-outlined'\n }\n else if (icon.startsWith('r_') === true) {\n icon = icon.substring(2)\n cls += '-round'\n }\n else if (icon.startsWith('s_') === true) {\n icon = icon.substring(2)\n cls += '-sharp'\n }\n\n content = icon\n }\n\n return {\n cls: cls + ' ' + this.classes,\n content\n }\n }\n },\n\n render (h) {\n const data = {\n class: this.type.cls,\n style: this.sizeStyle,\n on: { ...this.qListeners },\n attrs: {\n 'aria-hidden': 'true',\n role: 'presentation'\n }\n }\n\n if (this.type.none === true) {\n return h(this.tag, data, slot(this, 'default'))\n }\n\n if (this.type.img === true) {\n data.attrs.src = this.type.src\n return h('img', data)\n }\n\n if (this.type.svg === true) {\n data.attrs.focusable = 'false' /* needed for IE11 */\n data.attrs.viewBox = this.type.viewBox\n\n return h('svg', data, mergeSlot(this.type.nodes, this, 'default'))\n }\n if (this.type.svguse === true) {\n data.attrs.focusable = 'false' /* needed for IE11 */\n data.attrs.viewBox = this.type.viewBox\n\n return h('svg', data, [\n h('use', {\n attrs: {\n 'xlink:href': this.type.src\n }\n }),\n mergeSlot(this.type.nodes, this, 'default')\n ])\n }\n\n return h(this.tag, data, mergeSlot([\n this.type.content\n ], this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport SizeMixin from '../../mixins/size.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { mergeSlotSafely } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QAvatar',\n\n mixins: [ ListenersMixin, SizeMixin ],\n\n props: {\n fontSize: String,\n\n color: String,\n textColor: String,\n\n icon: String,\n square: Boolean,\n rounded: Boolean\n },\n\n computed: {\n classes () {\n return {\n [`bg-${this.color}`]: this.color,\n [`text-${this.textColor} q-chip--colored`]: this.textColor,\n 'q-avatar--square': this.square,\n 'rounded-borders': this.rounded\n }\n },\n\n contentStyle () {\n if (this.fontSize) {\n return { fontSize: this.fontSize }\n }\n }\n },\n\n render (h) {\n const icon = this.icon !== void 0\n ? [ h(QIcon, { props: { name: this.icon } }) ]\n : void 0\n\n return h('div', {\n staticClass: 'q-avatar',\n style: this.sizeStyle,\n class: this.classes,\n on: { ...this.qListeners }\n }, [\n h('div', {\n staticClass: 'q-avatar__content row flex-center overflow-hidden',\n style: this.contentStyle\n }, mergeSlotSafely(icon, this, 'default'))\n ])\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QBadge',\n\n mixins: [ ListenersMixin ],\n\n props: {\n color: String,\n textColor: String,\n\n floating: Boolean,\n transparent: Boolean,\n multiLine: Boolean,\n outline: Boolean,\n\n label: [Number, String],\n\n align: {\n type: String,\n validator: v => ['top', 'middle', 'bottom'].includes(v)\n }\n },\n\n computed: {\n style () {\n if (this.align !== void 0) {\n return { verticalAlign: this.align }\n }\n },\n\n classes () {\n const text = this.outline === true\n ? this.color || this.textColor\n : this.textColor\n\n return 'q-badge flex inline items-center no-wrap' +\n ` q-badge--${this.multiLine === true ? 'multi' : 'single'}-line` +\n (this.outline === true\n ? ' q-badge--outline'\n : (this.color !== void 0 ? ` bg-${this.color}` : '')\n ) +\n (text !== void 0 ? ` text-${text}` : '') +\n (this.floating === true ? ' q-badge--floating' : '') +\n (this.transparent === true ? ' q-badge--transparent' : '')\n },\n\n attrs () {\n return {\n role: 'alert',\n 'aria-label': this.label\n }\n }\n },\n\n render (h) {\n return h('div', {\n style: this.style,\n class: this.classes,\n attrs: this.attrs,\n on: { ...this.qListeners }\n }, this.label !== void 0 ? [ this.label ] : slot(this, 'default'))\n }\n})\n","export default {\n props: {\n dark: {\n type: Boolean,\n default: null\n }\n },\n\n computed: {\n isDark () {\n return this.dark === null\n ? this.$q.dark.isActive\n : this.dark\n }\n }\n}\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nconst attrs = { role: 'alert' }\n\nexport default Vue.extend({\n name: 'QBanner',\n\n mixins: [ ListenersMixin, DarkMixin ],\n\n props: {\n inlineActions: Boolean,\n dense: Boolean,\n rounded: Boolean\n },\n\n render (h) {\n const actions = slot(this, 'action')\n const child = [\n h('div', {\n staticClass: 'q-banner__avatar col-auto row items-center self-start'\n }, slot(this, 'avatar')),\n\n h('div', {\n staticClass: 'q-banner__content col text-body2'\n }, slot(this, 'default'))\n ]\n\n actions !== void 0 && child.push(\n h('div', {\n staticClass: 'q-banner__actions row items-center justify-end',\n class: `col-${this.inlineActions === true ? 'auto' : 'all'}`\n }, actions)\n )\n\n return h('div', {\n staticClass: 'q-banner row items-center',\n class: {\n 'q-banner--top-padding': actions !== void 0 && !this.inlineActions,\n 'q-banner--dense': this.dense,\n 'q-banner--dark q-dark': this.isDark,\n 'rounded-borders': this.rounded\n },\n attrs,\n on: { ...this.qListeners }\n }, child)\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nconst attrs = { role: 'toolbar' }\n\nexport default Vue.extend({\n name: 'QBar',\n\n mixins: [ ListenersMixin, DarkMixin ],\n\n props: {\n dense: Boolean\n },\n\n computed: {\n classes () {\n return `q-bar--${this.dense === true ? 'dense' : 'standard'} ` +\n `q-bar--${this.isDark === true ? 'dark' : 'light'}`\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-bar row no-wrap items-center',\n class: this.classes,\n attrs,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","const\n alignMap = {\n left: 'start',\n center: 'center',\n right: 'end',\n between: 'between',\n around: 'around',\n evenly: 'evenly',\n stretch: 'stretch'\n },\n alignValues = Object.keys(alignMap)\n\nexport default {\n props: {\n align: {\n type: String,\n validator: v => alignValues.includes(v)\n }\n },\n\n computed: {\n alignClass () {\n const align = this.align === void 0\n ? (this.vertical === true ? 'stretch' : 'left')\n : this.align\n\n return `${this.vertical === true ? 'items' : 'justify'}-${alignMap[align]}`\n }\n }\n}\n","import Vue from 'vue'\n\nimport AlignMixin from '../../mixins/align.js'\nimport { slot } from '../../utils/slot.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nexport default Vue.extend({\n name: 'QBreadcrumbs',\n\n mixins: [ ListenersMixin, AlignMixin ],\n\n props: {\n separator: {\n type: String,\n default: '/'\n },\n separatorColor: String,\n\n activeColor: {\n type: String,\n default: 'primary'\n },\n\n gutter: {\n type: String,\n validator: v => ['none', 'xs', 'sm', 'md', 'lg', 'xl'].includes(v),\n default: 'sm'\n }\n },\n\n computed: {\n classes () {\n return `${this.alignClass}${this.gutter === 'none' ? '' : ` q-gutter-${this.gutter}`}`\n },\n\n sepClass () {\n if (this.separatorColor) {\n return `text-${this.separatorColor}`\n }\n },\n\n activeClass () {\n return `text-${this.activeColor}`\n }\n },\n\n render (h) {\n const nodes = slot(this, 'default')\n if (nodes === void 0) { return }\n\n let els = 1\n\n const\n child = [],\n len = nodes.filter(c => c.tag !== void 0 && c.tag.endsWith('-QBreadcrumbsEl')).length,\n separator = this.$scopedSlots.separator !== void 0\n ? this.$scopedSlots.separator\n : () => this.separator\n\n nodes.forEach(comp => {\n if (comp.tag !== void 0 && comp.tag.endsWith('-QBreadcrumbsEl')) {\n const middle = els < len\n els++\n\n child.push(h('div', {\n staticClass: 'flex items-center',\n class: middle ? this.activeClass : 'q-breadcrumbs--last'\n }, [ comp ]))\n\n if (middle) {\n child.push(h('div', {\n staticClass: 'q-breadcrumbs__separator', class: this.sepClass\n }, separator()))\n }\n }\n else {\n child.push(comp)\n }\n })\n\n return h('div', {\n staticClass: 'q-breadcrumbs',\n on: { ...this.qListeners }\n }, [\n h('div', {\n staticClass: 'flex items-center',\n class: this.classes\n }, child)\n ])\n }\n})\n","export const routerLinkProps = {\n to: [String, Object],\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n disable: Boolean\n}\n\nexport const RouterLinkMixin = {\n props: routerLinkProps,\n\n computed: {\n hasRouterLink () {\n return this.disable !== true && this.to !== void 0 && this.to !== null && this.to !== ''\n },\n\n routerLinkProps () {\n return {\n to: this.to,\n exact: this.exact,\n append: this.append,\n replace: this.replace,\n activeClass: this.activeClass || 'q-router-link--active',\n exactActiveClass: this.exactActiveClass || 'q-router-link--exact-active',\n event: this.disable === true ? '' : void 0\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport { mergeSlot } from '../../utils/slot.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport QIcon from '../icon/QIcon.js'\nimport { RouterLinkMixin } from '../../mixins/router-link.js'\n\nexport default Vue.extend({\n name: 'QBreadcrumbsEl',\n\n mixins: [ ListenersMixin, RouterLinkMixin ],\n\n props: {\n label: String,\n icon: String\n },\n\n render (h) {\n const child = []\n\n this.icon !== void 0 && child.push(\n h(QIcon, {\n staticClass: 'q-breadcrumbs__el-icon',\n class: this.label !== void 0 ? 'q-breadcrumbs__el-icon--with-label' : null,\n props: { name: this.icon }\n })\n )\n\n this.label && child.push(this.label)\n\n return h(this.hasRouterLink === true ? 'router-link' : 'span', {\n staticClass: 'q-breadcrumbs__el q-link flex inline items-center relative-position',\n props: this.hasRouterLink === true ? this.routerLinkProps : null,\n [this.hasRouterLink === true ? 'nativeOn' : 'on']: { ...this.qListeners }\n }, mergeSlot(child, this, 'default'))\n }\n})\n","import { sizes } from '../../mixins/size.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nexport default {\n mixins: [ ListenersMixin ],\n\n props: {\n color: String,\n size: {\n type: [Number, String],\n default: '1em'\n }\n },\n\n computed: {\n cSize () {\n return this.size in sizes\n ? `${sizes[this.size]}px`\n : this.size\n },\n\n classes () {\n if (this.color) {\n return `text-${this.color}`\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinner',\n\n mixins: [ mixin ],\n\n props: {\n thickness: {\n type: Number,\n default: 5\n }\n },\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner q-spinner-mat',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '25 25 50 50'\n }\n }, [\n h('circle', {\n staticClass: 'path',\n attrs: {\n 'cx': '50',\n 'cy': '50',\n 'r': '20',\n 'fill': 'none',\n 'stroke': 'currentColor',\n 'stroke-width': this.thickness,\n 'stroke-miterlimit': '10'\n }\n })\n ])\n }\n})\n","export 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 Object.keys(css).forEach(prop => {\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 childHasFocus (el, focusedEl) {\n if (el === void 0 || 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\n// internal\nexport function getBodyFullscreenElement (isFullscreen, activeEl) {\n return isFullscreen === true\n ? (\n // when a video tag enters fullscreen activeEl is null\n activeEl === document.documentElement || activeEl === null\n ? document.body\n : activeEl\n )\n : document.body\n}\n\nexport default {\n offset,\n style,\n height,\n width,\n css,\n cssBatch,\n ready\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 { css } from '../utils/dom.js'\nimport { position, stop, addEvt, cleanEvt } from '../utils/event.js'\nimport { isKeyCode } from '../utils/key-composition.js'\nimport { client } from '../plugins/Platform.js'\nimport throttle from '../utils/throttle.js'\nimport { $q } from '../install.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({}, $q.config.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\nfunction destroy (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\nexport default {\n name: 'ripple',\n\n inserted (el, binding) {\n if (el.__qripple !== void 0) {\n destroy(el)\n el.__qripple_destroyed = true\n }\n\n const ctx = {\n enabled: binding.value !== false,\n modifiers: {},\n abort: [],\n\n start (evt) {\n if (\n ctx.enabled === true &&\n evt.qSkipRipple !== true &&\n // on ENTER in form IE emits a PointerEvent with negative client cordinates\n (client.is.ie !== true || evt.clientX >= 0) &&\n (\n ctx.modifiers.early === true\n ? ['mousedown', 'touchstart'].includes(evt.type) === true\n : evt.type === 'click'\n )\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, 'mousedown', 'start', 'passive' ],\n [ el, 'touchstart', 'start', 'passive' ],\n [ el, 'click', 'start', 'passive' ],\n [ el, 'keydown', 'keystart', 'passive' ],\n [ el, 'keyup', 'keystart', 'passive' ]\n ])\n },\n\n update (el, binding) {\n const ctx = el.__qripple\n if (ctx !== void 0 && binding.oldValue !== binding.value) {\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 unbind (el) {\n if (el.__qripple_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qripple_destroyed\n }\n }\n}\n","import Ripple from '../directives/Ripple.js'\n\nexport default {\n directives: {\n Ripple\n },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true\n }\n }\n}\n","import AlignMixin from './align.js'\nimport RippleMixin from './ripple.js'\nimport ListenersMixin from './listeners.js'\nimport { getSizeMixin } from './size.js'\n\nconst padding = {\n none: 0,\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32\n}\n\nexport default {\n mixins: [\n ListenersMixin,\n RippleMixin,\n AlignMixin,\n getSizeMixin({\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n })\n ],\n\n props: {\n type: String,\n\n to: [ Object, String ],\n replace: Boolean,\n append: Boolean,\n\n label: [ Number, String ],\n icon: String,\n iconRight: String,\n\n round: Boolean,\n outline: Boolean,\n flat: Boolean,\n unelevated: Boolean,\n rounded: Boolean,\n push: 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 align: { default: 'center' },\n stack: Boolean,\n stretch: Boolean,\n loading: {\n type: Boolean,\n default: null\n },\n disable: Boolean\n },\n\n computed: {\n style () {\n if (this.fab === false && this.fabMini === false) {\n return this.sizeStyle\n }\n },\n\n isRounded () {\n return this.rounded === true || this.fab === true || this.fabMini === true\n },\n\n isActionable () {\n return this.disable !== true && this.loading !== true\n },\n\n computedTabIndex () {\n return this.isActionable === true ? this.tabindex || 0 : -1\n },\n\n hasRouterLink () {\n return this.disable !== true && this.to !== void 0 && this.to !== null && this.to !== ''\n },\n\n isLink () {\n return this.type === 'a' || this.hasRouterLink === true\n },\n\n design () {\n if (this.flat === true) return 'flat'\n if (this.outline === true) return 'outline'\n if (this.push === true) return 'push'\n if (this.unelevated === true) return 'unelevated'\n return 'standard'\n },\n\n currentLocation () {\n if (this.hasRouterLink === true) {\n // we protect from accessing this.$route without\n // actually needing it so that we won't trigger\n // unnecessary updates\n return this.append === true\n ? this.$router.resolve(this.to, this.$route, true)\n : this.$router.resolve(this.to)\n }\n },\n\n attrs () {\n const attrs = { tabindex: this.computedTabIndex }\n\n if (this.type !== 'a') {\n attrs.type = this.type || 'button'\n }\n\n if (this.hasRouterLink === true) {\n attrs.href = this.currentLocation.href\n attrs.role = 'link'\n }\n else {\n attrs.role = this.type === 'a' ? 'link' : 'button'\n }\n\n if (this.loading === true && this.percentage !== void 0) {\n attrs.role = 'progressbar'\n attrs['aria-valuemin'] = 0\n attrs['aria-valuemax'] = 100\n attrs['aria-valuenow'] = this.percentage\n }\n\n if (this.disable === true) {\n attrs.disabled = ''\n attrs['aria-disabled'] = 'true'\n }\n\n return attrs\n },\n\n classes () {\n let colors\n\n if (this.color !== void 0) {\n if (this.flat === true || this.outline === true) {\n colors = `text-${this.textColor || this.color}`\n }\n else {\n colors = `bg-${this.color} text-${this.textColor || 'white'}`\n }\n }\n else if (this.textColor) {\n colors = `text-${this.textColor}`\n }\n\n return `q-btn--${this.design} ` +\n `q-btn--${this.round === true ? 'round' : `rectangle${this.isRounded === true ? ' q-btn--rounded' : ''}`}` +\n (colors !== void 0 ? ' ' + colors : '') +\n (this.isActionable === true ? ' q-btn--actionable q-focusable q-hoverable' : (this.disable === true ? ' disabled' : '')) +\n (this.fab === true ? ' q-btn--fab' : (this.fabMini === true ? ' q-btn--fab-mini' : '')) +\n (this.noCaps === true ? ' q-btn--no-uppercase' : '') +\n (this.noWrap === true ? '' : ' q-btn--wrap') + // this is for IE11\n (this.dense === true ? ' q-btn--dense' : '') +\n (this.stretch === true ? ' no-border-radius self-stretch' : '') +\n (this.glossy === true ? ' glossy' : '')\n },\n\n innerClasses () {\n return this.alignClass + (this.stack === true ? ' column' : ' row') +\n (this.noWrap === true ? ' no-wrap text-no-wrap' : '') +\n (this.loading === true ? ' q-btn__content--hidden' : '')\n },\n\n wrapperStyle () {\n if (this.padding !== void 0) {\n return {\n padding: this.padding\n .split(/\\s+/)\n .map(v => v in padding ? padding[v] + 'px' : v)\n .join(' '),\n minWidth: '0',\n minHeight: '0'\n }\n }\n }\n }\n}\n","import { isSSR, client, iosEmulated } from '../plugins/Platform.js'\n\nconst directions = [ 'left', 'right', 'up', 'down', 'horizontal', 'vertical' ]\n\nconst modifiersAll = {\n left: true,\n right: true,\n up: true,\n down: true,\n horizontal: true,\n vertical: true,\n all: true\n}\n\nexport function getModifierDirections (mod) {\n const dir = {}\n\n directions.forEach(direction => {\n if (mod[direction]) {\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 if (dir.vertical === true) {\n dir.up = dir.down = true\n }\n if (dir.left === true && dir.right === true) {\n dir.horizontal = true\n }\n if (dir.up === true && dir.down === true) {\n dir.vertical = true\n }\n if (dir.horizontal === true && dir.vertical === true) {\n dir.all = true\n }\n\n return dir\n}\n\nexport const getTouchTarget = isSSR === false && iosEmulated !== true && (\n client.is.ios === true ||\n window.navigator.vendor.toLowerCase().indexOf('apple') > -1\n)\n ? () => document\n : target => target\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 Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport BtnMixin from '../../mixins/btn.js'\n\nimport { mergeSlot } from '../../utils/slot.js'\nimport { stop, prevent, stopAndPrevent, listenOpts, noop } from '../../utils/event.js'\nimport { getTouchTarget } from '../../utils/touch.js'\nimport { isKeyCode } from '../../utils/key-composition.js'\n\nconst { passiveCapture } = listenOpts\n\nlet\n touchTarget = void 0,\n keyboardTarget = void 0,\n mouseTarget = void 0\n\nconst iconAttrs = { role: 'img', 'aria-hidden': 'true' }\n\nexport default Vue.extend({\n name: 'QBtn',\n\n mixins: [ BtnMixin ],\n\n props: {\n percentage: Number,\n darkPercentage: Boolean\n },\n\n computed: {\n hasLabel () {\n return this.label !== void 0 && this.label !== null && this.label !== ''\n },\n\n computedRipple () {\n return this.ripple === false\n ? false\n : {\n keyCodes: this.isLink === true ? [ 13, 32 ] : [ 13 ],\n ...(this.ripple === true ? {} : this.ripple)\n }\n },\n\n percentageStyle () {\n const val = Math.max(0, Math.min(100, this.percentage))\n if (val > 0) {\n return { transition: 'transform 0.6s', transform: `translateX(${val - 100}%)` }\n }\n },\n\n onEvents () {\n if (this.loading === true) {\n return {\n mousedown: this.__onLoadingEvt,\n touchstart: this.__onLoadingEvt,\n click: this.__onLoadingEvt,\n keydown: this.__onLoadingEvt,\n keyup: this.__onLoadingEvt\n }\n }\n else if (this.isActionable === true) {\n const on = {\n ...this.qListeners,\n click: this.click,\n keydown: this.__onKeydown,\n mousedown: this.__onMousedown\n }\n\n if (this.$q.platform.has.touch === true) {\n on.touchstart = this.__onTouchstart\n }\n\n return on\n }\n\n return {}\n },\n\n directives () {\n if (this.disable !== true && this.ripple !== false) {\n return [{\n name: 'ripple',\n value: this.computedRipple,\n modifiers: { center: this.round }\n }]\n }\n }\n },\n\n methods: {\n click (e) {\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 this.type === 'submit' &&\n (\n (this.$q.platform.is.ie === true && (e.clientX < 0 || e.clientY < 0)) ||\n (\n el !== document.body &&\n this.$el.contains(el) === false &&\n // required for iOS and desktop Safari\n el.contains(this.$el) === false\n )\n )\n ) {\n this.$el.focus()\n\n const onClickCleanup = () => {\n document.removeEventListener('keydown', stopAndPrevent, true)\n document.removeEventListener('keyup', onClickCleanup, passiveCapture)\n this.$el !== void 0 && this.$el.removeEventListener('blur', onClickCleanup, passiveCapture)\n }\n\n document.addEventListener('keydown', stopAndPrevent, true)\n document.addEventListener('keyup', onClickCleanup, passiveCapture)\n this.$el.addEventListener('blur', onClickCleanup, passiveCapture)\n }\n\n if (this.hasRouterLink === true) {\n if (\n e.ctrlKey === true ||\n e.shiftKey === true ||\n e.altKey === true ||\n e.metaKey === true\n ) {\n // if it has meta keys, let vue-router link\n // handle this by its own\n return\n }\n\n stopAndPrevent(e)\n }\n }\n\n const go = () => {\n // vue-router now throwing error if navigating\n // to the same route that the user is currently at\n // https://github.com/vuejs/vue-router/issues/2872\n this.$router[this.replace === true ? 'replace' : 'push'](this.currentLocation.route, void 0, noop)\n }\n\n this.$emit('click', e, go)\n this.hasRouterLink === true && e.navigate !== false && go()\n },\n\n __onKeydown (e) {\n if (isKeyCode(e, [ 13, 32 ]) === true) {\n stopAndPrevent(e)\n\n if (keyboardTarget !== this.$el) {\n keyboardTarget !== void 0 && this.__cleanup()\n\n // focus external button if the focus helper was focused before\n this.$el.focus()\n\n keyboardTarget = this.$el\n this.$el.classList.add('q-btn--active')\n document.addEventListener('keyup', this.__onPressEnd, true)\n this.$el.addEventListener('blur', this.__onPressEnd, passiveCapture)\n }\n }\n\n this.$emit('keydown', e)\n },\n\n __onTouchstart (e) {\n if (touchTarget !== this.$el) {\n touchTarget !== void 0 && this.__cleanup()\n touchTarget = this.$el\n const target = this.touchTargetEl = getTouchTarget(e.target)\n target.addEventListener('touchcancel', this.__onPressEnd, passiveCapture)\n target.addEventListener('touchend', this.__onPressEnd, passiveCapture)\n }\n\n // avoid duplicated mousedown event\n // triggering another early ripple\n this.avoidMouseRipple = true\n clearTimeout(this.mouseTimer)\n this.mouseTimer = setTimeout(() => {\n this.avoidMouseRipple = false\n }, 200)\n\n this.$emit('touchstart', e)\n },\n\n __onMousedown (e) {\n if (mouseTarget !== this.$el) {\n mouseTarget !== void 0 && this.__cleanup()\n mouseTarget = this.$el\n this.$el.classList.add('q-btn--active')\n document.addEventListener('mouseup', this.__onPressEnd, passiveCapture)\n }\n\n e.qSkipRipple = this.avoidMouseRipple === true\n this.$emit('mousedown', e)\n },\n\n __onPressEnd (e) {\n // needed for IE (because it emits blur when focusing button from focus helper)\n if (e !== void 0 && e.type === 'blur' && document.activeElement === this.$el) {\n return\n }\n\n if (e !== void 0 && e.type === 'keyup') {\n if (keyboardTarget === this.$el && 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 this.$el.dispatchEvent(evt)\n\n stopAndPrevent(e)\n\n // for ripple\n e.qKeyEvent = true\n }\n\n this.$emit('keyup', e)\n }\n\n this.__cleanup()\n },\n\n __cleanup (destroying) {\n const blurTarget = this.$refs.blurTarget\n\n if (\n destroying !== true &&\n (touchTarget === this.$el || mouseTarget === this.$el) &&\n blurTarget !== void 0 &&\n blurTarget !== document.activeElement\n ) {\n blurTarget.setAttribute('tabindex', -1)\n blurTarget.focus()\n }\n\n if (touchTarget === this.$el) {\n const target = this.touchTargetEl\n target.removeEventListener('touchcancel', this.__onPressEnd, passiveCapture)\n target.removeEventListener('touchend', this.__onPressEnd, passiveCapture)\n touchTarget = this.touchTargetEl = void 0\n }\n\n if (mouseTarget === this.$el) {\n document.removeEventListener('mouseup', this.__onPressEnd, passiveCapture)\n mouseTarget = void 0\n }\n\n if (keyboardTarget === this.$el) {\n document.removeEventListener('keyup', this.__onPressEnd, true)\n this.$el !== void 0 && this.$el.removeEventListener('blur', this.__onPressEnd, passiveCapture)\n keyboardTarget = void 0\n }\n\n this.$el !== void 0 && this.$el.classList.remove('q-btn--active')\n },\n\n __onLoadingEvt (evt) {\n stopAndPrevent(evt)\n evt.qSkipRipple = true\n }\n },\n\n beforeDestroy () {\n this.__cleanup(true)\n },\n\n render (h) {\n let inner = []\n\n this.icon !== void 0 && inner.push(\n h(QIcon, {\n attrs: iconAttrs,\n props: { name: this.icon, left: this.stack === false && this.hasLabel === true }\n })\n )\n\n this.hasLabel === true && inner.push(\n h('span', { staticClass: 'block' }, [ this.label ])\n )\n\n inner = mergeSlot(inner, this, 'default')\n\n if (this.iconRight !== void 0 && this.round === false) {\n inner.push(\n h(QIcon, {\n attrs: iconAttrs,\n props: { name: this.iconRight, right: this.stack === false && this.hasLabel === true }\n })\n )\n }\n\n const child = [\n h('span', {\n staticClass: 'q-focus-helper',\n ref: 'blurTarget'\n })\n ]\n\n if (this.loading === true && this.percentage !== void 0) {\n child.push(\n h('span', {\n staticClass: 'q-btn__progress absolute-full overflow-hidden'\n }, [\n h('span', {\n staticClass: 'q-btn__progress-indicator fit block',\n class: this.darkPercentage === true ? 'q-btn__progress--dark' : '',\n style: this.percentageStyle\n })\n ])\n )\n }\n\n child.push(\n h('span', {\n staticClass: 'q-btn__wrapper col row q-anchor--skip',\n style: this.wrapperStyle\n }, [\n h('span', {\n staticClass: 'q-btn__content text-center col items-center q-anchor--skip',\n class: this.innerClasses\n }, inner)\n ])\n )\n\n this.loading !== null && child.push(\n h('transition', {\n props: { name: 'q-transition--fade' }\n }, this.loading === true ? [\n h('span', {\n key: 'loading',\n staticClass: 'absolute-full flex flex-center'\n }, this.$scopedSlots.loading !== void 0 ? this.$scopedSlots.loading() : [ h(QSpinner) ])\n ] : void 0)\n )\n\n return h(this.isLink === true ? 'a' : 'button', {\n staticClass: 'q-btn q-btn-item non-selectable no-outline',\n class: this.classes,\n style: this.style,\n attrs: this.attrs,\n on: this.onEvents,\n directives: this.directives\n }, child)\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QBtnGroup',\n\n mixin: [ ListenersMixin ],\n\n props: {\n unelevated: Boolean,\n outline: Boolean,\n flat: Boolean,\n rounded: Boolean,\n push: Boolean,\n stretch: Boolean,\n glossy: Boolean,\n spread: Boolean\n },\n\n computed: {\n classes () {\n return ['unelevated', 'outline', 'flat', 'rounded', 'push', 'stretch', 'glossy']\n .filter(t => this[t] === true)\n .map(t => `q-btn-group--${t}`).join(' ')\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-btn-group row no-wrap ' +\n (this.spread === true ? 'q-btn-group--spread' : 'inline'),\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\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 { clearSelection } from '../utils/selection.js'\nimport { addEvt, cleanEvt, prevent, listenOpts } from '../utils/event.js'\nimport { getTouchTarget } from '../utils/touch.js'\nimport { isKeyCode } from '../utils/key-composition.js'\n\nexport default {\n props: {\n target: {\n default: true\n },\n noParentEvent: Boolean,\n contextMenu: Boolean\n },\n\n watch: {\n contextMenu (val) {\n if (this.anchorEl !== void 0) {\n this.__unconfigureAnchorEl()\n this.__configureAnchorEl(val)\n }\n },\n\n target () {\n if (this.anchorEl !== void 0) {\n this.__unconfigureAnchorEl()\n }\n\n this.__pickAnchorEl()\n },\n\n noParentEvent (val) {\n if (this.anchorEl !== void 0) {\n if (val === true) {\n this.__unconfigureAnchorEl()\n }\n else {\n this.__configureAnchorEl()\n }\n }\n }\n },\n\n methods: {\n __showCondition (evt) {\n // abort with no parent configured or on multi-touch\n if (this.anchorEl === void 0) {\n return false\n }\n if (evt === void 0) {\n return true\n }\n return evt.touches === void 0 || evt.touches.length <= 1\n },\n\n __contextClick (evt) {\n this.hide(evt)\n this.$nextTick(() => {\n this.show(evt)\n })\n prevent(evt)\n },\n\n __toggleKey (evt) {\n isKeyCode(evt, 13) === true && this.toggle(evt)\n },\n\n __mobileCleanup (evt) {\n this.anchorEl.classList.remove('non-selectable')\n clearTimeout(this.touchTimer)\n\n if (this.showing === true && evt !== void 0) {\n clearSelection()\n }\n },\n\n __mobilePrevent: prevent,\n\n __mobileTouch (evt) {\n this.__mobileCleanup(evt)\n\n if (this.__showCondition(evt) !== true) {\n return\n }\n\n this.hide(evt)\n this.anchorEl.classList.add('non-selectable')\n\n const target = getTouchTarget(evt.target)\n addEvt(this, 'anchor', [\n [ target, 'touchmove', '__mobileCleanup', 'passive' ],\n [ target, 'touchend', '__mobileCleanup', 'passive' ],\n [ target, 'touchcancel', '__mobileCleanup', 'passive' ],\n [ this.anchorEl, 'contextmenu', '__mobilePrevent', 'notPassive' ]\n ])\n\n this.touchTimer = setTimeout(() => {\n this.show(evt)\n }, 300)\n },\n\n __unconfigureAnchorEl () {\n cleanEvt(this, 'anchor')\n },\n\n __configureAnchorEl (context = this.contextMenu) {\n if (this.noParentEvent === true || this.anchorEl === void 0) { return }\n\n let evts\n\n if (context === true) {\n if (this.$q.platform.is.mobile === true) {\n evts = [\n [ this.anchorEl, 'touchstart', '__mobileTouch', 'passive' ]\n ]\n }\n else {\n evts = [\n [ this.anchorEl, 'click', 'hide', 'passive' ],\n [ this.anchorEl, 'contextmenu', '__contextClick', 'notPassive' ]\n ]\n }\n }\n else {\n evts = [\n [ this.anchorEl, 'click', 'toggle', 'passive' ],\n [ this.anchorEl, 'keyup', '__toggleKey', 'passive' ]\n ]\n }\n\n addEvt(this, 'anchor', evts)\n },\n\n __setAnchorEl (el) {\n this.anchorEl = el\n while (this.anchorEl.classList.contains('q-anchor--skip')) {\n this.anchorEl = this.anchorEl.parentNode\n }\n this.__configureAnchorEl()\n },\n\n __pickAnchorEl () {\n if (this.target === false || this.target === '') {\n this.anchorEl = void 0\n }\n else if (this.target === true) {\n this.__setAnchorEl(this.parentEl)\n }\n else {\n let el = this.target\n\n if (typeof this.target === 'string') {\n try {\n el = document.querySelector(this.target)\n }\n catch (err) {\n el = void 0\n }\n }\n\n if (el !== void 0 && el !== null) {\n this.anchorEl = el._isVue === true && el.$el !== void 0 ? el.$el : el\n this.__configureAnchorEl()\n }\n else {\n this.anchorEl = void 0\n console.error(`Anchor: target \"${this.target}\" not found`, this)\n }\n }\n },\n\n __changeScrollEvent (scrollTarget, fn) {\n const fnProp = `${fn !== void 0 ? 'add' : 'remove'}EventListener`\n const fnHandler = fn !== void 0 ? fn : this.__scrollFn\n\n if (scrollTarget !== window) {\n scrollTarget[fnProp]('scroll', fnHandler, listenOpts.passive)\n }\n\n window[fnProp]('scroll', fnHandler, listenOpts.passive)\n\n this.__scrollFn = fn\n }\n },\n\n created () {\n if (\n typeof this.__configureScrollTarget === 'function' &&\n typeof this.__unconfigureScrollTarget === 'function'\n ) {\n this.noParentEventWatcher = this.$watch('noParentEvent', () => {\n if (this.__scrollTarget !== void 0) {\n this.__unconfigureScrollTarget()\n this.__configureScrollTarget()\n }\n })\n }\n },\n\n mounted () {\n this.parentEl = this.$el.parentNode\n this.__pickAnchorEl()\n\n if (this.value === true && this.anchorEl === void 0) {\n this.$emit('input', false)\n }\n },\n\n beforeDestroy () {\n clearTimeout(this.touchTimer)\n this.noParentEventWatcher !== void 0 && this.noParentEventWatcher()\n this.__anchorCleanup !== void 0 && this.__anchorCleanup()\n this.__unconfigureAnchorEl()\n }\n}\n","export default {\n methods: {\n __nextTick (fn) {\n this.__tickFn = fn\n },\n\n __prepareTick () {\n if (this.__tickFn !== void 0) {\n const fn = this.__tickFn\n this.$nextTick(() => {\n if (this.__tickFn === fn) {\n this.__tickFn()\n this.__tickFn = void 0\n }\n })\n }\n },\n\n __clearTick () {\n this.__tickFn = void 0\n },\n\n __setTimeout (fn, delay) {\n clearTimeout(this.__timer)\n this.__timer = setTimeout(fn, delay)\n },\n\n __clearTimeout () {\n clearTimeout(this.__timer)\n }\n },\n\n beforeDestroy () {\n this.__tickFn = void 0\n clearTimeout(this.__timer)\n }\n}\n","import { isSSR } from '../plugins/Platform.js'\n\nimport TimeoutMixin from './timeout.js'\nimport ListenersMixin from './listeners.js'\n\nexport default {\n mixins: [ TimeoutMixin, ListenersMixin ],\n\n props: {\n value: {\n type: Boolean,\n default: void 0\n }\n },\n\n data () {\n return {\n showing: false\n }\n },\n\n watch: {\n value (val) {\n this.__processModelChange(val)\n },\n\n $route () {\n this.hideOnRouteChange === true && this.showing === true && this.hide()\n }\n },\n\n methods: {\n toggle (evt) {\n this[this.showing === true ? 'hide' : 'show'](evt)\n },\n\n show (evt) {\n if (this.disable === true || (this.__showCondition !== void 0 && this.__showCondition(evt) !== true)) {\n return\n }\n\n if (this.qListeners.input !== void 0 && isSSR === false) {\n this.$emit('input', true)\n this.payload = evt\n this.$nextTick(() => {\n if (this.payload === evt) {\n this.payload = void 0\n }\n })\n }\n\n if (this.value === void 0 || this.qListeners.input === void 0 || isSSR === true) {\n this.__processShow(evt)\n }\n },\n\n __processShow (evt) {\n if (this.showing === true) {\n return\n }\n\n // need to call it before setting showing to true\n // in order to not ruin the animation\n this.__preparePortal !== void 0 && this.__preparePortal()\n\n this.showing = true\n\n this.$emit('before-show', evt)\n\n if (this.__show !== void 0) {\n this.__clearTick()\n this.__show(evt)\n this.__prepareTick()\n }\n else {\n this.$emit('show', evt)\n }\n },\n\n hide (evt) {\n if (this.disable === true) {\n return\n }\n\n if (this.qListeners.input !== void 0 && isSSR === false) {\n this.$emit('input', false)\n this.payload = evt\n this.$nextTick(() => {\n if (this.payload === evt) {\n this.payload = void 0\n }\n })\n }\n if (this.value === void 0 || this.qListeners.input === void 0 || isSSR === true) {\n this.__processHide(evt)\n }\n },\n\n __processHide (evt) {\n if (this.showing === false) {\n return\n }\n\n this.showing = false\n\n this.$emit('before-hide', evt)\n\n if (this.__hide !== void 0) {\n this.__clearTick()\n this.__hide(evt)\n this.__prepareTick()\n }\n else {\n this.$emit('hide', evt)\n }\n },\n\n __processModelChange (val) {\n if (this.disable === true && val === true) {\n this.qListeners.input !== void 0 && this.$emit('input', false)\n }\n else if ((val === true) !== this.showing) {\n this[`__process${val === true ? 'Show' : 'Hide'}`](this.payload)\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport { isSSR } from '../plugins/Platform.js'\nimport { getBodyFullscreenElement } from '../utils/dom.js'\n\nexport function closePortalMenus (vm, evt) {\n do {\n if (vm.$options.name === 'QMenu') {\n vm.hide(evt)\n\n // is this a point of separation?\n if (vm.separateClosePopup === true) {\n return vm.$parent\n }\n }\n else if (vm.__renderPortal !== void 0) {\n // treat it as point of separation if parent is QPopupProxy\n // (so mobile matches desktop behavior)\n // and hide it too\n if (vm.$parent !== void 0 && vm.$parent.$options.name === 'QPopupProxy') {\n vm.hide(evt)\n return vm.$parent\n }\n else {\n return vm\n }\n }\n vm = vm.$parent\n } while (vm !== void 0)\n}\n\nexport function closePortals (vm, evt, depth) {\n while (depth !== 0 && vm !== void 0) {\n if (vm.__renderPortal !== void 0) {\n depth--\n\n if (vm.$options.name === 'QMenu') {\n vm = closePortalMenus(vm, evt)\n continue\n }\n\n vm.hide(evt)\n }\n\n vm = vm.$parent\n }\n}\n\nfunction isOnGlobalDialog (vm) {\n while (vm !== void 0) {\n if (vm.$options.name === 'QGlobalDialog') {\n return true\n }\n if (vm.$options.name === 'QDialog') {\n return false\n }\n\n vm = vm.$parent\n }\n return false\n}\n\nconst Portal = {\n inheritAttrs: false,\n\n props: {\n contentClass: [ Array, String, Object ],\n contentStyle: [ Array, String, Object ]\n },\n\n methods: {\n __showPortal () {\n if (this.$q.fullscreen !== void 0 && this.$q.fullscreen.isCapable === true) {\n const append = isFullscreen => {\n if (this.__portal === void 0) {\n return\n }\n\n const newParent = getBodyFullscreenElement(\n isFullscreen,\n this.$q.fullscreen.activeEl\n )\n\n if (\n this.__portal.$el.parentElement !== newParent &&\n newParent.contains(this.$el) === (this.__onGlobalDialog === false)\n ) {\n newParent.appendChild(this.__portal.$el)\n }\n }\n\n this.unwatchFullscreen = this.$watch('$q.fullscreen.isActive', append)\n\n const isActive = this.$q.fullscreen.isActive\n\n if (this.__onGlobalDialog === false || isActive === true) {\n append(isActive)\n }\n }\n else if (this.__portal !== void 0 && this.__onGlobalDialog === false) {\n document.body.appendChild(this.__portal.$el)\n }\n },\n\n __hidePortal () {\n if (this.__portal !== void 0) {\n if (this.unwatchFullscreen !== void 0) {\n this.unwatchFullscreen()\n this.unwatchFullscreen = void 0\n }\n\n if (this.__onGlobalDialog === false) {\n this.__portal.$destroy()\n this.__portal.$el.remove()\n }\n\n this.__portal = void 0\n }\n },\n\n __preparePortal () {\n if (this.__portal === void 0) {\n this.__portal = this.__onGlobalDialog === true\n ? {\n $el: this.$el,\n $refs: this.$refs\n }\n : new Vue({\n name: 'QPortal',\n parent: this,\n\n inheritAttrs: false,\n\n render: h => this.__renderPortal(h),\n\n components: this.$options.components,\n directives: this.$options.directives\n }).$mount()\n }\n }\n },\n\n render (h) {\n if (this.__onGlobalDialog === true) {\n return this.__renderPortal(h)\n }\n\n if (this.__portal !== void 0) {\n this.__portal.$forceUpdate()\n }\n },\n\n beforeDestroy () {\n this.__hidePortal()\n }\n}\n\nif (isSSR === false) {\n Portal.created = function () {\n this.__onGlobalDialog = isOnGlobalDialog(this.$parent)\n }\n}\n\nexport default Portal\n","import { listenOpts } from '../../utils/event.js'\nimport { getVmOfNode, isVmChildOf } from '../../utils/vm.js'\n\nlet timer\n\nconst\n { notPassiveCapture, passiveCapture } = listenOpts,\n handlers = {\n click: [],\n focus: []\n }\n\nfunction execHandlers (list, evt) {\n for (let i = list.length - 1; i >= 0; i--) {\n if (list[i](evt) === void 0) {\n return\n }\n }\n}\n\nfunction globalHandler (evt) {\n clearTimeout(timer)\n\n // prevent autofocus on body resulting from blur\n if (evt.type === 'focusin' && evt.target.hasAttribute('tabindex') === true) {\n timer = setTimeout(() => {\n execHandlers(handlers.focus, evt)\n }, 200)\n }\n else {\n execHandlers(handlers.click, evt)\n }\n}\n\nexport default {\n name: 'click-outside',\n\n bind (el, { value, arg }, vnode) {\n const vmEl = vnode.componentInstance || vnode.context\n\n const ctx = {\n trigger: value,\n toggleEl: arg,\n\n handler (evt) {\n const target = evt.target\n\n if (\n target !== void 0 &&\n target.nodeType !== 8 &&\n // directives that prevent click by using pointer-events none generate click on html element\n target !== document.documentElement &&\n target.classList.contains('no-pointer-events') === false &&\n (\n ctx.toggleEl === void 0 ||\n ctx.toggleEl.contains(target) === false\n ) &&\n (\n target === document.body ||\n isVmChildOf(getVmOfNode(target), vmEl) === false\n )\n ) {\n // mark the event as being processed by clickOutside\n // used to prevent refocus after menu close\n evt.qClickOutside = true\n\n return ctx.trigger(evt)\n }\n }\n }\n\n if (el.__qclickoutside) {\n el.__qclickoutside_old = el.__qclickoutside\n }\n\n el.__qclickoutside = ctx\n\n if (handlers.click.length === 0) {\n document.addEventListener('mousedown', globalHandler, notPassiveCapture)\n document.addEventListener('touchstart', globalHandler, notPassiveCapture)\n document.addEventListener('focusin', globalHandler, passiveCapture)\n }\n\n handlers.click.push(ctx.handler)\n\n ctx.timerFocusin = setTimeout(() => {\n handlers.focus.push(ctx.handler)\n }, 500)\n },\n\n update (el, { value, oldValue, arg }) {\n const ctx = el.__qclickoutside\n\n if (value !== oldValue) {\n ctx.trigger = value\n }\n if (arg !== ctx.arg) {\n ctx.toggleEl = arg\n }\n },\n\n unbind (el) {\n const ctx = el.__qclickoutside_old || el.__qclickoutside\n if (ctx !== void 0) {\n clearTimeout(ctx.timerFocusin)\n\n const\n indexClick = handlers.click.findIndex(h => h === ctx.handler),\n indexFocus = handlers.focus.findIndex(h => h === ctx.handler)\n\n indexClick > -1 && handlers.click.splice(indexClick, 1)\n indexFocus > -1 && handlers.focus.splice(indexFocus, 1)\n\n if (handlers.click.length === 0) {\n clearTimeout(timer)\n document.removeEventListener('mousedown', globalHandler, notPassiveCapture)\n document.removeEventListener('touchstart', globalHandler, notPassiveCapture)\n document.removeEventListener('focusin', globalHandler, passiveCapture)\n }\n\n delete el[el.__qclickoutside_old ? '__qclickoutside_old' : '__qclickoutside']\n }\n }\n}\n","export default {\n props: {\n transitionShow: {\n type: String,\n default: 'fade'\n },\n\n transitionHide: {\n type: String,\n default: 'fade'\n }\n },\n\n data () {\n return {\n transitionState: this.showing\n }\n },\n\n watch: {\n showing (val) {\n this.transitionShow !== this.transitionHide && this.$nextTick(() => {\n this.transitionState = val\n })\n }\n },\n\n computed: {\n transition () {\n return 'q-transition--' + (this.transitionState === true ? this.transitionHide : this.transitionShow)\n }\n }\n}\n","export function getVmOfNode (el) {\n for (let node = el; node !== null; node = node.parentNode) {\n // node.__vue__ can be null if the instance was destroyed\n if (node.__vue__ === null) {\n return\n }\n if (node.__vue__ !== void 0) {\n return node.__vue__\n }\n }\n}\n\nexport function isVmChildOf (childVm, parentVm) {\n for (let vm = childVm; vm !== void 0; vm = vm.$parent) {\n if (vm === parentVm) {\n return true\n }\n }\n return false\n}\n","import { isSSR } from '../plugins/Platform.js'\nimport { css } from './dom.js'\n\nconst scrollTargets = isSSR === false\n ? [ null, document, document.body, document.scrollingElement, document.documentElement ]\n : []\n\nexport function getScrollTarget (el, target) {\n if (typeof target === 'string') {\n try {\n target = document.querySelector(target)\n }\n catch (err) {\n target = void 0\n }\n }\n\n if (target === void 0 || target === null) {\n target = el.closest('.scroll,.scroll-y,.overflow-auto')\n }\n else if (target._isVue === true && target.$el !== void 0) {\n target = target.$el\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 getScrollPosition (scrollTarget) {\n if (scrollTarget === window) {\n return window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n }\n return scrollTarget.scrollTop\n}\n\nexport function getHorizontalScrollPosition (scrollTarget) {\n if (scrollTarget === window) {\n return window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n }\n return scrollTarget.scrollLeft\n}\n\nexport function animScrollTo (el, to, duration = 0) {\n const pos = getScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(() => {\n const newPos = pos + (to - pos) / Math.max(16, duration) * 16\n setScroll(el, newPos)\n if (newPos !== to) {\n animScrollTo(el, to, duration - 16)\n }\n })\n}\n\nexport function animHorizontalScrollTo (el, to, duration = 0) {\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(() => {\n const newPos = pos + (to - pos) / Math.max(16, duration) * 16\n setHorizontalScroll(el, newPos)\n if (newPos !== to) {\n animHorizontalScrollTo(el, to, duration - 16)\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 setScrollPosition (scrollTarget, offset, duration) {\n if (duration) {\n animScrollTo(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 getScrollPosition,\n getHorizontalScrollPosition,\n\n animScrollTo,\n animHorizontalScrollTo,\n\n setScrollPosition,\n setHorizontalScrollPosition,\n\n getScrollbarWidth,\n hasScrollbar\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])) {\n console.error('Anchor/Self position must start with one of top/center/bottom')\n return false\n }\n if (!['left', 'middle', 'right'].includes(parts[1])) {\n console.error('Anchor/Self position must end with one of left/middle/right')\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\nexport function parsePosition (pos) {\n const parts = pos.split(' ')\n return { vertical: parts[0], horizontal: parts[1] }\n}\n\nexport function validateCover (val) {\n if (val === true || val === false) { return true }\n return validatePosition(val)\n}\n\nexport function getAnchorProps (el, offset) {\n let { top, left, right, bottom, width, height } = el.getBoundingClientRect()\n\n if (offset !== void 0) {\n top -= offset[1]\n left -= offset[0]\n bottom += offset[1]\n right += offset[0]\n\n width += offset[0]\n height += offset[1]\n }\n\n return {\n top,\n left,\n right,\n bottom,\n width,\n height,\n middle: left + (right - left) / 2,\n center: top + (bottom - top) / 2\n }\n}\n\nexport function getTargetProps (el) {\n return {\n top: 0,\n center: el.offsetHeight / 2,\n bottom: el.offsetHeight,\n left: 0,\n middle: el.offsetWidth / 2,\n right: el.offsetWidth\n }\n}\n\n// cfg: { el, anchorEl, anchorOrigin, selfOrigin, offset, absoluteOffset, cover, fit, maxHeight, maxWidth }\nexport function setPosition (cfg) {\n if (client.is.ios === true && window.visualViewport !== void 0) {\n // uses the q-position-engine CSS class\n\n const el = document.body.style\n const { offsetLeft: left, offsetTop: top } = window.visualViewport\n\n if (left !== vpLeft) {\n el.setProperty('--q-pe-left', left + 'px')\n vpLeft = left\n }\n if (top !== vpTop) {\n el.setProperty('--q-pe-top', top + 'px')\n vpTop = top\n }\n }\n\n let anchorProps\n\n // scroll position might change\n // if max-height/-width changes, so we\n // need to restore it after we calculate\n // the new positioning\n const { scrollLeft, scrollTop } = cfg.el\n\n if (cfg.absoluteOffset === void 0) {\n anchorProps = getAnchorProps(cfg.anchorEl, cfg.cover === true ? [0, 0] : cfg.offset)\n }\n else {\n const\n { top: anchorTop, left: anchorLeft } = cfg.anchorEl.getBoundingClientRect(),\n top = anchorTop + cfg.absoluteOffset.top,\n left = anchorLeft + cfg.absoluteOffset.left\n\n anchorProps = { top, left, width: 1, height: 1, right: left + 1, center: top, middle: left, bottom: top + 1 }\n }\n\n let elStyle = {\n maxHeight: cfg.maxHeight,\n maxWidth: cfg.maxWidth,\n visibility: 'visible'\n }\n\n if (cfg.fit === true || cfg.cover === true) {\n elStyle.minWidth = anchorProps.width + 'px'\n if (cfg.cover === true) {\n elStyle.minHeight = anchorProps.height + 'px'\n }\n }\n\n Object.assign(cfg.el.style, elStyle)\n\n const\n targetProps = getTargetProps(cfg.el),\n props = {\n top: anchorProps[cfg.anchorOrigin.vertical] - targetProps[cfg.selfOrigin.vertical],\n left: anchorProps[cfg.anchorOrigin.horizontal] - targetProps[cfg.selfOrigin.horizontal]\n }\n\n applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)\n\n elStyle = {\n top: props.top + 'px',\n left: props.left + 'px'\n }\n\n if (props.maxHeight !== void 0) {\n elStyle.maxHeight = props.maxHeight + 'px'\n\n if (anchorProps.height > props.maxHeight) {\n elStyle.minHeight = elStyle.maxHeight\n }\n }\n if (props.maxWidth !== void 0) {\n elStyle.maxWidth = props.maxWidth + 'px'\n\n if (anchorProps.width > props.maxWidth) {\n elStyle.minWidth = elStyle.maxWidth\n }\n }\n\n Object.assign(cfg.el.style, elStyle)\n\n // restore scroll position\n if (cfg.el.scrollTop !== scrollTop) {\n cfg.el.scrollTop = scrollTop\n }\n if (cfg.el.scrollLeft !== scrollLeft) {\n cfg.el.scrollLeft = scrollLeft\n }\n}\n\nfunction applyBoundaries (props, anchorProps, targetProps, anchorOrigin, selfOrigin) {\n const\n currentHeight = targetProps.bottom,\n currentWidth = targetProps.right,\n margin = getScrollbarWidth(),\n innerHeight = window.innerHeight - margin,\n innerWidth = document.body.clientWidth\n\n if (props.top < 0 || props.top + currentHeight > innerHeight) {\n if (selfOrigin.vertical === 'center') {\n props.top = anchorProps[anchorOrigin.vertical] > innerHeight / 2\n ? Math.max(0, innerHeight - currentHeight)\n : 0\n props.maxHeight = Math.min(currentHeight, innerHeight)\n }\n else if (anchorProps[anchorOrigin.vertical] > innerHeight / 2) {\n const anchorY = Math.min(\n innerHeight,\n anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.bottom : anchorProps.top)\n )\n props.maxHeight = Math.min(currentHeight, anchorY)\n props.top = Math.max(0, anchorY - currentHeight)\n }\n else {\n props.top = Math.max(0, anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.top : anchorProps.bottom)\n )\n props.maxHeight = Math.min(currentHeight, innerHeight - props.top)\n }\n }\n\n if (props.left < 0 || props.left + currentWidth > innerWidth) {\n props.maxWidth = Math.min(currentWidth, innerWidth)\n if (selfOrigin.horizontal === 'middle') {\n props.left = anchorProps[anchorOrigin.horizontal] > innerWidth / 2\n ? Math.max(0, innerWidth - currentWidth)\n : 0\n }\n else if (anchorProps[anchorOrigin.horizontal] > innerWidth / 2) {\n const anchorX = Math.min(\n innerWidth,\n anchorOrigin.horizontal === 'middle'\n ? anchorProps.middle\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.right : anchorProps.left)\n )\n props.maxWidth = Math.min(currentWidth, anchorX)\n props.left = Math.max(0, anchorX - props.maxWidth)\n }\n else {\n props.left = Math.max(0, anchorOrigin.horizontal === 'middle'\n ? anchorProps.middle\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.left : anchorProps.right)\n )\n props.maxWidth = Math.min(currentWidth, innerWidth - props.left)\n }\n }\n}\n","import { isKeyCode } from './key-composition.js'\n\nconst handlers = []\nlet escDown = false\n\nexport default {\n __install () {\n this.__installed = true\n window.addEventListener('keydown', evt => {\n escDown = evt.keyCode === 27\n })\n window.addEventListener('blur', () => {\n escDown === true && (escDown = false)\n })\n window.addEventListener('keyup', evt => {\n if (escDown === true) {\n escDown = false\n\n if (handlers.length !== 0 && isKeyCode(evt, 27) === true) {\n handlers[handlers.length - 1].fn(evt)\n }\n }\n })\n },\n\n register (comp, fn) {\n if (comp.$q.platform.is.desktop === true) {\n this.__installed !== true && this.__install()\n handlers.push({ comp, fn })\n }\n },\n\n pop (comp) {\n if (comp.$q.platform.is.desktop === true) {\n const index = handlers.findIndex(h => h.comp === comp)\n if (index > -1) {\n handlers.splice(index, 1)\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport AnchorMixin from '../../mixins/anchor.js'\nimport ModelToggleMixin from '../../mixins/model-toggle.js'\nimport DarkMixin from '../../mixins/dark.js'\nimport PortalMixin, { closePortalMenus } from '../../mixins/portal.js'\nimport TransitionMixin from '../../mixins/transition.js'\nimport AttrsMixin from '../../mixins/attrs.js'\n\nimport ClickOutside from './ClickOutside.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { create, stop, position, stopAndPrevent } from '../../utils/event.js'\nimport EscapeKey from '../../utils/escape-key.js'\n\nimport { slot } from '../../utils/slot.js'\n\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/position-engine.js'\n\nexport default Vue.extend({\n name: 'QMenu',\n\n mixins: [\n AttrsMixin,\n DarkMixin,\n AnchorMixin,\n ModelToggleMixin,\n PortalMixin,\n TransitionMixin\n ],\n\n directives: {\n ClickOutside\n },\n\n props: {\n persistent: Boolean,\n autoClose: Boolean,\n separateClosePopup: Boolean,\n\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n\n fit: Boolean,\n cover: Boolean,\n\n square: Boolean,\n\n anchor: {\n type: String,\n validator: validatePosition\n },\n self: {\n type: String,\n validator: validatePosition\n },\n offset: {\n type: Array,\n validator: validateOffset\n },\n\n scrollTarget: {\n default: void 0\n },\n\n touchPosition: Boolean,\n\n maxHeight: {\n type: String,\n default: null\n },\n maxWidth: {\n type: String,\n default: null\n }\n },\n\n computed: {\n horizSide () {\n return this.$q.lang.rtl === true ? 'right' : 'left'\n },\n\n anchorOrigin () {\n return parsePosition(\n this.anchor || (\n this.cover === true ? `center middle` : `bottom ${this.horizSide}`\n )\n )\n },\n\n selfOrigin () {\n return this.cover === true\n ? this.anchorOrigin\n : parsePosition(this.self || `top ${this.horizSide}`)\n },\n\n menuClass () {\n return (this.square === true ? ' q-menu--square' : '') +\n (this.isDark === true ? ' q-menu--dark q-dark' : '')\n },\n\n hideOnRouteChange () {\n return this.persistent !== true &&\n this.noRouteDismiss !== true\n },\n\n onEvents () {\n const on = {\n ...this.qListeners,\n // stop propagating these events from children\n input: stop,\n 'popup-show': stop,\n 'popup-hide': stop\n }\n\n if (this.autoClose === true) {\n on.click = this.__onAutoClose\n }\n\n return on\n },\n\n attrs () {\n return {\n tabindex: -1,\n ...this.qAttrs\n }\n }\n },\n\n methods: {\n focus () {\n let node = this.__portal !== void 0 && this.__portal.$refs !== void 0\n ? this.__portal.$refs.inner\n : void 0\n\n if (node !== void 0 && node.contains(document.activeElement) !== true) {\n node = node.querySelector('[autofocus], [data-autofocus]') || node\n node.focus()\n }\n },\n\n __show (evt) {\n // IE can have null document.activeElement\n this.__refocusTarget = this.noRefocus === false && document.activeElement !== null\n ? document.activeElement\n : void 0\n\n EscapeKey.register(this, () => {\n if (this.persistent !== true) {\n this.$emit('escape-key')\n this.hide()\n }\n })\n\n this.__showPortal()\n this.__configureScrollTarget()\n\n this.absoluteOffset = void 0\n\n if (evt !== void 0 && (this.touchPosition || this.contextMenu)) {\n const pos = position(evt)\n\n if (pos.left !== void 0) {\n const { top, left } = this.anchorEl.getBoundingClientRect()\n this.absoluteOffset = { left: pos.left - left, top: pos.top - top }\n }\n }\n\n if (this.unwatch === void 0) {\n this.unwatch = this.$watch(\n () => this.$q.screen.width + '|' + this.$q.screen.height + '|' + this.self + '|' + this.anchor,\n this.updatePosition\n )\n }\n\n this.$el.dispatchEvent(create('popup-show', { bubbles: true }))\n\n // IE can have null document.activeElement\n if (this.noFocus !== true && document.activeElement !== null) {\n document.activeElement.blur()\n }\n\n this.__nextTick(() => {\n this.updatePosition()\n this.noFocus !== true && this.focus()\n })\n\n this.__setTimeout(() => {\n // required in order to avoid the \"double-tap needed\" issue\n if (this.$q.platform.is.ios === true) {\n // if auto-close, then this click should\n // not close the menu\n this.__avoidAutoClose = this.autoClose\n this.__portal.$el.click()\n }\n\n this.updatePosition()\n this.$emit('show', evt)\n }, 300)\n },\n\n __hide (evt) {\n this.__anchorCleanup(true)\n\n // check null for IE\n if (\n this.__refocusTarget !== void 0 &&\n this.__refocusTarget !== null &&\n (\n // menu was hidden from code or ESC plugin\n evt === void 0 ||\n // menu was not closed from a mouse or touch clickOutside\n evt.qClickOutside !== true\n )\n ) {\n this.__refocusTarget.focus()\n }\n\n this.$el.dispatchEvent(create('popup-hide', { bubbles: true }))\n\n this.__setTimeout(() => {\n this.__hidePortal()\n this.$emit('hide', evt)\n }, 300)\n },\n\n __anchorCleanup (hiding) {\n this.absoluteOffset = void 0\n\n if (this.unwatch !== void 0) {\n this.unwatch()\n this.unwatch = void 0\n }\n\n if (hiding === true || this.showing === true) {\n EscapeKey.pop(this)\n this.__unconfigureScrollTarget()\n }\n },\n\n __unconfigureScrollTarget () {\n if (this.__scrollTarget !== void 0) {\n this.__changeScrollEvent(this.__scrollTarget)\n this.__scrollTarget = void 0\n }\n },\n\n __configureScrollTarget () {\n if (this.anchorEl !== void 0 || this.scrollTarget !== void 0) {\n this.__scrollTarget = getScrollTarget(this.anchorEl, this.scrollTarget)\n this.__changeScrollEvent(this.__scrollTarget, this.updatePosition)\n }\n },\n\n __onAutoClose (e) {\n // if auto-close, then the ios double-tap fix which\n // issues a click should not close the menu\n if (this.__avoidAutoClose !== true) {\n closePortalMenus(this, e)\n this.qListeners.click !== void 0 && this.$emit('click', e)\n }\n else {\n this.__avoidAutoClose = false\n }\n },\n\n updatePosition () {\n if (this.anchorEl === void 0 || this.__portal === void 0) {\n return\n }\n\n const el = this.__portal.$el\n\n if (el.nodeType === 8) { // IE replaces the comment with delay\n setTimeout(this.updatePosition, 25)\n return\n }\n\n setPosition({\n el,\n offset: this.offset,\n anchorEl: this.anchorEl,\n anchorOrigin: this.anchorOrigin,\n selfOrigin: this.selfOrigin,\n absoluteOffset: this.absoluteOffset,\n fit: this.fit,\n cover: this.cover,\n maxHeight: this.maxHeight,\n maxWidth: this.maxWidth\n })\n },\n\n __onClickOutside (e) {\n if (this.persistent !== true && this.showing === true) {\n const targetClassList = e.target.classList\n\n this.hide(e)\n if (\n // always prevent touch event\n e.type === 'touchstart' ||\n // prevent click if it's on a dialog backdrop\n targetClassList.contains('q-dialog__backdrop')\n ) {\n stopAndPrevent(e)\n }\n return true\n }\n },\n\n __renderPortal (h) {\n return h('transition', {\n props: { name: this.transition }\n }, [\n this.showing === true ? h('div', {\n ref: 'inner',\n staticClass: 'q-menu q-position-engine scroll' + this.menuClass,\n class: this.contentClass,\n style: this.contentStyle,\n attrs: this.attrs,\n on: this.onEvents,\n directives: [{\n name: 'click-outside',\n value: this.__onClickOutside,\n arg: this.anchorEl\n }]\n }, slot(this, 'default')) : null\n ])\n }\n },\n\n mounted () {\n this.__processModelChange(this.value)\n },\n\n beforeDestroy () {\n // When the menu is destroyed while open we can only emit the event on anchorEl\n if (this.showing === true && this.anchorEl !== void 0) {\n this.anchorEl.dispatchEvent(\n create('popup-hide', { bubbles: true })\n )\n }\n }\n})\n","import Vue from 'vue'\n\nimport BtnMixin from '../../mixins/btn.js'\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 { slot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QBtnDropdown',\n\n mixins: [ BtnMixin ],\n\n props: {\n value: 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 right'\n },\n menuSelf: {\n type: String,\n default: 'top right'\n },\n menuOffset: Array,\n\n disableMainBtn: Boolean,\n disableDropdown: Boolean,\n\n noIconAnimation: Boolean\n },\n\n data () {\n return {\n showing: this.value\n }\n },\n\n watch: {\n value (val) {\n this.$refs.menu !== void 0 && this.$refs.menu[val ? 'show' : 'hide']()\n }\n },\n\n render (h) {\n const label = slot(this, 'label', [])\n const attrs = {\n 'aria-expanded': this.showing === true ? 'true' : 'false',\n 'aria-haspopup': 'true'\n }\n\n if (\n this.disable === true ||\n (\n (this.split === false && this.disableMainBtn === true) ||\n this.disableDropdown === true\n )\n ) {\n attrs['aria-disabled'] = 'true'\n }\n\n const Arrow = [\n h(QIcon, {\n props: { name: this.dropdownIcon || this.$q.iconSet.arrow.dropdown },\n class: 'q-btn-dropdown__arrow' +\n (this.showing === true && this.noIconAnimation === false ? ' rotate-180' : '') +\n (this.split === false ? ' q-btn-dropdown__arrow-container' : '')\n })\n ]\n\n this.disableDropdown !== true && Arrow.push(\n h(QMenu, {\n ref: 'menu',\n props: {\n cover: this.cover,\n fit: true,\n persistent: this.persistent,\n noRouteDismiss: this.noRouteDismiss,\n autoClose: this.autoClose,\n anchor: this.menuAnchor,\n self: this.menuSelf,\n offset: this.menuOffset,\n contentClass: this.contentClass,\n contentStyle: this.contentStyle,\n separateClosePopup: true\n },\n on: cache(this, 'menu', {\n 'before-show': e => {\n this.showing = true\n this.$emit('before-show', e)\n },\n show: e => {\n this.$emit('show', e)\n this.$emit('input', true)\n },\n 'before-hide': e => {\n this.showing = false\n this.$emit('before-hide', e)\n },\n hide: e => {\n this.$emit('hide', e)\n this.$emit('input', false)\n }\n })\n }, slot(this, 'default'))\n )\n\n if (this.split === false) {\n return h(QBtn, {\n class: 'q-btn-dropdown q-btn-dropdown--simple',\n props: {\n ...this.$props,\n disable: this.disable === true || this.disableMainBtn === true,\n noWrap: true,\n round: false\n },\n attrs,\n on: cache(this, 'nonSpl', {\n click: e => {\n this.$emit('click', e)\n }\n })\n }, label.concat(Arrow))\n }\n\n const Btn = h(QBtn, {\n class: 'q-btn-dropdown--current',\n props: {\n ...this.$props,\n disable: this.disable === true || this.disableMainBtn === true,\n noWrap: true,\n iconRight: this.iconRight,\n round: false\n },\n on: cache(this, 'spl', {\n click: e => {\n this.hide()\n this.$emit('click', e)\n }\n })\n }, label)\n\n return h(QBtnGroup, {\n props: {\n outline: this.outline,\n flat: this.flat,\n rounded: this.rounded,\n push: this.push,\n unelevated: this.unelevated,\n glossy: this.glossy,\n stretch: this.stretch\n },\n staticClass: 'q-btn-dropdown q-btn-dropdown--split no-wrap q-btn-item'\n }, [\n Btn,\n\n h(QBtn, {\n staticClass: 'q-btn-dropdown__arrow-container',\n attrs,\n props: {\n disable: this.disable === true || this.disableDropdown === true,\n outline: this.outline,\n flat: this.flat,\n rounded: this.rounded,\n push: this.push,\n size: this.size,\n color: this.color,\n textColor: this.textColor,\n dense: this.dense,\n ripple: this.ripple\n }\n }, Arrow)\n ])\n },\n\n methods: {\n toggle (evt) {\n this.$refs.menu && this.$refs.menu.toggle(evt)\n },\n\n show (evt) {\n this.$refs.menu && this.$refs.menu.show(evt)\n },\n\n hide (evt) {\n this.$refs.menu && this.$refs.menu.hide(evt)\n }\n },\n\n mounted () {\n this.value === true && this.show()\n }\n})\n","export default {\n props: {\n name: String\n },\n\n computed: {\n formAttrs () {\n return {\n type: 'hidden',\n name: this.name,\n value: this.value\n }\n }\n },\n\n methods: {\n __injectFormInput (child, action, className) {\n child[action](\n this.$createElement('input', {\n staticClass: 'hidden',\n class: className,\n attrs: this.formAttrs,\n domProps: this.formDomProps\n })\n )\n }\n }\n}\n\nexport const FormFieldMixin = {\n props: {\n name: String\n },\n\n computed: {\n nameProp () {\n return this.name || this.for\n }\n }\n}\n","import Vue from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport QBtnGroup from '../btn-group/QBtnGroup.js'\n\nimport ListenersMixin from '../../mixins/listeners.js'\nimport FormMixin from '../../mixins/form.js'\nimport RippleMixin from '../../mixins/ripple.js'\n\nimport { slot, mergeSlot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QBtnToggle',\n\n mixins: [ ListenersMixin, RippleMixin, FormMixin ],\n\n props: {\n value: {\n required: true\n },\n\n options: {\n type: Array,\n required: true,\n validator: v => v.every(\n opt => ('label' in opt || 'icon' in opt || 'slot' in opt) && 'value' in opt\n )\n },\n\n // To avoid seeing the active raise shadow through the transparent button, give it a color (even white).\n color: String,\n textColor: String,\n toggleColor: {\n type: String,\n default: 'primary'\n },\n toggleTextColor: String,\n\n outline: Boolean,\n flat: Boolean,\n unelevated: Boolean,\n rounded: Boolean,\n push: Boolean,\n glossy: Boolean,\n\n size: String,\n padding: String,\n\n noCaps: Boolean,\n noWrap: Boolean,\n dense: Boolean,\n readonly: Boolean,\n disable: Boolean,\n\n stack: Boolean,\n stretch: Boolean,\n\n spread: Boolean,\n\n clearable: Boolean\n },\n\n computed: {\n hasActiveValue () {\n return this.options.find(opt => opt.value === this.value) !== void 0\n },\n\n formAttrs () {\n return {\n type: 'hidden',\n name: this.name,\n value: this.value\n }\n },\n\n btnOptions () {\n const mergeOption = (opt, key) => opt[key] === void 0 ? this[key] : opt[key]\n\n return this.options.map((opt, i) => ({\n slot: opt.slot,\n\n options: {\n key: i,\n class: opt.class,\n style: opt.style,\n on: {\n ...this.qListeners,\n click: e => this.__set(opt.value, opt, e)\n },\n attrs: opt.attrs,\n props: {\n ...opt,\n slot: void 0,\n class: void 0,\n style: void 0,\n value: void 0,\n attrs: void 0,\n\n outline: this.outline,\n flat: this.flat,\n rounded: this.rounded,\n push: this.push,\n unelevated: this.unelevated,\n dense: this.dense,\n\n disable: this.disable === true || opt.disable === true,\n\n // Options that come from the button specific options first, then from general props\n color: opt.value === this.value ? mergeOption(opt, 'toggleColor') : mergeOption(opt, 'color'),\n textColor: opt.value === this.value ? mergeOption(opt, 'toggleTextColor') : mergeOption(opt, 'textColor'),\n noCaps: mergeOption(opt, 'noCaps') === true,\n noWrap: mergeOption(opt, 'noWrap') === true,\n\n size: mergeOption(opt, 'size'),\n padding: mergeOption(opt, 'padding'),\n ripple: mergeOption(opt, 'ripple'),\n stack: mergeOption(opt, 'stack') === true,\n stretch: mergeOption(opt, 'stretch') === true\n }\n }\n }))\n }\n },\n\n methods: {\n __set (value, opt, e) {\n if (this.readonly !== true) {\n if (this.value === value) {\n if (this.clearable === true) {\n this.$emit('input', null, null)\n this.$emit('clear')\n }\n }\n else {\n this.$emit('input', value, opt)\n }\n\n this.$emit('click', e)\n }\n }\n },\n\n render (h) {\n const child = this.btnOptions.map(opt => {\n return h(QBtn, opt.options, opt.slot !== void 0 ? slot(this, opt.slot) : void 0)\n })\n\n if (this.name !== void 0 && this.disable !== true && this.hasActiveValue === true) {\n this.__injectFormInput(child, 'push')\n }\n\n return h(QBtnGroup, {\n staticClass: 'q-btn-toggle',\n props: {\n outline: this.outline,\n flat: this.flat,\n rounded: this.rounded,\n push: this.push,\n stretch: this.stretch,\n unelevated: this.unelevated,\n glossy: this.glossy,\n spread: this.spread\n }\n }, mergeSlot(child, this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport TagMixin from '../../mixins/tag.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QCard',\n\n mixins: [ ListenersMixin, DarkMixin, TagMixin ],\n\n props: {\n square: Boolean,\n flat: Boolean,\n bordered: Boolean\n },\n\n computed: {\n classes () {\n return 'q-card' +\n (this.isDark === true ? ' q-card--dark q-dark' : '') +\n (this.bordered === true ? ' q-card--bordered' : '') +\n (this.square === true ? ' q-card--square no-border-radius' : '') +\n (this.flat === true ? ' q-card--flat no-shadow' : '')\n }\n },\n\n render (h) {\n return h(this.tag, {\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport TagMixin from '../../mixins/tag.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QCardSection',\n\n mixins: [ ListenersMixin, TagMixin ],\n\n props: {\n horizontal: Boolean\n },\n\n computed: {\n classes () {\n return 'q-card__section ' +\n `q-card__section--${this.horizontal === true ? 'horiz row no-wrap' : 'vert'}`\n }\n },\n\n render (h) {\n return h(this.tag, {\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport AlignMixin from '../../mixins/align.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QCardActions',\n\n mixins: [ ListenersMixin, AlignMixin ],\n\n props: {\n vertical: Boolean\n },\n\n computed: {\n classes () {\n return `q-card__actions--${this.vertical === true ? 'vert column' : 'horiz row'} ${this.alignClass}`\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-card__actions',\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import { client } from '../plugins/Platform.js'\nimport { getModifierDirections, getTouchTarget, shouldStart } from '../utils/touch.js'\nimport { addEvt, cleanEvt, position, leftClick, stopAndPrevent, preventDraggable, noop } from '../utils/event.js'\nimport { clearSelection } from '../utils/selection.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\nfunction destroy (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\nexport default {\n name: 'touch-swipe',\n\n bind (el, { value, arg, modifiers }) {\n if (el.__qtouchswipe !== void 0) {\n destroy(el)\n el.__qtouchswipe_destroyed = true\n }\n\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\n modifiers: 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', `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 = getTouchTarget(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 modifiers.mouse === true && addEvt(ctx, 'main', [\n [ el, 'mousedown', 'mouseStart', `passive${mouseCapture}` ]\n ])\n\n client.has.touch === true && addEvt(ctx, 'main', [\n [ el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}` ],\n [ el, 'touchmove', 'noop', `notPassiveCapture` ]\n ])\n },\n\n update (el, { oldValue, value }) {\n const ctx = el.__qtouchswipe\n if (ctx !== void 0 && oldValue !== value) {\n typeof value !== 'function' && ctx.end()\n ctx.handler = value\n }\n },\n\n unbind (el) {\n if (el.__qtouchswipe_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qtouchswipe_destroyed\n }\n }\n}\n","import Vue from 'vue'\n\nimport TouchSwipe from '../directives/TouchSwipe.js'\n\nimport ListenersMixin from './listeners.js'\n\nimport { stop } from '../utils/event.js'\nimport { slot } from '../utils/slot.js'\nimport cache from '../utils/cache.js'\n\nconst PanelWrapper = Vue.extend({\n name: 'QTabPanelWrapper',\n\n render (h) {\n return h('div', {\n staticClass: 'q-panel scroll',\n attrs: { role: 'tabpanel' },\n // stop propagation of content emitted @input\n // which would tamper with Panel's model\n on: cache(this, 'stop', { input: stop })\n }, slot(this, 'default'))\n }\n})\n\nexport const PanelParentMixin = {\n mixins: [ ListenersMixin ],\n\n directives: {\n TouchSwipe\n },\n\n props: {\n value: {\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\n keepAlive: Boolean\n },\n\n data () {\n return {\n panelIndex: null,\n panelTransition: null\n }\n },\n\n computed: {\n panelDirectives () {\n if (this.swipeable === true) {\n return [{\n name: 'touch-swipe',\n value: this.__swipe,\n modifiers: {\n horizontal: this.vertical !== true,\n vertical: this.vertical,\n mouse: true\n }\n }]\n }\n },\n\n contentKey () {\n return typeof this.value === 'string' || typeof this.value === 'number'\n ? this.value\n : String(this.value)\n },\n\n transitionPrevComputed () {\n return this.transitionPrev || `slide-${this.vertical === true ? 'down' : 'right'}`\n },\n\n transitionNextComputed () {\n return this.transitionNext || `slide-${this.vertical === true ? 'up' : 'left'}`\n }\n },\n\n watch: {\n value (newVal, oldVal) {\n const index = this.__isValidPanelName(newVal) === true\n ? this.__getPanelIndex(newVal)\n : -1\n\n if (this.__forcedPanelTransition !== true) {\n this.__updatePanelTransition(\n index === -1 ? 0 : (index < this.__getPanelIndex(oldVal) ? -1 : 1)\n )\n }\n\n if (this.panelIndex !== index) {\n this.panelIndex = index\n this.$emit('before-transition', newVal, oldVal)\n this.$nextTick(() => {\n this.$emit('transition', newVal, oldVal)\n })\n }\n }\n },\n\n methods: {\n next () {\n this.__go(1)\n },\n\n previous () {\n this.__go(-1)\n },\n\n goTo (name) {\n this.$emit('input', name)\n },\n\n __isValidPanelName (name) {\n return name !== void 0 && name !== null && name !== ''\n },\n\n __getPanelIndex (name) {\n return this.panels.findIndex(panel => {\n const opt = panel.componentOptions\n return opt &&\n opt.propsData.name === name &&\n opt.propsData.disable !== '' &&\n opt.propsData.disable !== true\n })\n },\n\n __getAllPanels () {\n return this.panels.filter(\n panel => panel.componentOptions !== void 0 &&\n this.__isValidPanelName(panel.componentOptions.propsData.name)\n )\n },\n\n __getAvailablePanels () {\n return this.panels.filter(panel => {\n const opt = panel.componentOptions\n return opt &&\n opt.propsData.name !== void 0 &&\n opt.propsData.disable !== '' &&\n opt.propsData.disable !== true\n })\n },\n\n __updatePanelTransition (direction) {\n const val = direction !== 0 && this.animated === true && this.panelIndex !== -1\n ? 'q-transition--' + (direction === -1 ? this.transitionPrevComputed : this.transitionNextComputed)\n : null\n\n if (this.panelTransition !== val) {\n this.panelTransition = val\n }\n },\n\n __go (direction, startIndex = this.panelIndex) {\n let index = startIndex + direction\n const slots = this.panels\n\n while (index > -1 && index < slots.length) {\n const opt = slots[index].componentOptions\n\n if (\n opt !== void 0 &&\n opt.propsData.disable !== '' &&\n opt.propsData.disable !== true\n ) {\n this.__updatePanelTransition(direction)\n this.__forcedPanelTransition = true\n this.$emit('input', slots[index].componentOptions.propsData.name)\n setTimeout(() => {\n this.__forcedPanelTransition = false\n })\n return\n }\n\n index += direction\n }\n\n if (this.infinite === true && slots.length > 0 && startIndex !== -1 && startIndex !== slots.length) {\n this.__go(direction, direction === -1 ? slots.length : -1)\n }\n },\n\n __swipe (evt) {\n const dir = this.vertical === true ? 'up' : 'left'\n this.__go((this.$q.lang.rtl === true ? -1 : 1) * (evt.direction === dir ? 1 : -1))\n },\n\n __updatePanelIndex () {\n const index = this.__getPanelIndex(this.value)\n\n if (this.panelIndex !== index) {\n this.panelIndex = index\n }\n\n return true\n },\n\n __getPanelContent (h) {\n if (this.panels.length === 0) {\n return\n }\n\n const panel = this.__isValidPanelName(this.value) &&\n this.__updatePanelIndex() &&\n this.panels[this.panelIndex]\n\n const content = this.keepAlive === true\n ? [\n h('keep-alive', [\n h(PanelWrapper, {\n key: this.contentKey\n }, [ panel ])\n ])\n ]\n : [\n h('div', {\n staticClass: 'q-panel scroll',\n key: this.contentKey,\n attrs: { role: 'tabpanel' },\n // stop propagation of content emitted @input\n // which would tamper with Panel's model\n on: cache(this, 'stop', { input: stop })\n }, [ panel ])\n ]\n\n return this.animated === true\n ? [\n h('transition', {\n props: {\n name: this.panelTransition\n }\n }, content)\n ]\n : content\n }\n },\n\n render (h) {\n this.panels = slot(this, 'default', [])\n return this.__renderPanels(h)\n }\n}\n\nexport const PanelChildMixin = {\n mixins: [ ListenersMixin ],\n\n props: {\n name: {\n required: true\n },\n disable: Boolean\n }\n}\n","import History from '../history.js'\n\nexport default {\n props: {\n fullscreen: Boolean,\n noRouteFullscreenExit: Boolean\n },\n\n data () {\n return {\n inFullscreen: false\n }\n },\n\n watch: {\n $route () {\n this.noRouteFullscreenExit !== true && this.exitFullscreen()\n },\n\n fullscreen (v) {\n if (this.inFullscreen !== v) {\n this.toggleFullscreen()\n }\n },\n\n inFullscreen (v) {\n this.$emit('update:fullscreen', v)\n this.$emit('fullscreen', v)\n }\n },\n\n methods: {\n toggleFullscreen () {\n if (this.inFullscreen === true) {\n this.exitFullscreen()\n }\n else {\n this.setFullscreen()\n }\n },\n\n setFullscreen () {\n if (this.inFullscreen === true) {\n return\n }\n\n this.inFullscreen = true\n this.container = this.$el.parentNode\n this.container.replaceChild(this.fullscreenFillerNode, this.$el)\n document.body.appendChild(this.$el)\n document.body.classList.add('q-body--fullscreen-mixin')\n\n this.__historyFullscreen = {\n handler: this.exitFullscreen\n }\n History.add(this.__historyFullscreen)\n },\n\n exitFullscreen () {\n if (this.inFullscreen !== true) {\n return\n }\n\n if (this.__historyFullscreen !== void 0) {\n History.remove(this.__historyFullscreen)\n this.__historyFullscreen = void 0\n }\n this.container.replaceChild(this.$el, this.fullscreenFillerNode)\n document.body.classList.remove('q-body--fullscreen-mixin')\n this.inFullscreen = false\n\n if (this.$el.scrollIntoView !== void 0) {\n setTimeout(() => { this.$el.scrollIntoView() })\n }\n }\n },\n\n beforeMount () {\n this.fullscreenFillerNode = document.createElement('span')\n },\n\n mounted () {\n this.fullscreen === true && this.setFullscreen()\n },\n\n beforeDestroy () {\n this.exitFullscreen()\n }\n}\n","import Vue from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport { PanelParentMixin } from '../../mixins/panel.js'\nimport FullscreenMixin from '../../mixins/fullscreen.js'\n\nimport { isNumber } from '../../utils/is.js'\nimport { mergeSlot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QCarousel',\n\n mixins: [ DarkMixin, PanelParentMixin, FullscreenMixin ],\n\n props: {\n height: String,\n padding: Boolean,\n\n controlType: {\n type: String,\n validator: v => [ 'regular', 'flat', 'outline', 'push', 'unelevated' ].includes(v),\n default: 'flat'\n },\n controlColor: String,\n controlTextColor: String,\n\n autoplay: [ Number, Boolean ],\n\n arrows: Boolean,\n prevIcon: String,\n nextIcon: String,\n\n navigation: Boolean,\n navigationPosition: {\n type: String,\n validator: v => [ 'top', 'right', 'bottom', 'left' ].includes(v)\n },\n navigationIcon: String,\n navigationActiveIcon: String,\n\n thumbnails: Boolean\n },\n\n computed: {\n style () {\n if (this.inFullscreen !== true && this.height !== void 0) {\n return {\n height: this.height\n }\n }\n },\n\n direction () {\n return this.vertical === true ? 'vertical' : 'horizontal'\n },\n\n classes () {\n return `q-carousel q-panel-parent q-carousel--with${this.padding === true ? '' : 'out'}-padding` +\n (this.inFullscreen === true ? ' fullscreen' : '') +\n (this.isDark === true ? ' q-carousel--dark q-dark' : '') +\n (this.arrows === true ? ` q-carousel--arrows-${this.direction}` : '') +\n (this.navigation === true ? ` q-carousel--navigation-${this.navigationPositionComputed}` : '')\n },\n\n arrowIcons () {\n const ico = [\n this.prevIcon || this.$q.iconSet.carousel[this.vertical === true ? 'up' : 'left'],\n this.nextIcon || this.$q.iconSet.carousel[this.vertical === true ? 'down' : 'right']\n ]\n\n return this.vertical === false && this.$q.lang.rtl === true\n ? ico.reverse()\n : ico\n },\n\n navIcon () {\n return this.navigationIcon || this.$q.iconSet.carousel.navigationIcon\n },\n\n navActiveIcon () {\n return this.navigationActiveIcon || this.navIcon\n },\n\n navigationPositionComputed () {\n return this.navigationPosition || (this.vertical === true ? 'right' : 'bottom')\n },\n\n controlProps () {\n return {\n color: this.controlColor,\n textColor: this.controlTextColor,\n round: true,\n [ this.controlType ]: true,\n dense: true\n }\n },\n\n transitionPrevComputed () {\n return this.transitionPrev || `fade`\n },\n\n transitionNextComputed () {\n return this.transitionNext || `fade`\n }\n },\n\n watch: {\n value () {\n if (this.autoplay) {\n clearInterval(this.timer)\n this.__startTimer()\n }\n },\n\n autoplay (val) {\n if (val) {\n this.__startTimer()\n }\n else {\n clearInterval(this.timer)\n }\n }\n },\n\n methods: {\n __startTimer () {\n this.timer = setTimeout(\n this.next,\n isNumber(this.autoplay) ? this.autoplay : 5000\n )\n },\n\n __getNavigationContainer (h, type, mapping) {\n return h('div', {\n class: 'q-carousel__control q-carousel__navigation no-wrap absolute flex' +\n ` q-carousel__navigation--${type} q-carousel__navigation--${this.navigationPositionComputed}` +\n (this.controlColor !== void 0 ? ` text-${this.controlColor}` : '')\n }, [\n h('div', {\n staticClass: 'q-carousel__navigation-inner flex flex-center no-wrap'\n }, this.__getAvailablePanels().map(mapping))\n ])\n },\n\n __getContent (h) {\n const node = []\n\n if (this.navigation === true) {\n const fn = this.$scopedSlots['navigation-icon'] !== void 0\n ? this.$scopedSlots['navigation-icon']\n : opts => h(QBtn, {\n key: 'nav' + opts.name,\n class: `q-carousel__navigation-icon q-carousel__navigation-icon--${opts.active === true ? '' : 'in'}active`,\n props: opts.btnProps,\n on: cache(this, 'nav#' + opts.name, { click: opts.onClick })\n })\n\n const maxIndex = this.panels.length - 1\n node.push(\n this.__getNavigationContainer(h, 'buttons', (panel, index) => {\n const name = panel.componentOptions.propsData.name\n const active = this.panelIndex === index\n\n return fn({\n index,\n maxIndex,\n name,\n active,\n btnProps: {\n icon: active === true ? this.navActiveIcon : this.navIcon,\n size: 'sm',\n ...this.controlProps\n },\n onClick: () => { this.goTo(name) }\n })\n })\n )\n }\n else if (this.thumbnails === true) {\n const color = this.controlColor !== void 0\n ? ` text-${this.controlColor}`\n : ''\n\n node.push(this.__getNavigationContainer(h, 'thumbnails', panel => {\n const slide = panel.componentOptions.propsData\n\n return h('img', {\n class: `q-carousel__thumbnail q-carousel__thumbnail--${slide.name === this.value ? '' : 'in'}active` + color,\n attrs: {\n src: slide.imgSrc\n },\n key: 'tmb#' + slide.name,\n on: cache(this, 'tmb#' + slide.name, { click: () => { this.goTo(slide.name) } })\n })\n }))\n }\n\n if (this.arrows === true && this.panelIndex >= 0) {\n if (this.infinite === true || this.panelIndex > 0) {\n node.push(\n h('div', {\n key: 'prev',\n staticClass: `q-carousel__control q-carousel__arrow q-carousel__prev-arrow q-carousel__prev-arrow--${this.direction} absolute flex flex-center`\n }, [\n h(QBtn, {\n props: { icon: this.arrowIcons[0], ...this.controlProps },\n on: cache(this, 'prev', { click: this.previous })\n })\n ])\n )\n }\n\n if (this.infinite === true || this.panelIndex < this.panels.length - 1) {\n node.push(\n h('div', {\n key: 'next',\n staticClass: `q-carousel__control q-carousel__arrow q-carousel__next-arrow q-carousel__next-arrow--${this.direction} absolute flex flex-center`\n }, [\n h(QBtn, {\n props: { icon: this.arrowIcons[1], ...this.controlProps },\n on: cache(this, 'next', { click: this.next })\n })\n ])\n )\n }\n }\n\n return mergeSlot(node, this, 'control')\n },\n\n __renderPanels (h) {\n return h('div', {\n style: this.style,\n class: this.classes,\n on: { ...this.qListeners }\n }, [\n h('div', {\n staticClass: 'q-carousel__slides-container',\n directives: this.panelDirectives\n }, this.__getPanelContent(h))\n ].concat(this.__getContent(h)))\n }\n },\n\n mounted () {\n this.autoplay && this.__startTimer()\n },\n\n beforeDestroy () {\n clearInterval(this.timer)\n }\n})\n","import Vue from 'vue'\n\nimport { PanelChildMixin } from '../../mixins/panel.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QCarouselSlide',\n\n mixins: [ PanelChildMixin ],\n\n props: {\n imgSrc: String\n },\n\n computed: {\n style () {\n if (this.imgSrc) {\n return {\n backgroundImage: `url(\"${this.imgSrc}\")`\n }\n }\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-carousel__slide',\n style: this.style,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QCarouselControl',\n\n mixins: [ ListenersMixin ],\n\n props: {\n position: {\n type: String,\n default: 'bottom-right',\n validator: v => [\n 'top-right', 'top-left',\n 'bottom-right', 'bottom-left',\n 'top', 'right', 'bottom', 'left'\n ].includes(v)\n },\n offset: {\n type: Array,\n default: () => [18, 18],\n validator: v => v.length === 2\n }\n },\n\n computed: {\n classes () {\n return `absolute-${this.position}`\n },\n\n style () {\n return {\n margin: `${this.offset[1]}px ${this.offset[0]}px`\n }\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-carousel__control absolute',\n style: this.style,\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\nimport { uniqueSlot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QChatMessage',\n\n mixins: [ ListenersMixin ],\n\n props: {\n sent: Boolean,\n label: String,\n bgColor: String,\n textColor: String,\n name: String,\n avatar: String,\n text: Array,\n stamp: String,\n size: String,\n labelSanitize: Boolean,\n nameSanitize: Boolean,\n textSanitize: Boolean,\n stampSanitize: Boolean\n },\n\n computed: {\n textClass () {\n return `q-message-text-content q-message-text-content--${this.op}` +\n (this.textColor !== void 0 ? ` text-${this.textColor}` : '')\n },\n\n messageClass () {\n return `q-message-text q-message-text--${this.op}` +\n (this.bgColor !== void 0 ? ` text-${this.bgColor}` : '')\n },\n\n containerClass () {\n return `q-message-container row items-end no-wrap` +\n (this.sent === true ? ' reverse' : '')\n },\n\n sizeClass () {\n if (this.size !== void 0) {\n return `col-${this.size}`\n }\n },\n\n op () {\n return this.sent === true ? 'sent' : 'received'\n }\n },\n\n methods: {\n __getText (h) {\n const\n domPropText = this.textSanitize === true ? 'textContent' : 'innerHTML',\n domPropStamp = this.stampSanitize === true ? 'textContent' : 'innerHTML'\n\n return this.text.map((msg, index) => h('div', {\n key: index,\n class: this.messageClass\n }, [\n h('div', { class: this.textClass }, [\n h('div', { domProps: { [domPropText]: msg } }),\n this.stamp\n ? h('div', {\n staticClass: 'q-message-stamp',\n domProps: { [domPropStamp]: this.stamp }\n })\n : null\n ])\n ]))\n },\n\n __getMessage (h) {\n const content = uniqueSlot(this, 'default', [])\n\n this.stamp !== void 0 && content.push(\n h('div', {\n staticClass: 'q-message-stamp',\n domProps: { [this.stampSanitize === true ? 'textContent' : 'innerHTML']: this.stamp }\n })\n )\n\n return h('div', { class: this.messageClass }, [\n h('div', {\n staticClass: 'q-message-text-content',\n class: this.textClass\n }, content)\n ])\n }\n },\n\n render (h) {\n const container = []\n\n if (this.$scopedSlots.avatar !== void 0) {\n container.push(this.$scopedSlots.avatar())\n }\n else if (this.avatar !== void 0) {\n container.push(\n h('img', {\n class: `q-message-avatar q-message-avatar--${this.op}`,\n attrs: { src: this.avatar, 'aria-hidden': 'true' }\n })\n )\n }\n\n const msg = []\n\n this.name !== void 0 && msg.push(\n h('div', {\n class: `q-message-name q-message-name--${this.op}`,\n domProps: { [this.nameSanitize === true ? 'textContent' : 'innerHTML']: this.name }\n })\n )\n\n this.text !== void 0 && msg.push(\n this.__getText(h)\n )\n\n this.$scopedSlots.default !== void 0 && msg.push(\n this.__getMessage(h)\n )\n\n container.push(\n h('div', { class: this.sizeClass }, msg)\n )\n\n const child = []\n\n this.label && child.push(\n h('div', {\n staticClass: 'q-message-label text-center',\n domProps: { [this.labelSanitize === true ? 'textContent' : 'innerHTML']: this.label }\n })\n )\n\n child.push(\n h('div', { class: this.containerClass }, container)\n )\n\n return h('div', {\n class: `q-message q-message-${this.op}`,\n on: { ...this.qListeners }\n }, child)\n }\n})\n","import { getSizeMixin } from './size.js'\n\nexport default getSizeMixin({\n xs: 30,\n sm: 35,\n md: 40,\n lg: 50,\n xl: 60\n})\n","export default {\n computed: {\n __refocusTargetEl () {\n if (this.disable !== true) {\n return this.$createElement('span', {\n ref: 'refocusTarget',\n staticClass: 'no-outline',\n attrs: { tabindex: -1 }\n })\n }\n }\n },\n\n methods: {\n __refocusTarget (e) {\n if (e !== void 0 && e.type.indexOf('key') === 0) {\n if (document.activeElement !== this.$el && this.$el.contains(document.activeElement) === true) {\n this.$el.focus()\n }\n }\n else if ((e === void 0 || this.$el.contains(e.target) === true) && this.$refs.refocusTarget !== void 0) {\n this.$refs.refocusTarget.focus()\n }\n }\n }\n}\n","import DarkMixin from './dark.js'\nimport { stopAndPrevent } from '../utils/event.js'\n\nimport FormMixin from './form.js'\nimport OptionSizeMixin from './option-size.js'\nimport RefocusTargetMixin from './refocus-target.js'\n\nimport { slot, mergeSlot } from '../utils/slot.js'\nimport cache from '../utils/cache.js'\n\nexport default {\n mixins: [ DarkMixin, OptionSizeMixin, FormMixin, RefocusTargetMixin ],\n\n props: {\n value: {\n required: true,\n default: null\n },\n val: {},\n\n trueValue: { default: true },\n falseValue: { default: false },\n indeterminateValue: { default: null },\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 fontSize: String,\n\n color: String,\n keepColor: Boolean,\n dense: Boolean,\n\n disable: Boolean,\n tabindex: [String, Number]\n },\n\n computed: {\n isTrue () {\n return this.modelIsArray === true\n ? this.index > -1\n : this.value === this.trueValue\n },\n\n isFalse () {\n return this.modelIsArray === true\n ? this.index === -1\n : this.value === this.falseValue\n },\n\n isIndeterminate () {\n return this.isTrue === false && this.isFalse === false\n },\n\n index () {\n if (this.modelIsArray === true) {\n return this.value.indexOf(this.val)\n }\n },\n\n modelIsArray () {\n return this.val !== void 0 && Array.isArray(this.value)\n },\n\n computedTabindex () {\n return this.disable === true ? -1 : this.tabindex || 0\n },\n\n labelStyle () {\n if (this.fontSize !== void 0) {\n return { fontSize: this.fontSize }\n }\n },\n\n classes () {\n return `q-${this.type} cursor-pointer no-outline row inline no-wrap items-center` +\n (this.disable === true ? ' disabled' : '') +\n (this.isDark === true ? ` q-${this.type}--dark` : '') +\n (this.dense === true ? ` q-${this.type}--dense` : '') +\n (this.leftLabel === true ? ' reverse' : '')\n },\n\n innerClass () {\n const state = this.isTrue === true ? 'truthy' : (this.isFalse === true ? 'falsy' : 'indet')\n const color = this.color !== void 0 && (\n this.keepColor === true ||\n (this.type === 'toggle' ? this.isTrue === true : this.isFalse !== true)\n )\n ? ` text-${this.color}`\n : ''\n\n return `q-${this.type}__inner--${state}${color}`\n },\n\n formAttrs () {\n const prop = { type: 'checkbox' }\n\n this.name !== void 0 && Object.assign(prop, {\n checked: this.isTrue,\n name: this.name,\n value: this.modelIsArray === true\n ? this.val\n : this.trueValue\n })\n\n return prop\n },\n\n attrs () {\n const attrs = {\n tabindex: this.computedTabindex,\n role: 'checkbox',\n 'aria-label': this.label,\n 'aria-checked': this.isIndeterminate === true\n ? 'mixed'\n : (this.isTrue === true ? 'true' : 'false')\n }\n\n if (this.disable === true) {\n attrs['aria-disabled'] = 'true'\n }\n\n return attrs\n }\n },\n\n methods: {\n toggle (e) {\n if (e !== void 0) {\n stopAndPrevent(e)\n this.__refocusTarget(e)\n }\n\n if (this.disable !== true) {\n this.$emit('input', this.__getNextValue(), e)\n }\n },\n\n __getNextValue () {\n if (this.modelIsArray === true) {\n if (this.isTrue === true) {\n const val = this.value.slice()\n val.splice(this.index, 1)\n return val\n }\n\n return this.value.concat([ this.val ])\n }\n\n if (this.isTrue === true) {\n if (this.toggleOrder !== 'ft' || this.toggleIndeterminate === false) {\n return this.falseValue\n }\n }\n else if (this.isFalse === true) {\n if (this.toggleOrder === 'ft' || this.toggleIndeterminate === false) {\n return this.trueValue\n }\n }\n else {\n return this.toggleOrder !== 'ft'\n ? this.trueValue\n : this.falseValue\n }\n\n return this.indeterminateValue\n },\n\n __onKeydown (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n stopAndPrevent(e)\n }\n },\n\n __onKeyup (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n this.toggle(e)\n }\n }\n },\n\n render (h) {\n const inner = this.__getInner(h)\n\n this.disable !== true && this.__injectFormInput(\n inner,\n 'unshift',\n `q-${this.type}__native absolute q-ma-none q-pa-none invisible`\n )\n\n const child = [\n h('div', {\n staticClass: `q-${this.type}__inner relative-position no-pointer-events`,\n class: this.innerClass,\n style: this.sizeStyle\n }, inner)\n ]\n\n if (this.__refocusTargetEl !== void 0) {\n child.push(this.__refocusTargetEl)\n }\n\n const label = this.label !== void 0\n ? mergeSlot([ this.label ], this, 'default')\n : slot(this, 'default')\n\n label !== void 0 && child.push(\n h('div', {\n staticClass: `q-${this.type}__label q-anchor--skip`\n }, label)\n )\n\n return h('div', {\n class: this.classes,\n attrs: this.attrs,\n on: cache(this, 'inpExt', {\n click: this.toggle,\n keydown: this.__onKeydown,\n keyup: this.__onKeyup\n })\n }, child)\n }\n}\n","import Vue from 'vue'\n\nimport CheckboxMixin from '../../mixins/checkbox.js'\n\nexport default Vue.extend({\n name: 'QCheckbox',\n\n mixins: [ CheckboxMixin ],\n\n methods: {\n __getInner (h) {\n return [\n h('div', {\n staticClass: 'q-checkbox__bg absolute'\n }, [\n h('svg', {\n staticClass: 'q-checkbox__svg fit absolute-full',\n attrs: { focusable: 'false' /* needed for IE11 */, viewBox: '0 0 24 24', 'aria-hidden': 'true' }\n }, [\n h('path', {\n staticClass: 'q-checkbox__truthy',\n attrs: {\n fill: 'none',\n d: 'M1.73,12.91 8.1,19.28 22.79,4.59'\n }\n }),\n\n h('path', {\n staticClass: 'q-checkbox__indet',\n attrs: {\n d: 'M4,14H20V10H4'\n }\n })\n ])\n ])\n ]\n }\n },\n\n created () {\n this.type = 'checkbox'\n }\n})\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport RippleMixin from '../../mixins/ripple.js'\nimport { getSizeMixin } from '../../mixins/size.js'\n\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { mergeSlotSafely } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QChip',\n\n mixins: [\n RippleMixin,\n DarkMixin,\n getSizeMixin({\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n })\n ],\n\n model: {\n event: 'remove'\n },\n\n props: {\n dense: Boolean,\n\n icon: String,\n iconRight: String,\n iconRemove: String,\n label: [String, Number],\n\n color: String,\n textColor: String,\n\n value: {\n type: Boolean,\n default: true\n },\n selected: {\n type: Boolean,\n default: null\n },\n\n square: Boolean,\n outline: Boolean,\n clickable: Boolean,\n removable: Boolean,\n\n tabindex: [String, Number],\n disable: Boolean\n },\n\n computed: {\n classes () {\n const text = this.outline === true\n ? this.color || this.textColor\n : this.textColor\n\n return {\n [`bg-${this.color}`]: this.outline === false && this.color !== void 0,\n [`text-${text} q-chip--colored`]: text,\n disabled: this.disable,\n 'q-chip--dense': this.dense,\n 'q-chip--outline': this.outline,\n 'q-chip--selected': this.selected,\n 'q-chip--clickable cursor-pointer non-selectable q-hoverable': this.isClickable,\n 'q-chip--square': this.square,\n 'q-chip--dark q-dark': this.isDark\n }\n },\n\n hasLeftIcon () {\n return this.selected === true || this.icon !== void 0\n },\n\n isClickable () {\n return this.disable === false && (this.clickable === true || this.selected !== null)\n },\n\n attrs () {\n return this.disable === true\n ? { tabindex: -1, 'aria-disabled': 'true' }\n : { tabindex: this.tabindex || 0 }\n }\n },\n\n methods: {\n __onKeyup (e) {\n e.keyCode === 13 /* ENTER */ && this.__onClick(e)\n },\n\n __onClick (e) {\n if (!this.disable) {\n this.$emit('update:selected', !this.selected)\n this.$emit('click', e)\n }\n },\n\n __onRemove (e) {\n if (e.keyCode === void 0 || e.keyCode === 13) {\n stopAndPrevent(e)\n !this.disable && this.$emit('remove', false)\n }\n },\n\n __getContent (h) {\n const child = []\n\n this.isClickable === true && child.push(\n h('div', { staticClass: 'q-focus-helper' })\n )\n\n this.hasLeftIcon === true && child.push(\n h(QIcon, {\n staticClass: 'q-chip__icon q-chip__icon--left',\n props: { name: this.selected === true ? this.$q.iconSet.chip.selected : this.icon }\n })\n )\n\n const label = this.label !== void 0\n ? [ h('div', { staticClass: 'ellipsis' }, [ this.label ]) ]\n : void 0\n\n child.push(\n h('div', {\n staticClass: 'q-chip__content col row no-wrap items-center q-anchor--skip'\n }, mergeSlotSafely(label, this, 'default'))\n )\n\n this.iconRight && child.push(\n h(QIcon, {\n staticClass: 'q-chip__icon q-chip__icon--right',\n props: { name: this.iconRight }\n })\n )\n\n this.removable === true && child.push(\n h(QIcon, {\n staticClass: 'q-chip__icon q-chip__icon--remove cursor-pointer',\n props: { name: this.iconRemove || this.$q.iconSet.chip.remove },\n attrs: this.attrs,\n on: cache(this, 'non', {\n click: this.__onRemove,\n keyup: this.__onRemove\n })\n })\n )\n\n return child\n }\n },\n\n render (h) {\n if (this.value === false) { return }\n\n const data = {\n staticClass: 'q-chip row inline no-wrap items-center',\n class: this.classes,\n style: this.sizeStyle\n }\n\n this.isClickable === true && Object.assign(data, {\n attrs: this.attrs,\n on: cache(this, 'click', {\n click: this.__onClick,\n keyup: this.__onKeyup\n }),\n directives: cache(this, 'dir#' + this.ripple, [\n { name: 'ripple', value: this.ripple }\n ])\n })\n\n return h('div', data, this.__getContent(h))\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\nimport SizeMixin from '../../mixins/size.js'\nimport { mergeSlotSafely } from '../../utils/slot.js'\nimport { between } from '../../utils/format.js'\n\nconst\n radius = 50,\n diameter = 2 * radius,\n circumference = diameter * Math.PI,\n strokeDashArray = Math.round(circumference * 1000) / 1000\n\nexport default Vue.extend({\n name: 'QCircularProgress',\n\n mixins: [ ListenersMixin, SizeMixin ],\n\n props: {\n value: {\n type: Number,\n default: 0\n },\n\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n\n color: String,\n centerColor: String,\n trackColor: String,\n\n fontSize: String,\n\n // ratio\n thickness: {\n type: Number,\n default: 0.2,\n validator: v => v >= 0 && v <= 1\n },\n\n angle: {\n type: Number,\n default: 0\n },\n\n indeterminate: Boolean,\n showValue: Boolean,\n reverse: Boolean,\n\n instantFeedback: Boolean\n },\n\n computed: {\n normalizedValue () {\n return between(this.value, this.min, this.max)\n },\n\n svgStyle () {\n return { transform: `rotate3d(0, 0, 1, ${this.angle - 90}deg)` }\n },\n\n circleStyle () {\n if (this.instantFeedback !== true && this.indeterminate !== true) {\n return { transition: 'stroke-dashoffset 0.6s ease 0s, stroke 0.6s ease' }\n }\n },\n\n dir () {\n return (this.$q.lang.rtl === true ? -1 : 1) * (this.reverse ? -1 : 1)\n },\n\n viewBox () {\n return diameter / (1 - this.thickness / 2)\n },\n\n viewBoxAttr () {\n return `${this.viewBox / 2} ${this.viewBox / 2} ${this.viewBox} ${this.viewBox}`\n },\n\n strokeDashOffset () {\n const progress = 1 - (this.normalizedValue - this.min) / (this.max - this.min)\n return (this.dir * progress) * circumference\n },\n\n strokeWidth () {\n return this.thickness / 2 * this.viewBox\n },\n\n attrs () {\n return {\n role: 'progressbar',\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-valuenow': this.indeterminate === true ? void 0 : this.normalizedValue\n }\n }\n },\n\n methods: {\n __getCircle (h, { thickness, offset, color, cls }) {\n return h('circle', {\n staticClass: 'q-circular-progress__' + cls,\n class: color !== void 0 ? `text-${color}` : null,\n style: this.circleStyle,\n attrs: {\n fill: 'transparent',\n stroke: 'currentColor',\n 'stroke-width': thickness,\n 'stroke-dasharray': strokeDashArray,\n 'stroke-dashoffset': offset,\n cx: this.viewBox,\n cy: this.viewBox,\n r: radius\n }\n })\n }\n },\n\n render (h) {\n const svgChild = []\n\n this.centerColor !== void 0 && this.centerColor !== 'transparent' && svgChild.push(\n h('circle', {\n staticClass: 'q-circular-progress__center',\n class: `text-${this.centerColor}`,\n attrs: {\n fill: 'currentColor',\n r: radius - this.strokeWidth / 2,\n cx: this.viewBox,\n cy: this.viewBox\n }\n })\n )\n\n this.trackColor !== void 0 && this.trackColor !== 'transparent' && svgChild.push(\n this.__getCircle(h, {\n cls: 'track',\n thickness: this.strokeWidth,\n offset: 0,\n color: this.trackColor\n })\n )\n\n svgChild.push(\n this.__getCircle(h, {\n cls: 'circle',\n thickness: this.strokeWidth,\n offset: this.strokeDashOffset,\n color: this.color\n })\n )\n\n const child = [\n h('svg', {\n staticClass: 'q-circular-progress__svg',\n style: this.svgStyle,\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n viewBox: this.viewBoxAttr,\n 'aria-hidden': 'true'\n }\n }, svgChild)\n ]\n\n this.showValue === true && child.push(\n h('div', {\n staticClass: 'q-circular-progress__text absolute-full row flex-center content-center',\n style: { fontSize: this.fontSize }\n }, this.$scopedSlots.default !== void 0 ? this.$scopedSlots.default() : [ h('div', [ this.normalizedValue ]) ])\n )\n\n return h('div', {\n staticClass: 'q-circular-progress',\n class: `q-circular-progress--${this.indeterminate === true ? 'in' : ''}determinate`,\n style: this.sizeStyle,\n on: { ...this.qListeners },\n attrs: this.attrs\n }, mergeSlotSafely(child, this, 'internal'))\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\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 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 { client } from '../plugins/Platform.js'\nimport { getModifierDirections, getTouchTarget, shouldStart } from '../utils/touch.js'\nimport { addEvt, cleanEvt, position, leftClick, prevent, stop, stopAndPrevent, preventDraggable, noop } from '../utils/event.js'\nimport { clearSelection } from '../utils/selection.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\nfunction destroy (el) {\n const ctx = el.__qtouchpan\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\nlet uid = 0\n\nexport default {\n name: 'touch-pan',\n\n bind (el, { value, modifiers }) {\n if (el.__qtouchpan !== void 0) {\n destroy(el)\n el.__qtouchpan_destroyed = true\n }\n\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 = getTouchTarget(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 const pos = position(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 (mouseEvent !== true || ctx.direction.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 clone.qClonedBy = evt.qClonedBy === void 0\n ? [ctx.uid]\n : evt.qClonedBy.concat(ctx.uid)\n clone.qKeyEvent = evt.qKeyEvent\n clone.qClickOutside = evt.qClickOutside\n\n ctx.initialEvent = {\n target: evt.target,\n event: clone\n }\n }\n\n stop(evt)\n }\n\n ctx.event = {\n x: pos.left,\n y: pos.top,\n time: Date.now(),\n mouse: mouseEvent === true,\n detected: false,\n isFirst: true,\n isFinal: false,\n lastX: pos.left,\n lastY: pos.top\n }\n },\n\n move (evt) {\n if (ctx.event === void 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 if (modifiers.preserveCursor !== true) {\n document.documentElement.style.cursor = 'grabbing'\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 (modifiers.preserveCursor !== true) {\n document.documentElement.style.cursor = ''\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 (isMouseEvt === true && ctx.modifiers.mouseAllDir === true)\n ) {\n start()\n ctx.event.detected = true\n ctx.move(evt)\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 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 modifiers.mouse === true && addEvt(ctx, 'main', [\n [ el, 'mousedown', 'mouseStart', `passive${modifiers.mouseCapture === true ? 'Capture' : ''}` ]\n ])\n\n client.has.touch === true && addEvt(ctx, 'main', [\n [ el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}` ],\n [ el, 'touchmove', 'noop', 'notPassiveCapture' ]\n ])\n },\n\n update (el, { oldValue, value }) {\n const ctx = el.__qtouchpan\n if (ctx !== void 0 && oldValue !== value) {\n typeof value !== 'function' && ctx.end()\n ctx.handler = value\n }\n },\n\n unbind (el) {\n if (el.__qtouchpan_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qtouchpan_destroyed\n }\n }\n}\n","import { between } from '../../utils/format.js'\nimport { position } from '../../utils/event.js'\n\nimport FormMixin from '../../mixins/form.js'\nimport DarkMixin from '../../mixins/dark.js'\nimport TouchPan from '../../directives/TouchPan.js'\n\n// PGDOWN, LEFT, DOWN, PGUP, RIGHT, UP\nexport const keyCodes = [ 34, 37, 40, 33, 39, 38 ]\n\nexport function getRatio (evt, dragging, reverse, vertical) {\n const\n pos = position(evt),\n val = 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 reverse === true ? 1.0 - val : val\n}\n\nexport function getModel (ratio, min, max, step, decimals) {\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 > 0) {\n model = parseFloat(model.toFixed(decimals))\n }\n\n return between(model, min, max)\n}\n\nexport const SliderMixin = {\n mixins: [ DarkMixin, FormMixin ],\n\n directives: {\n TouchPan\n },\n\n props: {\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n step: {\n type: Number,\n default: 1,\n validator: v => v >= 0\n },\n\n color: String,\n\n labelColor: String,\n labelTextColor: String,\n dense: Boolean,\n\n label: Boolean,\n labelAlways: Boolean,\n markers: Boolean,\n snap: Boolean,\n\n vertical: Boolean,\n reverse: Boolean,\n\n disable: Boolean,\n readonly: Boolean,\n tabindex: [ String, Number ],\n\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\n data () {\n return {\n active: false,\n preventFocus: false,\n focus: false\n }\n },\n\n computed: {\n axis () {\n return this.vertical === true ? '--v' : '--h'\n },\n\n classes () {\n return `q-slider q-slider${this.axis} q-slider--${this.active === true ? '' : 'in'}active` +\n (this.isReversed === true ? ' q-slider--reversed' : '') +\n (this.color !== void 0 ? ` text-${this.color}` : '') +\n (this.disable === true ? ' disabled' : ' q-slider--enabled' + (this.editable === true ? ' q-slider--editable' : '')) +\n (this.focus === 'both' ? ' q-slider--focus' : '') +\n (this.label || this.labelAlways === true ? ' q-slider--label' : '') +\n (this.labelAlways === true ? ' q-slider--label-always' : '') +\n (this.isDark === true ? ' q-slider--dark' : '') +\n (this.dense === true ? ' q-slider--dense q-slider--dense' + this.axis : '')\n },\n\n editable () {\n return this.disable !== true && this.readonly !== true\n },\n\n decimals () {\n return (String(this.step).trim('0').split('.')[1] || '').length\n },\n\n computedStep () {\n return this.step === 0 ? 1 : this.step\n },\n\n markerStyle () {\n return {\n backgroundSize: this.vertical === true\n ? '2px ' + (100 * this.computedStep / (this.max - this.min)) + '%'\n : (100 * this.computedStep / (this.max - this.min)) + '% 2px'\n }\n },\n\n computedTabindex () {\n return this.editable === true ? this.tabindex || 0 : -1\n },\n\n isReversed () {\n return this.vertical === true\n ? this.reverse === true\n : this.reverse !== (this.$q.lang.rtl === true)\n },\n\n positionProp () {\n if (this.vertical === true) {\n return this.isReversed === true ? 'bottom' : 'top'\n }\n return this.isReversed === true ? 'right' : 'left'\n },\n\n sizeProp () {\n return this.vertical === true ? 'height' : 'width'\n },\n\n orientation () {\n return this.vertical === true ? 'vertical' : 'horizontal'\n },\n\n attrs () {\n const attrs = {\n role: 'slider',\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-orientation': this.orientation,\n 'data-step': this.step\n }\n\n if (this.disable === true) {\n attrs['aria-disabled'] = 'true'\n }\n else if (this.readonly === true) {\n attrs['aria-readonly'] = 'true'\n }\n\n return attrs\n },\n\n panDirectives () {\n return this.editable === true\n ? [{\n name: 'touch-pan',\n value: this.__pan,\n modifiers: {\n [ this.orientation ]: true,\n prevent: true,\n stop: true,\n mouse: true,\n mouseAllDir: true\n }\n }]\n : null\n }\n },\n\n methods: {\n __getThumbSvg (h) {\n return h('svg', {\n staticClass: 'q-slider__thumb absolute',\n attrs: {\n focusable: 'false', /* needed for IE11 */\n viewBox: '0 0 20 20',\n width: '20',\n height: '20',\n 'aria-hidden': 'true'\n }\n }, [\n h('path', {\n attrs: {\n d: this.thumbPath\n }\n })\n ])\n },\n\n __getPinStyle (percent, ratio) {\n if (this.vertical === true) {\n return {}\n }\n\n const offset = `${Math.ceil(20 * Math.abs(0.5 - ratio))}px`\n return {\n pin: {\n transformOrigin: `${this.$q.lang.rtl === true ? offset : (this.$q.platform.is.ie === true ? '100%' : `calc(100% - ${offset})`)} 50%`\n },\n\n pinTextContainer: {\n [this.$q.lang.rtl === true ? 'left' : 'right']: `${percent * 100}%`,\n transform: `translateX(${Math.ceil((this.$q.lang.rtl === true ? -1 : 1) * 20 * percent)}px)`\n }\n }\n },\n\n __pan (event) {\n if (event.isFinal) {\n if (this.dragging !== void 0) {\n this.__updatePosition(event.evt)\n // only if touch, because we also have mousedown/up:\n event.touch === true && this.__updateValue(true)\n this.dragging = void 0\n }\n this.active = false\n }\n else if (event.isFirst) {\n this.dragging = this.__getDragging(event.evt)\n this.__updatePosition(event.evt)\n this.__updateValue()\n this.active = true\n }\n else {\n this.__updatePosition(event.evt)\n this.__updateValue()\n }\n },\n\n __blur () {\n this.focus = false\n },\n\n __activate (evt) {\n this.__updatePosition(evt, this.__getDragging(evt))\n this.__updateValue()\n\n this.preventFocus = true\n this.active = true\n\n document.addEventListener('mouseup', this.__deactivate, true)\n },\n\n __deactivate () {\n this.preventFocus = false\n\n if (this.dragging === void 0) {\n this.active = false\n }\n\n this.__updateValue(true)\n this.__blur()\n\n document.removeEventListener('mouseup', this.__deactivate, true)\n },\n\n __mobileClick (evt) {\n this.__updatePosition(evt, this.__getDragging(evt))\n this.__updateValue(true)\n },\n\n __keyup (evt) {\n if (keyCodes.includes(evt.keyCode)) {\n this.__updateValue(true)\n }\n }\n },\n\n beforeDestroy () {\n document.removeEventListener('mouseup', this.__deactivate, true)\n }\n}\n","import Vue from 'vue'\n\nimport {\n getRatio,\n getModel,\n SliderMixin,\n keyCodes\n} from './slider-utils.js'\n\nimport { between } from '../../utils/format.js'\nimport { stopAndPrevent } from '../../utils/event.js'\n\nexport default Vue.extend({\n name: 'QSlider',\n\n mixins: [ SliderMixin ],\n\n props: {\n value: {\n required: true,\n default: null,\n validator: v => typeof v === 'number' || v === null\n },\n\n labelValue: [ String, Number ]\n },\n\n data () {\n return {\n model: this.value === null ? this.min : this.value,\n curRatio: 0\n }\n },\n\n watch: {\n value (v) {\n this.model = v === null\n ? 0\n : between(v, this.min, this.max)\n },\n\n min (v) {\n this.model = between(this.model, v, this.max)\n },\n\n max (v) {\n this.model = between(this.model, this.min, v)\n }\n },\n\n computed: {\n ratio () {\n return this.active === true ? this.curRatio : this.modelRatio\n },\n\n modelRatio () {\n return (this.model - this.min) / (this.max - this.min)\n },\n\n trackStyle () {\n return {\n [ this.positionProp ]: 0,\n [ this.sizeProp ]: `${100 * this.ratio}%`\n }\n },\n\n thumbStyle () {\n return {\n [ this.positionProp ]: `${100 * this.ratio}%`\n }\n },\n\n thumbClass () {\n if (this.preventFocus === false && this.focus === true) {\n return 'q-slider--focus'\n }\n },\n\n pinClass () {\n if (this.labelColor !== void 0) {\n return `text-${this.labelColor}`\n }\n },\n\n pinTextClass () {\n return 'q-slider__pin-value-marker-text' +\n (this.labelTextColor !== void 0 ? ` text-${this.labelTextColor}` : '')\n },\n\n events () {\n if (this.editable === true) {\n return this.$q.platform.is.mobile === true\n ? { click: this.__mobileClick }\n : {\n mousedown: this.__activate,\n focus: this.__focus,\n blur: this.__blur,\n keydown: this.__keydown,\n keyup: this.__keyup\n }\n }\n },\n\n computedLabel () {\n return this.labelValue !== void 0\n ? this.labelValue\n : this.model\n },\n\n pinStyle () {\n const percent = (this.reverse === true ? -this.ratio : this.ratio - 1)\n return this.__getPinStyle(percent, this.ratio)\n }\n },\n\n methods: {\n __updateValue (change) {\n if (this.model !== this.value) {\n this.$emit('input', this.model)\n }\n change === true && this.$emit('change', this.model)\n },\n\n __getDragging () {\n return this.$el.getBoundingClientRect()\n },\n\n __updatePosition (event, dragging = this.dragging) {\n const ratio = getRatio(\n event,\n dragging,\n this.isReversed,\n this.vertical\n )\n\n this.model = getModel(ratio, this.min, this.max, this.step, this.decimals)\n this.curRatio = this.snap !== true || this.step === 0\n ? ratio\n : (this.model - this.min) / (this.max - this.min)\n },\n\n __focus () {\n this.focus = true\n },\n\n __keydown (evt) {\n if (!keyCodes.includes(evt.keyCode)) {\n return\n }\n\n stopAndPrevent(evt)\n\n const\n step = ([34, 33].includes(evt.keyCode) ? 10 : 1) * this.computedStep,\n offset = [34, 37, 40].includes(evt.keyCode) ? -step : step\n\n this.model = between(\n parseFloat((this.model + offset).toFixed(this.decimals)),\n this.min,\n this.max\n )\n\n this.__updateValue()\n }\n },\n\n render (h) {\n const child = [\n this.__getThumbSvg(h),\n h('div', { staticClass: 'q-slider__focus-ring' })\n ]\n\n if (this.label === true || this.labelAlways === true) {\n child.push(\n h('div', {\n staticClass: `q-slider__pin q-slider__pin${this.axis} absolute`,\n style: this.pinStyle.pin,\n class: this.pinClass\n }, [\n h('div', {\n staticClass: `q-slider__pin-text-container q-slider__pin-text-container${this.axis}`,\n style: this.pinStyle.pinTextContainer\n }, [\n h('span', {\n staticClass: 'q-slider__pin-text',\n class: this.pinTextClass\n }, [\n this.computedLabel\n ])\n ])\n ]),\n\n h('div', {\n staticClass: `q-slider__arrow q-slider__arrow${this.axis}`,\n class: this.pinClass\n })\n )\n }\n\n if (this.name !== void 0 && this.disable !== true) {\n this.__injectFormInput(child, 'push')\n }\n\n const track = [\n h('div', {\n staticClass: `q-slider__track q-slider__track${this.axis} absolute`,\n style: this.trackStyle\n })\n ]\n\n this.markers === true && track.push(\n h('div', {\n staticClass: `q-slider__track-markers q-slider__track-markers${this.axis} absolute-full fit`,\n style: this.markerStyle\n })\n )\n\n return h('div', {\n staticClass: this.value === null ? ' q-slider--no-value' : '',\n attrs: {\n ...this.attrs,\n 'aria-valuenow': this.value,\n tabindex: this.computedTabindex\n },\n class: this.classes,\n on: this.events,\n directives: this.panDirectives\n }, [\n h('div', {\n staticClass: `q-slider__track-container q-slider__track-container${this.axis} absolute`\n }, track),\n\n h('div', {\n staticClass: `q-slider__thumb-container q-slider__thumb-container${this.axis} absolute non-selectable`,\n class: this.thumbClass,\n style: this.thumbStyle\n }, child)\n ])\n }\n})\n","// using it to manage SSR rendering with best performance\nimport { onSSR } from '../plugins/Platform.js'\n\nexport default {\n data () {\n return {\n canRender: !onSSR\n }\n },\n\n mounted () {\n this.canRender === false && (this.canRender = true)\n }\n}\n","import Vue from 'vue'\n\nimport { listenOpts } from '../../utils/event.js'\nimport CanRenderMixin from '../../mixins/can-render.js'\nimport { isSSR } from '../../plugins/Platform.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QResizeObserver',\n\n mixins: [ CanRenderMixin ],\n\n props: {\n debounce: {\n type: [ String, Number ],\n default: 100\n }\n },\n\n data () {\n return this.hasObserver === true\n ? {}\n : { url: this.$q.platform.is.ie === true ? null : 'about:blank' }\n },\n\n methods: {\n trigger (now) {\n if (now === true || this.debounce === 0 || this.debounce === '0') {\n this.__onResize()\n }\n else if (!this.timer) {\n this.timer = setTimeout(this.__onResize, this.debounce)\n }\n },\n\n __onResize () {\n this.timer = null\n\n if (!this.$el || !this.$el.parentNode) {\n return\n }\n\n const\n parent = this.$el.parentNode,\n size = {\n width: parent.offsetWidth,\n height: parent.offsetHeight\n }\n\n if (size.width === this.size.width && size.height === this.size.height) {\n return\n }\n\n this.size = size\n this.$emit('resize', this.size)\n },\n\n __cleanup () {\n if (this.curDocView !== void 0) {\n // iOS is fuzzy, need to check it first\n if (this.curDocView.removeEventListener !== void 0) {\n this.curDocView.removeEventListener('resize', this.trigger, listenOpts.passive)\n }\n this.curDocView = void 0\n }\n },\n\n __onObjLoad () {\n this.__cleanup()\n\n if (this.$el.contentDocument) {\n this.curDocView = this.$el.contentDocument.defaultView\n this.curDocView.addEventListener('resize', this.trigger, listenOpts.passive)\n }\n\n this.__onResize()\n }\n },\n\n render (h) {\n if (this.canRender === false || this.hasObserver === true) {\n return\n }\n\n return h('object', {\n style: this.style,\n attrs: {\n tabindex: -1, // fix for Firefox\n type: 'text/html',\n data: this.url,\n 'aria-hidden': 'true'\n },\n on: cache(this, 'load', {\n load: this.__onObjLoad\n })\n })\n },\n\n beforeCreate () {\n this.size = { width: -1, height: -1 }\n if (isSSR === true) { return }\n\n this.hasObserver = typeof ResizeObserver !== 'undefined'\n\n if (this.hasObserver !== true) {\n this.style = `${this.$q.platform.is.ie ? 'visibility:hidden;' : ''}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 }\n },\n\n mounted () {\n if (this.hasObserver === true) {\n this.observer = new ResizeObserver(this.trigger)\n this.observer.observe(this.$el.parentNode)\n this.__onResize()\n return\n }\n\n if (this.$q.platform.is.ie === true) {\n this.url = 'about:blank'\n this.__onResize()\n }\n else {\n this.__onObjLoad()\n }\n },\n\n beforeDestroy () {\n clearTimeout(this.timer)\n\n if (this.hasObserver === true) {\n if (this.observer !== void 0 && this.$el.parentNode) {\n this.observer.unobserve(this.$el.parentNode)\n }\n return\n }\n\n this.__cleanup()\n }\n})\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport TimeoutMixin from '../../mixins/timeout.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { stop, noop } from '../../utils/event.js'\nimport { slot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.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\nfunction bufferPrioritySort (t1, t2) {\n if (t1.priorityMatched === t2.priorityMatched) {\n return t2.priorityHref - t1.priorityHref\n }\n return t2.priorityMatched - t1.priorityMatched\n}\n\nfunction bufferCleanSelected (t) {\n t.selected = false\n return t\n}\n\nconst\n bufferFilters = [\n t => t.selected === true && t.exact === true && t.redirected !== true,\n t => t.selected === true && t.exact === true,\n t => t.selected === true && t.redirected !== true,\n t => t.selected === true,\n t => t.exact === true && t.redirected !== true,\n t => t.redirected !== true,\n t => t.exact === true,\n t => true\n ],\n bufferFiltersLen = bufferFilters.length\n\nexport default Vue.extend({\n name: 'QTabs',\n\n mixins: [ TimeoutMixin, ListenersMixin ],\n\n provide () {\n return {\n tabs: this.tabs,\n __recalculateScroll: this.__recalculateScroll,\n __activateTab: this.__activateTab,\n __activateRoute: this.__activateRoute\n }\n },\n\n props: {\n value: [Number, String],\n\n align: {\n type: String,\n default: 'center',\n validator: v => ['left', 'center', 'right', 'justify'].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 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\n data () {\n return {\n tabs: {\n current: this.value,\n activeColor: this.activeColor,\n activeBgColor: this.activeBgColor,\n indicatorClass: getIndicatorClass(\n this.indicatorColor,\n this.switchIndicator,\n this.vertical\n ),\n narrowIndicator: this.narrowIndicator,\n inlineLabel: this.inlineLabel,\n noCaps: this.noCaps\n },\n scrollable: false,\n leftArrow: true,\n rightArrow: false,\n justify: false\n }\n },\n\n watch: {\n value (name) {\n this.__activateTab(name, true, true)\n },\n\n activeColor (v) {\n this.tabs.activeColor = v\n },\n\n activeBgColor (v) {\n this.tabs.activeBgColor = v\n },\n\n vertical (v) {\n this.tabs.indicatorClass = getIndicatorClass(this.indicatorColor, this.switchIndicator, v)\n },\n\n indicatorColor (v) {\n this.tabs.indicatorClass = getIndicatorClass(v, this.switchIndicator, this.vertical)\n },\n\n switchIndicator (v) {\n this.tabs.indicatorClass = getIndicatorClass(this.indicatorColor, v, this.vertical)\n },\n\n narrowIndicator (v) {\n this.tabs.narrowIndicator = v\n },\n\n inlineLabel (v) {\n this.tabs.inlineLabel = v\n },\n\n noCaps (v) {\n this.tabs.noCaps = v\n },\n\n outsideArrows () {\n this.$nextTick(this.__recalculateScroll())\n },\n\n arrowsEnabled (v) {\n this.__updateArrows = v === true\n ? this.__updateArrowsFn\n : noop\n\n this.$nextTick(this.__recalculateScroll())\n }\n },\n\n computed: {\n arrowsEnabled () {\n return this.$q.platform.is.desktop === true || this.mobileArrows === true\n },\n\n alignClass () {\n const align = this.scrollable === true\n ? 'left'\n : (this.justify === true ? 'justify' : this.align)\n\n return `q-tabs__content--align-${align}`\n },\n\n classes () {\n return `q-tabs--${this.scrollable === true ? '' : 'not-'}scrollable` +\n ` q-tabs--${this.vertical === true ? 'vertical' : 'horizontal'}` +\n ` q-tabs__arrows--${this.arrowsEnabled === true && this.outsideArrows === true ? 'outside' : 'inside'}` +\n (this.dense === true ? ' q-tabs--dense' : '') +\n (this.shrink === true ? ' col-shrink' : '') +\n (this.stretch === true ? ' self-stretch' : '')\n },\n\n innerClass () {\n return this.alignClass + (this.contentClass !== void 0 ? ` ${this.contentClass}` : '')\n },\n\n domProps () {\n return this.vertical === true\n ? { container: 'height', content: 'scrollHeight', posLeft: 'top', posRight: 'bottom' }\n : { container: 'width', content: 'scrollWidth', posLeft: 'left', posRight: 'right' }\n },\n\n onEvents () {\n return {\n input: stop,\n ...this.qListeners\n }\n }\n },\n\n methods: {\n __activateTab (name, setCurrent, skipEmit) {\n if (this.tabs.current !== name) {\n skipEmit !== true && this.$emit('input', name)\n if (setCurrent === true || this.qListeners.input === void 0) {\n this.__animate(this.tabs.current, name)\n this.tabs.current = name\n }\n }\n },\n\n __activateRoute (params) {\n if (this.bufferRoute !== this.$route && this.buffer.length > 0) {\n clearTimeout(this.bufferTimer)\n this.bufferTimer = void 0\n this.buffer.length = 0\n }\n this.bufferRoute = this.$route\n\n if (params !== void 0) {\n if (params.remove === true) {\n this.buffer = this.buffer.filter(t => t.name !== params.name)\n }\n else {\n this.buffer.push(params)\n }\n }\n\n if (this.bufferTimer === void 0) {\n this.bufferTimer = setTimeout(() => {\n let tabs = []\n\n for (let i = 0; i < bufferFiltersLen && tabs.length === 0; i++) {\n tabs = this.buffer.filter(bufferFilters[i])\n }\n\n tabs.sort(bufferPrioritySort)\n this.__activateTab(tabs.length === 0 ? null : tabs[0].name, true)\n this.buffer = this.buffer.map(bufferCleanSelected)\n this.bufferTimer = void 0\n }, 1)\n }\n },\n\n __recalculateScroll () {\n this.__nextTick(() => {\n this._isDestroyed !== true && this.__updateContainer({\n width: this.$el.offsetWidth,\n height: this.$el.offsetHeight\n })\n })\n\n this.__prepareTick()\n },\n\n __updateContainer (domSize) {\n const\n size = domSize[this.domProps.container],\n scrollSize = this.$refs.content[this.domProps.content],\n scroll = size > 0 && scrollSize > size // when there is no tab, in Chrome, size === 0 and scrollSize === 1\n\n if (this.scrollable !== scroll) {\n this.scrollable = scroll\n }\n\n // Arrows need to be updated even if the scroll status was already true\n scroll === true && this.$nextTick(() => this.__updateArrows())\n\n const justify = size < parseInt(this.breakpoint, 10)\n\n if (this.justify !== justify) {\n this.justify = justify\n }\n },\n\n __animate (oldName, newName) {\n const\n oldTab = oldName !== void 0 && oldName !== null && oldName !== ''\n ? this.$children.find(tab => tab.name === oldName)\n : null,\n newTab = newName !== void 0 && newName !== null && newName !== ''\n ? this.$children.find(tab => tab.name === newName)\n : null\n\n if (oldTab && newTab) {\n const\n oldEl = oldTab.$el.getElementsByClassName('q-tab__indicator')[0],\n newEl = newTab.$el.getElementsByClassName('q-tab__indicator')[0]\n\n clearTimeout(this.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 = this.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 this.$nextTick(() => {\n this.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 && this.scrollable === true) {\n const\n { left, width, top, height } = this.$refs.content.getBoundingClientRect(),\n newPos = newTab.$el.getBoundingClientRect()\n\n let offset = this.vertical === true ? newPos.top - top : newPos.left - left\n\n if (offset < 0) {\n this.$refs.content[this.vertical === true ? 'scrollTop' : 'scrollLeft'] += Math.floor(offset)\n this.__updateArrows()\n return\n }\n\n offset += this.vertical === true ? newPos.height - height : newPos.width - width\n if (offset > 0) {\n this.$refs.content[this.vertical === true ? 'scrollTop' : 'scrollLeft'] += Math.ceil(offset)\n this.__updateArrows()\n }\n }\n },\n\n __updateArrowsFn () {\n const\n content = this.$refs.content,\n rect = content.getBoundingClientRect(),\n pos = this.vertical === true ? content.scrollTop : content.scrollLeft\n\n this.leftArrow = pos > 0\n this.rightArrow = this.vertical === true\n ? Math.ceil(pos + rect.height) < content.scrollHeight\n : Math.ceil(pos + rect.width) < content.scrollWidth\n },\n\n __animScrollTo (value) {\n this.__stopAnimScroll()\n this.__scrollTowards(value)\n\n this.scrollTimer = setInterval(() => {\n if (this.__scrollTowards(value)) {\n this.__stopAnimScroll()\n }\n }, 5)\n },\n\n __scrollToStart () {\n this.__animScrollTo(0)\n },\n\n __scrollToEnd () {\n this.__animScrollTo(9999)\n },\n\n __stopAnimScroll () {\n clearInterval(this.scrollTimer)\n },\n\n __scrollTowards (value) {\n const content = this.$refs.content\n let\n pos = this.vertical === true ? content.scrollTop : content.scrollLeft,\n done = false\n const direction = value < pos ? -1 : 1\n\n pos += direction * 5\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 content[this.vertical === true ? 'scrollTop' : 'scrollLeft'] = pos\n this.__updateArrows()\n return done\n }\n },\n\n created () {\n this.buffer = []\n this.__updateArrows = this.arrowsEnabled === true\n ? this.__updateArrowsFn\n : noop\n },\n\n beforeDestroy () {\n clearTimeout(this.bufferTimer)\n clearTimeout(this.animateTimer)\n },\n\n render (h) {\n const child = [\n h(QResizeObserver, {\n on: cache(this, 'resize', { resize: this.__updateContainer })\n }),\n\n h('div', {\n ref: 'content',\n staticClass: 'q-tabs__content row no-wrap items-center self-stretch hide-scrollbar',\n class: this.innerClass\n }, slot(this, 'default'))\n ]\n\n this.arrowsEnabled === true && child.push(\n h(QIcon, {\n staticClass: 'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon',\n class: this.leftArrow === true ? '' : 'q-tabs__arrow--faded',\n props: { name: this.leftIcon || (this.vertical === true ? this.$q.iconSet.tabs.up : this.$q.iconSet.tabs.left) },\n on: cache(this, 'onL', {\n mousedown: this.__scrollToStart,\n touchstart: this.__scrollToStart,\n mouseup: this.__stopAnimScroll,\n mouseleave: this.__stopAnimScroll,\n touchend: this.__stopAnimScroll\n })\n }),\n\n h(QIcon, {\n staticClass: 'q-tabs__arrow q-tabs__arrow--right absolute q-tab__icon',\n class: this.rightArrow === true ? '' : 'q-tabs__arrow--faded',\n props: { name: this.rightIcon || (this.vertical === true ? this.$q.iconSet.tabs.down : this.$q.iconSet.tabs.right) },\n on: cache(this, 'onR', {\n mousedown: this.__scrollToEnd,\n touchstart: this.__scrollToEnd,\n mouseup: this.__stopAnimScroll,\n mouseleave: this.__stopAnimScroll,\n touchend: this.__stopAnimScroll\n })\n })\n )\n\n return h('div', {\n staticClass: 'q-tabs row no-wrap items-center',\n class: this.classes,\n on: this.onEvents,\n attrs: { role: 'tablist' }\n }, child)\n }\n})\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport RippleMixin from '../../mixins/ripple.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { stop } from '../../utils/event.js'\nimport { mergeSlot } from '../../utils/slot.js'\nimport { isKeyCode } from '../../utils/key-composition.js'\n\nlet uid = 0\n\nexport default Vue.extend({\n name: 'QTab',\n\n mixins: [ RippleMixin, ListenersMixin ],\n\n inject: {\n tabs: {\n default () {\n console.error('QTab/QRouteTab components need to be child of QTabs')\n }\n },\n __activateTab: {},\n __recalculateScroll: {}\n },\n\n props: {\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_${uid++}`\n },\n\n noCaps: Boolean,\n\n tabindex: [String, Number],\n disable: Boolean,\n\n contentClass: String\n },\n\n computed: {\n isActive () {\n return this.tabs.current === this.name\n },\n\n classes () {\n return {\n [`q-tab--${this.isActive ? '' : 'in'}active`]: true,\n [`text-${this.tabs.activeColor}`]: this.isActive && this.tabs.activeColor,\n [`bg-${this.tabs.activeBgColor}`]: this.isActive && this.tabs.activeBgColor,\n 'q-tab--full': this.icon && this.label && !this.tabs.inlineLabel,\n 'q-tab--no-caps': this.noCaps === true || this.tabs.noCaps === true,\n 'q-focusable q-hoverable cursor-pointer': !this.disable,\n disabled: this.disable\n }\n },\n\n innerClass () {\n return (this.tabs.inlineLabel === true ? 'row no-wrap q-tab__content--inline' : 'column') +\n (this.contentClass !== void 0 ? ` ${this.contentClass}` : '')\n },\n\n computedTabIndex () {\n return this.disable === true || this.isActive === true ? -1 : this.tabindex || 0\n },\n\n onEvents () {\n return {\n input: stop,\n ...this.qListeners,\n click: this.__activate,\n keyup: this.__onKeyup\n }\n },\n\n attrs () {\n const attrs = {\n tabindex: this.computedTabIndex,\n role: 'tab',\n 'aria-selected': this.isActive\n }\n\n if (this.disable === true) {\n attrs['aria-disabled'] = 'true'\n }\n\n return attrs\n }\n },\n\n methods: {\n __activate (e, keyboard) {\n keyboard !== true && this.$refs.blurTarget !== void 0 && this.$refs.blurTarget.focus()\n\n if (this.disable !== true) {\n this.qListeners.click !== void 0 && this.$emit('click', e)\n this.__activateTab(this.name)\n }\n },\n\n __onKeyup (e) {\n isKeyCode(e, 13) === true && this.__activate(e, true)\n },\n\n __getContent (h) {\n const\n narrow = this.tabs.narrowIndicator,\n content = [],\n indicator = h('div', {\n staticClass: 'q-tab__indicator',\n class: this.tabs.indicatorClass\n })\n\n this.icon !== void 0 && content.push(\n h(QIcon, {\n staticClass: 'q-tab__icon',\n props: { name: this.icon }\n })\n )\n\n this.label !== void 0 && content.push(\n h('div', {\n staticClass: 'q-tab__label'\n }, [ this.label ])\n )\n\n this.alert !== false && content.push(\n this.alertIcon !== void 0\n ? h(QIcon, {\n staticClass: 'q-tab__alert-icon',\n props: {\n color: this.alert !== true\n ? this.alert\n : void 0,\n name: this.alertIcon\n }\n })\n : h('div', {\n staticClass: 'q-tab__alert',\n class: this.alert !== true\n ? `text-${this.alert}`\n : null\n })\n )\n\n narrow === true && content.push(indicator)\n\n const node = [\n h('div', { staticClass: 'q-focus-helper', attrs: { tabindex: -1 }, ref: 'blurTarget' }),\n\n h('div', {\n staticClass: 'q-tab__content self-stretch flex-center relative-position q-anchor--skip non-selectable',\n class: this.innerClass\n }, mergeSlot(content, this, 'default'))\n ]\n\n narrow === false && node.push(indicator)\n\n return node\n },\n\n __renderTab (h, tag, props) {\n const data = {\n staticClass: 'q-tab relative-position self-stretch flex flex-center text-center',\n class: this.classes,\n attrs: this.attrs,\n directives: this.ripple !== false && this.disable === true ? null : [\n { name: 'ripple', value: this.ripple }\n ],\n [ tag === 'div' ? 'on' : 'nativeOn' ]: this.onEvents\n }\n\n if (props !== void 0) {\n data.props = props\n }\n\n return h(tag, data, this.__getContent(h))\n }\n },\n\n mounted () {\n this.__recalculateScroll()\n },\n\n beforeDestroy () {\n this.__recalculateScroll()\n },\n\n render (h) {\n return this.__renderTab(h, 'div')\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport { PanelParentMixin } from '../../mixins/panel.js'\n\nexport default Vue.extend({\n name: 'QTabPanels',\n\n mixins: [ DarkMixin, PanelParentMixin ],\n\n computed: {\n classes () {\n return 'q-tab-panels q-panel-parent' +\n (this.isDark === true ? ' q-tab-panels--dark q-dark' : '')\n }\n },\n\n methods: {\n __renderPanels (h) {\n return h('div', {\n class: this.classes,\n directives: this.panelDirectives,\n on: { ...this.qListeners }\n }, this.__getPanelContent(h))\n }\n }\n})\n","import Vue from 'vue'\n\nimport { PanelChildMixin } from '../../mixins/panel.js'\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QTabPanel',\n\n mixins: [ PanelChildMixin ],\n\n render (h) {\n return h('div', {\n staticClass: 'q-tab-panel',\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport { testPattern } from '../../utils/patterns.js'\nimport throttle from '../../utils/throttle.js'\nimport cache from '../../utils/cache.js'\nimport { stop } from '../../utils/event.js'\nimport { hexToRgb, rgbToHex, rgbToString, textToRgb, rgbToHsv, hsvToRgb, luminosity } from '../../utils/colors.js'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport FormMixin from '../../mixins/form.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport QSlider from '../slider/QSlider.js'\nimport QIcon from '../icon/QIcon.js'\n\nimport QTabs from '../tabs/QTabs.js'\nimport QTab from '../tabs/QTab.js'\nimport QTabPanels from '../tab-panels/QTabPanels.js'\nimport QTabPanel from '../tab-panels/QTabPanel.js'\n\nconst palette = [\n 'rgb(255,204,204)', 'rgb(255,230,204)', 'rgb(255,255,204)', 'rgb(204,255,204)', 'rgb(204,255,230)', 'rgb(204,255,255)', 'rgb(204,230,255)', 'rgb(204,204,255)', 'rgb(230,204,255)', 'rgb(255,204,255)',\n 'rgb(255,153,153)', 'rgb(255,204,153)', 'rgb(255,255,153)', 'rgb(153,255,153)', 'rgb(153,255,204)', 'rgb(153,255,255)', 'rgb(153,204,255)', 'rgb(153,153,255)', 'rgb(204,153,255)', 'rgb(255,153,255)',\n 'rgb(255,102,102)', 'rgb(255,179,102)', 'rgb(255,255,102)', 'rgb(102,255,102)', 'rgb(102,255,179)', 'rgb(102,255,255)', 'rgb(102,179,255)', 'rgb(102,102,255)', 'rgb(179,102,255)', 'rgb(255,102,255)',\n 'rgb(255,51,51)', 'rgb(255,153,51)', 'rgb(255,255,51)', 'rgb(51,255,51)', 'rgb(51,255,153)', 'rgb(51,255,255)', 'rgb(51,153,255)', 'rgb(51,51,255)', 'rgb(153,51,255)', 'rgb(255,51,255)',\n 'rgb(255,0,0)', 'rgb(255,128,0)', 'rgb(255,255,0)', 'rgb(0,255,0)', 'rgb(0,255,128)', 'rgb(0,255,255)', 'rgb(0,128,255)', 'rgb(0,0,255)', 'rgb(128,0,255)', 'rgb(255,0,255)',\n 'rgb(245,0,0)', 'rgb(245,123,0)', 'rgb(245,245,0)', 'rgb(0,245,0)', 'rgb(0,245,123)', 'rgb(0,245,245)', 'rgb(0,123,245)', 'rgb(0,0,245)', 'rgb(123,0,245)', 'rgb(245,0,245)',\n 'rgb(214,0,0)', 'rgb(214,108,0)', 'rgb(214,214,0)', 'rgb(0,214,0)', 'rgb(0,214,108)', 'rgb(0,214,214)', 'rgb(0,108,214)', 'rgb(0,0,214)', 'rgb(108,0,214)', 'rgb(214,0,214)',\n 'rgb(163,0,0)', 'rgb(163,82,0)', 'rgb(163,163,0)', 'rgb(0,163,0)', 'rgb(0,163,82)', 'rgb(0,163,163)', 'rgb(0,82,163)', 'rgb(0,0,163)', 'rgb(82,0,163)', 'rgb(163,0,163)',\n 'rgb(92,0,0)', 'rgb(92,46,0)', 'rgb(92,92,0)', 'rgb(0,92,0)', 'rgb(0,92,46)', 'rgb(0,92,92)', 'rgb(0,46,92)', 'rgb(0,0,92)', 'rgb(46,0,92)', 'rgb(92,0,92)',\n 'rgb(255,255,255)', 'rgb(205,205,205)', 'rgb(178,178,178)', 'rgb(153,153,153)', 'rgb(127,127,127)', 'rgb(102,102,102)', 'rgb(76,76,76)', 'rgb(51,51,51)', 'rgb(25,25,25)', 'rgb(0,0,0)'\n]\n\nexport default Vue.extend({\n name: 'QColor',\n\n mixins: [ ListenersMixin, DarkMixin, FormMixin ],\n\n directives: {\n TouchPan\n },\n\n props: {\n value: String,\n\n defaultValue: String,\n defaultView: {\n type: String,\n default: 'spectrum',\n validator: v => ['spectrum', 'tune', 'palette'].includes(v)\n },\n\n formatModel: {\n type: String,\n default: 'auto',\n validator: v => ['auto', 'hex', 'rgb', 'hexa', 'rgba'].includes(v)\n },\n\n palette: Array,\n\n noHeader: Boolean,\n noFooter: Boolean,\n\n square: Boolean,\n flat: Boolean,\n bordered: Boolean,\n\n disable: Boolean,\n readonly: Boolean\n },\n\n data () {\n return {\n topView: this.formatModel === 'auto'\n ? (\n (this.value === void 0 || this.value === null || this.value === '' || this.value.startsWith('#'))\n ? 'hex'\n : 'rgb'\n )\n : (this.formatModel.startsWith('hex') ? 'hex' : 'rgb'),\n view: this.defaultView,\n model: this.__parseModel(this.value || this.defaultValue)\n }\n },\n\n watch: {\n value (v) {\n const model = this.__parseModel(v || this.defaultValue)\n if (model.hex !== this.model.hex) {\n this.model = model\n }\n },\n\n defaultValue (v) {\n if (!this.value && v) {\n const model = this.__parseModel(v)\n if (model.hex !== this.model.hex) {\n this.model = model\n }\n }\n }\n },\n\n computed: {\n editable () {\n return this.disable !== true && this.readonly !== true\n },\n\n forceHex () {\n return this.formatModel === 'auto'\n ? null\n : this.formatModel.indexOf('hex') > -1\n },\n\n forceAlpha () {\n return this.formatModel === 'auto'\n ? null\n : this.formatModel.indexOf('a') > -1\n },\n\n isHex () {\n return this.value === void 0 ||\n this.value === null ||\n this.value === '' ||\n this.value.startsWith('#')\n },\n\n isOutputHex () {\n return this.forceHex !== null\n ? this.forceHex\n : this.isHex\n },\n\n formAttrs () {\n return {\n type: 'hidden',\n name: this.name,\n value: this.model[ this.isOutputHex === true ? 'hex' : 'rgb' ]\n }\n },\n\n hasAlpha () {\n if (this.forceAlpha !== null) {\n return this.forceAlpha\n }\n return this.model.a !== void 0\n },\n\n currentBgColor () {\n return {\n backgroundColor: this.model.rgb || '#000'\n }\n },\n\n headerClass () {\n const light = this.model.a !== void 0 && this.model.a < 65\n ? true\n : luminosity(this.model) > 0.4\n\n return `q-color-picker__header-content--${light ? 'light' : 'dark'}`\n },\n\n spectrumStyle () {\n return {\n background: `hsl(${this.model.h},100%,50%)`\n }\n },\n\n spectrumPointerStyle () {\n return {\n top: `${100 - this.model.v}%`,\n [this.$q.lang.rtl === true ? 'right' : 'left']: `${this.model.s}%`\n }\n },\n\n inputsArray () {\n const inp = ['r', 'g', 'b']\n if (this.hasAlpha === true) {\n inp.push('a')\n }\n return inp\n },\n\n computedPalette () {\n return this.palette !== void 0 && this.palette.length > 0\n ? this.palette\n : palette\n },\n\n classes () {\n return 'q-color-picker' +\n (this.bordered === true ? ' q-color-picker--bordered' : '') +\n (this.square === true ? ' q-color-picker--square no-border-radius' : '') +\n (this.flat === true ? ' q-color-picker--flat no-shadow' : '') +\n (this.disable === true ? ' disabled' : '') +\n (this.isDark === true ? ' q-color-picker--dark q-dark' : '')\n },\n\n attrs () {\n if (this.disable === true) {\n return { 'aria-disabled': 'true' }\n }\n if (this.readonly === true) {\n return { 'aria-readonly': 'true' }\n }\n }\n },\n\n created () {\n this.__spectrumChange = throttle(this.__spectrumChange, 20)\n },\n\n render (h) {\n const child = [ this.__getContent(h) ]\n\n if (this.name !== void 0 && this.disable !== true) {\n this.__injectFormInput(child, 'push')\n }\n\n this.noHeader !== true && child.unshift(\n this.__getHeader(h)\n )\n\n this.noFooter !== true && child.push(\n this.__getFooter(h)\n )\n\n return h('div', {\n class: this.classes,\n attrs: this.attrs,\n on: { ...this.qListeners }\n }, child)\n },\n\n methods: {\n __getHeader (h) {\n return h('div', {\n staticClass: 'q-color-picker__header relative-position overflow-hidden'\n }, [\n h('div', { staticClass: 'q-color-picker__header-bg absolute-full' }),\n\n h('div', {\n staticClass: 'q-color-picker__header-content absolute-full',\n class: this.headerClass,\n style: this.currentBgColor\n }, [\n h(QTabs, {\n props: {\n value: this.topView,\n dense: true,\n align: 'justify'\n },\n on: cache(this, 'topVTab', {\n input: val => { this.topView = val }\n })\n }, [\n h(QTab, {\n props: {\n label: 'HEX' + (this.hasAlpha === true ? 'A' : ''),\n name: 'hex',\n ripple: false\n }\n }),\n\n h(QTab, {\n props: {\n label: 'RGB' + (this.hasAlpha === true ? 'A' : ''),\n name: 'rgb',\n ripple: false\n }\n })\n ]),\n\n h('div', {\n staticClass: 'q-color-picker__header-banner row flex-center no-wrap'\n }, [\n h('input', {\n staticClass: 'fit',\n domProps: { value: this.model[this.topView] },\n attrs: this.editable !== true ? {\n readonly: true\n } : null,\n on: cache(this, 'topIn', {\n input: evt => {\n this.__updateErrorIcon(this.__onEditorChange(evt) === true)\n },\n change: stop,\n blur: evt => {\n this.__onEditorChange(evt, true) === true && this.$forceUpdate()\n this.__updateErrorIcon(false)\n }\n })\n }),\n\n h(QIcon, {\n ref: 'errorIcon',\n staticClass: 'q-color-picker__error-icon absolute no-pointer-events',\n props: { name: this.$q.iconSet.type.negative }\n })\n ])\n ])\n ])\n },\n\n __getContent (h) {\n return h(QTabPanels, {\n props: {\n value: this.view,\n animated: true\n }\n }, [\n h(QTabPanel, {\n staticClass: 'q-color-picker__spectrum-tab overflow-hidden',\n props: { name: 'spectrum' }\n }, this.__getSpectrumTab(h)),\n\n h(QTabPanel, {\n staticClass: 'q-pa-md q-color-picker__tune-tab',\n props: { name: 'tune' }\n }, this.__getTuneTab(h)),\n\n h(QTabPanel, {\n staticClass: 'q-color-picker__palette-tab',\n props: { name: 'palette' }\n }, this.__getPaletteTab(h))\n ])\n },\n\n __getFooter (h) {\n return h('div', {\n staticClass: 'q-color-picker__footer relative-position overflow-hidden'\n }, [\n h(QTabs, {\n staticClass: 'absolute-full',\n props: {\n value: this.view,\n dense: true,\n align: 'justify'\n },\n on: cache(this, 'ftIn', {\n input: val => { this.view = val }\n })\n }, [\n h(QTab, {\n props: {\n icon: this.$q.iconSet.colorPicker.spectrum,\n name: 'spectrum',\n ripple: false\n }\n }),\n\n h(QTab, {\n props: {\n icon: this.$q.iconSet.colorPicker.tune,\n name: 'tune',\n ripple: false\n }\n }),\n\n h(QTab, {\n props: {\n icon: this.$q.iconSet.colorPicker.palette,\n name: 'palette',\n ripple: false\n }\n })\n ])\n ])\n },\n\n __getSpectrumTab (h) {\n const thumbPath = 'M5 5 h10 v10 h-10 v-10 z'\n\n return [\n h('div', {\n ref: 'spectrum',\n staticClass: 'q-color-picker__spectrum non-selectable relative-position cursor-pointer',\n style: this.spectrumStyle,\n class: { readonly: this.editable !== true },\n on: this.editable === true\n ? cache(this, 'spectrT', {\n click: this.__spectrumClick,\n mousedown: this.__activate\n })\n : null,\n directives: this.editable === true\n ? cache(this, 'spectrDir', [{\n name: 'touch-pan',\n modifiers: {\n prevent: true,\n stop: true,\n mouse: true\n },\n value: this.__spectrumPan\n }])\n : null\n }, [\n h('div', { style: { paddingBottom: '100%' } }),\n h('div', { staticClass: 'q-color-picker__spectrum-white absolute-full' }),\n h('div', { staticClass: 'q-color-picker__spectrum-black absolute-full' }),\n h('div', {\n staticClass: 'absolute',\n style: this.spectrumPointerStyle\n }, [\n this.model.hex !== void 0 ? h('div', { staticClass: 'q-color-picker__spectrum-circle' }) : null\n ])\n ]),\n\n h('div', {\n staticClass: 'q-color-picker__sliders'\n }, [\n h('div', { staticClass: 'q-color-picker__hue non-selectable' }, [\n h(QSlider, {\n props: {\n value: this.model.h,\n min: 0,\n max: 360,\n fillHandleAlways: true,\n readonly: this.editable !== true,\n thumbPath\n },\n on: cache(this, 'hueSlide', {\n input: this.__onHueChange,\n change: val => this.__onHueChange(val, true)\n })\n })\n ]),\n this.hasAlpha === true\n ? h('div', { staticClass: 'q-color-picker__alpha non-selectable' }, [\n h(QSlider, {\n props: {\n value: this.model.a,\n min: 0,\n max: 100,\n fillHandleAlways: true,\n readonly: this.editable !== true,\n thumbPath\n },\n on: cache(this, 'alphaSlide', {\n input: value => this.__onNumericChange(value, 'a', 100),\n change: value => this.__onNumericChange(value, 'a', 100, void 0, true)\n })\n })\n ])\n : null\n ])\n ]\n },\n\n __getTuneTab (h) {\n return [\n h('div', { staticClass: 'row items-center no-wrap' }, [\n h('div', ['R']),\n h(QSlider, {\n props: {\n value: this.model.r,\n min: 0,\n max: 255,\n color: 'red',\n dark: this.isDark,\n readonly: this.editable !== true\n },\n on: cache(this, 'rSlide', {\n input: value => this.__onNumericChange(value, 'r', 255),\n change: value => this.__onNumericChange(value, 'r', 255, void 0, true)\n })\n }),\n h('input', {\n domProps: {\n value: this.model.r\n },\n attrs: {\n maxlength: 3,\n readonly: this.editable !== true\n },\n on: cache(this, 'rIn', {\n input: evt => this.__onNumericChange(evt.target.value, 'r', 255, evt),\n change: stop,\n blur: evt => this.__onNumericChange(evt.target.value, 'r', 255, evt, true)\n })\n })\n ]),\n\n h('div', { staticClass: 'row items-center no-wrap' }, [\n h('div', ['G']),\n h(QSlider, {\n props: {\n value: this.model.g,\n min: 0,\n max: 255,\n color: 'green',\n dark: this.isDark,\n readonly: this.editable !== true\n },\n on: cache(this, 'gSlide', {\n input: value => this.__onNumericChange(value, 'g', 255),\n change: value => this.__onNumericChange(value, 'g', 255, void 0, true)\n })\n }),\n h('input', {\n domProps: {\n value: this.model.g\n },\n attrs: {\n maxlength: 3,\n readonly: this.editable !== true\n },\n on: cache(this, 'gIn', {\n input: evt => this.__onNumericChange(evt.target.value, 'g', 255, evt),\n change: stop,\n blur: evt => this.__onNumericChange(evt.target.value, 'g', 255, evt, true)\n })\n })\n ]),\n\n h('div', { staticClass: 'row items-center no-wrap' }, [\n h('div', ['B']),\n h(QSlider, {\n props: {\n value: this.model.b,\n min: 0,\n max: 255,\n color: 'blue',\n readonly: this.editable !== true,\n dark: this.isDark\n },\n on: cache(this, 'bSlide', {\n input: value => this.__onNumericChange(value, 'b', 255),\n change: value => this.__onNumericChange(value, 'b', 255, void 0, true)\n })\n }),\n h('input', {\n domProps: {\n value: this.model.b\n },\n attrs: {\n maxlength: 3,\n readonly: this.editable !== true\n },\n on: cache(this, 'bIn', {\n input: evt => this.__onNumericChange(evt.target.value, 'b', 255, evt),\n change: stop,\n blur: evt => this.__onNumericChange(evt.target.value, 'b', 255, evt, true)\n })\n })\n ]),\n\n this.hasAlpha === true ? h('div', { staticClass: 'row items-center no-wrap' }, [\n h('div', ['A']),\n h(QSlider, {\n props: {\n value: this.model.a,\n color: 'grey',\n readonly: this.editable !== true,\n dark: this.isDark\n },\n on: cache(this, 'aSlide', {\n input: value => this.__onNumericChange(value, 'a', 100),\n change: value => this.__onNumericChange(value, 'a', 100, void 0, true)\n })\n }),\n h('input', {\n domProps: {\n value: this.model.a\n },\n attrs: {\n maxlength: 3,\n readonly: this.editable !== true\n },\n on: cache(this, 'aIn', {\n input: evt => this.__onNumericChange(evt.target.value, 'a', 100, evt),\n change: stop,\n blur: evt => this.__onNumericChange(evt.target.value, 'a', 100, evt, true)\n })\n })\n ]) : null\n ]\n },\n\n __getPaletteTab (h) {\n return [\n h('div', {\n staticClass: 'row items-center q-color-picker__palette-rows',\n class: this.editable === true\n ? 'q-color-picker__palette-rows--editable'\n : ''\n }, this.computedPalette.map(color => h('div', {\n staticClass: 'q-color-picker__cube col-auto',\n style: { backgroundColor: color },\n on: this.editable === true ? cache(this, 'palette#' + color, {\n click: () => {\n this.__onPalettePick(color)\n }\n }) : null\n })))\n ]\n },\n\n __onSpectrumChange (left, top, change) {\n const panel = this.$refs.spectrum\n if (panel === void 0) { return }\n\n const\n width = panel.clientWidth,\n height = panel.clientHeight,\n rect = panel.getBoundingClientRect()\n\n let x = Math.min(width, Math.max(0, left - rect.left))\n\n if (this.$q.lang.rtl === true) {\n x = width - x\n }\n\n const\n y = Math.min(height, Math.max(0, top - rect.top)),\n s = Math.round(100 * x / width),\n v = Math.round(100 * Math.max(0, Math.min(1, -(y / height) + 1))),\n rgb = hsvToRgb({\n h: this.model.h,\n s,\n v,\n a: this.hasAlpha === true ? this.model.a : void 0\n })\n\n this.model.s = s\n this.model.v = v\n this.__update(rgb, change)\n },\n\n __onHueChange (h, change) {\n h = Math.round(h)\n const rgb = hsvToRgb({\n h,\n s: this.model.s,\n v: this.model.v,\n a: this.hasAlpha === true ? this.model.a : void 0\n })\n\n this.model.h = h\n this.__update(rgb, change)\n },\n\n __onNumericChange (value, formatModel, max, evt, change) {\n evt !== void 0 && stop(evt)\n\n if (!/^[0-9]+$/.test(value)) {\n change && this.$forceUpdate()\n return\n }\n\n const val = Math.floor(Number(value))\n\n if (val < 0 || val > max) {\n change === true && this.$forceUpdate()\n return\n }\n\n const rgb = {\n r: formatModel === 'r' ? val : this.model.r,\n g: formatModel === 'g' ? val : this.model.g,\n b: formatModel === 'b' ? val : this.model.b,\n a: this.hasAlpha === true\n ? (formatModel === 'a' ? val : this.model.a)\n : void 0\n }\n\n if (formatModel !== 'a') {\n const hsv = rgbToHsv(rgb)\n this.model.h = hsv.h\n this.model.s = hsv.s\n this.model.v = hsv.v\n }\n\n this.__update(rgb, change)\n\n if (evt !== void 0 && change !== true && evt.target.selectionEnd !== void 0) {\n const index = evt.target.selectionEnd\n this.$nextTick(() => {\n evt.target.setSelectionRange(index, index)\n })\n }\n },\n\n __onEditorChange (evt, change) {\n let rgb\n const inp = evt.target.value\n\n stop(evt)\n\n if (this.topView === 'hex') {\n if (\n inp.length !== (this.hasAlpha === true ? 9 : 7) ||\n !/^#[0-9A-Fa-f]+$/.test(inp)\n ) {\n return true\n }\n\n rgb = hexToRgb(inp)\n }\n else {\n let model\n\n if (!inp.endsWith(')')) {\n return true\n }\n else if (this.hasAlpha !== true && inp.startsWith('rgb(')) {\n model = inp.substring(4, inp.length - 1).split(',').map(n => parseInt(n, 10))\n\n if (\n model.length !== 3 ||\n !/^rgb\\([0-9]{1,3},[0-9]{1,3},[0-9]{1,3}\\)$/.test(inp)\n ) {\n return true\n }\n }\n else if (this.hasAlpha === true && inp.startsWith('rgba(')) {\n model = inp.substring(5, inp.length - 1).split(',')\n\n if (\n model.length !== 4 ||\n !/^rgba\\([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},(0|0\\.[0-9]+[1-9]|0\\.[1-9]+|1)\\)$/.test(inp)\n ) {\n return true\n }\n\n for (let i = 0; i < 3; i++) {\n const v = parseInt(model[i], 10)\n if (v < 0 || v > 255) {\n return true\n }\n model[i] = v\n }\n\n const v = parseFloat(model[3])\n if (v < 0 || v > 1) {\n return true\n }\n model[3] = v\n }\n else {\n return true\n }\n\n if (\n model[0] < 0 || model[0] > 255 ||\n model[1] < 0 || model[1] > 255 ||\n model[2] < 0 || model[2] > 255 ||\n (this.hasAlpha === true && (model[3] < 0 || model[3] > 1))\n ) {\n return true\n }\n\n rgb = {\n r: model[0],\n g: model[1],\n b: model[2],\n a: this.hasAlpha === true\n ? model[3] * 100\n : void 0\n }\n }\n\n const hsv = rgbToHsv(rgb)\n this.model.h = hsv.h\n this.model.s = hsv.s\n this.model.v = hsv.v\n\n this.__update(rgb, change)\n\n if (change !== true) {\n const index = evt.target.selectionEnd\n this.$nextTick(() => {\n evt.target.setSelectionRange(index, index)\n })\n }\n },\n\n __onPalettePick (color) {\n const def = this.__parseModel(color)\n const rgb = { r: def.r, g: def.g, b: def.b, a: def.a }\n\n if (rgb.a === void 0) {\n rgb.a = this.model.a\n }\n\n this.model.h = def.h\n this.model.s = def.s\n this.model.v = def.v\n\n this.__update(rgb, true)\n },\n\n __update (rgb, change) {\n // update internally\n this.model.hex = rgbToHex(rgb)\n this.model.rgb = rgbToString(rgb)\n this.model.r = rgb.r\n this.model.g = rgb.g\n this.model.b = rgb.b\n this.model.a = rgb.a\n\n const value = this.model[this.isOutputHex === true ? 'hex' : 'rgb']\n\n // emit new value\n this.$emit('input', value)\n change === true && this.$emit('change', value)\n },\n\n __updateErrorIcon (val) {\n // we MUST avoid vue triggering a render,\n // so manually changing this\n if (this.$refs.errorIcon !== void 0) {\n this.$refs.errorIcon.$el.style.opacity = val ? 1 : 0\n }\n },\n\n __parseModel (v) {\n const forceAlpha = this.forceAlpha !== void 0\n ? this.forceAlpha\n : (\n this.formatModel === 'auto'\n ? null\n : this.formatModel.indexOf('a') > -1\n )\n\n if (typeof v !== 'string' || v.length === 0 || testPattern.anyColor(v.replace(/ /g, '')) !== true) {\n return {\n h: 0,\n s: 0,\n v: 0,\n r: 0,\n g: 0,\n b: 0,\n a: forceAlpha === true ? 100 : void 0,\n hex: void 0,\n rgb: void 0\n }\n }\n\n const model = textToRgb(v)\n\n if (forceAlpha === true && model.a === void 0) {\n model.a = 100\n }\n\n model.hex = rgbToHex(model)\n model.rgb = rgbToString(model)\n\n return Object.assign(model, rgbToHsv(model))\n },\n\n __spectrumPan (evt) {\n if (evt.isFinal) {\n this.__onSpectrumChange(\n evt.position.left,\n evt.position.top,\n true\n )\n }\n else {\n this.__spectrumChange(evt)\n }\n },\n\n // throttled in created()\n __spectrumChange (evt) {\n this.__onSpectrumChange(\n evt.position.left,\n evt.position.top\n )\n },\n\n __spectrumClick (evt) {\n this.__onSpectrumChange(\n evt.pageX - window.pageXOffset,\n evt.pageY - window.pageYOffset,\n true\n )\n },\n\n __activate (evt) {\n this.__onSpectrumChange(\n evt.pageX - window.pageXOffset,\n evt.pageY - window.pageYOffset\n )\n }\n }\n})\n","import { toJalaali } from '../utils/date-persian.js'\n\nimport DarkMixin from './dark.js'\nimport FormMixin from './form.js'\nimport ListenersMixin from './listeners.js'\n\nconst calendars = [ 'gregorian', 'persian' ]\n\nexport default {\n mixins: [ DarkMixin, FormMixin, ListenersMixin ],\n\n props: {\n value: {\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\n computed: {\n computedMask () {\n return this.__getMask()\n },\n\n computedLocale () {\n return this.__getLocale()\n },\n\n editable () {\n return this.disable !== true && this.readonly !== true\n },\n\n computedColor () {\n return this.color || 'primary'\n },\n\n computedTextColor () {\n return this.textColor || 'white'\n },\n\n computedTabindex () {\n return this.editable === true ? 0 : -1\n },\n\n headerClass () {\n const cls = []\n this.color !== void 0 && cls.push(`bg-${this.color}`)\n this.textColor !== void 0 && cls.push(`text-${this.textColor}`)\n return cls.join(' ')\n }\n },\n\n methods: {\n __getLocale () {\n return this.locale || this.$q.lang.date\n },\n\n __getCurrentDate () {\n const d = new Date()\n\n if (this.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: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n }\n },\n\n __getCurrentTime () {\n const d = new Date()\n\n return {\n hour: d.getHours(),\n minute: d.getMinutes(),\n second: d.getSeconds(),\n millisecond: d.getMilliseconds()\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport DateTimeMixin from '../../mixins/datetime.js'\n\nimport { slot } from '../../utils/slot.js'\nimport { formatDate, __splitDate, getDateDiff } from '../../utils/date.js'\nimport { pad } from '../../utils/format.js'\nimport { jalaaliMonthLength, toGregorian } from '../../utils/date-persian.js'\nimport cache from '../../utils/cache.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\nexport default Vue.extend({\n name: 'QDate',\n\n mixins: [ DateTimeMixin ],\n\n props: {\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 // DEPRECATED; TODO: remove in v2\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 data () {\n const\n innerMask = this.__getMask(),\n innerLocale = this.__getLocale(),\n viewModel = this.__getViewModel(innerMask, innerLocale),\n year = viewModel.year,\n direction = this.$q.lang.rtl === true ? 'right' : 'left'\n\n return {\n view: this.defaultView,\n monthDirection: direction,\n yearDirection: direction,\n startYear: year - (year % yearsInterval) - (year < 0 ? yearsInterval : 0),\n editRange: void 0,\n innerMask,\n innerLocale,\n viewModel // model of current calendar view\n }\n },\n\n watch: {\n value (v) {\n if (this.lastEmitValue === v) {\n this.lastEmitValue = 0\n }\n else {\n const { year, month } = this.__getViewModel(this.innerMask, this.innerLocale)\n this.__updateViewModel(year, month)\n }\n },\n\n view () {\n this.$refs.blurTarget !== void 0 && this.$refs.blurTarget.focus()\n },\n\n 'viewModel.year' (year) {\n this.$emit('navigation', { year, month: this.viewModel.month })\n },\n\n 'viewModel.month' (month) {\n this.$emit('navigation', { year: this.viewModel.year, month })\n },\n\n computedMask (val) {\n this.__updateValue(val, this.innerLocale, 'mask')\n this.innerMask = val\n },\n\n computedLocale (val) {\n this.__updateValue(this.innerMask, val, 'locale')\n this.innerLocale = val\n }\n },\n\n computed: {\n classes () {\n const type = this.landscape === true ? 'landscape' : 'portrait'\n return `q-date q-date--${type} q-date--${type}-${this.minimal === true ? 'minimal' : 'standard'}` +\n (this.isDark === true ? ' q-date--dark q-dark' : '') +\n (this.bordered === true ? ` q-date--bordered` : '') +\n (this.square === true ? ` q-date--square no-border-radius` : '') +\n (this.flat === true ? ` q-date--flat no-shadow` : '') +\n (this.disable === true ? ' disabled' : (this.readonly === true ? ' q-date--readonly' : ''))\n },\n\n // DEPRECATED; TODO: remove in v2\n isImmediate () {\n return this.emitImmediately === true &&\n this.daysModel[0] !== void 0 &&\n this.daysModel[0].dateHash !== null\n },\n\n normalizedModel () {\n return Array.isArray(this.value) === true\n ? this.value\n : (this.value !== null && this.value !== void 0 ? [ this.value ] : [])\n },\n\n daysModel () {\n return this.normalizedModel\n .filter(date => typeof date === 'string')\n .map(date => this.__decodeString(date, this.innerMask, this.innerLocale))\n .filter(date => date.dateHash !== null)\n },\n\n rangeModel () {\n const fn = date => this.__decodeString(date, this.innerMask, this.innerLocale)\n return this.normalizedModel\n .filter(date => Object(date) === date && 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 getNativeDateFn () {\n return this.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 encodeObjectFn () {\n return this.calendar === 'persian'\n ? this.__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 ? this.innerMask : mask,\n locale === void 0 ? this.innerLocale : locale,\n date.year,\n date.timezoneOffset\n )\n },\n\n daysInModel () {\n return this.daysModel.length + this.rangeModel.reduce(\n (acc, range) => acc + 1 + getDateDiff(\n this.getNativeDateFn(range.to),\n this.getNativeDateFn(range.from)\n ),\n 0\n )\n },\n\n headerTitle () {\n if (this.title !== void 0 && this.title !== null && this.title.length > 0) {\n return this.title\n }\n\n if (this.editRange !== void 0) {\n const model = this.editRange.init\n const date = this.getNativeDateFn(model)\n\n return this.innerLocale.daysShort[ date.getDay() ] + ', ' +\n this.innerLocale.monthsShort[ model.month - 1 ] + ' ' +\n model.day + lineStr + '?'\n }\n\n if (this.daysInModel === 0) {\n return lineStr\n }\n\n if (this.daysInModel > 1) {\n return `${this.daysInModel} ${this.innerLocale.pluralDay}`\n }\n\n const model = this.daysModel[0]\n const date = this.getNativeDateFn(model)\n\n if (isNaN(date.valueOf()) === true) {\n return lineStr\n }\n\n if (this.innerLocale.headerTitle !== void 0) {\n return this.innerLocale.headerTitle(date, model)\n }\n\n return this.innerLocale.daysShort[ date.getDay() ] + ', ' +\n this.innerLocale.monthsShort[ model.month - 1 ] + ' ' +\n model.day\n },\n\n headerSubtitle () {\n if (this.subtitle !== void 0 && this.subtitle !== null && this.subtitle.length > 0) {\n return this.subtitle\n }\n\n if (this.daysInModel === 0) {\n return lineStr\n }\n\n if (this.daysInModel > 1) {\n const from = this.minSelectedModel\n const to = this.maxSelectedModel\n const month = this.innerLocale.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 this.daysModel[0].year\n },\n\n minSelectedModel () {\n const model = this.daysModel.concat(this.rangeModel.map(range => range.from))\n .sort((a, b) => a.year - b.year || a.month - b.month)\n\n return model[0]\n },\n\n maxSelectedModel () {\n const model = this.daysModel.concat(this.rangeModel.map(range => range.to))\n .sort((a, b) => b.year - a.year || b.month - a.month)\n\n return model[0]\n },\n\n dateArrow () {\n const val = [ this.$q.iconSet.datetime.arrowLeft, this.$q.iconSet.datetime.arrowRight ]\n return this.$q.lang.rtl === true ? val.reverse() : val\n },\n\n computedFirstDayOfWeek () {\n return this.firstDayOfWeek !== void 0\n ? Number(this.firstDayOfWeek)\n : this.innerLocale.firstDayOfWeek\n },\n\n daysOfWeek () {\n const\n days = this.innerLocale.daysShort,\n first = this.computedFirstDayOfWeek\n\n return first > 0\n ? days.slice(first, 7).concat(days.slice(0, first))\n : days\n },\n\n daysInMonth () {\n const date = this.viewModel\n return this.calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n },\n\n today () {\n return this.__getCurrentDate()\n },\n\n evtColor () {\n return typeof this.eventColor === 'function'\n ? this.eventColor\n : () => this.eventColor\n },\n\n minNav () {\n if (this.navigationMinYearMonth !== void 0) {\n const data = this.navigationMinYearMonth.split('/')\n return { year: parseInt(data[0], 10), month: parseInt(data[1], 10) }\n }\n },\n\n maxNav () {\n if (this.navigationMaxYearMonth !== void 0) {\n const data = this.navigationMaxYearMonth.split('/')\n return { year: parseInt(data[0], 10), month: parseInt(data[1], 10) }\n }\n },\n\n navBoundaries () {\n const data = {\n month: { prev: true, next: true },\n year: { prev: true, next: true }\n }\n\n if (this.minNav !== void 0 && this.minNav.year >= this.viewModel.year) {\n data.year.prev = false\n if (this.minNav.year === this.viewModel.year && this.minNav.month >= this.viewModel.month) {\n data.month.prev = false\n }\n }\n\n if (this.maxNav !== void 0 && this.maxNav.year <= this.viewModel.year) {\n data.year.next = false\n if (this.maxNav.year === this.viewModel.year && this.maxNav.month <= this.viewModel.month) {\n data.month.next = false\n }\n }\n\n return data\n },\n\n daysMap () {\n const map = {}\n\n this.daysModel.forEach(entry => {\n const hash = this.__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 rangeMap () {\n const map = {}\n\n this.rangeModel.forEach(entry => {\n const hashFrom = this.__getMonthHash(entry.from)\n const hashTo = this.__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 = this.__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 rangeView () {\n if (this.editRange === void 0) {\n return\n }\n\n const { init, initHash, final, finalHash } = this.editRange\n\n const [ from, to ] = initHash <= finalHash\n ? [ init, final ]\n : [ final, init ]\n\n const fromHash = this.__getMonthHash(from)\n const toHash = this.__getMonthHash(to)\n\n if (fromHash !== this.viewMonthHash && toHash !== this.viewMonthHash) {\n return\n }\n\n const view = {}\n\n if (fromHash === this.viewMonthHash) {\n view.from = from.day\n view.includeFrom = true\n }\n else {\n view.from = 1\n }\n\n if (toHash === this.viewMonthHash) {\n view.to = to.day\n view.includeTo = true\n }\n else {\n view.to = this.daysInMonth\n }\n\n return view\n },\n\n viewMonthHash () {\n return this.__getMonthHash(this.viewModel)\n },\n\n selectionDaysMap () {\n const map = {}\n\n if (this.options === void 0) {\n for (let i = 1; i <= this.daysInMonth; i++) {\n map[i] = true\n }\n\n return map\n }\n\n const fn = typeof this.options === 'function'\n ? this.options\n : date => this.options.includes(date)\n\n for (let i = 1; i <= this.daysInMonth; i++) {\n const dayHash = this.viewMonthHash + '/' + pad(i)\n map[i] = fn(dayHash)\n }\n\n return map\n },\n\n eventDaysMap () {\n const map = {}\n\n if (this.events === void 0) {\n for (let i = 1; i <= this.daysInMonth; i++) {\n map[i] = false\n }\n }\n else {\n const fn = typeof this.events === 'function'\n ? this.events\n : date => this.events.includes(date)\n\n for (let i = 1; i <= this.daysInMonth; i++) {\n const dayHash = this.viewMonthHash + '/' + pad(i)\n map[i] = fn(dayHash) === true && this.evtColor(dayHash)\n }\n }\n\n return map\n },\n\n viewDays () {\n let date, endDay\n const { year, month } = this.viewModel\n\n if (this.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() - this.computedFirstDayOfWeek - 1,\n endDay\n }\n },\n\n days () {\n const res = []\n const { days, endDay } = this.viewDays\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 <= this.daysInMonth; i++) {\n const day = { i, event: this.eventDaysMap[i], classes: [] }\n\n if (this.selectionDaysMap[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 (this.daysMap[this.viewMonthHash] !== void 0) {\n this.daysMap[this.viewMonthHash].forEach(day => {\n const i = index + day - 1\n Object.assign(res[i], {\n selected: true,\n unelevated: true,\n flat: false,\n color: this.computedColor,\n textColor: this.computedTextColor\n })\n })\n }\n\n // if current view has ranges in model\n if (this.rangeMap[this.viewMonthHash] !== void 0) {\n this.rangeMap[this.viewMonthHash].forEach(entry => {\n if (entry.from !== void 0) {\n const from = index + entry.from - 1\n const to = index + (entry.to || this.daysInMonth) - 1\n\n for (let day = from; day <= to; day++) {\n Object.assign(res[day], {\n range: entry.range,\n unelevated: true,\n color: this.computedColor,\n textColor: this.computedTextColor\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: this.computedColor,\n textColor: this.computedTextColor\n })\n }\n\n Object.assign(res[to], {\n flat: false,\n rangeTo: true\n })\n }\n else {\n const to = index + this.daysInMonth - 1\n for (let day = index; day <= to; day++) {\n Object.assign(res[day], {\n range: entry.range,\n unelevated: true,\n color: this.computedColor,\n textColor: this.computedTextColor\n })\n }\n }\n })\n }\n\n if (this.rangeView !== void 0) {\n const from = index + this.rangeView.from - 1\n const to = index + this.rangeView.to - 1\n\n for (let day = from; day <= to; day++) {\n res[day].color = this.computedColor\n res[day].editRange = true\n }\n\n if (this.rangeView.includeFrom === true) {\n res[from].editRangeFrom = true\n }\n if (this.rangeView.includeTo === true) {\n res[to].editRangeTo = true\n }\n }\n\n if (this.viewModel.year === this.today.year && this.viewModel.month === this.today.month) {\n res[index + this.today.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 attrs () {\n if (this.disable === true) {\n return { 'aria-disabled': 'true' }\n }\n if (this.readonly === true) {\n return { 'aria-readonly': 'true' }\n }\n }\n },\n\n methods: {\n setToday () {\n this.__toggleDate(this.today, this.__getMonthHash(this.today))\n this.setCalendarTo(this.today.year, this.today.month)\n },\n\n setView (view) {\n if (viewIsValid(view) === true) {\n this.view = view\n }\n },\n\n offsetCalendar (type, descending) {\n if (['month', 'year'].includes(type)) {\n this[`__goTo${type === 'month' ? 'Month' : 'Year'}`](\n descending === true ? -1 : 1\n )\n }\n },\n\n setCalendarTo (year, month) {\n this.view = 'Calendar'\n this.__updateViewModel(year, month)\n },\n\n setEditingRange (from, to) {\n if (this.range === false || !from) {\n this.editRange = void 0\n return\n }\n\n const init = Object.assign({ ...this.viewModel }, from)\n const final = to !== void 0\n ? Object.assign({ ...this.viewModel }, to)\n : init\n\n this.editRange = {\n init,\n initHash: this.__getDayHash(init),\n final,\n finalHash: this.__getDayHash(final)\n }\n\n this.setCalendarTo(init.year, init.month)\n },\n\n __getMask () {\n return this.calendar === 'persian' ? 'YYYY/MM/DD' : this.mask\n },\n\n __decodeString (date, mask, locale) {\n return __splitDate(\n date,\n mask,\n locale,\n this.calendar,\n {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n }\n )\n },\n\n __getViewModel (mask, locale) {\n const model = Array.isArray(this.value) === true\n ? this.value\n : (this.value ? [ this.value ] : [])\n\n if (model.length === 0) {\n return this.__getDefaultViewModel()\n }\n\n const decoded = this.__decodeString(\n model[0].from !== void 0 ? model[0].from : model[0],\n mask,\n locale\n )\n\n return decoded.dateHash === null\n ? this.__getDefaultViewModel()\n : decoded\n },\n\n __getDefaultViewModel () {\n let year, month\n\n if (this.defaultYearMonth !== void 0) {\n const d = this.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 = this.today !== void 0\n ? this.today\n : this.__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 __getHeader (h) {\n if (this.minimal === true) { return }\n\n return h('div', {\n staticClass: 'q-date__header',\n class: this.headerClass\n }, [\n h('div', {\n staticClass: 'relative-position'\n }, [\n h('transition', {\n props: {\n name: 'q-transition--fade'\n }\n }, [\n h('div', {\n key: 'h-yr-' + this.headerSubtitle,\n staticClass: 'q-date__header-subtitle q-date__header-link',\n class: this.view === 'Years' ? 'q-date__header-link--active' : 'cursor-pointer',\n attrs: { tabindex: this.computedTabindex },\n on: cache(this, 'vY', {\n click: () => { this.view = 'Years' },\n keyup: e => { e.keyCode === 13 && (this.view = 'Years') }\n })\n }, [ this.headerSubtitle ])\n ])\n ]),\n\n h('div', {\n staticClass: 'q-date__header-title relative-position flex no-wrap'\n }, [\n h('div', {\n staticClass: 'relative-position col'\n }, [\n h('transition', {\n props: {\n name: 'q-transition--fade'\n }\n }, [\n h('div', {\n key: 'h-sub' + this.headerTitle,\n staticClass: 'q-date__header-title-label q-date__header-link',\n class: this.view === 'Calendar' ? 'q-date__header-link--active' : 'cursor-pointer',\n attrs: { tabindex: this.computedTabindex },\n on: cache(this, 'vC', {\n click: () => { this.view = 'Calendar' },\n keyup: e => { e.keyCode === 13 && (this.view = 'Calendar') }\n })\n }, [ this.headerTitle ])\n ])\n ]),\n\n this.todayBtn === true ? h(QBtn, {\n staticClass: 'q-date__header-today self-start',\n props: {\n icon: this.$q.iconSet.datetime.today,\n flat: true,\n size: 'sm',\n round: true,\n tabindex: this.computedTabindex\n },\n on: cache(this, 'today', { click: this.setToday })\n }) : null\n ])\n ])\n },\n\n __getNavigation (h, { label, view, key, dir, goTo, boundaries, cls }) {\n return [\n h('div', {\n staticClass: 'row items-center q-date__arrow'\n }, [\n h(QBtn, {\n props: {\n round: true,\n dense: true,\n size: 'sm',\n flat: true,\n icon: this.dateArrow[0],\n tabindex: this.computedTabindex,\n disable: boundaries.prev === false\n },\n on: cache(this, 'go-#' + view, { click () { goTo(-1) } })\n })\n ]),\n\n h('div', {\n staticClass: 'relative-position overflow-hidden flex flex-center' + cls\n }, [\n h('transition', {\n props: {\n name: 'q-transition--jump-' + dir\n }\n }, [\n h('div', { key }, [\n h(QBtn, {\n props: {\n flat: true,\n dense: true,\n noCaps: true,\n label,\n tabindex: this.computedTabindex\n },\n on: cache(this, 'view#' + view, { click: () => { this.view = view } })\n })\n ])\n ])\n ]),\n\n h('div', {\n staticClass: 'row items-center q-date__arrow'\n }, [\n h(QBtn, {\n props: {\n round: true,\n dense: true,\n size: 'sm',\n flat: true,\n icon: this.dateArrow[1],\n tabindex: this.computedTabindex,\n disable: boundaries.next === false\n },\n on: cache(this, 'go+#' + view, { click () { goTo(1) } })\n })\n ])\n ]\n },\n\n __getCalendarView (h) {\n return [\n h('div', {\n key: 'calendar-view',\n staticClass: 'q-date__view q-date__calendar'\n }, [\n h('div', {\n staticClass: 'q-date__navigation row items-center no-wrap'\n }, this.__getNavigation(h, {\n label: this.innerLocale.months[ this.viewModel.month - 1 ],\n view: 'Months',\n key: this.viewModel.month,\n dir: this.monthDirection,\n goTo: this.__goToMonth,\n boundaries: this.navBoundaries.month,\n cls: ' col'\n }).concat(this.__getNavigation(h, {\n label: this.viewModel.year,\n view: 'Years',\n key: this.viewModel.year,\n dir: this.yearDirection,\n goTo: this.__goToYear,\n boundaries: this.navBoundaries.year,\n cls: ''\n }))),\n\n h('div', {\n staticClass: 'q-date__calendar-weekdays row items-center no-wrap'\n }, this.daysOfWeek.map(day => h('div', { staticClass: 'q-date__calendar-item' }, [ h('div', [ day ]) ]))),\n\n h('div', {\n staticClass: 'q-date__calendar-days-container relative-position overflow-hidden'\n }, [\n h('transition', {\n props: {\n name: 'q-transition--slide-' + this.monthDirection\n }\n }, [\n h('div', {\n key: this.viewMonthHash,\n staticClass: 'q-date__calendar-days fit'\n }, this.days.map(day => h('div', { staticClass: day.classes }, [\n day.in === true\n ? h(QBtn, {\n staticClass: day.today === true ? 'q-date__today' : null,\n props: {\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: this.computedTabindex\n },\n on: cache(this, 'day#' + day.i, {\n click: () => { this.__onDayClick(day.i) },\n mouseover: () => { this.__onDayMouseover(day.i) }\n })\n }, day.event !== false ? [\n h('div', { staticClass: 'q-date__event bg-' + day.event })\n ] : null)\n : h('div', [ day.i ])\n ])))\n ])\n ])\n ])\n ]\n },\n\n __getMonthsView (h) {\n const currentYear = this.viewModel.year === this.today.year\n const isDisabled = month => {\n return (\n (this.minNav !== void 0 && this.viewModel.year === this.minNav.year && this.minNav.month > month) ||\n (this.maxNav !== void 0 && this.viewModel.year === this.maxNav.year && this.maxNav.month < month)\n )\n }\n\n const content = this.innerLocale.monthsShort.map((month, i) => {\n const active = this.viewModel.month === i + 1\n\n return h('div', {\n staticClass: 'q-date__months-item flex flex-center'\n }, [\n h(QBtn, {\n staticClass: currentYear === true && this.today.month === i + 1 ? 'q-date__today' : null,\n props: {\n flat: active !== true,\n label: month,\n unelevated: active,\n color: active === true ? this.computedColor : null,\n textColor: active === true ? this.computedTextColor : null,\n tabindex: this.computedTabindex,\n disable: isDisabled(i + 1)\n },\n on: cache(this, 'month#' + i, { click: () => { this.__setMonth(i + 1) } })\n })\n ])\n })\n\n this.yearsInMonthView === true && content.unshift(\n h('div', { staticClass: 'row no-wrap full-width' }, [\n this.__getNavigation(h, {\n label: this.viewModel.year,\n view: 'Years',\n key: this.viewModel.year,\n dir: this.yearDirection,\n goTo: this.__goToYear,\n boundaries: this.navBoundaries.year,\n cls: ' col'\n })\n ])\n )\n\n return h('div', {\n key: 'months-view',\n staticClass: 'q-date__view q-date__months flex flex-center'\n }, content)\n },\n\n __getYearsView (h) {\n const\n start = this.startYear,\n stop = start + yearsInterval,\n years = []\n\n const isDisabled = year => {\n return (\n (this.minNav !== void 0 && this.minNav.year > year) ||\n (this.maxNav !== void 0 && this.maxNav.year < year)\n )\n }\n\n for (let i = start; i <= stop; i++) {\n const active = this.viewModel.year === i\n\n years.push(\n h('div', {\n staticClass: 'q-date__years-item flex flex-center'\n }, [\n h(QBtn, {\n key: 'yr' + i,\n staticClass: this.today.year === i ? 'q-date__today' : null,\n props: {\n flat: !active,\n label: i,\n dense: true,\n unelevated: active,\n color: active === true ? this.computedColor : null,\n textColor: active === true ? this.computedTextColor : null,\n tabindex: this.computedTabindex,\n disable: isDisabled(i)\n },\n on: cache(this, 'yr#' + i, { click: () => { this.__setYear(i) } })\n })\n ])\n )\n }\n\n return h('div', {\n staticClass: 'q-date__view q-date__years flex flex-center'\n }, [\n h('div', {\n staticClass: 'col-auto'\n }, [\n h(QBtn, {\n props: {\n round: true,\n dense: true,\n flat: true,\n icon: this.dateArrow[0],\n tabindex: this.computedTabindex,\n disable: isDisabled(start)\n },\n on: cache(this, 'y-', { click: () => { this.startYear -= yearsInterval } })\n })\n ]),\n\n h('div', {\n staticClass: 'q-date__years-content col self-stretch row items-center'\n }, years),\n\n h('div', {\n staticClass: 'col-auto'\n }, [\n h(QBtn, {\n props: {\n round: true,\n dense: true,\n flat: true,\n icon: this.dateArrow[1],\n tabindex: this.computedTabindex,\n disable: isDisabled(stop)\n },\n on: cache(this, 'y+', { click: () => { this.startYear += yearsInterval } })\n })\n ])\n ])\n },\n\n __goToMonth (offset) {\n let year = this.viewModel.year\n let month = Number(this.viewModel.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 this.__updateViewModel(year, month)\n this.isImmediate === true && this.__emitImmediately('month')\n },\n\n __goToYear (offset) {\n const year = Number(this.viewModel.year) + offset\n this.__updateViewModel(year, this.viewModel.month)\n this.isImmediate === true && this.__emitImmediately('year')\n },\n\n __setYear (year) {\n this.__updateViewModel(year, this.viewModel.month)\n this.view = this.defaultView === 'Years' ? 'Months' : 'Calendar'\n this.isImmediate === true && this.__emitImmediately('year')\n },\n\n __setMonth (month) {\n this.__updateViewModel(this.viewModel.year, month)\n this.view = 'Calendar'\n this.isImmediate === true && this.__emitImmediately('month')\n },\n\n __getMonthHash (date) {\n return date.year + '/' + pad(date.month)\n },\n\n __getDayHash (date) {\n return date.year + '/' + pad(date.month) + '/' + pad(date.day)\n },\n\n __toggleDate (date, monthHash) {\n const month = this.daysMap[monthHash]\n const fn = month !== void 0 && month.includes(date.day) === true\n ? this.__removeFromModel\n : this.__addToModel\n\n fn(date)\n },\n\n __getShortDate (date) {\n return { year: date.year, month: date.month, day: date.day }\n },\n\n __onDayClick (dayIndex) {\n const day = { ...this.viewModel, day: dayIndex }\n\n if (this.range === false) {\n this.__toggleDate(day, this.viewMonthHash)\n return\n }\n\n if (this.editRange === void 0) {\n const dayProps = this.days.find(day => day.fill !== true && day.i === dayIndex)\n\n if (dayProps.range !== void 0) {\n this.__removeFromModel({ target: day, from: dayProps.range.from, to: dayProps.range.to })\n return\n }\n\n if (dayProps.selected === true) {\n this.__removeFromModel(day)\n return\n }\n\n const initHash = this.__getDayHash(day)\n\n this.editRange = {\n init: day,\n initHash,\n final: day,\n finalHash: initHash\n }\n\n this.$emit('range-start', this.__getShortDate(day))\n }\n else {\n const\n initHash = this.editRange.initHash,\n finalHash = this.__getDayHash(day),\n payload = initHash <= finalHash\n ? { from: this.editRange.init, to: day }\n : { from: day, to: this.editRange.init }\n\n this.editRange = void 0\n this.__addToModel(initHash === finalHash ? day : { target: day, ...payload })\n\n this.$emit('range-end', {\n from: this.__getShortDate(payload.from),\n to: this.__getShortDate(payload.to)\n })\n }\n },\n\n __onDayMouseover (dayIndex) {\n if (this.editRange !== void 0) {\n const final = { ...this.viewModel, day: dayIndex }\n\n Object.assign(this.editRange, {\n final,\n finalHash: this.__getDayHash(final)\n })\n }\n },\n\n __updateViewModel (year, month) {\n if (this.minNav !== void 0 && year <= this.minNav.year) {\n year = this.minNav.year\n if (month < this.minNav.month) {\n month = this.minNav.month\n }\n }\n\n if (this.maxNav !== void 0 && year >= this.maxNav.year) {\n year = this.maxNav.year\n if (month > this.maxNav.month) {\n month = this.maxNav.month\n }\n }\n\n const newHash = year + '/' + pad(month) + '/01'\n\n if (newHash !== this.viewModel.dateHash) {\n this.monthDirection = (this.viewModel.dateHash < newHash) === (this.$q.lang.rtl !== true) ? 'left' : 'right'\n if (year !== this.viewModel.year) {\n this.yearDirection = this.monthDirection\n }\n\n this.$nextTick(() => {\n this.startYear = year - year % yearsInterval - (year < 0 ? yearsInterval : 0)\n Object.assign(this.viewModel, {\n year,\n month,\n day: 1,\n dateHash: newHash\n })\n })\n }\n },\n\n __emitValue (val, action, date) {\n const value = val !== null && val.length === 1 && this.multiple === false\n ? val[0]\n : val\n\n this.lastEmitValue = value\n\n const { reason, details } = this.__getEmitParams(action, date)\n this.$emit('input', value, reason, details)\n },\n\n // DEPRECATED - TODO: remove in v2\n __emitImmediately (reason) {\n const date = this.daysModel[0]\n\n // nextTick required because of animation delay in viewModel\n this.$nextTick(() => {\n date.year = this.viewModel.year\n date.month = this.viewModel.month\n\n const maxDay = this.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 = this.__encodeEntry(date)\n this.lastEmitValue = value\n\n const { details } = this.__getEmitParams('', date)\n this.$emit('input', value, reason, details)\n })\n },\n\n __getEmitParams (action, date) {\n return date.from !== void 0\n ? {\n reason: `${action}-range`,\n details: {\n ...this.__getShortDate(date.target),\n from: this.__getShortDate(date.from),\n to: this.__getShortDate(date.to),\n changed: true // TODO remove in v2; legacy purposes\n }\n }\n : {\n reason: `${action}-day`,\n details: {\n ...this.__getShortDate(date),\n changed: true // TODO remove in v2; legacy purposes\n }\n }\n },\n\n __encodeEntry (date, mask, locale) {\n return date.from !== void 0\n ? { from: this.encodeObjectFn(date.from, mask, locale), to: this.encodeObjectFn(date.to, mask, locale) }\n : this.encodeObjectFn(date, mask, locale)\n },\n\n __addToModel (date) {\n let value\n\n if (this.multiple === true) {\n if (date.from !== void 0) {\n // we also need to filter out intersections\n\n const fromHash = this.__getDayHash(date.from)\n const toHash = this.__getDayHash(date.to)\n\n const days = this.daysModel\n .filter(day => day.dateHash < fromHash || day.dateHash > toHash)\n\n const ranges = this.rangeModel\n .filter(({ from, to }) => to.dateHash < fromHash || from.dateHash > toHash)\n\n value = days.concat(ranges).concat(date).map(entry => this.__encodeEntry(entry))\n }\n else {\n const model = this.normalizedModel.slice()\n model.push(this.__encodeEntry(date))\n value = model\n }\n }\n else {\n value = this.__encodeEntry(date)\n }\n\n this.__emitValue(value, 'add', date)\n },\n\n __removeFromModel (date) {\n if (this.noUnset === true) {\n return\n }\n\n let model = null\n\n if (this.multiple === true && Array.isArray(this.value) === true) {\n const val = this.__encodeEntry(date)\n\n if (date.from !== void 0) {\n model = this.value.filter(\n date => date.from !== void 0\n ? (date.from !== val.from && date.to !== val.to)\n : true\n )\n }\n else {\n model = this.value.filter(date => date !== val)\n }\n\n if (model.length === 0) {\n model = null\n }\n }\n\n this.__emitValue(model, 'remove', date)\n },\n\n __updateValue (mask, locale, reason) {\n const model = this.daysModel\n .concat(this.rangeModel)\n .map(entry => this.__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 this.$emit('input', (this.multiple === true ? model : model[0]) || null, reason)\n }\n },\n\n render (h) {\n const content = [\n h('div', {\n staticClass: 'q-date__content col relative-position'\n }, [\n h('transition', {\n props: { name: 'q-transition--fade' }\n }, [\n this[`__get${this.view}View`](h)\n ])\n ])\n ]\n\n const def = slot(this, 'default')\n def !== void 0 && content.push(\n h('div', { staticClass: 'q-date__actions' }, def)\n )\n\n if (this.name !== void 0 && this.disable !== true) {\n this.__injectFormInput(content, 'push')\n }\n\n return h('div', {\n class: this.classes,\n attrs: this.attrs,\n on: { ...this.qListeners }\n }, [\n this.__getHeader(h),\n\n h('div', {\n staticClass: 'q-date__main col column',\n attrs: { tabindex: -1 },\n ref: 'blurTarget'\n }, content)\n ])\n }\n})\n","import { getEventPath, listenOpts, stopAndPrevent } from '../utils/event.js'\nimport { hasScrollbar, getScrollPosition, 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 = window.getComputedStyle(body).overflowY\n\n scrollPositionX = getHorizontalScrollPosition(window)\n scrollPositionY = getScrollPosition(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 if (overflowY !== 'hidden' && (overflowY === 'scroll' || body.scrollHeight > window.innerHeight)) {\n body.classList.add('q-body--force-scrollbar')\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')\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 function preventScroll (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\nexport default {\n methods: {\n __preventScroll (state) {\n if (\n state !== this.preventedScroll &&\n (this.preventedScroll !== void 0 || state === true)\n ) {\n this.preventedScroll = state\n preventScroll(state)\n }\n }\n }\n}\n","import History from '../history.js'\n\nexport default {\n methods: {\n __addHistory () {\n this.__historyEntry = {\n condition: () => { return this.hideOnRouteChange === true },\n handler: this.hide\n }\n History.add(this.__historyEntry)\n },\n\n __removeHistory () {\n if (this.__historyEntry !== void 0) {\n History.remove(this.__historyEntry)\n this.__historyEntry = void 0\n }\n }\n },\n\n beforeDestroy () {\n this.showing === true && this.__removeHistory()\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).substr(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.msCrypto // IE11\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 var 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","import Vue from 'vue'\n\nimport HistoryMixin from '../../mixins/history.js'\nimport ModelToggleMixin from '../../mixins/model-toggle.js'\nimport PortalMixin from '../../mixins/portal.js'\nimport PreventScrollMixin from '../../mixins/prevent-scroll.js'\nimport AttrsMixin, { ariaHidden } from '../../mixins/attrs.js'\n\nimport { childHasFocus } from '../../utils/dom.js'\nimport EscapeKey from '../../utils/escape-key.js'\nimport { slot } from '../../utils/slot.js'\nimport { create, stop } from '../../utils/event.js'\nimport cache from '../../utils/cache.js'\n\nlet maximizedModals = 0\n\nconst positionClass = {\n standard: 'fixed-full flex-center',\n top: 'fixed-top justify-center',\n bottom: 'fixed-bottom justify-center',\n right: 'fixed-right items-center',\n left: 'fixed-left items-center'\n}\n\nconst transitions = {\n standard: ['scale', 'scale'],\n top: ['slide-down', 'slide-up'],\n bottom: ['slide-up', 'slide-down'],\n right: ['slide-left', 'slide-right'],\n left: ['slide-right', 'slide-left']\n}\n\nexport default Vue.extend({\n name: 'QDialog',\n\n mixins: [\n AttrsMixin,\n HistoryMixin,\n ModelToggleMixin,\n PortalMixin,\n PreventScrollMixin\n ],\n\n props: {\n persistent: Boolean,\n autoClose: Boolean,\n\n noEscDismiss: Boolean,\n noBackdropDismiss: Boolean,\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: 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 transitionShow: String,\n transitionHide: String\n },\n\n data () {\n return {\n transitionState: this.showing\n }\n },\n\n watch: {\n showing (val) {\n if (this.transitionShowComputed !== this.transitionHideComputed) {\n this.$nextTick(() => {\n this.transitionState = val\n })\n }\n },\n\n maximized (state) {\n this.showing === true && this.__updateMaximized(state)\n },\n\n useBackdrop (v) {\n this.__preventScroll(v)\n this.__preventFocusout(v)\n }\n },\n\n computed: {\n classes () {\n return `q-dialog__inner--${this.maximized === true ? 'maximized' : 'minimized'} ` +\n `q-dialog__inner--${this.position} ${positionClass[this.position]}` +\n (this.fullWidth === true ? ' q-dialog__inner--fullwidth' : '') +\n (this.fullHeight === true ? ' q-dialog__inner--fullheight' : '') +\n (this.square === true ? ' q-dialog__inner--square' : '')\n },\n\n transitionShowComputed () {\n return 'q-transition--' + (this.transitionShow === void 0 ? transitions[this.position][0] : this.transitionShow)\n },\n\n transitionHideComputed () {\n return 'q-transition--' + (this.transitionHide === void 0 ? transitions[this.position][1] : this.transitionHide)\n },\n\n transition () {\n return this.transitionState === true\n ? this.transitionHideComputed\n : this.transitionShowComputed\n },\n\n useBackdrop () {\n return this.showing === true && this.seamless !== true\n },\n\n hideOnRouteChange () {\n return this.persistent !== true &&\n this.noRouteDismiss !== true &&\n this.seamless !== true\n },\n\n onEvents () {\n const on = {\n ...this.qListeners,\n // stop propagating these events from children\n input: stop,\n 'popup-show': stop,\n 'popup-hide': stop\n }\n\n if (this.autoClose === true) {\n on.click = this.__onAutoClose\n }\n\n return on\n }\n },\n\n methods: {\n focus () {\n let node = this.__getInnerNode()\n\n if (node === void 0 || node.contains(document.activeElement) === true) {\n return\n }\n\n node = node.querySelector('[autofocus], [data-autofocus]') || node\n node.focus()\n },\n\n shake () {\n this.focus()\n this.$emit('shake')\n\n const node = this.__getInnerNode()\n\n if (node !== void 0) {\n node.classList.remove('q-animate--scale')\n node.classList.add('q-animate--scale')\n clearTimeout(this.shakeTimeout)\n this.shakeTimeout = setTimeout(() => {\n node.classList.remove('q-animate--scale')\n }, 170)\n }\n },\n\n __getInnerNode () {\n return this.__portal !== void 0 && this.__portal.$refs !== void 0\n ? this.__portal.$refs.inner\n : void 0\n },\n\n __show (evt) {\n this.__addHistory()\n\n // IE can have null document.activeElement\n this.__refocusTarget = this.noRefocus === false && document.activeElement !== null\n ? document.activeElement\n : void 0\n\n this.$el.dispatchEvent(create('popup-show', { bubbles: true }))\n this.__updateMaximized(this.maximized)\n\n EscapeKey.register(this, () => {\n if (this.seamless !== true) {\n if (this.persistent === true || this.noEscDismiss === true) {\n this.maximized !== true && this.shake()\n }\n else {\n this.$emit('escape-key')\n this.hide()\n }\n }\n })\n\n this.__showPortal()\n\n if (this.noFocus !== true) {\n // IE can have null document.activeElement\n document.activeElement !== null && document.activeElement.blur()\n this.__nextTick(this.focus)\n }\n\n this.__setTimeout(() => {\n if (this.$q.platform.is.ios === true) {\n if (this.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 const 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 const fn = () => {\n requestAnimationFrame(() => {\n document.scrollingElement.scrollTop += Math.ceil((scrollTop - document.scrollingElement.scrollTop) / 8)\n if (document.scrollingElement.scrollTop !== scrollTop) {\n fn()\n }\n })\n }\n\n fn()\n }\n document.activeElement.scrollIntoView()\n }\n\n // required in order to avoid the \"double-tap needed\" issue\n this.__portal.$el.click()\n }\n\n this.$emit('show', evt)\n }, 300)\n },\n\n __hide (evt) {\n this.__removeHistory()\n this.__cleanup(true)\n\n // check null for IE\n if (this.__refocusTarget !== void 0 && this.__refocusTarget !== null) {\n this.__refocusTarget.focus()\n }\n\n this.$el.dispatchEvent(create('popup-hide', { bubbles: true }))\n\n this.__setTimeout(() => {\n this.__hidePortal()\n this.$emit('hide', evt)\n }, 300)\n },\n\n __cleanup (hiding) {\n clearTimeout(this.shakeTimeout)\n\n if (hiding === true || this.showing === true) {\n EscapeKey.pop(this)\n this.__updateMaximized(false)\n\n if (this.seamless !== true) {\n this.__preventScroll(false)\n this.__preventFocusout(false)\n }\n }\n },\n\n __updateMaximized (active) {\n if (active === true) {\n if (this.isMaximized !== true) {\n maximizedModals < 1 && document.body.classList.add('q-body--dialog')\n maximizedModals++\n\n this.isMaximized = true\n }\n }\n else if (this.isMaximized === true) {\n if (maximizedModals < 2) {\n document.body.classList.remove('q-body--dialog')\n }\n\n maximizedModals--\n this.isMaximized = false\n }\n },\n\n __preventFocusout (state) {\n if (this.$q.platform.is.desktop === true) {\n const action = `${state === true ? 'add' : 'remove'}EventListener`\n document.body[action]('focusin', this.__onFocusChange)\n }\n },\n\n __onAutoClose (e) {\n this.hide(e)\n this.qListeners.click !== void 0 && this.$emit('click', e)\n },\n\n __onBackdropClick (e) {\n if (this.persistent !== true && this.noBackdropDismiss !== true) {\n this.hide(e)\n }\n else {\n this.shake()\n }\n },\n\n __onFocusChange (e) {\n // the focus is not in a vue child component\n if (\n this.showing === true &&\n this.__portal !== void 0 &&\n childHasFocus(this.__portal.$el, e.target) !== true\n ) {\n this.focus()\n }\n },\n\n __renderPortal (h) {\n return h('div', {\n staticClass: 'q-dialog fullscreen no-pointer-events',\n class: this.contentClass,\n style: this.contentStyle,\n attrs: this.qAttrs\n }, [\n h('transition', {\n props: { name: 'q-transition--fade' }\n }, this.useBackdrop === true ? [\n h('div', {\n staticClass: 'q-dialog__backdrop fixed-full',\n attrs: ariaHidden,\n on: cache(this, 'bkdrop', {\n click: this.__onBackdropClick\n })\n })\n ] : null),\n\n h('transition', {\n props: { name: this.transition }\n }, [\n this.showing === true ? h('div', {\n ref: 'inner',\n staticClass: 'q-dialog__inner flex no-pointer-events',\n class: this.classes,\n attrs: { tabindex: -1 },\n on: this.onEvents\n }, slot(this, 'default')) : null\n ])\n ])\n }\n },\n\n mounted () {\n this.__processModelChange(this.value)\n },\n\n beforeDestroy () {\n this.__cleanup()\n }\n})\n","import Vue from 'vue'\n\nimport HistoryMixin from '../../mixins/history.js'\nimport ModelToggleMixin from '../../mixins/model-toggle.js'\nimport PreventScrollMixin from '../../mixins/prevent-scroll.js'\nimport DarkMixin from '../../mixins/dark.js'\n\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport { between } from '../../utils/format.js'\nimport { slot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\nimport { ariaHidden } from '../../mixins/attrs'\n\nconst duration = 150\n\nconst mouseEvents = [\n 'mouseover', 'mouseout', 'mouseenter', 'mouseleave'\n]\n\nexport default Vue.extend({\n name: 'QDrawer',\n\n inject: {\n layout: {\n default () {\n console.error('QDrawer needs to be child of QLayout')\n }\n }\n },\n\n mixins: [ DarkMixin, HistoryMixin, ModelToggleMixin, PreventScrollMixin ],\n\n directives: {\n TouchPan\n },\n\n props: {\n side: {\n type: String,\n default: 'left',\n validator: v => ['left', 'right'].includes(v)\n },\n\n width: {\n type: Number,\n default: 300\n },\n\n mini: Boolean,\n miniToOverlay: Boolean,\n miniWidth: {\n type: Number,\n default: 57\n },\n\n breakpoint: {\n type: Number,\n default: 1023\n },\n showIfAbove: Boolean,\n\n behavior: {\n type: String,\n validator: v => ['default', 'desktop', 'mobile'].includes(v),\n default: 'default'\n },\n\n bordered: Boolean,\n elevated: Boolean,\n contentStyle: [String, Object, Array],\n contentClass: [String, Object, Array],\n\n overlay: Boolean,\n persistent: Boolean,\n noSwipeOpen: Boolean,\n noSwipeClose: Boolean,\n noSwipeBackdrop: Boolean\n },\n\n data () {\n const belowBreakpoint = (\n this.behavior === 'mobile' ||\n (this.behavior !== 'desktop' && this.layout.totalWidth <= this.breakpoint)\n )\n\n return {\n belowBreakpoint,\n showing: this.showIfAbove === true && belowBreakpoint === false\n ? true\n : this.value === true\n }\n },\n\n watch: {\n belowBreakpoint (val) {\n if (val === true) { // from lg to xs\n this.lastDesktopState = this.showing\n this.showing === true && this.hide(false)\n }\n else if (\n this.overlay === false &&\n this.behavior !== 'mobile' &&\n this.lastDesktopState !== false\n ) { // from xs to lg\n if (this.showing === true) {\n this.__applyPosition(0)\n this.__applyBackdrop(0)\n this.__cleanup()\n }\n else {\n this.show(false)\n }\n }\n },\n\n 'layout.totalWidth' (val) {\n this.__updateLocal('belowBreakpoint', (\n this.behavior === 'mobile' ||\n (this.behavior !== 'desktop' && val <= this.breakpoint)\n ))\n },\n\n side (newSide, oldSide) {\n if (this.layout.instances[oldSide] === this) {\n this.layout.instances[oldSide] = void 0\n this.layout[oldSide].space = false\n this.layout[oldSide].offset = 0\n }\n\n this.layout.instances[newSide] = this\n this.layout[newSide].size = this.size\n this.layout[newSide].space = this.onLayout\n this.layout[newSide].offset = this.offset\n },\n\n behavior (val) {\n this.__updateLocal('belowBreakpoint', (\n val === 'mobile' ||\n (val !== 'desktop' && this.layout.totalWidth <= this.breakpoint)\n ))\n },\n\n breakpoint (val) {\n this.__updateLocal('belowBreakpoint', (\n this.behavior === 'mobile' ||\n (this.behavior !== 'desktop' && this.layout.totalWidth <= val)\n ))\n },\n\n 'layout.container' (val) {\n this.showing === true && this.__preventScroll(val !== true)\n },\n\n 'layout.scrollbarWidth' () {\n this.__applyPosition(this.showing === true ? 0 : void 0)\n },\n\n offset (val) {\n this.__update('offset', val)\n },\n\n onLayout (val) {\n this.$emit('on-layout', val)\n this.__update('space', val)\n },\n\n rightSide () {\n this.__applyPosition()\n },\n\n size (val) {\n this.__applyPosition()\n this.__updateSizeOnLayout(this.miniToOverlay, val)\n },\n\n miniToOverlay (val) {\n this.__updateSizeOnLayout(val, this.size)\n },\n\n '$q.lang.rtl' () {\n this.__applyPosition()\n },\n\n mini () {\n if (this.value === true) {\n this.__animateMini()\n this.layout.__animate()\n }\n },\n\n isMini (val) {\n this.$emit('mini-state', val)\n }\n },\n\n computed: {\n rightSide () {\n return this.side === 'right'\n },\n\n otherSide () {\n return this.rightSide === true ? 'left' : 'right'\n },\n\n offset () {\n return this.showing === true && this.belowBreakpoint === false && this.overlay === false\n ? (this.miniToOverlay === true ? this.miniWidth : this.size)\n : 0\n },\n\n size () {\n return this.isMini === true\n ? this.miniWidth\n : this.width\n },\n\n fixed () {\n return this.overlay === true ||\n this.miniToOverlay === true ||\n this.layout.view.indexOf(this.rightSide ? 'R' : 'L') > -1 ||\n (this.$q.platform.is.ios && this.layout.container === true)\n },\n\n onLayout () {\n return this.showing === true && this.belowBreakpoint === false && this.overlay === false\n },\n\n onScreenOverlay () {\n return this.showing === true && this.belowBreakpoint === false && this.overlay === true\n },\n\n backdropClass () {\n return this.showing === false ? 'hidden' : null\n },\n\n headerSlot () {\n return this.rightSide === true\n ? this.layout.rows.top[2] === 'r'\n : this.layout.rows.top[0] === 'l'\n },\n\n footerSlot () {\n return this.rightSide === true\n ? this.layout.rows.bottom[2] === 'r'\n : this.layout.rows.bottom[0] === 'l'\n },\n\n aboveStyle () {\n const css = {}\n\n if (this.layout.header.space === true && this.headerSlot === false) {\n if (this.fixed === true) {\n css.top = `${this.layout.header.offset}px`\n }\n else if (this.layout.header.space === true) {\n css.top = `${this.layout.header.size}px`\n }\n }\n\n if (this.layout.footer.space === true && this.footerSlot === false) {\n if (this.fixed === true) {\n css.bottom = `${this.layout.footer.offset}px`\n }\n else if (this.layout.footer.space === true) {\n css.bottom = `${this.layout.footer.size}px`\n }\n }\n\n return css\n },\n\n style () {\n const style = { width: `${this.size}px` }\n return this.belowBreakpoint === true\n ? style\n : Object.assign(style, this.aboveStyle)\n },\n\n classes () {\n return `q-drawer--${this.side}` +\n (this.bordered === true ? ' q-drawer--bordered' : '') +\n (this.isDark === true ? ' q-drawer--dark q-dark' : '') +\n (this.showing !== true ? ' q-layout--prevent-focus' : '') +\n (\n this.belowBreakpoint === true\n ? ' fixed q-drawer--on-top q-drawer--mobile q-drawer--top-padding'\n : ` q-drawer--${this.isMini === true ? 'mini' : 'standard'}` +\n (this.fixed === true || this.onLayout !== true ? ' fixed' : '') +\n (this.overlay === true || this.miniToOverlay === true ? ' q-drawer--on-top' : '') +\n (this.headerSlot === true ? ' q-drawer--top-padding' : '')\n )\n },\n\n stateDirection () {\n return (this.$q.lang.rtl === true ? -1 : 1) * (this.rightSide === true ? 1 : -1)\n },\n\n isMini () {\n return this.mini === true && this.belowBreakpoint !== true\n },\n\n onNativeEvents () {\n if (this.belowBreakpoint !== true) {\n const evt = {\n '!click': e => { this.$emit('click', e) }\n }\n\n mouseEvents.forEach(name => {\n evt[name] = e => {\n this.qListeners[name] !== void 0 && this.$emit(name, e)\n }\n })\n\n return evt\n }\n },\n\n hideOnRouteChange () {\n return this.persistent !== true &&\n (this.belowBreakpoint === true || this.onScreenOverlay === true)\n },\n\n openDirective () {\n const dir = this.$q.lang.rtl === true ? this.side : this.otherSide\n\n return [{\n name: 'touch-pan',\n value: this.__openByTouch,\n modifiers: {\n [ dir ]: true,\n mouse: true\n }\n }]\n },\n\n contentCloseDirective () {\n if (this.noSwipeClose !== true) {\n const dir = this.$q.lang.rtl === true ? this.otherSide : this.side\n\n return [{\n name: 'touch-pan',\n value: this.__closeByTouch,\n modifiers: {\n [ dir ]: true,\n mouse: true\n }\n }]\n }\n },\n\n backdropCloseDirective () {\n if (this.noSwipeBackdrop !== true) {\n const dir = this.$q.lang.rtl === true ? this.otherSide : this.side\n\n return [{\n name: 'touch-pan',\n value: this.__closeByTouch,\n modifiers: {\n [ dir ]: true,\n mouse: true,\n mouseAllDir: true\n }\n }]\n }\n }\n },\n\n methods: {\n __applyPosition (position) {\n if (position === void 0) {\n this.$nextTick(() => {\n position = this.showing === true ? 0 : this.size\n this.__applyPosition(this.stateDirection * position)\n })\n }\n else if (this.$refs.content !== void 0) {\n if (\n this.layout.container === true &&\n this.rightSide === true &&\n (this.belowBreakpoint === true || Math.abs(position) === this.size)\n ) {\n position += this.stateDirection * this.layout.scrollbarWidth\n }\n\n if (this.__lastPosition !== position) {\n this.$refs.content.style.transform = `translateX(${position}px)`\n this.__lastPosition = position\n }\n }\n },\n\n __applyBackdrop (x, retry) {\n if (this.$refs.backdrop !== void 0) {\n this.$refs.backdrop.style.backgroundColor =\n this.lastBackdropBg = `rgba(0,0,0,${x * 0.4})`\n }\n else {\n // rendered nodes might not have\n // picked up this.showing change yet,\n // so we need one retry\n retry !== true && this.$nextTick(() => {\n this.__applyBackdrop(x, true)\n })\n }\n },\n\n __setBackdropVisible (v) {\n if (this.$refs.backdrop !== void 0) {\n this.$refs.backdrop.classList[v === true ? 'remove' : 'add']('hidden')\n }\n },\n\n __setScrollable (v) {\n const action = v === true\n ? 'remove'\n : (this.layout.container !== true ? 'add' : '')\n\n action !== '' && document.body.classList[action]('q-body--drawer-toggle')\n },\n\n __animateMini () {\n if (this.timerMini !== void 0) {\n clearTimeout(this.timerMini)\n }\n else if (this.$el !== void 0) {\n this.$el.classList.add('q-drawer--mini-animate')\n }\n this.timerMini = setTimeout(() => {\n this.$el !== void 0 && this.$el.classList.remove('q-drawer--mini-animate')\n this.timerMini = void 0\n }, 150)\n },\n\n __openByTouch (evt) {\n if (this.showing !== false) {\n // some browsers might capture and trigger this\n // even if Drawer has just been opened (but animation is still pending)\n return\n }\n\n const\n width = this.size,\n position = between(evt.distance.x, 0, width)\n\n if (evt.isFinal === true) {\n const\n el = this.$refs.content,\n opened = position >= Math.min(75, width)\n\n el.classList.remove('no-transition')\n\n if (opened === true) {\n this.show()\n }\n else {\n this.layout.__animate()\n this.__applyBackdrop(0)\n this.__applyPosition(this.stateDirection * width)\n el.classList.remove('q-drawer--delimiter')\n el.classList.add('q-layout--prevent-focus')\n this.__setBackdropVisible(false)\n }\n\n return\n }\n\n this.__applyPosition(\n (this.$q.lang.rtl === true ? this.rightSide !== true : this.rightSide)\n ? Math.max(width - position, 0)\n : Math.min(0, position - width)\n )\n this.__applyBackdrop(\n between(position / width, 0, 1)\n )\n\n if (evt.isFirst === true) {\n const el = this.$refs.content\n el.classList.add('no-transition')\n el.classList.add('q-drawer--delimiter')\n el.classList.remove('q-layout--prevent-focus')\n this.__setBackdropVisible(true)\n }\n },\n\n __closeByTouch (evt) {\n if (this.showing !== true) {\n // some browsers might capture and trigger this\n // even if Drawer has just been closed (but animation is still pending)\n return\n }\n\n const\n width = this.size,\n dir = evt.direction === this.side,\n position = (this.$q.lang.rtl === true ? dir !== true : dir)\n ? between(evt.distance.x, 0, width)\n : 0\n\n if (evt.isFinal === true) {\n const opened = Math.abs(position) < Math.min(75, width)\n this.$refs.content.classList.remove('no-transition')\n\n if (opened === true) {\n this.layout.__animate()\n this.__applyBackdrop(1)\n this.__applyPosition(0)\n }\n else {\n this.hide()\n }\n\n return\n }\n\n this.__applyPosition(this.stateDirection * position)\n this.__applyBackdrop(between(1 - position / width, 0, 1))\n\n if (evt.isFirst === true) {\n this.$refs.content.classList.add('no-transition')\n }\n },\n\n __show (evt, noEvent) {\n this.__addHistory()\n\n this.__setBackdropVisible(true)\n evt !== false && this.layout.__animate()\n this.__applyPosition(0)\n\n if (this.belowBreakpoint === true) {\n const otherSide = this.layout.instances[this.otherSide]\n if (otherSide !== void 0 && otherSide.belowBreakpoint === true) {\n otherSide.hide(false)\n }\n\n this.__applyBackdrop(1)\n this.layout.container !== true && this.__preventScroll(true)\n }\n else {\n this.__applyBackdrop(0)\n evt !== false && this.__setScrollable(false)\n }\n\n this.__setTimeout(() => {\n evt !== false && this.__setScrollable(true)\n noEvent !== true && this.$emit('show', evt)\n }, duration)\n },\n\n __hide (evt, noEvent) {\n this.__removeHistory()\n\n evt !== false && this.layout.__animate()\n\n this.__applyBackdrop(0)\n this.__applyPosition(this.stateDirection * this.size)\n this.__setBackdropVisible(false)\n\n this.__cleanup()\n\n noEvent !== true && this.__setTimeout(() => {\n this.$emit('hide', evt)\n }, duration)\n },\n\n __cleanup () {\n this.__preventScroll(false)\n this.__setScrollable(true)\n },\n\n __update (prop, val) {\n if (this.layout[this.side][prop] !== val) {\n this.layout[this.side][prop] = val\n }\n },\n\n __updateLocal (prop, val) {\n if (this[prop] !== val) {\n this[prop] = val\n }\n },\n\n __updateSizeOnLayout (miniToOverlay, size) {\n this.__update('size', miniToOverlay === true ? this.miniWidth : size)\n }\n },\n\n created () {\n this.layout.instances[this.side] = this\n this.__updateSizeOnLayout(this.miniToOverlay, this.size)\n this.__update('space', this.onLayout)\n this.__update('offset', this.offset)\n\n if (\n this.showIfAbove === true &&\n this.value !== true &&\n this.showing === true &&\n this.qListeners.input !== void 0\n ) {\n this.$emit('input', true)\n }\n },\n\n mounted () {\n this.$emit('on-layout', this.onLayout)\n this.$emit('mini-state', this.isMini)\n\n this.lastDesktopState = this.showIfAbove === true\n\n const fn = () => {\n const action = this.showing === true ? 'show' : 'hide'\n this[`__${action}`](false, true)\n }\n\n if (this.layout.totalWidth !== 0) {\n // make sure that all computed properties\n // have been updated before calling __show/__hide()\n this.$nextTick(fn)\n return\n }\n\n this.watcher = this.$watch('layout.totalWidth', () => {\n this.watcher()\n this.watcher = void 0\n\n if (this.showing === false && this.showIfAbove === true && this.belowBreakpoint === false) {\n this.show(false)\n }\n else {\n fn()\n }\n })\n },\n\n beforeDestroy () {\n this.watcher !== void 0 && this.watcher()\n clearTimeout(this.timerMini)\n\n this.showing === true && this.__cleanup()\n\n if (this.layout.instances[this.side] === this) {\n this.layout.instances[this.side] = void 0\n this.__update('size', 0)\n this.__update('offset', 0)\n this.__update('space', false)\n }\n },\n\n render (h) {\n const child = []\n\n if (this.belowBreakpoint === true) {\n this.noSwipeOpen !== true && child.push(\n h('div', {\n staticClass: `q-drawer__opener fixed-${this.side}`,\n attrs: ariaHidden,\n directives: this.openDirective\n })\n )\n\n child.push(\n h('div', {\n ref: 'backdrop',\n staticClass: 'fullscreen q-drawer__backdrop',\n class: this.backdropClass,\n attrs: ariaHidden,\n style: this.lastBackdropBg !== void 0\n ? { backgroundColor: this.lastBackdropBg }\n : null,\n on: cache(this, 'bkdrop', { click: this.hide }),\n directives: this.showing === false\n ? void 0\n : this.backdropCloseDirective\n })\n )\n }\n\n const content = [\n h('div', {\n staticClass: 'q-drawer__content fit ' + (this.layout.container === true ? 'overflow-auto' : 'scroll'),\n class: this.contentClass,\n style: this.contentStyle\n }, this.isMini === true && this.$scopedSlots.mini !== void 0\n ? this.$scopedSlots.mini()\n : slot(this, 'default')\n )\n ]\n\n if (this.elevated === true && this.showing === true) {\n content.push(\n h('div', {\n staticClass: 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'\n })\n )\n }\n\n child.push(\n h('aside', {\n ref: 'content',\n staticClass: `q-drawer`,\n class: this.classes,\n style: this.style,\n on: this.onNativeEvents,\n directives: this.belowBreakpoint === true\n ? this.contentCloseDirective\n : void 0\n }, content)\n )\n\n return h('div', { staticClass: 'q-drawer-container' }, child)\n }\n})\n","import { testPattern } from '../utils/patterns.js'\n\nconst lazyRulesValues = [ true, false, 'ondemand' ]\n\nexport default {\n props: {\n value: {},\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\n data () {\n return {\n isDirty: null,\n innerError: false,\n innerErrorMessage: void 0\n }\n },\n\n watch: {\n value () {\n this.__validateIfNeeded()\n },\n\n reactiveRules: {\n handler (val) {\n if (val === true) {\n if (this.unwatchRules === void 0) {\n this.unwatchRules = this.$watch('rules', () => {\n this.__validateIfNeeded(true)\n })\n }\n }\n else if (this.unwatchRules !== void 0) {\n this.unwatchRules()\n this.unwatchRules = void 0\n }\n },\n immediate: true\n },\n\n focused (focused) {\n if (this.lazyRules !== 'ondemand') {\n if (focused === true) {\n if (this.isDirty === null) {\n this.isDirty = false\n }\n }\n else if (this.isDirty === false && this.hasRules === true) {\n this.isDirty = true\n this.validate()\n }\n }\n }\n },\n\n computed: {\n hasRules () {\n return this.rules !== void 0 &&\n this.rules !== null &&\n this.rules.length > 0\n },\n\n hasError () {\n return this.error === true || this.innerError === true\n },\n\n computedErrorMessage () {\n return typeof this.errorMessage === 'string' && this.errorMessage.length > 0\n ? this.errorMessage\n : this.innerErrorMessage\n }\n },\n\n mounted () {\n this.validateIndex = 0\n },\n\n beforeDestroy () {\n this.unwatchRules !== void 0 && this.unwatchRules()\n },\n\n methods: {\n resetValidation () {\n this.validateIndex++\n this.innerLoading = false\n this.isDirty = null\n this.innerError = false\n this.innerErrorMessage = void 0\n },\n\n /*\n * Return value\n * - true (validation succeeded)\n * - false (validation failed)\n * - Promise (pending async validation)\n */\n validate (val = this.value) {\n if (this.hasRules !== true) {\n return true\n }\n\n this.validateIndex++\n\n if (this.innerLoading !== true && this.lazyRules !== true) {\n this.isDirty = true\n }\n\n const update = (err, msg) => {\n if (this.innerError !== err) {\n this.innerError = err\n }\n\n const m = msg || void 0\n\n if (this.innerErrorMessage !== m) {\n this.innerErrorMessage = m\n }\n\n if (this.innerLoading !== false) {\n this.innerLoading = false\n }\n }\n\n const promises = []\n\n for (let i = 0; i < this.rules.length; i++) {\n const rule = this.rules[i]\n let res\n\n if (typeof rule === 'function') {\n res = rule(val)\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 if (this.innerLoading !== true) {\n this.innerLoading = true\n }\n\n const index = this.validateIndex\n\n return Promise.all(promises).then(\n res => {\n if (index !== this.validateIndex) {\n return true\n }\n\n if (res === void 0 || Array.isArray(res) === false || res.length === 0) {\n update(false)\n return true\n }\n\n const msg = res.find(r => r === false || typeof r === 'string')\n update(msg !== void 0, msg)\n return msg === void 0\n },\n e => {\n if (index === this.validateIndex) {\n console.error(e)\n update(true)\n return false\n }\n\n return true\n }\n )\n },\n\n __validateIfNeeded (changedRules) {\n if (\n this.hasRules === true &&\n this.lazyRules !== 'ondemand' &&\n (this.isDirty === true || (this.lazyRules !== true && changedRules !== true))\n ) {\n this.validate()\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport { fromSSR } from '../../plugins/Platform.js'\n\nimport QIcon from '../icon/QIcon.js'\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport ValidateMixin from '../../mixins/validate.js'\nimport DarkMixin from '../../mixins/dark.js'\nimport AttrsMixin from '../../mixins/attrs.js'\n\nimport { slot } from '../../utils/slot.js'\nimport uid from '../../utils/uid.js'\nimport { stop, prevent, stopAndPrevent } from '../../utils/event.js'\n\nfunction getTargetUid (val) {\n return val === void 0 ? `f_${uid()}` : val\n}\n\nexport default Vue.extend({\n name: 'QField',\n\n mixins: [ DarkMixin, ValidateMixin, AttrsMixin ],\n\n inheritAttrs: false,\n\n props: {\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 maxValues: [Number, String] // private, do not add to JSON; internally needed by QSelect\n },\n\n data () {\n return {\n focused: false,\n targetUid: getTargetUid(this.for),\n\n // used internally by validation for QInput\n // or menu handling for QSelect\n innerLoading: false\n }\n },\n\n watch: {\n for (val) {\n // don't transform targetUid into a computed\n // prop as it will break SSR\n this.targetUid = getTargetUid(val)\n }\n },\n\n computed: {\n editable () {\n return this.disable !== true && this.readonly !== true\n },\n\n hasValue () {\n const value = this.__getControl === void 0 ? this.value : this.innerValue\n\n return value !== void 0 &&\n value !== null &&\n ('' + value).length > 0\n },\n\n computedCounter () {\n if (this.counter !== false) {\n const len = typeof this.value === 'string' || typeof this.value === 'number'\n ? ('' + this.value).length\n : (Array.isArray(this.value) === true ? this.value.length : 0)\n\n const max = this.maxlength !== void 0\n ? this.maxlength\n : this.maxValues\n\n return len + (max !== void 0 ? ' / ' + max : '')\n }\n },\n\n floatingLabel () {\n return this.stackLabel === true ||\n this.focused === true ||\n (\n this.inputValue !== void 0 && this.hideSelected === true\n ? this.inputValue.length > 0\n : this.hasValue === true\n ) ||\n (\n this.displayValue !== void 0 &&\n this.displayValue !== null &&\n ('' + this.displayValue).length > 0\n )\n },\n\n shouldRenderBottom () {\n return this.bottomSlots === true ||\n this.hint !== void 0 ||\n this.hasRules === true ||\n this.counter === true ||\n this.error !== null\n },\n\n classes () {\n return {\n [this.fieldClass]: this.fieldClass !== void 0,\n\n [`q-field--${this.styleType}`]: true,\n 'q-field--rounded': this.rounded,\n 'q-field--square': this.square,\n\n 'q-field--focused': this.focused === true || this.hasError === true,\n 'q-field--float': this.floatingLabel,\n 'q-field--labeled': this.hasLabel,\n\n 'q-field--dense': this.dense,\n 'q-field--item-aligned q-item-type': this.itemAligned,\n 'q-field--dark': this.isDark,\n\n 'q-field--auto-height': this.__getControl === void 0,\n\n 'q-field--with-bottom': this.hideBottomSpace !== true && this.shouldRenderBottom === true,\n 'q-field--error': this.hasError,\n\n 'q-field--readonly': this.readonly === true && this.disable !== true,\n 'q-field--disabled': this.disable\n }\n },\n\n styleType () {\n if (this.filled === true) { return 'filled' }\n if (this.outlined === true) { return 'outlined' }\n if (this.borderless === true) { return 'borderless' }\n if (this.standout) { return 'standout' }\n return 'standard'\n },\n\n contentClass () {\n const cls = []\n\n if (this.hasError === true) {\n cls.push('text-negative')\n }\n else if (typeof this.standout === 'string' && this.standout.length > 0 && this.focused === true) {\n return this.standout\n }\n else if (this.color !== void 0) {\n cls.push('text-' + this.color)\n }\n\n if (this.bgColor !== void 0) {\n cls.push(`bg-${this.bgColor}`)\n }\n\n return cls\n },\n\n hasLabel () {\n return this.labelSlot === true || this.label !== void 0\n },\n\n labelClass () {\n if (\n this.labelColor !== void 0 &&\n this.hasError !== true\n ) {\n return 'text-' + this.labelColor\n }\n },\n\n controlSlotScope () {\n return {\n id: this.targetUid,\n field: this.$el,\n editable: this.editable,\n focused: this.focused,\n floatingLabel: this.floatingLabel,\n value: this.value,\n emitValue: this.__emitValue\n }\n },\n\n attrs () {\n const attrs = {\n for: this.targetUid\n }\n\n if (this.disable === true) {\n attrs['aria-disabled'] = 'true'\n }\n else if (this.readonly === true) {\n attrs['aria-readonly'] = 'true'\n }\n\n return attrs\n }\n },\n\n methods: {\n focus () {\n if (this.showPopup !== void 0 && this.hasDialog === true) {\n this.showPopup()\n return\n }\n\n this.__focus()\n },\n\n blur () {\n const el = document.activeElement\n // IE can have null document.activeElement\n if (el !== null && this.$el.contains(el)) {\n el.blur()\n }\n },\n\n __focus () {\n const el = document.activeElement\n let target = this.$refs.target\n // IE can have null document.activeElement\n if (target !== void 0 && (el === null || el.id !== this.targetUid)) {\n target.hasAttribute('tabindex') === true || (target = target.querySelector('[tabindex]'))\n target !== null && target !== el && target.focus()\n }\n },\n\n __getContent (h) {\n const node = []\n\n this.$scopedSlots.prepend !== void 0 && node.push(\n h('div', {\n staticClass: 'q-field__prepend q-field__marginal row no-wrap items-center',\n key: 'prepend',\n on: this.slotsEvents\n }, this.$scopedSlots.prepend())\n )\n\n node.push(\n h('div', {\n staticClass: 'q-field__control-container col relative-position row no-wrap q-anchor--skip'\n }, this.__getControlContainer(h))\n )\n\n this.$scopedSlots.append !== void 0 && node.push(\n h('div', {\n staticClass: 'q-field__append q-field__marginal row no-wrap items-center',\n key: 'append',\n on: this.slotsEvents\n }, this.$scopedSlots.append())\n )\n\n this.hasError === true && this.noErrorIcon === false && node.push(\n this.__getInnerAppendNode(h, 'error', [\n h(QIcon, { props: { name: this.$q.iconSet.field.error, color: 'negative' } })\n ])\n )\n\n if (this.loading === true || this.innerLoading === true) {\n node.push(\n this.__getInnerAppendNode(\n h,\n 'inner-loading-append',\n this.$scopedSlots.loading !== void 0\n ? this.$scopedSlots.loading()\n : [ h(QSpinner, { props: { color: this.color } }) ]\n )\n )\n }\n else if (this.clearable === true && this.hasValue === true && this.editable === true) {\n node.push(\n this.__getInnerAppendNode(h, 'inner-clearable-append', [\n h(QIcon, {\n staticClass: 'q-field__focusable-action',\n props: { tag: 'button', name: this.clearIcon || this.$q.iconSet.field.clear },\n attrs: { tabindex: 0, type: 'button' },\n on: this.clearableEvents\n })\n ])\n )\n }\n\n this.__getInnerAppend !== void 0 && node.push(\n this.__getInnerAppendNode(h, 'inner-append', this.__getInnerAppend(h))\n )\n\n this.__getControlChild !== void 0 && node.push(\n this.__getControlChild(h)\n )\n\n return node\n },\n\n __getControlContainer (h) {\n const node = []\n\n this.prefix !== void 0 && this.prefix !== null && node.push(\n h('div', {\n staticClass: 'q-field__prefix no-pointer-events row items-center'\n }, [ this.prefix ])\n )\n\n if (this.hasShadow === true && this.__getShadowControl !== void 0) {\n node.push(\n this.__getShadowControl(h)\n )\n }\n\n if (this.__getControl !== void 0) {\n node.push(this.__getControl(h))\n }\n // internal usage only:\n else if (this.$scopedSlots.rawControl !== void 0) {\n node.push(this.$scopedSlots.rawControl())\n }\n else if (this.$scopedSlots.control !== void 0) {\n node.push(\n h('div', {\n ref: 'target',\n staticClass: 'q-field__native row',\n attrs: {\n ...this.qAttrs,\n 'data-autofocus': this.autofocus\n }\n }, this.$scopedSlots.control(this.controlSlotScope))\n )\n }\n\n this.hasLabel === true && node.push(\n h('div', {\n staticClass: 'q-field__label no-pointer-events absolute ellipsis',\n class: this.labelClass\n }, [ slot(this, 'label', this.label) ])\n )\n\n this.suffix !== void 0 && this.suffix !== null && node.push(\n h('div', {\n staticClass: 'q-field__suffix no-pointer-events row items-center'\n }, [ this.suffix ])\n )\n\n return node.concat(\n this.__getDefaultSlot !== void 0\n ? this.__getDefaultSlot(h)\n : slot(this, 'default')\n )\n },\n\n __getBottom (h) {\n let msg, key\n\n if (this.hasError === true) {\n if (this.computedErrorMessage !== void 0) {\n msg = [ h('div', [ this.computedErrorMessage ]) ]\n key = this.computedErrorMessage\n }\n else {\n msg = slot(this, 'error')\n key = 'q--slot-error'\n }\n }\n else if (this.hideHint !== true || this.focused === true) {\n if (this.hint !== void 0) {\n msg = [ h('div', [ this.hint ]) ]\n key = this.hint\n }\n else {\n msg = slot(this, 'hint')\n key = 'q--slot-hint'\n }\n }\n\n const hasCounter = this.counter === true || this.$scopedSlots.counter !== void 0\n\n if (this.hideBottomSpace === true && hasCounter === false && msg === void 0) {\n return\n }\n\n const main = h('div', {\n key,\n staticClass: 'q-field__messages col'\n }, msg)\n\n return h('div', {\n staticClass: 'q-field__bottom row items-start q-field__bottom--' +\n (this.hideBottomSpace !== true ? 'animated' : 'stale')\n }, [\n this.hideBottomSpace === true\n ? main\n : h('transition', { props: { name: 'q-transition--field-message' } }, [\n main\n ]),\n\n hasCounter === true\n ? h('div', {\n staticClass: 'q-field__counter'\n }, this.$scopedSlots.counter !== void 0 ? this.$scopedSlots.counter() : [ this.computedCounter ])\n : null\n ])\n },\n\n __getInnerAppendNode (h, key, content) {\n return content === null ? null : h('div', {\n staticClass: 'q-field__append q-field__marginal row no-wrap items-center q-anchor--skip',\n key\n }, content)\n },\n\n __onControlPopupShow (e) {\n e !== void 0 && stop(e)\n this.$emit('popup-show', e)\n this.hasPopupOpen = true\n this.__onControlFocusin(e)\n },\n\n __onControlPopupHide (e) {\n e !== void 0 && stop(e)\n this.$emit('popup-hide', e)\n this.hasPopupOpen = false\n this.__onControlFocusout(e)\n },\n\n __onControlFocusin (e) {\n if (this.editable === true && this.focused === false) {\n this.focused = true\n this.$emit('focus', e)\n }\n },\n\n __onControlFocusout (e, then) {\n clearTimeout(this.focusoutTimer)\n this.focusoutTimer = setTimeout(() => {\n if (\n document.hasFocus() === true && (\n this.hasPopupOpen === true ||\n this.$refs === void 0 ||\n this.$refs.control === void 0 ||\n this.$refs.control.contains(document.activeElement) !== false\n )\n ) {\n return\n }\n\n if (this.focused === true) {\n this.focused = false\n this.$emit('blur', e)\n }\n\n then !== void 0 && then()\n })\n },\n\n __clearValue (e) {\n // prevent activating the field but keep focus on desktop\n stopAndPrevent(e)\n const el = this.$refs.target || this.$el\n el.focus()\n\n if (this.type === 'file') {\n // do not let focus be triggered\n // as it will make the native file dialog\n // appear for another selection\n this.$refs.input.value = null\n }\n\n this.$emit('input', null)\n this.$emit('clear', this.value)\n },\n\n __emitValue (value) {\n this.$emit('input', value)\n }\n },\n\n render (h) {\n this.__onPreRender !== void 0 && this.__onPreRender()\n this.__onPostRender !== void 0 && this.$nextTick(this.__onPostRender)\n\n return h('label', {\n staticClass: 'q-field q-validation-component row no-wrap items-start',\n class: this.classes,\n attrs: this.attrs\n }, [\n this.$scopedSlots.before !== void 0 ? h('div', {\n staticClass: 'q-field__before q-field__marginal row no-wrap items-center',\n on: this.slotsEvents\n }, this.$scopedSlots.before()) : null,\n\n h('div', {\n staticClass: 'q-field__inner relative-position col self-stretch column justify-center'\n }, [\n h('div', {\n ref: 'control',\n staticClass: 'q-field__control relative-position row no-wrap',\n class: this.contentClass,\n attrs: { tabindex: -1 },\n on: this.controlEvents\n }, this.__getContent(h)),\n\n this.shouldRenderBottom === true\n ? this.__getBottom(h)\n : null\n ]),\n\n this.$scopedSlots.after !== void 0 ? h('div', {\n staticClass: 'q-field__after q-field__marginal row no-wrap items-center',\n on: this.slotsEvents\n }, this.$scopedSlots.after()) : null\n ])\n },\n\n created () {\n this.__onPreRender !== void 0 && this.__onPreRender()\n\n this.slotsEvents = { click: prevent }\n\n this.clearableEvents = { click: this.__clearValue }\n\n this.controlEvents = this.__getControlEvents !== void 0\n ? this.__getControlEvents()\n : {\n focusin: this.__onControlFocusin,\n focusout: this.__onControlFocusout,\n 'popup-show': this.__onControlPopupShow,\n 'popup-hide': this.__onControlPopupHide\n }\n },\n\n mounted () {\n if (fromSSR === true && this.for === void 0) {\n this.targetUid = getTargetUid()\n }\n\n this.autofocus === true && this.focus()\n },\n\n beforeDestroy () {\n clearTimeout(this.focusoutTimer)\n }\n})\n","import { stopAndPrevent } from '../utils/event.js'\nimport cache from '../utils/cache.js'\n\nfunction filterFiles (files, rejectedFiles, failedPropValidation, filterFn) {\n const acceptedFiles = []\n\n files.forEach(file => {\n if (filterFn(file) === true) {\n acceptedFiles.push(file)\n }\n else {\n rejectedFiles.push({ failedPropValidation, file })\n }\n })\n\n return acceptedFiles\n}\n\nexport default {\n props: {\n multiple: Boolean,\n accept: String,\n capture: String,\n maxFileSize: [ Number, String ],\n maxTotalSize: [ Number, String ],\n maxFiles: [ Number, String ],\n filter: Function\n },\n\n computed: {\n extensions () {\n if (this.accept !== void 0) {\n return this.accept.split(',').map(ext => {\n ext = ext.trim()\n if (ext === '*') { // support \"*\"\n return '*/'\n }\n else if (ext.endsWith('/*')) { // support \"image/*\" or \"*/*\"\n ext = ext.slice(0, ext.length - 1)\n }\n return ext.toUpperCase()\n })\n }\n },\n\n maxFilesNumber () {\n return parseInt(this.maxFiles, 10)\n },\n\n maxTotalSizeNumber () {\n return parseInt(this.maxTotalSize, 10)\n }\n },\n\n methods: {\n pickFiles (e) {\n if (this.editable) {\n const input = this.__getFileInput()\n input && input.click(e)\n }\n },\n\n addFiles (files) {\n if (this.editable && files) {\n this.__addFiles(null, files)\n }\n },\n\n __processFiles (e, filesToProcess, currentFileList, append) {\n let files = Array.from(filesToProcess || e.target.files)\n const rejectedFiles = []\n\n const done = () => {\n if (rejectedFiles.length > 0) {\n this.$emit('rejected', rejectedFiles)\n }\n }\n\n // filter file types\n if (this.accept !== void 0 && this.extensions.indexOf('*/') === -1) {\n files = filterFiles(files, rejectedFiles, 'accept', file => {\n return this.extensions.some(ext => (\n file.type.toUpperCase().startsWith(ext) ||\n file.name.toUpperCase().endsWith(ext)\n ))\n })\n\n if (files.length === 0) { return done() }\n }\n\n // filter max file size\n if (this.maxFileSize !== void 0) {\n const maxFileSize = parseInt(this.maxFileSize, 10)\n files = filterFiles(files, rejectedFiles, 'max-file-size', file => {\n return file.size <= maxFileSize\n })\n\n if (files.length === 0) { return done() }\n }\n\n // Cordova/iOS allows selecting multiple files even when the\n // multiple attribute is not specified. We also normalize drag'n'dropped\n // files here:\n if (this.multiple !== true) {\n files = [ files[0] ]\n }\n\n if (this.maxTotalSize !== void 0) {\n let size = append === true\n ? currentFileList.reduce((total, file) => total + file.size, 0)\n : 0\n\n files = filterFiles(files, rejectedFiles, 'max-total-size', file => {\n size += file.size\n return size <= this.maxTotalSizeNumber\n })\n\n if (files.length === 0) { return done() }\n }\n\n // do we have custom filter function?\n if (typeof this.filter === 'function') {\n const filteredFiles = this.filter(files)\n files = filterFiles(files, rejectedFiles, 'filter', file => {\n return filteredFiles.includes(file)\n })\n }\n\n if (this.maxFiles !== void 0) {\n let filesNumber = append === true\n ? currentFileList.length\n : 0\n\n files = filterFiles(files, rejectedFiles, 'max-files', () => {\n filesNumber++\n return filesNumber <= this.maxFilesNumber\n })\n\n if (files.length === 0) { return done() }\n }\n\n done()\n\n if (files.length > 0) {\n return files\n }\n },\n\n __onDragOver (e) {\n stopAndPrevent(e)\n this.dnd = true\n },\n\n __onDragLeave (e) {\n stopAndPrevent(e)\n this.dnd = false\n },\n\n __onDrop (e) {\n stopAndPrevent(e)\n const files = e.dataTransfer.files\n\n if (files.length > 0) {\n this.__addFiles(null, files)\n }\n\n this.dnd = false\n },\n\n __getDnd (h, type) {\n if (this.dnd === true) {\n return h('div', {\n staticClass: `q-${type}__dnd absolute-full`,\n on: cache(this, 'dnd', {\n dragenter: stopAndPrevent,\n dragover: stopAndPrevent,\n dragleave: this.__onDragLeave,\n drop: this.__onDrop\n })\n })\n }\n }\n }\n}\n\nexport const FileValueMixin = {\n computed: {\n formDomProps () {\n if (this.type !== 'file') {\n return\n }\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(this.value) === this.value) {\n ('length' in this.value\n ? Array.from(this.value)\n : [ this.value ]\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}\n","import { shouldIgnoreKey } from '../utils/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 default {\n props: {\n mask: String,\n reverseFillMask: Boolean,\n fillMask: [Boolean, String],\n unmaskedValue: Boolean\n },\n\n watch: {\n type () {\n this.__updateMaskInternals()\n },\n\n mask (v) {\n if (v !== void 0) {\n this.__updateMaskValue(this.innerValue, true)\n }\n else {\n const val = this.__unmask(this.innerValue)\n this.__updateMaskInternals()\n this.value !== val && this.$emit('input', val)\n }\n },\n\n fillMask () {\n this.hasMask === true && this.__updateMaskValue(this.innerValue, true)\n },\n\n reverseFillMask () {\n this.hasMask === true && this.__updateMaskValue(this.innerValue, true)\n },\n\n unmaskedValue () {\n this.hasMask === true && this.__updateMaskValue(this.innerValue)\n }\n },\n\n methods: {\n __getInitialMaskedValue () {\n this.__updateMaskInternals()\n\n if (this.hasMask === true) {\n const masked = this.__mask(this.__unmask(this.value))\n\n return this.fillMask !== false\n ? this.__fillWithMask(masked)\n : masked\n }\n\n return this.value\n },\n\n __getPaddedMaskMarked (size) {\n if (size < this.maskMarked.length) {\n return this.maskMarked.slice(-size)\n }\n\n let\n maskMarked = this.maskMarked,\n pad = ''\n const\n padPos = maskMarked.indexOf(MARKER)\n\n if (padPos > -1) {\n for (let i = size - maskMarked.length; i > 0; i--) {\n pad += MARKER\n }\n\n maskMarked = maskMarked.slice(0, padPos) + pad + maskMarked.slice(padPos)\n }\n\n return maskMarked\n },\n\n __updateMaskInternals () {\n this.hasMask = this.mask !== void 0 &&\n this.mask.length > 0 &&\n ['text', 'search', 'url', 'tel', 'password'].includes(this.type)\n\n if (this.hasMask === false) {\n this.computedUnmask = void 0\n this.maskMarked = ''\n this.maskReplaced = ''\n return\n }\n\n const\n computedMask = NAMED_MASKS[this.mask] === void 0\n ? this.mask\n : NAMED_MASKS[this.mask],\n fillChar = typeof this.fillMask === 'string' && this.fillMask.length > 0\n ? this.fillMask.slice(0, 1)\n : '_',\n fillCharEscaped = fillChar.replace(escRegex, '\\\\$&'),\n unmask = [],\n extract = [],\n mask = []\n\n let\n firstMatch = this.reverseFillMask === true,\n unmaskChar = '',\n negateChar = ''\n\n computedMask.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 '$'\n ),\n extractLast = extract.length - 1,\n extractMatcher = extract.map((re, index) => {\n if (index === 0 && this.reverseFillMask === true) {\n return new RegExp('^' + fillCharEscaped + '*' + re)\n }\n else if (index === extractLast) {\n return new RegExp(\n '^' + re +\n '(' + (negateChar === '' ? '.' : negateChar) + '+)?' +\n (this.reverseFillMask === true ? '$' : fillCharEscaped + '*')\n )\n }\n\n return new RegExp('^' + re)\n })\n\n this.computedMask = mask\n this.computedUnmask = val => {\n const unmaskMatch = unmaskMatcher.exec(val)\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 this.maskMarked = mask.map(v => typeof v === 'string' ? v : MARKER).join('')\n this.maskReplaced = this.maskMarked.split(MARKER).join(fillChar)\n },\n\n __updateMaskValue (rawVal, updateMaskInternals, inputType) {\n const\n inp = this.$refs.input,\n end = inp.selectionEnd,\n endReverse = inp.value.length - end,\n unmasked = this.__unmask(rawVal)\n\n // Update here so unmask uses the original fillChar\n updateMaskInternals === true && this.__updateMaskInternals()\n\n const\n preMasked = this.__mask(unmasked),\n masked = this.fillMask !== false\n ? this.__fillWithMask(preMasked)\n : preMasked,\n changed = this.innerValue !== masked\n\n // We want to avoid \"flickering\" so we set value immediately\n inp.value !== masked && (inp.value = masked)\n\n changed === true && (this.innerValue = masked)\n\n document.activeElement === inp && this.$nextTick(() => {\n if (masked === this.maskReplaced) {\n const cursor = this.reverseFillMask === true ? this.maskReplaced.length : 0\n inp.setSelectionRange(cursor, cursor, 'forward')\n\n return\n }\n\n if (inputType === 'insertFromPaste' && this.reverseFillMask !== true) {\n const cursor = end - 1\n this.__moveCursorRight(inp, cursor, cursor)\n\n return\n }\n\n if (['deleteContentBackward', 'deleteContentForward'].indexOf(inputType) > -1) {\n const cursor = this.reverseFillMask === true\n ? Math.max(0, masked.length - (masked === this.maskReplaced ? 0 : Math.min(preMasked.length, endReverse) + 1)) + 1\n : end\n inp.setSelectionRange(cursor, cursor, 'forward')\n\n return\n }\n\n if (this.reverseFillMask === true) {\n if (changed === true) {\n const cursor = Math.max(0, masked.length - (masked === this.maskReplaced ? 0 : Math.min(preMasked.length, endReverse + 1)))\n this.__moveCursorRightReverse(inp, cursor, cursor)\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, this.maskMarked.indexOf(MARKER), Math.min(preMasked.length, end) - 1)\n this.__moveCursorRight(inp, cursor, cursor)\n }\n else {\n const cursor = end - 1\n this.__moveCursorRight(inp, cursor, cursor)\n }\n }\n })\n\n const val = this.unmaskedValue === true\n ? this.__unmask(masked)\n : masked\n\n this.value !== val && this.__emitValue(val, true)\n },\n\n __moveCursorForPaste (inp, start, end) {\n const preMasked = this.__mask(this.__unmask(inp.value))\n\n start = Math.max(0, this.maskMarked.indexOf(MARKER), Math.min(preMasked.length, start))\n\n inp.setSelectionRange(start, end, 'forward')\n },\n\n __moveCursorLeft (inp, start, end, selection) {\n const noMarkBefore = this.maskMarked.slice(start - 1).indexOf(MARKER) === -1\n let i = Math.max(0, start - 1)\n\n for (; i >= 0; i--) {\n if (this.maskMarked[i] === MARKER) {\n start = i\n noMarkBefore === true && start++\n break\n }\n }\n\n if (\n i < 0 &&\n this.maskMarked[start] !== void 0 &&\n this.maskMarked[start] !== MARKER\n ) {\n return this.__moveCursorRight(inp, 0, 0)\n }\n\n start >= 0 && inp.setSelectionRange(\n start,\n selection === true ? end : start, 'backward'\n )\n },\n\n __moveCursorRight (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 (this.maskMarked[i] === MARKER) {\n end = i\n break\n }\n else if (this.maskMarked[i - 1] === MARKER) {\n end = i\n }\n }\n\n if (\n i > limit &&\n this.maskMarked[end - 1] !== void 0 &&\n this.maskMarked[end - 1] !== MARKER\n ) {\n return this.__moveCursorLeft(inp, limit, limit)\n }\n\n inp.setSelectionRange(selection ? start : end, end, 'forward')\n },\n\n __moveCursorLeftReverse (inp, start, end, selection) {\n const\n maskMarked = this.__getPaddedMaskMarked(inp.value.length)\n let i = Math.max(0, start - 1)\n\n for (; i >= 0; i--) {\n if (maskMarked[i - 1] === MARKER) {\n start = i\n break\n }\n else if (maskMarked[i] === MARKER) {\n start = i\n if (i === 0) {\n break\n }\n }\n }\n\n if (\n i < 0 &&\n maskMarked[start] !== void 0 &&\n maskMarked[start] !== MARKER\n ) {\n return this.__moveCursorRightReverse(inp, 0, 0)\n }\n\n start >= 0 && inp.setSelectionRange(\n start,\n selection === true ? end : start, 'backward'\n )\n },\n\n __moveCursorRightReverse (inp, start, end, selection) {\n const\n limit = inp.value.length,\n maskMarked = this.__getPaddedMaskMarked(limit),\n noMarkBefore = maskMarked.slice(0, end + 1).indexOf(MARKER) === -1\n let i = Math.min(limit, end + 1)\n\n for (; i <= limit; i++) {\n if (maskMarked[i - 1] === MARKER) {\n end = i\n end > 0 && noMarkBefore === true && end--\n break\n }\n }\n\n if (\n i > limit &&\n maskMarked[end - 1] !== void 0 &&\n maskMarked[end - 1] !== MARKER\n ) {\n return this.__moveCursorLeftReverse(inp, limit, limit)\n }\n\n inp.setSelectionRange(selection === true ? start : end, end, 'forward')\n },\n\n __onMaskedKeydown (e) {\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const\n inp = this.$refs.input,\n start = inp.selectionStart,\n end = inp.selectionEnd\n\n if (e.keyCode === 37 || e.keyCode === 39) { // Left / Right\n const fn = this['__moveCursor' + (e.keyCode === 39 ? 'Right' : 'Left') + (this.reverseFillMask === true ? 'Reverse' : '')]\n\n e.preventDefault()\n fn(inp, start, end, e.shiftKey)\n }\n else if (\n e.keyCode === 8 && // Backspace\n this.reverseFillMask !== true &&\n start === end\n ) {\n this.__moveCursorLeft(inp, start, end, true)\n }\n else if (\n e.keyCode === 46 && // Delete\n this.reverseFillMask === true &&\n start === end\n ) {\n this.__moveCursorRightReverse(inp, start, end, true)\n }\n\n this.$emit('keydown', e)\n },\n\n __mask (val) {\n if (val === void 0 || val === null || val === '') { return '' }\n\n if (this.reverseFillMask === true) {\n return this.__maskReverse(val)\n }\n\n const mask = this.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 __maskReverse (val) {\n const\n mask = this.computedMask,\n firstTokenIndex = this.maskMarked.indexOf(MARKER)\n\n let valIndex = val.length - 1, output = ''\n\n for (let maskIndex = mask.length - 1; maskIndex >= 0; 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 __unmask (val) {\n return typeof val !== 'string' || this.computedUnmask === void 0\n ? (typeof val === 'number' ? this.computedUnmask('' + val) : val)\n : this.computedUnmask(val)\n },\n\n __fillWithMask (val) {\n if (this.maskReplaced.length - val.length <= 0) {\n return val\n }\n\n return this.reverseFillMask === true && val.length > 0\n ? this.maskReplaced.slice(0, -val.length) + val\n : val + this.maskReplaced.slice(val.length)\n }\n }\n}\n","const 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]/\n\nexport default {\n methods: {\n __onComposition (e) {\n if (e.type === 'compositionend' || e.type === 'change') {\n if (e.target.composing !== true) { return }\n e.target.composing = false\n this.__onInput(e)\n }\n else if (e.type === 'compositionupdate') {\n if (\n typeof e.data === 'string' &&\n isJapanese.test(e.data) === false &&\n isChinese.test(e.data) === false &&\n isKorean.test(e.data) === false\n ) {\n e.target.composing = false\n }\n }\n else {\n e.target.composing = true\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport QField from '../field/QField.js'\n\nimport { FormFieldMixin } from '../../mixins/form.js'\nimport { FileValueMixin } from '../../mixins/file.js'\nimport MaskMixin from '../../mixins/mask.js'\nimport CompositionMixin from '../../mixins/composition.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { stop } from '../../utils/event.js'\n\nexport default Vue.extend({\n name: 'QInput',\n\n mixins: [\n QField,\n MaskMixin,\n CompositionMixin,\n FormFieldMixin,\n FileValueMixin,\n ListenersMixin\n ],\n\n props: {\n value: { 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 watch: {\n value (v) {\n if (this.hasMask === true) {\n if (this.stopValueWatcher === true) {\n this.stopValueWatcher = false\n return\n }\n\n this.__updateMaskValue(v)\n }\n else if (this.innerValue !== v) {\n this.innerValue = v\n\n if (\n this.type === 'number' &&\n this.hasOwnProperty('tempValue') === true\n ) {\n if (this.typedNumber === true) {\n this.typedNumber = false\n }\n else {\n delete this.tempValue\n }\n }\n }\n\n // textarea only\n this.autogrow === true && this.$nextTick(this.__adjustHeight)\n },\n\n autogrow (autogrow) {\n // textarea only\n if (autogrow === true) {\n this.$nextTick(this.__adjustHeight)\n }\n // if it has a number of rows set respect it\n else if (this.qAttrs.rows > 0 && this.$refs.input !== void 0) {\n const inp = this.$refs.input\n inp.style.height = 'auto'\n }\n },\n\n dense () {\n this.autogrow === true && this.$nextTick(this.__adjustHeight)\n }\n },\n\n data () {\n return { innerValue: this.__getInitialMaskedValue() }\n },\n\n computed: {\n isTextarea () {\n return this.type === 'textarea' || this.autogrow === true\n },\n\n fieldClass () {\n return `q-${this.isTextarea === true ? 'textarea' : 'input'}` +\n (this.autogrow === true ? ' q-textarea--autogrow' : '')\n },\n\n hasShadow () {\n return this.type !== 'file' &&\n typeof this.shadowText === 'string' &&\n this.shadowText.length > 0\n },\n\n onEvents () {\n const on = {\n ...this.qListeners,\n input: this.__onInput,\n paste: this.__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 change: this.__onChange,\n blur: this.__onFinishEditing,\n focus: stop\n }\n\n on.compositionstart = on.compositionupdate = on.compositionend = this.__onComposition\n\n if (this.hasMask === true) {\n on.keydown = this.__onMaskedKeydown\n }\n\n if (this.autogrow === true) {\n on.animationend = this.__adjustHeight\n }\n\n return on\n },\n\n inputAttrs () {\n const attrs = {\n tabindex: 0,\n 'data-autofocus': this.autofocus,\n rows: this.type === 'textarea' ? 6 : void 0,\n 'aria-label': this.label,\n name: this.nameProp,\n ...this.qAttrs,\n id: this.targetUid,\n type: this.type,\n maxlength: this.maxlength,\n disabled: this.disable === true,\n readonly: this.readonly === true\n }\n\n if (this.autogrow === true) {\n attrs.rows = 1\n }\n\n return attrs\n }\n },\n\n methods: {\n focus () {\n const el = document.activeElement\n if (\n this.$refs.input !== void 0 &&\n this.$refs.input !== el &&\n // IE can have null document.activeElement\n (el === null || el.id !== this.targetUid)\n ) {\n this.$refs.input.focus()\n }\n },\n\n select () {\n this.$refs.input !== void 0 && this.$refs.input.select()\n },\n\n __onPaste (e) {\n if (this.hasMask === true && this.reverseFillMask !== true) {\n const inp = e.target\n this.__moveCursorForPaste(inp, inp.selectionStart, inp.selectionEnd)\n }\n\n this.$emit('paste', e)\n },\n\n __onInput (e) {\n if (e && e.target && e.target.composing === true) {\n return\n }\n\n if (this.type === 'file') {\n this.$emit('input', e.target.files)\n return\n }\n\n const val = e.target.value\n\n if (this.hasMask === true) {\n this.__updateMaskValue(val, false, e.inputType)\n }\n else {\n this.__emitValue(val)\n }\n\n // we need to trigger it immediately too,\n // to avoid \"flickering\"\n this.autogrow === true && this.__adjustHeight()\n },\n\n __emitValue (val, stopWatcher) {\n this.emitValueFn = () => {\n if (\n this.type !== 'number' &&\n this.hasOwnProperty('tempValue') === true\n ) {\n delete this.tempValue\n }\n\n if (this.value !== val) {\n stopWatcher === true && (this.stopValueWatcher = true)\n this.$emit('input', val)\n }\n\n this.emitValueFn = void 0\n }\n\n if (this.type === 'number') {\n this.typedNumber = true\n this.tempValue = val\n }\n\n if (this.debounce !== void 0) {\n clearTimeout(this.emitTimer)\n this.tempValue = val\n this.emitTimer = setTimeout(this.emitValueFn, this.debounce)\n }\n else {\n this.emitValueFn()\n }\n },\n\n // textarea only\n __adjustHeight () {\n const inp = this.$refs.input\n if (inp !== void 0) {\n const parentStyle = inp.parentNode.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 parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'\n inp.style.height = '1px'\n\n inp.style.height = inp.scrollHeight + 'px'\n parentStyle.marginBottom = ''\n }\n },\n\n __onChange (e) {\n this.__onComposition(e)\n\n clearTimeout(this.emitTimer)\n this.emitValueFn !== void 0 && this.emitValueFn()\n\n this.$emit('change', e)\n },\n\n __onFinishEditing (e) {\n e !== void 0 && stop(e)\n\n clearTimeout(this.emitTimer)\n this.emitValueFn !== void 0 && this.emitValueFn()\n\n this.typedNumber = false\n this.stopValueWatcher = false\n delete this.tempValue\n\n this.type !== 'file' && this.$nextTick(() => {\n if (this.$refs.input !== void 0) {\n this.$refs.input.value = this.innerValue !== void 0 ? this.innerValue : ''\n }\n })\n },\n\n __getCurValue () {\n return this.hasOwnProperty('tempValue') === true\n ? this.tempValue\n : (this.innerValue !== void 0 ? this.innerValue : '')\n },\n\n __getShadowControl (h) {\n return h('div', {\n staticClass: 'q-field__native q-field__shadow absolute-full no-pointer-events'\n }, [\n h('span', { staticClass: 'invisible' }, this.__getCurValue()),\n h('span', this.shadowText)\n ])\n },\n\n __getControl (h) {\n return h(this.isTextarea === true ? 'textarea' : 'input', {\n ref: 'input',\n staticClass: 'q-field__native q-placeholder',\n style: this.inputStyle,\n class: this.inputClass,\n attrs: this.inputAttrs,\n on: this.onEvents,\n domProps: this.type !== 'file'\n ? { value: this.__getCurValue() }\n : this.formDomProps\n })\n }\n },\n\n mounted () {\n // textarea only\n this.autogrow === true && this.__adjustHeight()\n },\n\n beforeDestroy () {\n this.__onFinishEditing()\n }\n})\n","import Vue from 'vue'\n\nimport AnchorMixin from '../../mixins/anchor.js'\nimport ModelToggleMixin from '../../mixins/model-toggle.js'\nimport PortalMixin from '../../mixins/portal.js'\nimport TransitionMixin from '../../mixins/transition.js'\n\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { getTouchTarget } from '../../utils/touch.js'\nimport { addEvt, cleanEvt } from '../../utils/event.js'\nimport { clearSelection } from '../../utils/selection.js'\nimport { slot } from '../../utils/slot.js'\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/position-engine.js'\n\nexport default Vue.extend({\n name: 'QTooltip',\n\n mixins: [ AnchorMixin, ModelToggleMixin, PortalMixin, TransitionMixin ],\n\n props: {\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 computed: {\n anchorOrigin () {\n return parsePosition(this.anchor)\n },\n\n selfOrigin () {\n return parsePosition(this.self)\n },\n\n hideOnRouteChange () {\n return this.persistent !== true\n }\n },\n\n methods: {\n __show (evt) {\n this.__showPortal()\n\n this.__nextTick(() => {\n this.observer = new MutationObserver(() => this.updatePosition())\n this.observer.observe(this.__portal.$el, { attributes: false, childList: true, characterData: true, subtree: true })\n this.updatePosition()\n this.__configureScrollTarget()\n })\n\n this.__setTimeout(() => {\n this.$emit('show', evt)\n }, 300)\n },\n\n __hide (evt) {\n this.__anchorCleanup()\n\n this.__setTimeout(() => {\n this.__hidePortal()\n this.$emit('hide', evt)\n }, 300)\n },\n\n __anchorCleanup () {\n if (this.observer !== void 0) {\n this.observer.disconnect()\n this.observer = void 0\n }\n\n this.__unconfigureScrollTarget()\n cleanEvt(this, 'tooltipTemp')\n },\n\n updatePosition () {\n if (this.anchorEl === void 0 || this.__portal === void 0) {\n return\n }\n\n const el = this.__portal.$el\n\n if (el.nodeType === 8) { // IE replaces the comment with delay\n setTimeout(this.updatePosition, 25)\n return\n }\n\n setPosition({\n el,\n offset: this.offset,\n anchorEl: this.anchorEl,\n anchorOrigin: this.anchorOrigin,\n selfOrigin: this.selfOrigin,\n maxHeight: this.maxHeight,\n maxWidth: this.maxWidth\n })\n },\n\n __delayShow (evt) {\n if (this.$q.platform.is.mobile === true) {\n clearSelection()\n document.body.classList.add('non-selectable')\n\n const target = getTouchTarget(this.anchorEl)\n const evts = ['touchmove', 'touchcancel', 'touchend', 'click']\n .map(e => ([ target, e, '__delayHide', 'passiveCapture' ]))\n\n addEvt(this, 'tooltipTemp', evts)\n }\n\n this.__setTimeout(() => {\n this.show(evt)\n }, this.delay)\n },\n\n __delayHide (evt) {\n this.__clearTimeout()\n\n if (this.$q.platform.is.mobile === true) {\n cleanEvt(this, 'tooltipTemp')\n clearSelection()\n // delay needed otherwise selection still occurs\n setTimeout(() => {\n document.body.classList.remove('non-selectable')\n }, 10)\n }\n\n this.__setTimeout(() => {\n this.hide(evt)\n }, this.hideDelay)\n },\n\n __configureAnchorEl () {\n if (this.noParentEvent === true || this.anchorEl === void 0) { return }\n\n const evts = this.$q.platform.is.mobile === true\n ? [\n [ this.anchorEl, 'touchstart', '__delayShow', 'passive' ]\n ]\n : [\n [ this.anchorEl, 'mouseenter', '__delayShow', 'passive' ],\n [ this.anchorEl, 'mouseleave', '__delayHide', 'passive' ]\n ]\n\n addEvt(this, 'anchor', evts)\n },\n\n __unconfigureScrollTarget () {\n if (this.__scrollTarget !== void 0) {\n this.__changeScrollEvent(this.__scrollTarget)\n this.__scrollTarget = void 0\n }\n },\n\n __configureScrollTarget () {\n if (this.anchorEl !== void 0 || this.scrollTarget !== void 0) {\n this.__scrollTarget = getScrollTarget(this.anchorEl, this.scrollTarget)\n const fn = this.noParentEvent === true\n ? this.updatePosition\n : this.hide\n\n this.__changeScrollEvent(this.__scrollTarget, fn)\n }\n },\n\n __renderPortal (h) {\n return h('transition', {\n props: { name: this.transition }\n }, [\n this.showing === true ? h('div', {\n staticClass: 'q-tooltip q-tooltip--style q-position-engine no-pointer-events',\n class: this.contentClass,\n style: this.contentStyle,\n attrs: {\n role: 'complementary'\n }\n }, slot(this, 'default')) : null\n ])\n }\n },\n\n mounted () {\n this.__processModelChange(this.value)\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QList',\n\n mixins: [ ListenersMixin, DarkMixin ],\n\n props: {\n bordered: Boolean,\n dense: Boolean,\n separator: Boolean,\n padding: Boolean\n },\n\n computed: {\n classes () {\n return 'q-list' +\n (this.bordered === true ? ' q-list--bordered' : '') +\n (this.dense === true ? ' q-list--dense' : '') +\n (this.separator === true ? ' q-list--separator' : '') +\n (this.isDark === true ? ' q-list--dark' : '') +\n (this.padding === true ? ' q-list--padding' : '')\n }\n },\n\n render (h) {\n return h('div', {\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport TagMixin from '../../mixins/tag.js'\nimport { RouterLinkMixin } from '../../mixins/router-link.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { uniqueSlot } from '../../utils/slot.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { isKeyCode } from '../../utils/key-composition.js'\n\nexport default Vue.extend({\n name: 'QItem',\n\n mixins: [ DarkMixin, RouterLinkMixin, TagMixin, ListenersMixin ],\n\n props: {\n active: Boolean,\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 computed: {\n isActionable () {\n return this.clickable === true ||\n this.hasRouterLink === true ||\n this.tag === 'a' ||\n this.tag === 'label'\n },\n\n isClickable () {\n return this.disable !== true && this.isActionable === true\n },\n\n classes () {\n return {\n 'q-item--clickable q-link cursor-pointer': this.isClickable,\n 'q-focusable q-hoverable': this.isClickable === true && this.manualFocus === false,\n\n 'q-manual-focusable': this.isClickable === true && this.manualFocus === true,\n 'q-manual-focusable--focused': this.isClickable === true && this.focused === true,\n\n 'q-item--dense': this.dense,\n 'q-item--dark': this.isDark,\n 'q-item--active': this.active,\n [this.activeClass]: this.active === true && this.hasRouterLink !== true && this.activeClass !== void 0,\n\n 'disabled': this.disable\n }\n },\n\n style () {\n if (this.insetLevel !== void 0) {\n const dir = this.$q.lang.rtl === true ? 'Right' : 'Left'\n return {\n ['padding' + dir]: (16 + this.insetLevel * 56) + 'px'\n }\n }\n },\n\n onEvents () {\n return {\n ...this.qListeners,\n click: this.__onClick,\n keyup: this.__onKeyup\n }\n }\n },\n\n methods: {\n __getContent (h) {\n const child = uniqueSlot(this, 'default', [])\n this.isClickable === true && child.unshift(\n h('div', { staticClass: 'q-focus-helper', attrs: { tabindex: -1 }, ref: 'blurTarget' })\n )\n return child\n },\n\n __onClick (e) {\n if (this.isClickable === true) {\n if (this.$refs.blurTarget !== void 0) {\n if (e.qKeyEvent !== true && document.activeElement === this.$el) {\n this.$refs.blurTarget.focus()\n }\n else if (document.activeElement === this.$refs.blurTarget) {\n this.$el.focus()\n }\n }\n\n this.$emit('click', e)\n }\n },\n\n __onKeyup (e) {\n if (this.isClickable === 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 this.$el.dispatchEvent(evt)\n }\n\n this.$emit('keyup', e)\n }\n },\n\n render (h) {\n const data = {\n staticClass: 'q-item q-item-type row no-wrap',\n class: this.classes,\n style: this.style,\n [ this.hasRouterLink === true ? 'nativeOn' : 'on' ]: this.onEvents\n }\n\n if (this.isClickable === true) {\n data.attrs = {\n tabindex: this.tabindex || '0'\n }\n }\n else if (this.isActionable === true) {\n data.attrs = {\n 'aria-disabled': 'true'\n }\n }\n\n if (this.hasRouterLink === true) {\n data.tag = 'a'\n data.props = this.routerLinkProps\n\n return h('router-link', data, this.__getContent(h))\n }\n\n return h(\n this.tag,\n data,\n this.__getContent(h)\n )\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QItemSection',\n\n mixins: [ ListenersMixin ],\n\n props: {\n avatar: Boolean,\n thumbnail: Boolean,\n side: Boolean,\n top: Boolean,\n noWrap: Boolean\n },\n\n computed: {\n classes () {\n const side = this.avatar || this.side || this.thumbnail\n\n return {\n 'q-item__section--top': this.top,\n 'q-item__section--avatar': this.avatar,\n 'q-item__section--thumbnail': this.thumbnail,\n 'q-item__section--side': side,\n 'q-item__section--nowrap': this.noWrap,\n 'q-item__section--main': !side,\n [`justify-${this.top ? 'start' : 'center'}`]: true\n }\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-item__section column',\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import QBtn from '../btn/QBtn.js'\nimport QBtnDropdown from '../btn-dropdown/QBtnDropdown.js'\nimport QInput from '../input/QInput.js'\nimport QIcon from '../icon/QIcon.js'\nimport QTooltip from '../tooltip/QTooltip.js'\nimport QList from '../item/QList.js'\nimport QItem from '../item/QItem.js'\nimport QItemSection from '../item/QItemSection.js'\n\nimport { prevent } from '../../utils/event.js'\nimport { slot } from '../../utils/slot.js'\nimport { shouldIgnoreKey } from '../../utils/key-composition.js'\n\nfunction run (e, btn, vm) {\n if (btn.handler) {\n btn.handler(e, vm, vm.caret)\n }\n else {\n vm.runCmd(btn.cmd, btn.param)\n }\n}\n\nfunction __getGroup (h, children) {\n return h('div', {\n staticClass: 'q-editor__toolbar-group'\n }, children)\n}\n\nfunction getBtn (h, vm, btn, clickHandler, active = false) {\n const\n toggled = active || (btn.type === 'toggle'\n ? (btn.toggled ? btn.toggled(vm) : btn.cmd && vm.caret.is(btn.cmd, btn.param))\n : false),\n child = [],\n events = {\n click (e) {\n clickHandler && clickHandler()\n run(e, btn, vm)\n }\n }\n\n if (btn.tip && vm.$q.platform.is.desktop) {\n const Key = btn.key\n ? h('div', [h('small', `(CTRL + ${String.fromCharCode(btn.key)})`)])\n : null\n child.push(\n h(QTooltip, { props: { delay: 1000 } }, [\n h('div', { domProps: { innerHTML: btn.tip } }),\n Key\n ])\n )\n }\n\n return h(QBtn, {\n props: {\n ...vm.buttonProps,\n icon: btn.icon,\n color: toggled ? btn.toggleColor || vm.toolbarToggleColor : btn.color || vm.toolbarColor,\n textColor: toggled && !vm.toolbarPush ? null : btn.textColor || vm.toolbarTextColor,\n label: btn.label,\n disable: btn.disable ? (typeof btn.disable === 'function' ? btn.disable(vm) : true) : false,\n size: 'sm'\n },\n on: events\n }, child)\n}\n\nfunction getDropdown (h, vm, btn) {\n const onlyIcons = btn.list === 'only-icons'\n let\n label = btn.label,\n icon = btn.icon,\n contentClass,\n Items\n\n function closeDropdown () {\n Dropdown.componentInstance.hide()\n }\n\n if (onlyIcons) {\n Items = btn.options.map(btn => {\n const active = btn.type === void 0\n ? vm.caret.is(btn.cmd, btn.param)\n : false\n\n if (active) {\n label = btn.tip\n icon = btn.icon\n }\n return getBtn(h, vm, btn, closeDropdown, active)\n })\n contentClass = vm.toolbarBackgroundClass\n Items = [\n __getGroup(h, Items)\n ]\n }\n else {\n const activeClass = vm.toolbarToggleColor !== void 0\n ? `text-${vm.toolbarToggleColor}`\n : null\n const inactiveClass = vm.toolbarTextColor !== void 0\n ? `text-${vm.toolbarTextColor}`\n : null\n\n Items = btn.options.map(btn => {\n const disable = btn.disable ? btn.disable(vm) : false\n const active = btn.type === void 0\n ? vm.caret.is(btn.cmd, btn.param)\n : false\n\n if (active) {\n label = btn.tip\n icon = btn.icon\n }\n\n const htmlTip = btn.htmlTip\n\n return h(\n QItem,\n {\n props: { active, activeClass, clickable: true, disable: disable, dense: true },\n on: {\n click (e) {\n closeDropdown()\n vm.$refs.content && vm.$refs.content.focus()\n vm.caret.restore()\n run(e, btn, vm)\n }\n }\n },\n [\n btn.list === 'no-icons'\n ? null\n : h(QItemSection, {\n class: active ? activeClass : inactiveClass,\n props: { side: true }\n }, [\n h(QIcon, { props: { name: btn.icon } })\n ]),\n\n h(QItemSection, [\n htmlTip\n ? h('div', {\n domProps: { innerHTML: btn.htmlTip }\n })\n : (btn.tip ? h('div', [ btn.tip ]) : null)\n ])\n ]\n )\n })\n contentClass = [vm.toolbarBackgroundClass, inactiveClass]\n Items = [\n h(QList, [ Items ])\n ]\n }\n\n const highlight = btn.highlight && label !== btn.label\n const Dropdown = h(\n QBtnDropdown,\n {\n props: {\n ...vm.buttonProps,\n noCaps: true,\n noWrap: true,\n color: highlight ? vm.toolbarToggleColor : vm.toolbarColor,\n textColor: highlight && !vm.toolbarPush ? null : vm.toolbarTextColor,\n label: btn.fixedLabel ? btn.label : label,\n icon: btn.fixedIcon ? btn.icon : icon,\n contentClass\n }\n },\n Items\n )\n return Dropdown\n}\n\nexport function getToolbar (h, vm) {\n if (vm.caret) {\n return vm.buttons\n .filter(f => {\n return !vm.isViewingSource || f.find(fb => fb.cmd === 'viewsource')\n })\n .map(group => __getGroup(\n h,\n group.map(btn => {\n if (vm.isViewingSource && btn.cmd !== 'viewsource') {\n return false\n }\n\n if (btn.type === 'slot') {\n return slot(vm, btn.slot)\n }\n\n if (btn.type === 'dropdown') {\n return getDropdown(h, vm, btn)\n }\n\n return getBtn(h, vm, btn)\n })\n ))\n }\n}\n\nexport function getFonts (defaultFont, defaultFontLabel, defaultFontIcon, fonts = {}) {\n const aliases = Object.keys(fonts)\n if (aliases.length === 0) {\n return {}\n }\n\n const def = {\n default_font: {\n cmd: 'fontName',\n param: defaultFont,\n icon: defaultFontIcon,\n tip: defaultFontLabel\n }\n }\n\n aliases.forEach(alias => {\n const name = fonts[alias]\n def[alias] = {\n cmd: 'fontName',\n param: name,\n icon: defaultFontIcon,\n tip: name,\n htmlTip: `${name}`\n }\n })\n\n return def\n}\n\nexport function getLinkEditor (h, vm, ie11) {\n if (vm.caret) {\n const color = vm.toolbarColor || vm.toolbarTextColor\n let link = vm.editLinkUrl\n const updateLink = () => {\n vm.caret.restore()\n\n if (link !== vm.editLinkUrl) {\n document.execCommand('createLink', false, link === '' ? ' ' : link)\n }\n\n vm.editLinkUrl = null\n\n ie11 === true && vm.$nextTick(vm.__onInput)\n }\n\n return [\n h('div', { staticClass: 'q-mx-xs', 'class': `text-${color}` }, [`${vm.$q.lang.editor.url}: `]),\n h(QInput, {\n key: 'qedt_btm_input',\n staticClass: 'q-ma-none q-pa-none col q-editor-input',\n props: {\n value: link,\n color,\n autofocus: true,\n borderless: true,\n dense: true\n },\n on: {\n input: val => { link = val },\n keydown: event => {\n if (shouldIgnoreKey(event) === true) {\n return\n }\n\n switch (event.keyCode) {\n case 13: // ENTER key\n prevent(event)\n return updateLink()\n case 27: // ESCAPE key\n prevent(event)\n vm.caret.restore()\n if (!vm.editLinkUrl || vm.editLinkUrl === 'https://') {\n document.execCommand('unlink')\n }\n vm.editLinkUrl = null\n break\n }\n }\n }\n }),\n __getGroup(h, [\n h(QBtn, {\n key: 'qedt_btm_rem',\n attrs: { tabindex: -1 },\n props: {\n ...vm.buttonProps,\n label: vm.$q.lang.label.remove,\n noCaps: true\n },\n on: {\n click: () => {\n vm.caret.restore()\n document.execCommand('unlink')\n vm.editLinkUrl = null\n\n ie11 === true && vm.$nextTick(vm.__onInput)\n }\n }\n }),\n h(QBtn, {\n key: 'qedt_btm_upd',\n props: {\n ...vm.buttonProps,\n label: vm.$q.lang.label.update,\n noCaps: true\n },\n on: {\n click: updateLink\n }\n })\n ])\n ]\n }\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import { noop } from '../../utils/event.js'\n\nfunction getBlockElement (el, parent) {\n if (parent && el === parent) {\n return null\n }\n\n const nodeName = el.nodeName.toLowerCase()\n\n if (['div', 'li', 'ul', 'ol', 'blockquote'].includes(nodeName) === true) {\n return el\n }\n\n const\n style = window.getComputedStyle\n ? window.getComputedStyle(el)\n : el.currentStyle,\n display = style.display\n\n if (display === 'block' || display === 'table') {\n return el\n }\n\n return getBlockElement(el.parentNode)\n}\n\nfunction isChildOf (el, parent) {\n return !el || el === document.body\n ? false\n : (parent === document ? document.body : parent).contains(el.parentNode)\n}\n\nfunction createRange (node, chars, range) {\n if (!range) {\n range = document.createRange()\n range.selectNode(node)\n range.setStart(node, 0)\n }\n\n if (chars.count === 0) {\n range.setEnd(node, chars.count)\n }\n else if (chars.count > 0) {\n if (node.nodeType === Node.TEXT_NODE) {\n if (node.textContent.length < chars.count) {\n chars.count -= node.textContent.length\n }\n else {\n range.setEnd(node, chars.count)\n chars.count = 0\n }\n }\n else {\n for (let lp = 0; chars.count !== 0 && lp < node.childNodes.length; lp++) {\n range = createRange(node.childNodes[lp], chars, range)\n }\n }\n }\n\n return range\n}\n\nconst urlRegex = /^https?:\\/\\//\n\nexport class Caret {\n constructor (el, vm) {\n this.el = el\n this.vm = vm\n this._range = null\n }\n\n get selection () {\n if (this.el) {\n const sel = document.getSelection()\n\n // only when the selection in element\n if (isChildOf(sel.anchorNode, this.el) && isChildOf(sel.focusNode, this.el)) {\n return sel\n }\n }\n\n return null\n }\n\n get hasSelection () {\n return this.selection !== null\n ? this.selection.toString().length > 0\n : false\n }\n\n get range () {\n const sel = this.selection\n\n if (sel !== null && sel.rangeCount) {\n return sel.getRangeAt(0)\n }\n\n return this._range\n }\n\n get parent () {\n const range = this.range\n\n if (range !== null) {\n const node = range.startContainer\n\n return node.nodeType === document.ELEMENT_NODE\n ? node\n : node.parentNode\n }\n\n return null\n }\n\n get blockParent () {\n const parent = this.parent\n\n if (parent !== null) {\n return getBlockElement(parent, this.el)\n }\n\n return null\n }\n\n save (range = this.range) {\n if (range !== null) {\n this._range = range\n }\n }\n\n restore (range = this._range) {\n const\n r = document.createRange(),\n sel = document.getSelection()\n\n if (range !== null) {\n r.setStart(range.startContainer, range.startOffset)\n r.setEnd(range.endContainer, range.endOffset)\n sel.removeAllRanges()\n sel.addRange(r)\n }\n else {\n sel.selectAllChildren(this.el)\n sel.collapseToEnd()\n }\n }\n\n savePosition () {\n let charCount = -1, node\n const\n selection = document.getSelection(),\n parentEl = this.el.parentNode\n\n if (selection.focusNode && isChildOf(selection.focusNode, parentEl)) {\n node = selection.focusNode\n charCount = selection.focusOffset\n\n while (node && node !== parentEl) {\n if (node !== this.el && node.previousSibling) {\n node = node.previousSibling\n charCount += node.textContent.length\n }\n else {\n node = node.parentNode\n }\n }\n }\n\n this.savedPos = charCount\n }\n\n restorePosition () {\n if (this.savedPos >= 0) {\n const\n selection = window.getSelection(),\n range = createRange(this.el, { count: this.savedPos })\n\n if (range) {\n range.collapse(false)\n selection.removeAllRanges()\n selection.addRange(range)\n }\n }\n }\n\n hasParent (name, spanLevel) {\n const el = spanLevel\n ? this.parent\n : this.blockParent\n\n return el !== null\n ? el.nodeName.toLowerCase() === name.toLowerCase()\n : false\n }\n\n hasParents (list, recursive, el = this.parent) {\n if (el === null) {\n return false\n }\n\n if (el !== null && list.includes(el.nodeName.toLowerCase()) === true) {\n return true\n }\n\n return recursive === true\n ? this.hasParents(list, recursive, el.parentNode)\n : false\n }\n\n is (cmd, param) {\n switch (cmd) {\n case 'formatBlock':\n if (param === 'DIV' && this.parent === this.el) {\n return true\n }\n return this.hasParent(param, param === 'PRE')\n case 'link':\n return this.hasParent('A', true)\n case 'fontSize':\n return document.queryCommandValue(cmd) === param\n case 'fontName':\n const res = document.queryCommandValue(cmd)\n return res === `\"${param}\"` || res === param\n case 'fullscreen':\n return this.vm.inFullscreen\n case 'viewsource':\n return this.vm.isViewingSource\n case void 0:\n return false\n default:\n const state = document.queryCommandState(cmd)\n return param !== void 0 ? state === param : state\n }\n }\n\n getParentAttribute (attrib) {\n if (this.parent !== null) {\n return this.parent.getAttribute(attrib)\n }\n\n return null\n }\n\n can (name) {\n if (name === 'outdent') {\n return this.hasParents(['blockquote', 'li'], true)\n }\n\n if (name === 'indent') {\n return this.hasParents(['li'], true)\n }\n\n if (name === 'link') {\n return this.selection !== null || this.is('link')\n }\n }\n\n apply (cmd, param, done = noop) {\n if (cmd === 'formatBlock') {\n if (['BLOCKQUOTE', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6'].includes(param) && this.is(cmd, param)) {\n cmd = 'outdent'\n param = null\n }\n\n if (param === 'PRE' && this.is(cmd, 'PRE')) {\n param = 'P'\n }\n }\n else if (cmd === 'print') {\n done()\n\n const win = window.open()\n\n win.document.write(`\n \n \n
\n${e.code}
` },\n\n 'size-1': { cmd: 'fontSize', param: '1', icon: i.size1 || i.size, tip: e.size1, htmlTip: `${e.size1}` },\n 'size-2': { cmd: 'fontSize', param: '2', icon: i.size2 || i.size, tip: e.size2, htmlTip: `${e.size2}` },\n 'size-3': { cmd: 'fontSize', param: '3', icon: i.size3 || i.size, tip: e.size3, htmlTip: `${e.size3}` },\n 'size-4': { cmd: 'fontSize', param: '4', icon: i.size4 || i.size, tip: e.size4, htmlTip: `${e.size4}` },\n 'size-5': { cmd: 'fontSize', param: '5', icon: i.size5 || i.size, tip: e.size5, htmlTip: `${e.size5}` },\n 'size-6': { cmd: 'fontSize', param: '6', icon: i.size6 || i.size, tip: e.size6, htmlTip: `${e.size6}` },\n 'size-7': { cmd: 'fontSize', param: '7', icon: i.size7 || i.size, tip: e.size7, htmlTip: `${e.size7}` }\n }\n },\n\n buttons () {\n const userDef = this.definitions || {}\n const def = this.definitions || this.fonts\n ? extend(\n true,\n {},\n this.buttonDef,\n userDef,\n getFonts(\n this.defaultFont,\n this.$q.lang.editor.defaultFont,\n this.$q.iconSet.editor.font,\n this.fonts\n )\n )\n : this.buttonDef\n\n return this.toolbar.map(\n group => group.map(token => {\n if (token.options) {\n return {\n type: 'dropdown',\n icon: token.icon,\n label: token.label,\n size: 'sm',\n dense: true,\n fixedLabel: token.fixedLabel,\n fixedIcon: token.fixedIcon,\n highlight: token.highlight,\n list: token.list,\n options: token.options.map(item => def[item])\n }\n }\n\n const obj = def[token]\n\n if (obj) {\n return obj.type === 'no-state' || (userDef[token] && (\n obj.cmd === void 0 || (this.buttonDef[obj.cmd] && this.buttonDef[obj.cmd].type === 'no-state')\n ))\n ? obj\n : Object.assign({ type: 'toggle' }, obj)\n }\n else {\n return {\n type: 'slot',\n slot: token\n }\n }\n })\n )\n },\n\n keys () {\n const\n k = {},\n add = btn => {\n if (btn.key) {\n k[btn.key] = {\n cmd: btn.cmd,\n param: btn.param\n }\n }\n }\n\n this.buttons.forEach(group => {\n group.forEach(token => {\n if (token.options) {\n token.options.forEach(add)\n }\n else {\n add(token)\n }\n })\n })\n return k\n },\n\n innerStyle () {\n return this.inFullscreen\n ? this.contentStyle\n : [\n {\n minHeight: this.minHeight,\n height: this.height,\n maxHeight: this.maxHeight\n },\n this.contentStyle\n ]\n },\n\n classes () {\n return `q-editor q-editor--${this.isViewingSource === true ? 'source' : 'default'}` +\n (this.disable === true ? ' disabled' : '') +\n (this.inFullscreen === true ? ' fullscreen column' : '') +\n (this.square === true ? ' q-editor--square no-border-radius' : '') +\n (this.flat === true ? ' q-editor--flat' : '') +\n (this.dense === true ? ' q-editor--dense' : '') +\n (this.isDark === true ? ' q-editor--dark q-dark' : '')\n },\n\n innerClass () {\n return [\n this.contentClass,\n { col: this.inFullscreen, 'overflow-auto': this.inFullscreen || this.maxHeight }\n ]\n },\n\n attrs () {\n if (this.disable === true) {\n return { 'aria-disabled': 'true' }\n }\n if (this.readonly === true) {\n return { 'aria-readonly': 'true' }\n }\n }\n },\n\n data () {\n return {\n lastEmit: this.value,\n editLinkUrl: null,\n isViewingSource: false\n }\n },\n\n watch: {\n value (v) {\n if (this.lastEmit !== v) {\n this.__setContent(v, true)\n }\n }\n },\n\n methods: {\n __onInput () {\n if (this.$refs.content !== void 0) {\n const val = this.isViewingSource === true\n ? this.$refs.content.innerText\n : this.$refs.content.innerHTML\n\n if (val !== this.value) {\n this.lastEmit = val\n this.$emit('input', val)\n }\n }\n },\n\n __onKeydown (e) {\n this.$emit('keydown', e)\n\n if (e.ctrlKey !== true || shouldIgnoreKey(e) === true) {\n this.refreshToolbar()\n this.$q.platform.is.ie && this.$nextTick(this.__onInput)\n return\n }\n\n const key = e.keyCode\n const target = this.keys[key]\n if (target !== void 0) {\n const { cmd, param } = target\n stopAndPrevent(e)\n this.runCmd(cmd, param, false)\n }\n },\n\n __onClick (e) {\n this.refreshToolbar()\n this.$emit('click', e)\n },\n\n __onBlur (e) {\n if (this.$refs.content !== void 0) {\n const { scrollTop, scrollHeight } = this.$refs.content\n this.__offsetBottom = scrollHeight - scrollTop\n }\n this.$q.platform.is.ie !== true && this.caret.save()\n this.$emit('blur', e)\n },\n\n __onFocus (e) {\n this.$nextTick(() => {\n if (this.$refs.content !== void 0 && this.__offsetBottom !== void 0) {\n this.$refs.content.scrollTop = this.$refs.content.scrollHeight - this.__offsetBottom\n }\n })\n this.$emit('focus', e)\n },\n\n __onMouseup (e) {\n this.caret.save()\n if (this.qListeners.mouseup !== void 0) {\n this.$emit('mouseup', e)\n }\n },\n\n __onKeyup (e) {\n this.caret.save()\n if (this.qListeners.keyup !== void 0) {\n this.$emit('keyup', e)\n }\n },\n\n __onTouchend (e) {\n this.caret.save()\n if (this.qListeners.touchend !== void 0) {\n this.$emit('touchend', e)\n }\n },\n\n runCmd (cmd, param, update = true) {\n this.focus()\n this.caret.restore()\n this.caret.apply(cmd, param, () => {\n this.focus()\n this.caret.save()\n if (this.$q.platform.is.ie === true || this.$q.platform.is.edge === true) {\n this.$nextTick(this.__onInput)\n }\n if (update) {\n this.refreshToolbar()\n }\n })\n },\n\n refreshToolbar () {\n setTimeout(() => {\n this.editLinkUrl = null\n this.$forceUpdate()\n }, 1)\n },\n\n focus () {\n this.$refs.content !== void 0 && this.$refs.content.focus()\n },\n\n getContentEl () {\n return this.$refs.content\n },\n\n __setContent (v, restorePosition) {\n if (this.$refs.content !== void 0) {\n if (restorePosition === true) {\n this.caret.savePosition()\n }\n\n const prop = `inner${this.isViewingSource === true ? 'Text' : 'HTML'}`\n this.$refs.content[prop] = v\n\n if (restorePosition === true) {\n this.caret.restorePosition()\n this.refreshToolbar()\n }\n }\n }\n },\n\n created () {\n if (isSSR === false) {\n document.execCommand('defaultParagraphSeparator', false, 'div')\n this.defaultFont = window.getComputedStyle(document.body).fontFamily\n }\n },\n\n mounted () {\n this.caret = new Caret(this.$refs.content, this)\n this.__setContent(this.value)\n this.refreshToolbar()\n },\n\n render (h) {\n let toolbars\n\n if (this.hasToolbar) {\n const bars = [\n h('div', {\n key: 'qedt_top',\n staticClass: 'q-editor__toolbar row no-wrap scroll-x',\n class: this.toolbarBackgroundClass\n }, getToolbar(h, this))\n ]\n\n this.editLinkUrl !== null && bars.push(\n h('div', {\n key: 'qedt_btm',\n staticClass: 'q-editor__toolbar row no-wrap items-center scroll-x',\n class: this.toolbarBackgroundClass\n }, getLinkEditor(h, this, this.$q.platform.is.ie))\n )\n\n toolbars = h('div', {\n key: 'toolbar_ctainer',\n staticClass: 'q-editor__toolbars-container'\n }, bars)\n }\n\n const on = {\n ...this.qListeners,\n input: this.__onInput,\n keydown: this.__onKeydown,\n click: this.__onClick,\n blur: this.__onBlur,\n focus: this.__onFocus,\n\n // save caret\n mouseup: this.__onMouseup,\n keyup: this.__onKeyup,\n touchend: this.__onTouchend\n }\n\n return h('div', {\n style: {\n height: this.inFullscreen === true ? '100vh' : null\n },\n class: this.classes,\n attrs: this.attrs\n }, [\n toolbars,\n\n h(\n 'div',\n {\n ref: 'content',\n staticClass: `q-editor__content`,\n style: this.innerStyle,\n class: this.innerClass,\n attrs: {\n contenteditable: this.editable,\n placeholder: this.placeholder\n },\n domProps: isSSR\n ? { innerHTML: this.value }\n : undefined,\n on\n }\n )\n ])\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QItemLabel',\n\n mixins: [ ListenersMixin ],\n\n props: {\n overline: Boolean,\n caption: Boolean,\n header: Boolean,\n lines: [ Number, String ]\n },\n\n computed: {\n classes () {\n return {\n 'q-item__label--overline text-overline': this.overline,\n 'q-item__label--caption text-caption': this.caption,\n 'q-item__label--header': this.header,\n 'ellipsis': parseInt(this.lines, 10) === 1\n }\n },\n\n style () {\n if (this.lines !== void 0 && parseInt(this.lines, 10) > 1) {\n return {\n overflow: 'hidden',\n display: '-webkit-box',\n '-webkit-box-orient': 'vertical',\n '-webkit-line-clamp': this.lines\n }\n }\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-item__label',\n style: this.style,\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport { slot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QSlideTransition',\n\n props: {\n appear: Boolean,\n duration: {\n type: Number,\n default: 300\n }\n },\n\n methods: {\n __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 ${this.duration}ms cubic-bezier(.25, .8, .50, 1)`\n\n this.animating = true\n this.done = done\n },\n\n __end (el, event) {\n el.style.overflowY = null\n el.style.height = null\n el.style.transition = null\n this.__cleanup()\n event !== this.lastEvent && this.$emit(event)\n },\n\n __cleanup () {\n this.done && this.done()\n this.done = null\n this.animating = false\n\n clearTimeout(this.timer)\n clearTimeout(this.timerFallback)\n this.el !== void 0 && this.el.removeEventListener('transitionend', this.animListener)\n this.animListener = null\n }\n },\n\n beforeDestroy () {\n this.animating && this.__cleanup()\n },\n\n render (h) {\n return h('transition', {\n props: {\n css: false,\n appear: this.appear\n },\n on: cache(this, 'tr', {\n enter: (el, done) => {\n let pos = 0\n this.el = el\n\n if (this.animating === true) {\n this.__cleanup()\n pos = el.offsetHeight === el.scrollHeight ? 0 : void 0\n }\n else {\n this.lastEvent = 'hide'\n }\n\n this.__begin(el, pos, done)\n\n this.timer = setTimeout(() => {\n el.style.height = `${el.scrollHeight}px`\n this.animListener = ev => {\n if (Object(ev) !== ev || ev.target === el) {\n this.__end(el, 'show')\n }\n }\n el.addEventListener('transitionend', this.animListener)\n this.timerFallback = setTimeout(this.animListener, this.duration * 1.1)\n }, 100)\n },\n\n leave: (el, done) => {\n let pos\n this.el = el\n\n if (this.animating === true) {\n this.__cleanup()\n }\n else {\n this.lastEvent = 'show'\n pos = el.scrollHeight\n }\n\n this.__begin(el, pos, done)\n\n this.timer = setTimeout(() => {\n el.style.height = 0\n this.animListener = ev => {\n if (Object(ev) !== ev || ev.target === el) {\n this.__end(el, 'hide')\n }\n }\n el.addEventListener('transitionend', this.animListener)\n this.timerFallback = setTimeout(this.animListener, this.duration * 1.1)\n }, 100)\n }\n })\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.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 Vue.extend({\n name: 'QSeparator',\n\n mixins: [ DarkMixin, ListenersMixin ],\n\n props: {\n spaced: [ Boolean, String ],\n inset: [ Boolean, String ],\n vertical: Boolean,\n color: String,\n size: String\n },\n\n computed: {\n orientation () {\n return this.vertical === true\n ? 'vertical'\n : 'horizontal'\n },\n\n classPrefix () {\n return ` q-separator--${this.orientation}`\n },\n\n insetClass () {\n return this.inset !== false\n ? `${this.classPrefix}-${insetMap[this.inset]}`\n : ''\n },\n\n classes () {\n return `q-separator${this.classPrefix}${this.insetClass}` +\n (this.color !== void 0 ? ` bg-${this.color}` : '') +\n (this.isDark === true ? ' q-separator--dark' : '')\n },\n\n style () {\n const style = {}\n\n if (this.size !== void 0) {\n style[ this.vertical === true ? 'width' : 'height' ] = this.size\n }\n\n if (this.spaced !== false) {\n const size = this.spaced === true\n ? `${margins.md}px`\n : this.spaced in margins ? `${margins[this.spaced]}px` : this.spaced\n\n const props = this.vertical === true\n ? [ 'Left', 'Right' ]\n : [ 'Top', 'Bottom' ]\n\n style[`margin${props[0]}`] = style[`margin${props[1]}`] = size\n }\n\n return style\n },\n\n attrs () {\n return {\n role: 'separator',\n 'aria-orientation': this.orientation\n }\n }\n },\n\n render (h) {\n return h('hr', {\n staticClass: 'q-separator',\n class: this.classes,\n style: this.style,\n attrs: this.attrs,\n on: { ...this.qListeners }\n })\n }\n})\n","import Vue 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 { RouterLinkMixin } from '../../mixins/router-link.js'\nimport ModelToggleMixin from '../../mixins/model-toggle.js'\nimport DarkMixin from '../../mixins/dark.js'\n\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { slot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nconst eventName = 'q:expansion-item:close'\n\nexport default Vue.extend({\n name: 'QExpansionItem',\n\n mixins: [ DarkMixin, RouterLinkMixin, ModelToggleMixin ],\n\n props: {\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 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 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 data () {\n return {\n showing: this.value !== void 0\n ? this.value\n : this.defaultOpened\n }\n },\n\n watch: {\n showing (val) {\n val === true && this.group !== void 0 && this.$root.$emit(eventName, this)\n },\n\n group (newVal, oldVal) {\n if (newVal !== void 0 && oldVal === void 0) {\n this.$root.$on(eventName, this.__eventHandler)\n }\n else if (newVal === void 0 && oldVal !== void 0) {\n this.$root.$off(eventName, this.__eventHandler)\n }\n }\n },\n\n computed: {\n classes () {\n return `q-expansion-item--${this.showing === true ? 'expanded' : 'collapsed'}` +\n ` q-expansion-item--${this.popup === true ? 'popup' : 'standard'}`\n },\n\n contentStyle () {\n if (this.contentInsetLevel !== void 0) {\n const dir = this.$q.lang.rtl === true ? 'Right' : 'Left'\n return {\n ['padding' + dir]: (this.contentInsetLevel * 56) + 'px'\n }\n }\n },\n\n isClickable () {\n return this.hasRouterLink === true || this.expandIconToggle !== true\n },\n\n expansionIcon () {\n return this.expandedIcon !== void 0 && this.showing === true\n ? this.expandedIcon\n : this.expandIcon || this.$q.iconSet.expansionItem[this.denseToggle === true ? 'denseIcon' : 'icon']\n },\n\n activeToggleIcon () {\n return this.disable !== true && (this.hasRouterLink === true || this.expandIconToggle === true)\n }\n },\n\n methods: {\n __onHeaderClick (e) {\n this.hasRouterLink !== true && this.toggle(e)\n this.$emit('click', e)\n },\n\n __toggleIconKeyboard (e) {\n e.keyCode === 13 && this.__toggleIcon(e, true)\n },\n\n __toggleIcon (e, keyboard) {\n keyboard !== true && this.$refs.blurTarget !== void 0 && this.$refs.blurTarget.focus()\n this.toggle(e)\n stopAndPrevent(e)\n },\n\n __eventHandler (comp) {\n this !== comp && this.group === comp.group && this.hide()\n },\n\n __getToggleIcon (h) {\n const data = {\n staticClass: `q-focusable relative-position cursor-pointer${this.denseToggle === true && this.switchToggleSide === true ? ' items-end' : ''}`,\n class: this.expandIconClass,\n props: {\n side: this.switchToggleSide !== true,\n avatar: this.switchToggleSide\n }\n }\n\n const child = [\n h(QIcon, {\n staticClass: 'q-expansion-item__toggle-icon',\n class: this.expandedIcon === void 0 && this.showing === true\n ? 'q-expansion-item__toggle-icon--rotated'\n : void 0,\n props: { name: this.expansionIcon }\n })\n ]\n\n if (this.activeToggleIcon === true) {\n Object.assign(data, {\n attrs: { tabindex: 0 },\n on: cache(this, 'inpExt', {\n click: this.__toggleIcon,\n keyup: this.__toggleIconKeyboard\n })\n })\n\n child.unshift(\n h('div', {\n ref: 'blurTarget',\n staticClass: 'q-expansion-item__toggle-focus q-icon q-focus-helper q-focus-helper--rounded',\n attrs: { tabindex: -1 }\n })\n )\n }\n\n return h(QItemSection, data, child)\n },\n\n __getHeader (h) {\n let child\n\n if (this.$scopedSlots.header !== void 0) {\n child = this.$scopedSlots.header().slice()\n }\n else {\n child = [\n h(QItemSection, [\n h(QItemLabel, {\n props: { lines: this.labelLines }\n }, [ this.label || '' ]),\n\n this.caption\n ? h(QItemLabel, {\n props: { lines: this.captionLines, caption: true }\n }, [ this.caption ])\n : null\n ])\n ]\n\n this.icon && child[this.switchToggleSide === true ? 'push' : 'unshift'](\n h(QItemSection, {\n props: {\n side: this.switchToggleSide === true,\n avatar: this.switchToggleSide !== true\n }\n }, [\n h(QIcon, {\n props: { name: this.icon }\n })\n ])\n )\n }\n\n this.disable !== true && child[this.switchToggleSide === true ? 'unshift' : 'push'](\n this.__getToggleIcon(h)\n )\n\n const data = {\n ref: 'item',\n style: this.headerStyle,\n class: this.headerClass,\n props: {\n dark: this.isDark,\n disable: this.disable,\n dense: this.dense,\n insetLevel: this.headerInsetLevel\n }\n }\n\n if (this.isClickable === true) {\n const evtProp = this.hasRouterLink === true ? 'nativeOn' : 'on'\n\n data.props.clickable = true\n data[evtProp] = {\n ...this.qListeners,\n click: this.__onHeaderClick\n }\n\n this.hasRouterLink === true && Object.assign(\n data.props,\n this.routerLinkProps\n )\n }\n\n return h(QItem, data, child)\n },\n\n __getContent (h) {\n const node = [\n this.__getHeader(h),\n\n h(QSlideTransition, {\n props: { duration: this.duration },\n on: cache(this, 'slide', {\n show: () => { this.$emit('after-show') },\n hide: () => { this.$emit('after-hide') }\n })\n }, [\n h('div', {\n staticClass: 'q-expansion-item__content relative-position',\n style: this.contentStyle,\n directives: [{ name: 'show', value: this.showing }]\n }, slot(this, 'default'))\n ])\n ]\n\n if (this.expandSeparator) {\n node.push(\n h(QSeparator, {\n staticClass: 'q-expansion-item__border q-expansion-item__border--top absolute-top',\n props: { dark: this.isDark }\n }),\n h(QSeparator, {\n staticClass: 'q-expansion-item__border q-expansion-item__border--bottom absolute-bottom',\n props: { dark: this.isDark }\n })\n )\n }\n\n return node\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-expansion-item q-item-type',\n class: this.classes\n }, [\n h(\n 'div',\n { staticClass: 'q-expansion-item__container relative-position' },\n this.__getContent(h)\n )\n ])\n },\n\n created () {\n this.group !== void 0 && this.$root.$on(eventName, this.__eventHandler)\n },\n\n beforeDestroy () {\n this.group !== void 0 && this.$root.$off(eventName, this.__eventHandler)\n }\n})\n","import ListenersMixin from './listeners.js'\n\nconst labelPositions = ['top', 'right', 'bottom', 'left']\n\nexport default {\n mixins: [ ListenersMixin ],\n\n props: {\n type: {\n type: String,\n default: 'a'\n },\n\n outline: Boolean,\n push: Boolean,\n flat: Boolean,\n unelevated: Boolean,\n\n color: String,\n textColor: String,\n glossy: Boolean,\n\n square: Boolean,\n padding: String,\n\n label: {\n type: [ String, Number ],\n default: ''\n },\n labelPosition: {\n type: String,\n default: 'right',\n validator: v => labelPositions.includes(v)\n },\n externalLabel: Boolean,\n hideLabel: {\n type: Boolean\n },\n labelClass: [ Array, String, Object ],\n labelStyle: [ Array, String, Object ],\n\n disable: Boolean,\n\n tabindex: [ Number, String ]\n },\n\n computed: {\n formClass () {\n return `q-fab--form-${this.square === true ? 'square' : 'rounded'}`\n },\n\n stacked () {\n return this.externalLabel === false && ['top', 'bottom'].includes(this.labelPosition)\n },\n\n labelProps () {\n if (this.externalLabel === true) {\n const hideLabel = this.hideLabel === null\n ? this.showing === false\n : this.hideLabel\n\n return {\n action: 'push',\n data: {\n staticClass: `q-fab__label q-tooltip--style q-fab__label--external` +\n ` q-fab__label--external-${this.labelPosition}` +\n (hideLabel === true ? ' q-fab__label--external-hidden' : ''),\n style: this.labelStyle,\n class: this.labelClass\n }\n }\n }\n\n return {\n action: [ 'left', 'top' ].includes(this.labelPosition)\n ? 'unshift'\n : 'push',\n data: {\n staticClass: `q-fab__label q-fab__label--internal q-fab__label--internal-${this.labelPosition}` +\n (this.hideLabel === true ? ' q-fab__label--internal-hidden' : ''),\n style: this.labelStyle,\n class: this.labelClass\n }\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport QIcon from '../icon/QIcon.js'\n\nimport FabMixin from '../../mixins/fab.js'\nimport AttrsMixin from '../../mixins/attrs.js'\nimport ModelToggleMixin from '../../mixins/model-toggle.js'\n\nimport { slot, mergeSlot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nconst directions = ['up', 'right', 'down', 'left']\nconst alignValues = [ 'left', 'center', 'right' ]\n\nexport default Vue.extend({\n name: 'QFab',\n\n inheritAttrs: false,\n\n mixins: [ FabMixin, AttrsMixin, ModelToggleMixin ],\n\n provide () {\n return {\n __qFab: this\n }\n },\n\n props: {\n icon: String,\n activeIcon: String,\n\n hideIcon: Boolean,\n hideLabel: {\n default: null\n },\n\n direction: {\n type: String,\n default: 'right',\n validator: v => directions.includes(v)\n },\n\n persistent: Boolean,\n\n verticalActionsAlign: {\n type: String,\n default: 'center',\n validator: v => alignValues.includes(v)\n }\n },\n\n data () {\n return {\n showing: this.value === true\n }\n },\n\n computed: {\n hideOnRouteChange () {\n return this.persistent !== true\n },\n\n classes () {\n return `q-fab--align-${this.verticalActionsAlign} ${this.formClass}` +\n (this.showing === true ? ' q-fab--opened' : '')\n },\n\n attrs () {\n return {\n 'aria-expanded': this.showing === true ? 'true' : 'false',\n 'aria-haspopup': 'true',\n ...this.qAttrs\n }\n }\n },\n\n methods: {\n __onChildClick (evt) {\n this.hide(evt)\n\n if (this.$refs.trigger && this.$refs.trigger.$el) {\n this.$refs.trigger.$el.focus()\n }\n }\n },\n\n render (h) {\n const child = []\n\n this.hideIcon !== true && child.push(\n h('div', { staticClass: 'q-fab__icon-holder' }, [\n h(QIcon, {\n staticClass: 'q-fab__icon absolute-full',\n props: { name: this.icon || this.$q.iconSet.fab.icon }\n }),\n h(QIcon, {\n staticClass: 'q-fab__active-icon absolute-full',\n props: { name: this.activeIcon || this.$q.iconSet.fab.activeIcon }\n })\n ])\n )\n\n this.label !== '' && child[this.labelProps.action](\n h('div', this.labelProps.data, [ this.label ])\n )\n\n return h('div', {\n staticClass: 'q-fab z-fab row inline justify-center',\n class: this.classes,\n on: { ...this.qListeners }\n }, [\n h(QBtn, {\n ref: 'trigger',\n class: this.formClass,\n props: {\n ...this.$props,\n noWrap: true,\n stack: this.stacked,\n align: void 0,\n icon: void 0,\n label: void 0,\n noCaps: true,\n fab: true\n },\n attrs: this.attrs,\n on: cache(this, 'tog', {\n click: this.toggle\n })\n }, mergeSlot(child, this, 'tooltip')),\n\n h('div', {\n staticClass: 'q-fab__actions flex no-wrap inline',\n class: `q-fab__actions--${this.direction}`\n }, slot(this, 'default'))\n ])\n }\n})\n","import Vue from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport QIcon from '../icon/QIcon.js'\n\nimport FabMixin from '../../mixins/fab.js'\n\nimport { mergeSlot } from '../../utils/slot.js'\n\nconst anchorMap = {\n start: 'self-end',\n center: 'self-center',\n end: 'self-start'\n}\n\nconst anchorValues = Object.keys(anchorMap)\n\nexport default Vue.extend({\n name: 'QFabAction',\n\n mixins: [ FabMixin ],\n\n props: {\n icon: {\n type: String,\n default: ''\n },\n\n anchor: {\n type: String,\n validator: v => anchorValues.includes(v)\n },\n\n to: [ String, Object ],\n replace: Boolean\n },\n\n inject: {\n __qFab: {\n default () {\n console.error('QFabAction needs to be child of QFab')\n }\n }\n },\n\n computed: {\n classes () {\n const align = anchorMap[this.anchor]\n return this.formClass + (align !== void 0 ? ` ${align}` : '')\n },\n\n onEvents () {\n return {\n ...this.qListeners,\n click: this.click\n }\n },\n\n isDisabled () {\n return this.__qFab.showing !== true || this.disable === true\n }\n },\n\n methods: {\n click (e) {\n this.__qFab.__onChildClick(e)\n this.$emit('click', e)\n }\n },\n\n render (h) {\n const child = []\n\n this.icon !== '' && child.push(\n h(QIcon, {\n props: { name: this.icon }\n })\n )\n\n this.label !== '' && child[this.labelProps.action](\n h('div', this.labelProps.data, [ this.label ])\n )\n\n return h(QBtn, {\n class: this.classes,\n props: {\n ...this.$props,\n noWrap: true,\n stack: this.stacked,\n icon: void 0,\n label: void 0,\n noCaps: true,\n fabMini: true,\n disable: this.isDisabled\n },\n on: this.onEvents\n }, mergeSlot(child, this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport QField from '../field/QField.js'\nimport QChip from '../chip/QChip.js'\n\nimport { FormFieldMixin } from '../../mixins/form.js'\nimport FileMixin, { FileValueMixin } from '../../mixins/file.js'\n\nimport { isSSR } from '../../plugins/Platform'\nimport { humanStorageSize } from '../../utils/format.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QFile',\n\n mixins: [ QField, FileMixin, FormFieldMixin, FileValueMixin ],\n\n props: {\n /* SSR does not know about File & FileList */\n value: isSSR === true\n ? {}\n : [ File, FileList, Array ],\n\n append: Boolean,\n useChips: Boolean,\n displayValue: [ String, Number ],\n\n tabindex: {\n type: [ String, Number ],\n default: 0\n },\n\n counterLabel: Function,\n\n inputClass: [ Array, String, Object ],\n inputStyle: [ Array, String, Object ]\n },\n\n data () {\n return {\n dnd: false\n }\n },\n\n computed: {\n innerValue () {\n return Object(this.value) === this.value\n ? ('length' in this.value ? Array.from(this.value) : [ this.value ])\n : []\n },\n\n selectedString () {\n return this.innerValue\n .map(file => file.name)\n .join(', ')\n },\n\n totalSize () {\n return humanStorageSize(\n this.innerValue.reduce((acc, file) => acc + file.size, 0)\n )\n },\n\n counterProps () {\n return {\n totalSize: this.totalSize,\n filesNumber: this.innerValue.length,\n maxFiles: this.maxFiles\n }\n },\n\n computedCounter () {\n if (this.counterLabel !== void 0) {\n return this.counterLabel(this.counterProps)\n }\n\n const max = this.maxFiles\n return `${this.innerValue.length}${max !== void 0 ? ' / ' + max : ''} (${this.totalSize})`\n },\n\n inputAttrs () {\n return {\n tabindex: -1,\n type: 'file',\n title: '', // try to remove default tooltip,\n accept: this.accept,\n capture: this.capture,\n name: this.nameProp,\n ...this.qAttrs,\n id: this.targetUid,\n disabled: this.editable !== true\n }\n },\n\n isAppending () {\n return this.multiple === true && this.append === true\n }\n },\n\n methods: {\n removeAtIndex (index) {\n const files = this.innerValue.slice()\n files.splice(index, 1)\n this.__emitValue(files)\n },\n\n removeFile (file) {\n const index = this.innerValue.findIndex(file)\n if (index > -1) {\n this.removeAtIndex(index)\n }\n },\n\n __emitValue (files) {\n this.$emit('input', this.multiple === true ? files : files[0])\n },\n\n __onKeyup (e) {\n // only on ENTER\n e.keyCode === 13 && this.pickFiles(e)\n },\n\n __getFileInput () {\n return this.$refs.input\n },\n\n __addFiles (e, fileList) {\n const files = this.__processFiles(e, fileList, this.innerValue, this.isAppending)\n\n files !== void 0 && this.__emitValue(\n this.isAppending === true\n ? this.innerValue.concat(files)\n : files\n )\n },\n\n __getControl (h) {\n const data = {\n ref: 'target',\n staticClass: 'q-field__native row items-center cursor-pointer',\n attrs: {\n tabindex: this.tabindex\n }\n }\n\n if (this.editable === true) {\n data.on = cache(this, 'native', {\n dragover: this.__onDragOver,\n keyup: this.__onKeyup\n })\n }\n\n return h('div', data, [ this.__getInput(h) ].concat(this.__getSelection(h)))\n },\n\n __getControlChild (h) {\n return this.__getDnd(h, 'file')\n },\n\n __getSelection (h) {\n if (this.$scopedSlots.file !== void 0) {\n return this.innerValue.map((file, index) => this.$scopedSlots.file({ index, file, ref: this }))\n }\n\n if (this.$scopedSlots.selected !== void 0) {\n return this.$scopedSlots.selected({ files: this.innerValue, ref: this })\n }\n\n if (this.useChips === true) {\n return this.innerValue.map((file, i) => h(QChip, {\n key: 'file-' + i,\n props: {\n removable: this.editable,\n dense: true,\n textColor: this.color,\n tabindex: this.tabindex\n },\n on: cache(this, 'rem#' + i, {\n remove: () => { this.removeAtIndex(i) }\n })\n }, [\n h('span', {\n staticClass: 'ellipsis',\n domProps: {\n textContent: file.name\n }\n })\n ]))\n }\n\n return [\n h('div', {\n style: this.inputStyle,\n class: this.inputClass,\n domProps: {\n textContent: this.displayValue !== void 0\n ? this.displayValue\n : this.selectedString\n }\n })\n ]\n },\n\n __getInput (h) {\n const data = {\n ref: 'input',\n staticClass: 'q-field__input fit absolute-full cursor-pointer',\n attrs: this.inputAttrs,\n domProps: this.formDomProps,\n on: cache(this, 'input', {\n change: this.__addFiles\n })\n }\n\n if (this.multiple === true) {\n data.attrs.multiple = true\n }\n\n return h('input', data)\n }\n },\n\n created () {\n this.fieldClass = 'q-file q-field--auto-height'\n\n // necessary for QField's clearable\n // and FileValueMixin\n this.type = 'file'\n }\n})\n","import Vue from 'vue'\n\nimport { onSSR } from '../../plugins/Platform.js'\n\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { mergeSlot } from '../../utils/slot.js'\nimport { stop } from '../../utils/event.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QFooter',\n\n mixins: [ ListenersMixin ],\n\n inject: {\n layout: {\n default () {\n console.error('QFooter needs to be child of QLayout')\n }\n }\n },\n\n props: {\n value: {\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 data () {\n return {\n size: parseInt(this.heightHint, 10),\n revealed: true,\n windowHeight: onSSR || this.layout.container ? 0 : window.innerHeight\n }\n },\n\n watch: {\n value (val) {\n this.__update('space', val)\n this.__updateLocal('revealed', true)\n this.layout.__animate()\n },\n\n offset (val) {\n this.__update('offset', val)\n },\n\n reveal (val) {\n val === false && this.__updateLocal('revealed', this.value)\n },\n\n revealed (val) {\n this.layout.__animate()\n this.$emit('reveal', val)\n },\n\n 'layout.scroll' () {\n this.__updateRevealed()\n },\n\n 'layout.height' () {\n this.__updateRevealed()\n },\n\n size () {\n this.__updateRevealed()\n },\n\n '$q.screen.height' (val) {\n this.layout.container !== true && this.__updateLocal('windowHeight', val)\n }\n },\n\n computed: {\n fixed () {\n return this.reveal === true ||\n this.layout.view.indexOf('F') > -1 ||\n this.layout.container === true\n },\n\n containerHeight () {\n return this.layout.container === true\n ? this.layout.containerHeight\n : this.windowHeight\n },\n\n offset () {\n if (this.value !== true) {\n return 0\n }\n if (this.fixed === true) {\n return this.revealed === true ? this.size : 0\n }\n const offset = this.layout.scroll.position + this.containerHeight + this.size - this.layout.height\n return offset > 0 ? offset : 0\n },\n\n hidden () {\n return this.value !== true || (this.fixed === true && this.revealed !== true)\n },\n\n revealOnFocus () {\n return this.value === true && this.hidden === true && this.reveal === true\n },\n\n classes () {\n return (this.fixed === true ? 'fixed' : 'absolute') + '-bottom' +\n (this.bordered === true ? ' q-footer--bordered' : '') +\n (this.hidden === true ? ' q-footer--hidden' : '') +\n (this.value !== true ? ' q-layout--prevent-focus' : '') +\n (this.value !== true && this.fixed !== true ? ' hidden' : '')\n },\n\n style () {\n const\n view = this.layout.rows.bottom,\n css = {}\n\n if (view[0] === 'l' && this.layout.left.space === true) {\n css[this.$q.lang.rtl === true ? 'right' : 'left'] = `${this.layout.left.size}px`\n }\n if (view[2] === 'r' && this.layout.right.space === true) {\n css[this.$q.lang.rtl === true ? 'left' : 'right'] = `${this.layout.right.size}px`\n }\n\n return css\n },\n\n onEvents () {\n return {\n ...this.qListeners,\n focusin: this.__onFocusin,\n input: stop\n }\n }\n },\n\n render (h) {\n const child = mergeSlot([\n h(QResizeObserver, {\n props: { debounce: 0 },\n on: cache(this, 'resize', { resize: this.__onResize })\n })\n ], this, 'default')\n\n this.elevated === true && child.push(\n h('div', {\n staticClass: 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'\n })\n )\n\n return h('footer', {\n staticClass: 'q-footer q-layout__section--marginal',\n class: this.classes,\n style: this.style,\n on: this.onEvents\n }, child)\n },\n\n created () {\n this.layout.instances.footer = this\n this.value === true && this.__update('size', this.size)\n this.__update('space', this.value)\n this.__update('offset', this.offset)\n },\n\n beforeDestroy () {\n if (this.layout.instances.footer === this) {\n this.layout.instances.footer = void 0\n this.__update('size', 0)\n this.__update('offset', 0)\n this.__update('space', false)\n }\n },\n\n methods: {\n __onResize ({ height }) {\n this.__updateLocal('size', height)\n this.__update('size', height)\n },\n\n __update (prop, val) {\n if (this.layout.footer[prop] !== val) {\n this.layout.footer[prop] = val\n }\n },\n\n __updateLocal (prop, val) {\n if (this[prop] !== val) {\n this[prop] = val\n }\n },\n\n __updateRevealed () {\n if (this.reveal !== true) { return }\n\n const { direction, position, inflexionPosition } = this.layout.scroll\n\n this.__updateLocal('revealed', (\n direction === 'up' ||\n position - inflexionPosition < 100 ||\n this.layout.height - this.containerHeight - position - this.size < 300\n ))\n },\n\n __onFocusin (evt) {\n if (this.revealOnFocus === true) {\n this.__updateLocal('revealed', true)\n }\n\n this.$emit('focusin', evt)\n }\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QForm',\n\n mixins: [ ListenersMixin ],\n\n props: {\n autofocus: Boolean,\n noErrorFocus: Boolean,\n noResetFocus: Boolean,\n greedy: Boolean\n },\n\n computed: {\n onEvents () {\n return {\n ...this.qListeners,\n submit: this.submit,\n reset: this.reset\n }\n }\n },\n\n mounted () {\n this.validateIndex = 0\n this.autofocus === true && this.focus()\n },\n\n methods: {\n validate (shouldFocus) {\n const promises = []\n const focus = typeof shouldFocus === 'boolean'\n ? shouldFocus\n : this.noErrorFocus !== true\n\n this.validateIndex++\n\n const components = this.getValidationComponents()\n\n const emit = (res, ref) => {\n this.$emit('validation-' + (res === true ? 'success' : 'error'), ref)\n }\n\n for (let i = 0; i < components.length; i++) {\n const comp = components[i]\n const valid = comp.validate()\n\n if (typeof valid.then === 'function') {\n promises.push(\n valid.then(\n valid => ({ valid, comp }),\n error => ({ valid: false, comp, error })\n )\n )\n }\n else if (valid !== true) {\n if (this.greedy === false) {\n emit(false, comp)\n\n if (focus === true && typeof comp.focus === 'function') {\n comp.focus()\n }\n\n return Promise.resolve(false)\n }\n\n promises.push({ valid: false, comp })\n }\n }\n\n if (promises.length === 0) {\n emit(true)\n return Promise.resolve(true)\n }\n\n const index = this.validateIndex\n\n return Promise.all(promises).then(\n res => {\n if (index === this.validateIndex) {\n const errors = res.filter(r => r.valid !== true)\n\n if (errors.length === 0) {\n emit(true)\n return true\n }\n\n const { valid, comp } = errors[0]\n\n emit(false, comp)\n\n if (\n focus === true &&\n valid !== true &&\n typeof comp.focus === 'function'\n ) {\n comp.focus()\n }\n\n return false\n }\n }\n )\n },\n\n resetValidation () {\n this.validateIndex++\n\n this.getValidationComponents().forEach(comp => {\n comp.resetValidation()\n })\n },\n\n submit (evt) {\n evt !== void 0 && stopAndPrevent(evt)\n\n this.validate().then(val => {\n if (val === true) {\n if (this.qListeners.submit !== void 0) {\n this.$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 reset (evt) {\n evt !== void 0 && stopAndPrevent(evt)\n\n this.$emit('reset')\n\n this.$nextTick(() => { // allow userland to reset values before\n this.resetValidation()\n if (this.autofocus === true && this.noResetFocus !== true) {\n this.focus()\n }\n })\n },\n\n focus () {\n const target = this.$el.querySelector('[autofocus], [data-autofocus]') ||\n Array.prototype.find.call(this.$el.querySelectorAll('[tabindex]'), el => el.tabIndex > -1)\n\n target !== null && target !== void 0 && target.focus()\n },\n\n getValidationComponents () {\n return Array.prototype.map.call(\n this.$el.getElementsByClassName('q-validation-component'),\n field => field.__vue__\n ).filter(c => c !== void 0 && typeof c.validate === 'function')\n }\n },\n\n render (h) {\n return h('form', {\n staticClass: 'q-form',\n on: this.onEvents\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { uniqueSlot } from '../../utils/slot.js'\nimport { stop } from '../../utils/event.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QHeader',\n\n mixins: [ ListenersMixin ],\n\n inject: {\n layout: {\n default () {\n console.error('QHeader needs to be child of QLayout')\n }\n }\n },\n\n props: {\n value: {\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 data () {\n return {\n size: parseInt(this.heightHint, 10),\n revealed: true\n }\n },\n\n watch: {\n value (val) {\n this.__update('space', val)\n this.__updateLocal('revealed', true)\n this.layout.__animate()\n },\n\n offset (val) {\n this.__update('offset', val)\n },\n\n reveal (val) {\n val === false && this.__updateLocal('revealed', this.value)\n },\n\n revealed (val) {\n this.layout.__animate()\n this.$emit('reveal', val)\n },\n\n 'layout.scroll' (scroll) {\n this.reveal === true && this.__updateLocal('revealed',\n scroll.direction === 'up' ||\n scroll.position <= this.revealOffset ||\n scroll.position - scroll.inflexionPosition < 100\n )\n }\n },\n\n computed: {\n fixed () {\n return this.reveal === true ||\n this.layout.view.indexOf('H') > -1 ||\n this.layout.container === true\n },\n\n offset () {\n if (this.value !== true) {\n return 0\n }\n if (this.fixed === true) {\n return this.revealed === true ? this.size : 0\n }\n const offset = this.size - this.layout.scroll.position\n return offset > 0 ? offset : 0\n },\n\n hidden () {\n return this.value !== true || (this.fixed === true && this.revealed !== true)\n },\n\n revealOnFocus () {\n return this.value === true && this.hidden === true && this.reveal === true\n },\n\n classes () {\n return (this.fixed === true ? 'fixed' : 'absolute') + '-top' +\n (this.bordered === true ? ' q-header--bordered' : '') +\n (this.hidden === true ? ' q-header--hidden' : '') +\n (this.value !== true ? ' q-layout--prevent-focus' : '')\n },\n\n style () {\n const\n view = this.layout.rows.top,\n css = {}\n\n if (view[0] === 'l' && this.layout.left.space === true) {\n css[this.$q.lang.rtl === true ? 'right' : 'left'] = `${this.layout.left.size}px`\n }\n if (view[2] === 'r' && this.layout.right.space === true) {\n css[this.$q.lang.rtl === true ? 'left' : 'right'] = `${this.layout.right.size}px`\n }\n\n return css\n },\n\n onEvents () {\n return {\n ...this.qListeners,\n focusin: this.__onFocusin,\n input: stop\n }\n }\n },\n\n render (h) {\n const child = uniqueSlot(this, 'default', [])\n\n this.elevated === true && child.push(\n h('div', {\n staticClass: 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'\n })\n )\n\n child.push(\n h(QResizeObserver, {\n props: { debounce: 0 },\n on: cache(this, 'resize', { resize: this.__onResize })\n })\n )\n\n return h('header', {\n staticClass: 'q-header q-layout__section--marginal',\n class: this.classes,\n style: this.style,\n on: this.onEvents\n }, child)\n },\n\n created () {\n this.layout.instances.header = this\n this.value === true && this.__update('size', this.size)\n this.__update('space', this.value)\n this.__update('offset', this.offset)\n },\n\n beforeDestroy () {\n if (this.layout.instances.header === this) {\n this.layout.instances.header = void 0\n this.__update('size', 0)\n this.__update('offset', 0)\n this.__update('space', false)\n }\n },\n\n methods: {\n __onResize ({ height }) {\n this.__updateLocal('size', height)\n this.__update('size', height)\n },\n\n __update (prop, val) {\n if (this.layout.header[prop] !== val) {\n this.layout.header[prop] = val\n }\n },\n\n __updateLocal (prop, val) {\n if (this[prop] !== val) {\n this[prop] = val\n }\n },\n\n __onFocusin (evt) {\n if (this.revealOnFocus === true) {\n this.__updateLocal('revealed', true)\n }\n\n this.$emit('focusin', evt)\n }\n }\n})\n","export default {\n props: {\n ratio: [ String, Number ]\n },\n\n computed: {\n ratioStyle () {\n const ratio = this.ratio || this.naturalRatio\n\n if (ratio !== void 0) {\n return { paddingBottom: `${100 / ratio}%` }\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport RatioMixin from '../../mixins/ratio.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QImg',\n\n mixins: [ ListenersMixin, RatioMixin ],\n\n props: {\n src: String,\n srcset: String,\n sizes: String,\n alt: String,\n width: String,\n height: String,\n\n placeholderSrc: String,\n\n basic: Boolean,\n contain: Boolean,\n position: {\n type: String,\n default: '50% 50%'\n },\n\n transition: {\n type: String,\n default: 'fade'\n },\n\n imgClass: [ Array, String, Object ],\n imgStyle: Object,\n\n nativeContextMenu: Boolean,\n\n noDefaultSpinner: Boolean,\n spinnerColor: String,\n spinnerSize: String\n },\n\n data () {\n return {\n currentSrc: '',\n image: null,\n isLoading: !!this.src,\n hasError: false,\n naturalRatio: void 0\n }\n },\n\n watch: {\n src () {\n this.__load()\n },\n\n srcset (val) {\n this.__updateWatcher(val)\n }\n },\n\n computed: {\n url () {\n return this.currentSrc || this.placeholderSrc || void 0\n },\n\n attrs () {\n const att = { role: 'img' }\n if (this.alt !== void 0) {\n att['aria-label'] = this.alt\n }\n return att\n },\n\n imgContainerStyle () {\n return Object.assign(\n {\n backgroundSize: this.contain === true ? 'contain' : 'cover',\n backgroundPosition: this.position\n },\n this.imgStyle,\n { backgroundImage: `url(\"${this.url}\")` })\n },\n\n style () {\n return {\n width: this.width,\n height: this.height\n }\n },\n\n classes () {\n return 'q-img overflow-hidden' +\n (this.nativeContextMenu === true ? ' q-img--menu' : '')\n }\n },\n\n methods: {\n __onLoad (img) {\n this.isLoading = false\n this.hasError = false\n this.__computeRatio(img)\n this.__updateSrc()\n this.__updateWatcher(this.srcset)\n this.$emit('load', this.currentSrc)\n },\n\n __onError (err) {\n clearTimeout(this.ratioTimer)\n this.isLoading = false\n this.hasError = true\n this.currentSrc = ''\n this.$emit('error', err)\n },\n\n __updateSrc () {\n if (this.image !== void 0 && this.isLoading === false) {\n const src = this.image.currentSrc || this.image.src\n if (this.currentSrc !== src) {\n this.currentSrc = src\n }\n }\n },\n\n __updateWatcher (srcset) {\n if (srcset) {\n if (this.unwatch === void 0) {\n this.unwatch = this.$watch('$q.screen.width', this.__updateSrc)\n }\n }\n else if (this.unwatch !== void 0) {\n this.unwatch()\n this.unwatch = void 0\n }\n },\n\n __load () {\n clearTimeout(this.ratioTimer)\n this.hasError = false\n\n if (!this.src) {\n this.isLoading = false\n this.image = void 0\n this.currentSrc = ''\n return\n }\n\n this.isLoading = true\n\n const img = new Image()\n this.image = img\n\n img.onerror = err => {\n // if we are still rendering same image\n if (this.image === img && this.destroyed !== true) {\n this.__onError(err)\n }\n }\n\n img.onload = () => {\n if (this.destroyed === true) {\n return\n }\n\n // if we are still rendering same image\n if (this.image === img) {\n if (img.decode !== void 0) {\n img\n .decode()\n .catch(err => {\n if (this.image === img && this.destroyed !== true) {\n this.__onError(err)\n }\n })\n .then(() => {\n if (this.image === img && this.destroyed !== true) {\n this.__onLoad(img)\n }\n })\n }\n else {\n this.__onLoad(img)\n }\n }\n }\n\n img.src = this.src\n\n if (this.srcset) {\n img.srcset = this.srcset\n }\n\n if (this.sizes !== void 0) {\n img.sizes = this.sizes\n }\n else {\n Object.assign(img, {\n height: this.height,\n width: this.width\n })\n }\n },\n\n __computeRatio (img) {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalRatio = naturalHeight === 0\n ? 1\n : naturalWidth / naturalHeight\n }\n else {\n this.ratioTimer = setTimeout(() => {\n if (this.image === img && this.destroyed !== true) {\n this.__computeRatio(img)\n }\n }, 100)\n }\n },\n\n __getImage (h) {\n const nativeImg = this.nativeContextMenu === true\n ? [\n h('img', {\n staticClass: 'absolute-full fit',\n attrs: { src: this.url, 'aria-hidden': 'true' }\n })\n ]\n : void 0\n\n const content = this.url !== void 0\n ? h('div', {\n key: this.url,\n staticClass: 'q-img__image absolute-full',\n class: this.imgClass,\n style: this.imgContainerStyle\n }, nativeImg)\n : null\n\n return this.basic === true\n ? content\n : h('transition', {\n props: { name: 'q-transition--' + this.transition }\n }, [ content ])\n },\n\n __getContent (h) {\n const slotVm = slot(this, this.hasError === true ? 'error' : 'default')\n\n if (this.basic === true) {\n return h('div', {\n key: 'content',\n staticClass: 'q-img__content absolute-full'\n }, slotVm)\n }\n\n const content = this.isLoading === true\n ? h('div', {\n key: 'placeholder',\n staticClass: 'q-img__loading absolute-full flex flex-center'\n }, this.$scopedSlots.loading !== void 0\n ? this.$scopedSlots.loading()\n : (\n this.noDefaultSpinner === false\n ? [\n h(QSpinner, {\n props: {\n color: this.spinnerColor,\n size: this.spinnerSize\n }\n })\n ]\n : void 0\n )\n )\n : h('div', {\n key: 'content',\n staticClass: 'q-img__content absolute-full'\n }, slotVm)\n\n return h('transition', {\n props: { name: 'q-transition--fade' }\n }, [ content ])\n }\n },\n\n render (h) {\n return h('div', {\n class: this.classes,\n style: this.style,\n attrs: this.attrs,\n on: { ...this.qListeners }\n }, [\n h('div', { style: this.ratioStyle }),\n this.__getImage(h),\n this.__getContent(h)\n ])\n },\n\n beforeMount () {\n if (this.placeholderSrc !== void 0 && this.ratio === void 0) {\n const img = new Image()\n img.src = this.placeholderSrc\n this.__computeRatio(img)\n }\n this.isLoading === true && this.__load()\n },\n\n beforeDestroy () {\n this.destroyed = true\n clearTimeout(this.ratioTimer)\n this.unwatch !== void 0 && this.unwatch()\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport debounce from '../../utils/debounce.js'\nimport { height } from '../../utils/dom.js'\nimport { getScrollTarget, getScrollHeight, getScrollPosition, setScrollPosition } from '../../utils/scroll.js'\nimport { listenOpts } from '../../utils/event.js'\nimport { slot, uniqueSlot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QInfiniteScroll',\n\n mixins: [ ListenersMixin ],\n\n props: {\n offset: {\n type: Number,\n default: 500\n },\n\n debounce: {\n type: [ String, Number ],\n default: 100\n },\n\n scrollTarget: {\n default: void 0\n },\n\n initialIndex: Number,\n\n disable: Boolean,\n reverse: Boolean\n },\n\n data () {\n return {\n index: this.initialIndex || 0,\n fetching: false,\n working: true\n }\n },\n\n watch: {\n disable (val) {\n if (val === true) {\n this.stop()\n }\n else {\n this.resume()\n }\n },\n\n scrollTarget () {\n this.updateScrollTarget()\n },\n\n debounce (val) {\n this.__setDebounce(val)\n }\n },\n\n methods: {\n poll () {\n if (this.disable === true || this.fetching === true || this.working === false) {\n return\n }\n\n const\n scrollHeight = getScrollHeight(this.__scrollTarget),\n scrollPosition = getScrollPosition(this.__scrollTarget),\n containerHeight = height(this.__scrollTarget)\n\n if (this.reverse === false) {\n if (scrollPosition + containerHeight + this.offset >= scrollHeight) {\n this.trigger()\n }\n }\n else {\n if (scrollPosition < this.offset) {\n this.trigger()\n }\n }\n },\n\n trigger () {\n if (this.disable === true || this.fetching === true || this.working === false) {\n return\n }\n\n this.index++\n this.fetching = true\n\n const heightBefore = getScrollHeight(this.__scrollTarget)\n\n this.$emit('load', this.index, stop => {\n if (this.working === true) {\n this.fetching = false\n this.$nextTick(() => {\n if (this.reverse === true) {\n const\n heightAfter = getScrollHeight(this.__scrollTarget),\n scrollPosition = getScrollPosition(this.__scrollTarget),\n heightDifference = heightAfter - heightBefore\n\n setScrollPosition(this.__scrollTarget, scrollPosition + heightDifference)\n }\n\n if (stop === true) {\n this.stop()\n }\n else {\n this.$el.closest('body') && this.poll()\n }\n })\n }\n })\n },\n\n reset () {\n this.index = 0\n },\n\n resume () {\n if (this.working === false) {\n this.working = true\n this.__scrollTarget.addEventListener('scroll', this.poll, listenOpts.passive)\n }\n this.immediatePoll()\n },\n\n stop () {\n if (this.working === true) {\n this.working = false\n this.fetching = false\n this.__scrollTarget.removeEventListener('scroll', this.poll, listenOpts.passive)\n }\n },\n\n updateScrollTarget () {\n if (this.__scrollTarget && this.working === true) {\n this.__scrollTarget.removeEventListener('scroll', this.poll, listenOpts.passive)\n }\n\n this.__scrollTarget = getScrollTarget(this.$el, this.scrollTarget)\n\n if (this.working === true) {\n this.__scrollTarget.addEventListener('scroll', this.poll, listenOpts.passive)\n }\n },\n\n setIndex (index) {\n this.index = index\n },\n\n __setDebounce (val) {\n val = parseInt(val, 10)\n if (val <= 0) {\n this.poll = this.immediatePoll\n }\n else {\n this.poll = debounce(this.immediatePoll, isNaN(val) === true ? 100 : val)\n }\n }\n },\n\n mounted () {\n this.immediatePoll = this.poll\n this.__setDebounce(this.debounce)\n\n this.updateScrollTarget()\n this.immediatePoll()\n\n if (this.reverse === true) {\n const\n scrollHeight = getScrollHeight(this.__scrollTarget),\n containerHeight = height(this.__scrollTarget)\n\n setScrollPosition(this.__scrollTarget, scrollHeight - containerHeight)\n }\n },\n\n beforeDestroy () {\n if (this.working === true) {\n this.__scrollTarget.removeEventListener('scroll', this.poll, listenOpts.passive)\n }\n },\n\n render (h) {\n const child = uniqueSlot(this, 'default', [])\n\n if (this.disable !== true && this.working === true) {\n child[this.reverse === false ? 'push' : 'unshift'](\n h('div', {\n staticClass: 'q-infinite-scroll__loading',\n class: this.fetching === true ? '' : 'invisible'\n }, slot(this, 'loading'))\n )\n }\n\n return h('div', {\n staticClass: 'q-infinite-scroll',\n on: { ...this.qListeners }\n }, child)\n }\n})\n","import Vue from 'vue'\n\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport TransitionMixin from '../../mixins/transition.js'\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nexport default Vue.extend({\n name: 'QInnerLoading',\n\n mixins: [ ListenersMixin, DarkMixin, TransitionMixin ],\n\n props: {\n showing: Boolean,\n color: String,\n\n size: {\n type: [String, Number],\n default: 42\n }\n },\n\n render (h) {\n const child = this.showing === true\n ? [\n h('div',\n {\n staticClass: 'q-inner-loading absolute-full column flex-center',\n class: this.isDark === true ? 'q-inner-loading--dark' : null,\n on: { ...this.qListeners }\n },\n this.$scopedSlots.default !== void 0\n ? this.$scopedSlots.default()\n : [\n h(QSpinner, {\n props: {\n size: this.size,\n color: this.color\n }\n })\n ]\n )\n ]\n : void 0\n\n return h('transition', {\n props: {\n name: this.transition,\n appear: true\n }\n }, child)\n }\n})\n","import { isDeepEqual } from '../utils/is.js'\n\nconst defaultCfg = {\n threshold: 0,\n root: null,\n rootMargin: '0px'\n}\n\nfunction update (el, ctx, value) {\n let handler, cfg, changed\n\n if (typeof value === 'function') {\n handler = value\n cfg = defaultCfg\n changed = ctx.cfg === void 0\n }\n else {\n handler = value.handler\n cfg = Object.assign({}, defaultCfg, value.cfg)\n changed = ctx.cfg === void 0 || isDeepEqual(ctx.cfg, cfg) === false\n }\n\n if (ctx.handler !== handler) {\n ctx.handler = handler\n }\n\n if (changed === true) {\n ctx.cfg = cfg\n ctx.observer !== void 0 && ctx.observer.unobserve(el)\n\n ctx.observer = new IntersectionObserver(([ entry ]) => {\n if (typeof ctx.handler === 'function') {\n // if observed element is part of a vue transition\n // then we need to be careful...\n if (\n entry.rootBounds === null &&\n (el.__vue__ !== void 0 ? el.__vue__._inactive !== true : document.body.contains(el) === true)\n ) {\n ctx.observer.unobserve(el)\n ctx.observer.observe(el)\n return\n }\n\n const res = ctx.handler(entry, ctx.observer)\n\n if (\n res === false ||\n (ctx.once === true && entry.isIntersecting === true)\n ) {\n destroy(el)\n }\n }\n }, cfg)\n\n ctx.observer.observe(el)\n }\n}\n\nfunction destroy (el) {\n const ctx = el.__qvisible\n\n if (ctx !== void 0) {\n ctx.observer !== void 0 && ctx.observer.unobserve(el)\n delete el.__qvisible\n }\n}\n\nexport default {\n name: 'intersection',\n\n inserted (el, { modifiers, value }) {\n if (el.__qvisible !== void 0) {\n destroy(el)\n el.__qvisible_destroyed = true\n }\n\n const ctx = {\n once: modifiers.once === true\n }\n\n update(el, ctx, value)\n\n el.__qvisible = ctx\n },\n\n update (el, binding) {\n const ctx = el.__qvisible\n ctx !== void 0 && update(el, ctx, binding.value)\n },\n\n unbind (el) {\n if (el.__qvisible_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qvisible_destroyed\n }\n }\n}\n","import Vue from 'vue'\n\nimport { onSSR } from '../../plugins/Platform.js'\n\nimport Intersection from '../../directives/Intersection.js'\n\nimport TagMixin from '../../mixins/tag.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QIntersection',\n\n mixins: [ TagMixin, ListenersMixin ],\n\n directives: {\n Intersection\n },\n\n props: {\n once: Boolean,\n transition: String,\n\n ssrPrerender: Boolean,\n\n margin: String,\n threshold: [ Number, Array ],\n\n disable: Boolean\n },\n\n data () {\n return {\n showing: onSSR === true ? this.ssrPrerender : false\n }\n },\n\n computed: {\n value () {\n return this.margin !== void 0 || this.threshold !== void 0\n ? {\n handler: this.__trigger,\n cfg: {\n rootMargin: this.margin,\n threshold: this.threshold\n }\n }\n : this.__trigger\n },\n\n directives () {\n if (this.disable !== true && (onSSR !== true || this.once !== true || this.ssrPrerender !== true)) {\n return [{\n name: 'intersection',\n value: this.value,\n modifiers: {\n once: this.once\n }\n }]\n }\n }\n },\n\n methods: {\n __trigger (entry) {\n if (this.showing !== entry.isIntersecting) {\n this.showing = entry.isIntersecting\n\n if (this.qListeners.visibility !== void 0) {\n this.$emit('visibility', this.showing)\n }\n }\n }\n },\n\n render (h) {\n const content = this.showing === true\n ? [ h('div', { key: 'content' }, slot(this, 'default')) ]\n : void 0\n\n return h(this.tag, {\n staticClass: 'q-intersection',\n on: { ...this.qListeners },\n directives: this.directives\n }, this.transition\n ? [\n h('transition', {\n props: { name: 'q-transition--' + this.transition }\n }, content)\n ]\n : content\n )\n }\n})\n","import Vue from 'vue'\n\nimport { position, stopAndPrevent } from '../../utils/event.js'\nimport { between, normalizeToInterval } from '../../utils/format.js'\nimport { slot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nimport QCircularProgress from '../circular-progress/QCircularProgress.js'\nimport FormMixin from '../../mixins/form.js'\nimport TouchPan from '../../directives/TouchPan.js'\n\n// PGDOWN, LEFT, DOWN, PGUP, RIGHT, UP\nconst keyCodes = [34, 37, 40, 33, 39, 38]\n\nexport default Vue.extend({\n name: 'QKnob',\n\n mixins: [\n { props: QCircularProgress.options.props },\n FormMixin\n ],\n\n directives: {\n TouchPan\n },\n\n props: {\n step: {\n type: Number,\n default: 1,\n validator: v => v >= 0\n },\n\n tabindex: {\n type: [Number, String],\n default: 0\n },\n\n disable: Boolean,\n readonly: Boolean\n },\n\n data () {\n return {\n model: this.value,\n dragging: false\n }\n },\n\n watch: {\n value (value) {\n if (value < this.min) {\n this.model = this.min\n }\n else if (value > this.max) {\n this.model = this.max\n }\n else {\n if (value !== this.model) {\n this.model = value\n }\n return\n }\n\n if (this.model !== this.value) {\n this.$emit('input', this.model)\n this.$emit('change', this.model)\n }\n }\n },\n\n computed: {\n classes () {\n return 'q-knob non-selectable' + (\n this.editable === true\n ? ' q-knob--editable'\n : (this.disable === true ? ' disabled' : '')\n )\n },\n\n editable () {\n return this.disable === false && this.readonly === false\n },\n\n decimals () {\n return (String(this.step).trim('0').split('.')[1] || '').length\n },\n\n computedStep () {\n return this.step === 0 ? 1 : this.step\n },\n\n computedInstantFeedback () {\n return this.instantFeedback === true ||\n this.dragging === true\n },\n\n onEvents () {\n return this.$q.platform.is.mobile === true\n ? { click: this.__click }\n : {\n mousedown: this.__activate,\n click: this.__click,\n keydown: this.__keydown,\n keyup: this.__keyup\n }\n },\n\n attrs () {\n const attrs = {\n role: 'slider',\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-valuenow': this.value\n }\n\n if (this.editable === true) {\n attrs.tabindex = this.tabindex\n }\n else {\n attrs[`aria-${this.disable === true ? 'disabled' : 'readonly'}`] = ''\n }\n\n return attrs\n }\n },\n\n methods: {\n __updateCenterPosition () {\n const { top, left, width, height } = this.$el.getBoundingClientRect()\n this.centerPosition = {\n top: top + height / 2,\n left: left + width / 2\n }\n },\n\n __pan (event) {\n if (event.isFinal) {\n this.__updatePosition(event.evt, true)\n this.dragging = false\n }\n else if (event.isFirst) {\n this.__updateCenterPosition()\n this.dragging = true\n this.__updatePosition(event.evt)\n }\n else {\n this.__updatePosition(event.evt)\n }\n },\n\n __click (evt) {\n this.__updateCenterPosition()\n this.__updatePosition(evt, true)\n },\n\n __keydown (evt) {\n if (!keyCodes.includes(evt.keyCode)) {\n return\n }\n\n stopAndPrevent(evt)\n\n const\n step = ([34, 33].includes(evt.keyCode) ? 10 : 1) * this.computedStep,\n offset = [34, 37, 40].includes(evt.keyCode) ? -step : step\n\n this.model = between(\n parseFloat((this.model + offset).toFixed(this.decimals)),\n this.min,\n this.max\n )\n\n this.__updateValue()\n },\n\n __keyup (evt) {\n if (keyCodes.includes(evt.keyCode)) {\n this.__updateValue(true)\n }\n },\n\n __activate (evt) {\n this.__updateCenterPosition()\n this.__updatePosition(evt)\n },\n\n __updatePosition (evt, change) {\n const\n center = this.centerPosition,\n pos = position(evt),\n height = Math.abs(pos.top - center.top),\n distance = Math.sqrt(\n height ** 2 +\n Math.abs(pos.left - center.left) ** 2\n )\n\n let angle = Math.asin(height / distance) * (180 / Math.PI)\n\n if (pos.top < center.top) {\n angle = center.left < pos.left ? 90 - angle : 270 + angle\n }\n else {\n angle = center.left < pos.left ? angle + 90 : 270 - angle\n }\n\n if (this.angle) {\n angle = normalizeToInterval(angle - this.angle, 0, 360)\n }\n\n if (this.$q.lang.rtl === true) {\n angle = 360 - angle\n }\n\n let model = this.min + (angle / 360) * (this.max - this.min)\n\n if (this.step !== 0) {\n const\n step = this.computedStep,\n modulo = model % step\n\n model = model - modulo +\n (Math.abs(modulo) >= step / 2 ? (modulo < 0 ? -1 : 1) * step : 0)\n\n model = parseFloat(model.toFixed(this.decimals))\n }\n\n model = between(model, this.min, this.max)\n\n this.$emit('drag-value', model)\n\n if (this.model !== model) {\n this.model = model\n }\n\n this.__updateValue(change)\n },\n\n __updateValue (change) {\n this.value !== this.model && this.$emit('input', this.model)\n change === true && this.$emit('change', this.model)\n },\n\n __getNameInput () {\n return this.$createElement('input', { attrs: this.formAttrs })\n }\n },\n\n render (h) {\n const data = {\n class: this.classes,\n attrs: this.attrs,\n props: {\n ...this.$props,\n value: this.model,\n instantFeedback: this.computedInstantFeedback\n }\n }\n\n if (this.editable === true) {\n data.on = this.onEvents\n data.directives = cache(this, 'dir', [{\n name: 'touch-pan',\n value: this.__pan,\n modifiers: {\n prevent: true,\n stop: true,\n mouse: true\n }\n }])\n\n if (this.name !== void 0) {\n data.scopedSlots = {\n internal: this.__getNameInput\n }\n }\n }\n\n return h(QCircularProgress, data, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport { getScrollPosition, getScrollTarget, getHorizontalScrollPosition } from '../../utils/scroll.js'\nimport { listenOpts, noop } from '../../utils/event.js'\n\nconst { passive } = listenOpts\n\nexport default Vue.extend({\n name: 'QScrollObserver',\n\n props: {\n debounce: [ String, Number ],\n horizontal: Boolean,\n\n scrollTarget: {\n default: void 0\n }\n },\n\n render: noop, // eslint-disable-line\n\n data () {\n return {\n pos: 0,\n dir: this.horizontal === true ? 'right' : 'down',\n dirChanged: false,\n dirChangePos: 0\n }\n },\n\n watch: {\n scrollTarget () {\n this.__unconfigureScrollTarget()\n this.__configureScrollTarget()\n }\n },\n\n methods: {\n getPosition () {\n return {\n position: this.pos,\n direction: this.dir,\n directionChanged: this.dirChanged,\n inflexionPosition: this.dirChangePos\n }\n },\n\n trigger (immediately) {\n if (immediately === true || this.debounce === 0 || this.debounce === '0') {\n this.__emit()\n }\n else if (!this.timer) {\n this.timer = this.debounce\n ? setTimeout(this.__emit, this.debounce)\n : requestAnimationFrame(this.__emit)\n }\n },\n\n __emit () {\n const fn = this.horizontal === true\n ? getHorizontalScrollPosition\n : getScrollPosition\n\n const\n pos = Math.max(0, fn(this.__scrollTarget)),\n delta = pos - this.pos,\n dir = this.horizontal === true\n ? delta < 0 ? 'left' : 'right'\n : delta < 0 ? 'up' : 'down'\n\n this.dirChanged = this.dir !== dir\n\n if (this.dirChanged) {\n this.dir = dir\n this.dirChangePos = this.pos\n }\n\n this.timer = null\n this.pos = pos\n this.$emit('scroll', this.getPosition())\n },\n\n __configureScrollTarget () {\n this.__scrollTarget = getScrollTarget(this.$el.parentNode, this.scrollTarget)\n this.__scrollTarget.addEventListener('scroll', this.trigger, passive)\n this.trigger(true)\n },\n\n __unconfigureScrollTarget () {\n if (this.__scrollTarget !== void 0) {\n this.__scrollTarget.removeEventListener('scroll', this.trigger, passive)\n this.__scrollTarget = void 0\n }\n }\n },\n\n mounted () {\n this.__configureScrollTarget()\n },\n\n beforeDestroy () {\n clearTimeout(this.timer)\n cancelAnimationFrame(this.timer)\n this.__unconfigureScrollTarget()\n }\n})\n","import Vue from 'vue'\n\nimport { onSSR } from '../../plugins/Platform.js'\n\nimport QScrollObserver from '../scroll-observer/QScrollObserver.js'\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { getScrollbarWidth } from '../../utils/scroll.js'\nimport { mergeSlot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QLayout',\n\n mixins: [ ListenersMixin ],\n\n provide () {\n return {\n layout: this\n }\n },\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\n data () {\n return {\n // page related\n height: this.$q.screen.height,\n width: this.container === true ? 0 : this.$q.screen.width,\n\n // container only prop\n containerHeight: 0,\n scrollbarWidth: onSSR === true ? 0 : getScrollbarWidth(),\n\n header: {\n size: 0,\n offset: 0,\n space: false\n },\n right: {\n size: 300,\n offset: 0,\n space: false\n },\n footer: {\n size: 0,\n offset: 0,\n space: false\n },\n left: {\n size: 300,\n offset: 0,\n space: false\n },\n\n scroll: {\n position: 0,\n direction: 'down'\n }\n }\n },\n\n computed: {\n rows () {\n const rows = this.view.toLowerCase().split(' ')\n return {\n top: rows[0].split(''),\n middle: rows[1].split(''),\n bottom: rows[2].split('')\n }\n },\n\n style () {\n return this.container === true\n ? null\n : { minHeight: this.$q.screen.height + 'px' }\n },\n\n // used by container only\n targetStyle () {\n if (this.scrollbarWidth !== 0) {\n return { [this.$q.lang.rtl === true ? 'left' : 'right']: `${this.scrollbarWidth}px` }\n }\n },\n\n targetChildStyle () {\n if (this.scrollbarWidth !== 0) {\n return {\n [this.$q.lang.rtl === true ? 'right' : 'left']: 0,\n [this.$q.lang.rtl === true ? 'left' : 'right']: `-${this.scrollbarWidth}px`,\n width: `calc(100% + ${this.scrollbarWidth}px)`\n }\n }\n },\n\n totalWidth () {\n return this.width + this.scrollbarWidth\n },\n\n classes () {\n return 'q-layout q-layout--' +\n (this.container === true ? 'containerized' : 'standard')\n }\n },\n\n created () {\n this.instances = {}\n },\n\n render (h) {\n const layout = h('div', {\n class: this.classes,\n style: this.style,\n on: { ...this.qListeners }\n }, mergeSlot([\n h(QScrollObserver, {\n on: cache(this, 'scroll', { scroll: this.__onPageScroll })\n }),\n\n h(QResizeObserver, {\n on: cache(this, 'resizeOut', { resize: this.__onPageResize })\n })\n ], this, 'default'))\n\n return this.container === true\n ? h('div', {\n staticClass: 'q-layout-container overflow-hidden'\n }, [\n h(QResizeObserver, {\n on: cache(this, 'resizeIn', { resize: this.__onContainerResize })\n }),\n h('div', {\n staticClass: 'absolute-full',\n style: this.targetStyle\n }, [\n h('div', {\n staticClass: 'scroll',\n style: this.targetChildStyle\n }, [ layout ])\n ])\n ])\n : layout\n },\n\n methods: {\n __animate () {\n if (this.timer !== void 0) {\n clearTimeout(this.timer)\n }\n else {\n document.body.classList.add('q-body--layout-animate')\n }\n this.timer = setTimeout(() => {\n document.body.classList.remove('q-body--layout-animate')\n this.timer = void 0\n }, 150)\n },\n\n __onPageScroll (data) {\n if (this.container === true || document.qScrollPrevented !== true) {\n this.scroll = data\n }\n this.qListeners.scroll !== void 0 && this.$emit('scroll', data)\n },\n\n __onPageResize ({ height, width }) {\n let resized = false\n\n if (this.height !== height) {\n resized = true\n this.height = height\n if (this.qListeners['scroll-height'] !== void 0) {\n this.$emit('scroll-height', height)\n }\n this.__updateScrollbarWidth()\n }\n if (this.width !== width) {\n resized = true\n this.width = width\n }\n\n if (resized === true && this.qListeners.resize !== void 0) {\n this.$emit('resize', { height, width })\n }\n },\n\n __onContainerResize ({ height }) {\n if (this.containerHeight !== height) {\n this.containerHeight = height\n this.__updateScrollbarWidth()\n }\n },\n\n __updateScrollbarWidth () {\n if (this.container === true) {\n const width = this.height > this.containerHeight\n ? getScrollbarWidth()\n : 0\n\n if (this.scrollbarWidth !== width) {\n this.scrollbarWidth = width\n }\n }\n }\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QMarkupTable',\n\n mixins: [ DarkMixin, ListenersMixin ],\n\n props: {\n dense: Boolean,\n flat: Boolean,\n bordered: Boolean,\n square: Boolean,\n separator: {\n type: String,\n default: 'horizontal',\n validator: v => ['horizontal', 'vertical', 'cell', 'none'].includes(v)\n },\n wrapCells: Boolean\n },\n\n computed: {\n classes () {\n return `q-table--${this.separator}-separator` +\n (this.isDark === true ? ` q-table--dark q-table__card--dark q-dark` : '') +\n (this.dense === true ? ` q-table--dense` : '') +\n (this.flat === true ? ` q-table--flat` : '') +\n (this.bordered === true ? ` q-table--bordered` : '') +\n (this.square === true ? ` q-table--square` : '') +\n (this.wrapCells === false ? ` q-table--no-wrap` : '')\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-markup-table q-table__container q-table__card',\n class: this.classes,\n on: { ...this.qListeners }\n }, [\n h('table', { staticClass: 'q-table' }, slot(this, 'default'))\n ])\n }\n})\n","import Vue from 'vue'\n\nimport CanRenderMixin from '../../mixins/can-render.js'\nimport TagMixin from '../../mixins/tag.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QNoSsr',\n\n mixins: [ CanRenderMixin, TagMixin, ListenersMixin ],\n\n props: {\n placeholder: String\n },\n\n render (h) {\n const data = {\n on: { ...this.qListeners }\n }\n\n if (this.canRender === true) {\n const node = slot(this, 'default')\n return node === void 0\n ? node\n : (node.length > 1 ? h(this.tag, data, node) : node[0])\n }\n\n data.staticClass = 'q-no-ssr-placeholder'\n\n const node = slot(this, 'placeholder')\n if (node !== void 0) {\n return node.length > 1\n ? h(this.tag, data, node)\n : node[0]\n }\n\n if (this.placeholder !== void 0) {\n return h(this.tag, data, [\n this.placeholder\n ])\n }\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport OptionSizeMixin from '../../mixins/option-size.js'\nimport FormMixin from '../../mixins/form.js'\nimport RefocusTargetMixin from '../../mixins/refocus-target.js'\n\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { slot, mergeSlot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QRadio',\n\n mixins: [ DarkMixin, OptionSizeMixin, FormMixin, RefocusTargetMixin ],\n\n props: {\n value: {\n required: true\n },\n val: {\n required: true\n },\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\n computed: {\n isTrue () {\n return this.value === this.val\n },\n\n classes () {\n return 'q-radio cursor-pointer no-outline row inline no-wrap items-center' +\n (this.disable === true ? ' disabled' : '') +\n (this.isDark === true ? ' q-radio--dark' : '') +\n (this.dense === true ? ' q-radio--dense' : '') +\n (this.leftLabel === true ? ' reverse' : '')\n },\n\n innerClass () {\n const color = this.color !== void 0 && (\n this.keepColor === true ||\n this.isTrue === true\n )\n ? ` text-${this.color}`\n : ''\n\n return `q-radio__inner--${this.isTrue === true ? 'truthy' : 'falsy'}${color}`\n },\n\n computedTabindex () {\n return this.disable === true ? -1 : this.tabindex || 0\n },\n\n formAttrs () {\n const prop = { type: 'radio' }\n\n this.name !== void 0 && Object.assign(prop, {\n name: this.name,\n value: this.val\n })\n\n return prop\n },\n\n formDomProps () {\n if (this.name !== void 0 && this.isTrue === true) {\n return { checked: true }\n }\n },\n\n attrs () {\n const attrs = {\n tabindex: this.computedTabindex,\n role: 'radio',\n 'aria-label': this.label,\n 'aria-checked': this.isTrue === true ? 'true' : 'false'\n }\n\n if (this.disable === true) {\n attrs['aria-disabled'] = 'true'\n }\n\n return attrs\n }\n },\n\n methods: {\n set (e) {\n if (e !== void 0) {\n stopAndPrevent(e)\n this.__refocusTarget(e)\n }\n\n if (this.disable !== true && this.isTrue !== true) {\n this.$emit('input', this.val, e)\n }\n }\n },\n\n render (h) {\n const content = [\n h('svg', {\n staticClass: 'q-radio__bg absolute',\n attrs: { focusable: 'false' /* needed for IE11 */, viewBox: '0 0 24 24', 'aria-hidden': 'true' }\n }, [\n h('path', {\n attrs: {\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\n h('path', {\n staticClass: 'q-radio__check',\n attrs: {\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 ])\n ]\n\n this.disable !== true && this.__injectFormInput(\n content,\n 'unshift',\n 'q-radio__native q-ma-none q-pa-none invisible'\n )\n\n const child = [\n h('div', {\n staticClass: 'q-radio__inner relative-position no-pointer-events',\n class: this.innerClass,\n style: this.sizeStyle\n }, content)\n ]\n\n if (this.__refocusTargetEl !== void 0) {\n child.push(this.__refocusTargetEl)\n }\n\n const label = this.label !== void 0\n ? mergeSlot([ this.label ], this, 'default')\n : slot(this, 'default')\n\n label !== void 0 && child.push(\n h('div', {\n staticClass: 'q-radio__label q-anchor--skip'\n }, label)\n )\n\n return h('div', {\n class: this.classes,\n attrs: this.attrs,\n on: cache(this, 'inpExt', {\n click: this.set,\n keydown: e => {\n if (e.keyCode === 13 || e.keyCode === 32) {\n stopAndPrevent(e)\n }\n },\n keyup: e => {\n if (e.keyCode === 13 || e.keyCode === 32) {\n this.set(e)\n }\n }\n })\n }, child)\n }\n})\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport CheckboxMixin from '../../mixins/checkbox.js'\n\nexport default Vue.extend({\n name: 'QToggle',\n\n mixins: [ CheckboxMixin ],\n\n props: {\n icon: String,\n checkedIcon: String,\n uncheckedIcon: String,\n indeterminateIcon: String,\n\n iconColor: String\n },\n\n computed: {\n computedIcon () {\n return (\n this.isTrue === true\n ? this.checkedIcon\n : (this.isIndeterminate === true ? this.indeterminateIcon : this.uncheckedIcon)\n ) || this.icon\n },\n\n computedIconColor () {\n if (this.isTrue === true) {\n return this.iconColor\n }\n }\n },\n\n methods: {\n __getInner (h) {\n return [\n h('div', { staticClass: 'q-toggle__track' }),\n\n h('div', {\n staticClass: 'q-toggle__thumb absolute flex flex-center no-wrap'\n }, this.computedIcon !== void 0\n ? [\n h(QIcon, {\n props: {\n name: this.computedIcon,\n color: this.computedIconColor\n }\n })\n ]\n : void 0\n )\n ]\n }\n },\n\n created () {\n this.type = 'toggle'\n }\n})\n","import Vue from 'vue'\n\nimport QRadio from '../radio/QRadio.js'\nimport QCheckbox from '../checkbox/QCheckbox.js'\nimport QToggle from '../toggle/QToggle.js'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport cache from '../../utils/cache.js'\n\nconst components = {\n radio: QRadio,\n checkbox: QCheckbox,\n toggle: QToggle\n}\n\nconst typeValues = Object.keys(components)\n\nexport default Vue.extend({\n name: 'QOptionGroup',\n\n mixins: [ DarkMixin, ListenersMixin ],\n\n props: {\n value: {\n required: true\n },\n options: {\n type: Array,\n validator (opts) {\n return opts.every(opt => 'value' in opt && 'label' in opt)\n }\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 computed: {\n component () {\n return components[this.type]\n },\n\n model () {\n return Array.isArray(this.value)\n ? this.value.slice()\n : this.value\n },\n\n classes () {\n return 'q-option-group q-gutter-x-sm' +\n (this.inline === true ? ' q-option-group--inline' : '')\n },\n\n attrs () {\n if (this.type === 'radio') {\n const attrs = {\n role: 'radiogroup'\n }\n\n if (this.disable === true) {\n attrs['aria-disabled'] = 'true'\n }\n\n return attrs\n }\n }\n },\n\n methods: {\n __update (value) {\n this.$emit('input', value)\n }\n },\n\n created () {\n const isArray = Array.isArray(this.value)\n\n if (this.type === 'radio') {\n if (isArray) {\n console.error('q-option-group: model should not be array')\n }\n }\n else if (isArray === false) {\n console.error('q-option-group: model should be array in your case')\n }\n },\n\n render (h) {\n return h('div', {\n class: this.classes,\n attrs: this.attrs,\n on: { ...this.qListeners }\n }, this.options.map(opt => h('div', [\n h(this.component, {\n props: {\n value: this.value,\n val: opt.value,\n name: this.name || opt.name,\n disable: this.disable || opt.disable,\n label: opt.label,\n leftLabel: this.leftLabel || opt.leftLabel,\n color: opt.color || this.color,\n checkedIcon: opt.checkedIcon,\n uncheckedIcon: opt.uncheckedIcon,\n dark: opt.dark || this.isDark,\n size: opt.size || this.size,\n dense: this.dense,\n keepColor: opt.keepColor || this.keepColor\n },\n on: cache(this, 'inp', {\n input: this.__update\n })\n })\n ])))\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QPage',\n\n mixins: [ ListenersMixin ],\n\n inject: {\n pageContainer: {\n default () {\n console.error('QPage needs to be child of QPageContainer')\n }\n },\n layout: {}\n },\n\n props: {\n padding: Boolean,\n styleFn: Function\n },\n\n computed: {\n style () {\n const offset =\n (this.layout.header.space === true ? this.layout.header.size : 0) +\n (this.layout.footer.space === true ? this.layout.footer.size : 0)\n\n if (typeof this.styleFn === 'function') {\n const height = this.layout.container === true\n ? this.layout.containerHeight\n : this.$q.screen.height\n\n return this.styleFn(offset, height)\n }\n\n return {\n minHeight: this.layout.container === true\n ? (this.layout.containerHeight - offset) + 'px'\n : (\n this.$q.screen.height === 0\n ? `calc(100vh - ${offset}px)`\n : (this.$q.screen.height - offset) + 'px'\n )\n }\n },\n\n classes () {\n if (this.padding === true) {\n return 'q-layout-padding'\n }\n }\n },\n\n render (h) {\n return h('main', {\n staticClass: 'q-page',\n style: this.style,\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QPageContainer',\n\n mixins: [ ListenersMixin ],\n\n inject: {\n layout: {\n default () {\n console.error('QPageContainer needs to be child of QLayout')\n }\n }\n },\n\n provide: {\n pageContainer: true\n },\n\n computed: {\n style () {\n const css = {}\n\n if (this.layout.header.space === true) {\n css.paddingTop = `${this.layout.header.size}px`\n }\n if (this.layout.right.space === true) {\n css[`padding${this.$q.lang.rtl === true ? 'Left' : 'Right'}`] = `${this.layout.right.size}px`\n }\n if (this.layout.footer.space === true) {\n css.paddingBottom = `${this.layout.footer.size}px`\n }\n if (this.layout.left.space === true) {\n css[`padding${this.$q.lang.rtl === true ? 'Right' : 'Left'}`] = `${this.layout.left.size}px`\n }\n\n return css\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-page-container',\n style: this.style,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QPageSticky',\n\n mixins: [ ListenersMixin ],\n\n inject: {\n layout: {\n default () {\n console.error('QPageSticky needs to be child of QLayout')\n }\n }\n },\n\n props: {\n position: {\n type: String,\n default: 'bottom-right',\n validator: v => [\n 'top-right', 'top-left',\n 'bottom-right', 'bottom-left',\n 'top', 'right', 'bottom', 'left'\n ].includes(v)\n },\n offset: {\n type: Array,\n validator: v => v.length === 2\n },\n expand: Boolean\n },\n\n computed: {\n attach () {\n const pos = this.position\n\n return {\n top: pos.indexOf('top') > -1,\n right: pos.indexOf('right') > -1,\n bottom: pos.indexOf('bottom') > -1,\n left: pos.indexOf('left') > -1,\n vertical: pos === 'top' || pos === 'bottom',\n horizontal: pos === 'left' || pos === 'right'\n }\n },\n\n top () {\n return this.layout.header.offset\n },\n\n right () {\n return this.layout.right.offset\n },\n\n bottom () {\n return this.layout.footer.offset\n },\n\n left () {\n return this.layout.left.offset\n },\n\n style () {\n let\n posX = 0,\n posY = 0\n\n const\n attach = this.attach,\n dir = this.$q.lang.rtl === true ? -1 : 1\n\n if (attach.top === true && this.top !== 0) {\n posY = `${this.top}px`\n }\n else if (attach.bottom === true && this.bottom !== 0) {\n posY = `${-this.bottom}px`\n }\n\n if (attach.left === true && this.left !== 0) {\n posX = `${dir * this.left}px`\n }\n else if (attach.right === true && this.right !== 0) {\n posX = `${-dir * this.right}px`\n }\n\n const css = { transform: `translate(${posX}, ${posY})` }\n\n if (this.offset) {\n css.margin = `${this.offset[1]}px ${this.offset[0]}px`\n }\n\n if (attach.vertical === true) {\n if (this.left !== 0) {\n css[this.$q.lang.rtl === true ? 'right' : 'left'] = `${this.left}px`\n }\n if (this.right !== 0) {\n css[this.$q.lang.rtl === true ? 'left' : 'right'] = `${this.right}px`\n }\n }\n else if (attach.horizontal === true) {\n if (this.top !== 0) {\n css.top = `${this.top}px`\n }\n if (this.bottom !== 0) {\n css.bottom = `${this.bottom}px`\n }\n }\n\n return css\n },\n\n classes () {\n return `fixed-${this.position} q-page-sticky--${this.expand === true ? 'expand' : 'shrink'}`\n }\n },\n\n render (h) {\n const content = slot(this, 'default')\n\n return h('div', {\n staticClass: 'q-page-sticky row flex-center',\n class: this.classes,\n style: this.style,\n on: { ...this.qListeners }\n },\n this.expand === true\n ? content\n : [ h('div', content) ]\n )\n }\n})\n","import Vue from 'vue'\n\nimport QPageSticky from '../page-sticky/QPageSticky.js'\nimport { getScrollTarget, setScrollPosition } from '../../utils/scroll.js'\n\nexport default Vue.extend({\n name: 'QPageScroller',\n\n mixins: [ QPageSticky ],\n\n props: {\n scrollOffset: {\n type: Number,\n default: 1000\n },\n\n reverse: Boolean,\n\n duration: {\n type: Number,\n default: 300\n },\n\n offset: {\n default: () => [18, 18]\n }\n },\n\n inject: {\n layout: {\n default () {\n console.error('QPageScroller needs to be used within a QLayout')\n }\n }\n },\n\n data () {\n return {\n showing: this.__isVisible()\n }\n },\n\n computed: {\n height () {\n return this.layout.container === true\n ? this.layout.containerHeight\n : this.layout.height\n },\n\n onEvents () {\n return {\n ...this.qListeners,\n click: this.__onClick\n }\n }\n },\n\n watch: {\n 'layout.scroll.position' () {\n this.__updateVisibility()\n },\n\n reverse: {\n handler (val) {\n if (val === true) {\n if (this.heightWatcher === void 0) {\n this.heightWatcher = this.$watch('height', this.__updateVisibility)\n }\n }\n else if (this.heightWatcher !== void 0) {\n this.__cleanup()\n }\n },\n immediate: true\n }\n },\n\n methods: {\n __isVisible () {\n return this.reverse === true\n ? this.height - this.layout.scroll.position > this.scrollOffset\n : this.layout.scroll.position > this.scrollOffset\n },\n\n __onClick (e) {\n const target = this.layout.container === true\n ? getScrollTarget(this.$el)\n : getScrollTarget(this.layout.$el)\n\n setScrollPosition(target, this.reverse === true ? this.layout.height : 0, this.duration)\n this.$emit('click', e)\n },\n\n __updateVisibility () {\n const newVal = this.__isVisible()\n if (this.showing !== newVal) {\n this.showing = newVal\n }\n },\n\n __cleanup () {\n this.heightWatcher()\n this.heightWatcher = void 0\n }\n },\n\n render (h) {\n return h('transition', {\n props: { name: 'q-transition--fade' }\n },\n this.showing === true\n ? [\n h('div', {\n staticClass: 'q-page-scroller',\n on: this.onEvents\n }, [\n QPageSticky.options.render.call(this, h)\n ])\n ]\n : null\n )\n },\n\n beforeDestroy () {\n this.heightWatcher !== void 0 && this.__cleanup()\n }\n})\n","import Vue from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport QInput from '../input/QInput.js'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { stop } from '../../utils/event.js'\nimport { between } from '../../utils/format.js'\nimport { isKeyCode } from '../../utils/key-composition.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QPagination',\n\n mixins: [ DarkMixin, ListenersMixin ],\n\n props: {\n value: {\n type: Number,\n required: true\n },\n min: {\n type: Number,\n default: 1\n },\n max: {\n type: Number,\n required: true\n },\n\n color: {\n type: String,\n default: 'primary'\n },\n textColor: String,\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 maxPages: {\n type: Number,\n default: 0,\n validator: v => v >= 0\n },\n\n ripple: {\n type: [Boolean, Object],\n default: null\n }\n },\n\n data () {\n return {\n newPage: null\n }\n },\n\n watch: {\n min () {\n this.model = this.value\n },\n\n max () {\n this.model = this.value\n }\n },\n\n computed: {\n model: {\n get () {\n return this.value\n },\n set (val) {\n val = parseInt(val, 10)\n if (this.disable || isNaN(val) || val === 0) {\n return\n }\n const value = between(val, this.min, this.max)\n this.$emit('input', value)\n }\n },\n\n inputPlaceholder () {\n return this.model + ' / ' + this.max\n },\n\n __boundaryLinks () {\n return this.__getBool(this.boundaryLinks, this.input)\n },\n\n __boundaryNumbers () {\n return this.__getBool(this.boundaryNumbers, !this.input)\n },\n\n __directionLinks () {\n return this.__getBool(this.directionLinks, this.input)\n },\n\n __ellipses () {\n return this.__getBool(this.ellipses, !this.input)\n },\n\n icons () {\n const ico = [\n this.iconFirst || this.$q.iconSet.pagination.first,\n this.iconPrev || this.$q.iconSet.pagination.prev,\n this.iconNext || this.$q.iconSet.pagination.next,\n this.iconLast || this.$q.iconSet.pagination.last\n ]\n return this.$q.lang.rtl === true ? ico.reverse() : ico\n },\n\n attrs () {\n if (this.disable === true) {\n return {\n 'aria-disabled': 'true'\n }\n }\n },\n\n btnProps () {\n return {\n color: this.color,\n flat: true,\n size: this.size,\n ripple: this.ripple !== null\n ? this.ripple\n : true\n }\n }\n },\n\n methods: {\n set (value) {\n this.model = value\n },\n\n setByOffset (offset) {\n this.model = this.model + offset\n },\n\n __update () {\n this.model = this.newPage\n this.newPage = null\n },\n\n __getBool (val, otherwise) {\n return [true, false].includes(val)\n ? val\n : otherwise\n },\n\n __getBtn (h, data, props, page) {\n data.props = {\n ...this.btnProps,\n ...props\n }\n\n if (page !== void 0) {\n if (this.toFn !== void 0) {\n data.props.to = this.toFn(page)\n }\n else {\n data.on = { click: () => this.set(page) }\n }\n }\n\n return h(QBtn, data)\n }\n },\n\n render (h) {\n const\n contentStart = [],\n contentEnd = [],\n contentMiddle = []\n\n if (this.__boundaryLinks) {\n contentStart.push(this.__getBtn(h, {\n key: 'bls'\n }, {\n disable: this.disable || this.value <= this.min,\n icon: this.icons[0]\n }, this.min))\n contentEnd.unshift(this.__getBtn(h, {\n key: 'ble'\n }, {\n disable: this.disable || this.value >= this.max,\n icon: this.icons[3]\n }, this.max))\n }\n\n if (this.__directionLinks) {\n contentStart.push(this.__getBtn(h, {\n key: 'bdp'\n }, {\n disable: this.disable || this.value <= this.min,\n icon: this.icons[1]\n }, this.value - 1))\n contentEnd.unshift(this.__getBtn(h, {\n key: 'bdn'\n }, {\n disable: this.disable || this.value >= this.max,\n icon: this.icons[2]\n }, this.value + 1))\n }\n\n if (this.input === true) {\n contentMiddle.push(h(QInput, {\n staticClass: 'inline',\n style: {\n width: `${this.inputPlaceholder.length / 1.5}em`\n },\n props: {\n type: 'number',\n dense: true,\n value: this.newPage,\n disable: this.disable,\n dark: this.isDark,\n borderless: true,\n inputClass: this.inputClass,\n inputStyle: this.inputStyle\n },\n attrs: {\n placeholder: this.inputPlaceholder,\n min: this.min,\n max: this.max\n },\n on: cache(this, 'inp', {\n input: value => { this.newPage = value },\n keyup: e => { isKeyCode(e, 13) === true && this.__update() },\n blur: this.__update\n })\n }))\n }\n else { // is type select\n let\n maxPages = Math.max(\n this.maxPages,\n 1 + (this.__ellipses ? 2 : 0) + (this.__boundaryNumbers ? 2 : 0)\n ),\n pgFrom = this.min,\n pgTo = this.max,\n ellipsesStart = false,\n ellipsesEnd = false,\n boundaryStart = false,\n boundaryEnd = false\n\n if (this.maxPages && maxPages < (this.max - this.min + 1)) {\n maxPages = 1 + Math.floor(maxPages / 2) * 2\n pgFrom = Math.max(this.min, Math.min(this.max - maxPages + 1, this.value - Math.floor(maxPages / 2)))\n pgTo = Math.min(this.max, pgFrom + maxPages - 1)\n if (this.__boundaryNumbers) {\n boundaryStart = true\n pgFrom += 1\n }\n if (this.__ellipses && pgFrom > (this.min + (this.__boundaryNumbers ? 1 : 0))) {\n ellipsesStart = true\n pgFrom += 1\n }\n if (this.__boundaryNumbers) {\n boundaryEnd = true\n pgTo -= 1\n }\n if (this.__ellipses && pgTo < (this.max - (this.__boundaryNumbers ? 1 : 0))) {\n ellipsesEnd = true\n pgTo -= 1\n }\n }\n const style = {\n minWidth: `${Math.max(2, String(this.max).length)}em`\n }\n if (boundaryStart) {\n const active = this.min === this.value\n contentStart.push(this.__getBtn(h, {\n key: 'bns',\n style\n }, {\n disable: this.disable,\n flat: !active,\n textColor: active ? this.textColor : null,\n label: this.min\n }, this.min))\n }\n if (boundaryEnd) {\n const active = this.max === this.value\n contentEnd.unshift(this.__getBtn(h, {\n key: 'bne',\n style\n }, {\n disable: this.disable,\n flat: !active,\n textColor: active ? this.textColor : null,\n label: this.max\n }, this.max))\n }\n if (ellipsesStart) {\n contentStart.push(this.__getBtn(h, {\n key: 'bes',\n style\n }, {\n disable: this.disable,\n label: '…',\n ripple: false\n }, pgFrom - 1))\n }\n if (ellipsesEnd) {\n contentEnd.unshift(this.__getBtn(h, {\n key: 'bee',\n style\n }, {\n disable: this.disable,\n label: '…',\n ripple: false\n }, pgTo + 1))\n }\n for (let i = pgFrom; i <= pgTo; i++) {\n const active = i === this.value\n contentMiddle.push(this.__getBtn(h, {\n key: `bpg${i}`,\n style\n }, {\n disable: this.disable,\n flat: !active,\n textColor: active ? this.textColor : null,\n label: i\n }, i))\n }\n }\n\n return h('div', {\n staticClass: 'q-pagination row no-wrap items-center',\n class: { disabled: this.disable },\n attrs: this.attrs,\n on: { ...this.qListeners }\n }, [\n contentStart,\n\n h('div', {\n staticClass: 'row justify-center',\n on: this.input === true\n ? cache(this, 'stop', { input: stop })\n : null\n }, [\n contentMiddle\n ]),\n\n contentEnd\n ])\n }\n})\n","export default function (fn) {\n let wait = false, frame, callArgs\n\n function debounced (/* ...args */) {\n callArgs = arguments\n if (wait === true) { return }\n\n wait = true\n frame = requestAnimationFrame(() => {\n fn.apply(this, callArgs)\n callArgs = void 0\n wait = false\n })\n }\n\n debounced.cancel = () => {\n window.cancelAnimationFrame(frame)\n wait = false\n }\n\n return debounced\n}\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { height, offset } from '../../utils/dom.js'\nimport frameDebounce from '../../utils/frame-debounce.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { slot } from '../../utils/slot.js'\nimport { listenOpts } from '../../utils/event.js'\n\nconst { passive } = listenOpts\n\nexport default Vue.extend({\n name: 'QParallax',\n\n mixins: [ ListenersMixin ],\n\n props: {\n src: String,\n height: {\n type: Number,\n default: 500\n },\n speed: {\n type: Number,\n default: 1,\n validator: v => v >= 0 && v <= 1\n },\n\n scrollTarget: {\n default: void 0\n }\n },\n\n data () {\n return {\n scrolling: false,\n percentScrolled: 0\n }\n },\n\n watch: {\n height () {\n this.working === true && this.__updatePos()\n },\n\n scrollTarget () {\n if (this.working === true) {\n this.__stop()\n this.__start()\n }\n }\n },\n\n methods: {\n __update (percentage) {\n this.percentScrolled = percentage\n this.qListeners.scroll !== void 0 && this.$emit('scroll', percentage)\n },\n\n __updatePos () {\n let containerTop, containerHeight, containerBottom\n\n if (this.__scrollTarget === window) {\n containerTop = 0\n containerHeight = window.innerHeight\n containerBottom = containerHeight\n }\n else {\n containerTop = offset(this.__scrollTarget).top\n containerHeight = height(this.__scrollTarget)\n containerBottom = containerTop + containerHeight\n }\n\n const top = offset(this.$el).top\n const bottom = top + this.height\n\n if (this.observer !== void 0 || (bottom > containerTop && top < containerBottom)) {\n const percent = (containerBottom - top) / (this.height + containerHeight)\n this.__setPos((this.mediaHeight - this.height) * percent * this.speed)\n this.__update(percent)\n }\n },\n\n __setPos (offset) {\n // apply it immediately without any delay\n this.media.style.transform = `translate3D(-50%,${Math.round(offset)}px, 0)`\n },\n\n __onResize () {\n this.mediaHeight = this.media.naturalHeight || this.media.videoHeight || height(this.media)\n this.working === true && this.__updatePos()\n },\n\n __start () {\n this.working = true\n this.__scrollTarget = getScrollTarget(this.$el, this.scrollTarget)\n this.__scrollTarget.addEventListener('scroll', this.__updatePos, passive)\n window.addEventListener('resize', this.__resizeHandler, passive)\n this.__updatePos()\n },\n\n __stop () {\n if (this.working === true) {\n this.working = false\n this.__scrollTarget.removeEventListener('scroll', this.__updatePos, passive)\n window.removeEventListener('resize', this.__resizeHandler, passive)\n this.__scrollTarget = void 0\n }\n }\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-parallax',\n style: { height: `${this.height}px` },\n on: { ...this.qListeners }\n }, [\n h('div', {\n ref: 'mediaParent',\n staticClass: 'q-parallax__media absolute-full'\n }, this.$scopedSlots.media !== void 0 ? this.$scopedSlots.media() : [\n h('img', {\n ref: 'media',\n attrs: {\n src: this.src\n }\n })\n ]),\n\n h(\n 'div',\n { staticClass: 'q-parallax__content absolute-full column flex-center' },\n this.$scopedSlots.content !== void 0\n ? this.$scopedSlots.content({ percentScrolled: this.percentScrolled })\n : slot(this, 'default')\n )\n ])\n },\n\n mounted () {\n this.__setPos = frameDebounce(this.__setPos)\n this.__update = frameDebounce(this.__update)\n this.__resizeHandler = frameDebounce(this.__onResize)\n\n this.media = this.$scopedSlots.media !== void 0\n ? this.$refs.mediaParent.children[0]\n : this.$refs.media\n\n this.media.onload = this.media.onloadstart = this.media.loadedmetadata = this.__onResize\n this.__onResize()\n this.media.style.display = 'initial'\n\n if (window.IntersectionObserver !== void 0) {\n this.observer = new IntersectionObserver(entries => {\n this[entries[0].isIntersecting === true ? '__start' : '__stop']()\n })\n\n this.observer.observe(this.$el)\n }\n else {\n this.__start()\n }\n },\n\n beforeDestroy () {\n this.__stop()\n this.observer !== void 0 && this.observer.disconnect()\n this.media.onload = this.media.onloadstart = this.media.loadedmetadata = null\n }\n})\n","export default function (data) {\n const s = JSON.stringify(data)\n if (s) {\n return JSON.parse(s)\n }\n}\n","import Vue from 'vue'\n\nimport QMenu from '../menu/QMenu.js'\nimport QBtn from '../btn/QBtn.js'\n\nimport AttrsMixin from '../../mixins/attrs.js'\n\nimport clone from '../../utils/clone.js'\nimport { isDeepEqual } from '../../utils/is.js'\nimport { slot } from '../../utils/slot.js'\nimport { isKeyCode } from '../../utils/key-composition.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QPopupEdit',\n\n mixins: [ AttrsMixin ],\n\n props: {\n value: {\n required: true\n },\n title: String,\n buttons: Boolean,\n labelSet: String,\n labelCancel: String,\n\n color: {\n type: String,\n default: 'primary'\n },\n validate: {\n type: Function,\n default: () => true\n },\n\n autoSave: Boolean,\n\n /* menu props overrides */\n cover: {\n type: Boolean,\n default: true\n },\n contentClass: String,\n /* end of menu props */\n\n disable: Boolean\n },\n\n data () {\n return {\n initialValue: ''\n }\n },\n\n computed: {\n classes () {\n return 'q-popup-edit' +\n (this.contentClass !== void 0 ? ` ${this.contentClass}` : '')\n },\n\n defaultSlotScope () {\n return {\n initialValue: this.initialValue,\n value: this.value,\n emitValue: this.__emitValue,\n validate: this.validate,\n set: this.set,\n cancel: this.cancel\n }\n },\n\n menuProps () {\n return {\n ...this.qAttrs,\n cover: this.cover,\n contentClass: this.classes\n }\n }\n },\n\n methods: {\n set () {\n if (this.__hasChanged() === true) {\n if (this.validate(this.value) === false) {\n return\n }\n this.$emit('save', this.value, this.initialValue)\n }\n this.__close()\n },\n\n cancel () {\n if (this.__hasChanged() === true) {\n this.$emit('input', this.initialValue)\n this.$emit('cancel', this.value, this.initialValue)\n }\n this.__close()\n },\n\n show (e) {\n this.$refs.menu !== void 0 && this.$refs.menu.show(e)\n },\n\n hide (e) {\n this.$refs.menu !== void 0 && this.$refs.menu.hide(e)\n },\n\n __hasChanged () {\n return isDeepEqual(this.value, this.initialValue) === false\n },\n\n __emitValue (val) {\n if (this.disable !== true) {\n this.$emit('input', val)\n }\n },\n\n __close () {\n this.validated = true\n this.$refs.menu.showing === true && this.$refs.menu.hide()\n },\n\n __reposition () {\n this.$nextTick(() => {\n this.$refs.menu.updatePosition()\n })\n },\n\n __getContent (h) {\n const\n title = slot(this, 'title', this.title),\n child = this.$scopedSlots.default === void 0\n ? []\n : this.$scopedSlots.default(this.defaultSlotScope).slice()\n\n title && child.unshift(\n h('div', { staticClass: 'q-dialog__title q-mt-sm q-mb-sm' }, [ title ])\n )\n\n this.buttons === true && child.push(\n h('div', { staticClass: 'q-popup-edit__buttons row justify-center no-wrap' }, [\n h(QBtn, {\n props: {\n flat: true,\n color: this.color,\n label: this.labelCancel || this.$q.lang.label.cancel\n },\n on: cache(this, 'cancel', { click: this.cancel })\n }),\n h(QBtn, {\n props: {\n flat: true,\n color: this.color,\n label: this.labelSet || this.$q.lang.label.set\n },\n on: cache(this, 'ok', { click: this.set })\n })\n ])\n )\n\n return child\n }\n },\n\n render (h) {\n if (this.disable === true) { return }\n\n return h(QMenu, {\n ref: 'menu',\n props: this.menuProps,\n on: cache(this, 'menu', {\n 'before-show': () => {\n this.validated = false\n this.initialValue = clone(this.value)\n this.watcher = this.$watch('value', this.__reposition)\n this.$emit('before-show')\n },\n show: () => {\n this.$emit('show')\n },\n 'escape-key': this.cancel,\n 'before-hide': () => {\n this.watcher()\n\n if (this.validated === false && this.__hasChanged() === true) {\n if (this.autoSave === true && this.validate(this.value) === true) {\n this.$emit('save', this.value, this.initialValue)\n }\n else {\n this.$emit('cancel', this.value, this.initialValue)\n this.$emit('input', this.initialValue)\n }\n }\n\n this.$emit('before-hide')\n },\n hide: () => {\n this.$emit('hide')\n },\n keyup: e => {\n isKeyCode(e, 13) === true && this.set()\n }\n })\n }, this.__getContent(h))\n }\n})\n","import Vue from 'vue'\n\nimport QDialog from '../dialog/QDialog.js'\nimport QMenu from '../menu/QMenu.js'\n\nimport AnchorMixin from '../../mixins/anchor.js'\nimport { slot } from '../../utils/slot.js'\nimport AttrsMixin from '../../mixins/attrs.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nexport default Vue.extend({\n name: 'QPopupProxy',\n\n mixins: [ AttrsMixin, ListenersMixin, AnchorMixin ],\n\n props: {\n breakpoint: {\n type: [String, Number],\n default: 450\n }\n },\n\n data () {\n const breakpoint = parseInt(this.breakpoint, 10)\n return {\n type: this.$q.screen.width < breakpoint || this.$q.screen.height < breakpoint\n ? 'dialog'\n : 'menu'\n }\n },\n\n computed: {\n parsedBreakpoint () {\n return parseInt(this.breakpoint, 10)\n },\n\n onEvents () {\n return {\n ...this.qListeners,\n hide: this.__onHide\n }\n }\n },\n\n watch: {\n '$q.screen.width' (width) {\n if (this.$refs.popup.showing !== true) {\n this.__updateType(width, this.$q.screen.height, this.parsedBreakpoint)\n }\n },\n\n '$q.screen.height' (height) {\n if (this.$refs.popup.showing !== true) {\n this.__updateType(this.$q.screen.width, height, this.parsedBreakpoint)\n }\n },\n\n breakpoint (breakpoint) {\n if (this.$refs.popup.showing !== true) {\n this.__updateType(this.$q.screen.width, this.$q.screen.height, parseInt(breakpoint, 10))\n }\n }\n },\n\n methods: {\n toggle (evt) {\n this.$refs.popup.toggle(evt)\n },\n\n show (evt) {\n this.$refs.popup.show(evt)\n },\n\n hide (evt) {\n this.$refs.popup.hide(evt)\n },\n\n __onHide (evt) {\n this.__updateType(this.$q.screen.width, this.$q.screen.height, this.parsedBreakpoint)\n this.$emit('hide', evt)\n },\n\n __updateType (width, height, breakpoint) {\n const type = width < breakpoint || height < breakpoint\n ? 'dialog'\n : 'menu'\n\n if (this.type !== type) {\n this.type = type\n }\n }\n },\n\n render (h) {\n const def = slot(this, 'default')\n\n const props = (\n this.type === 'menu' &&\n def !== void 0 &&\n def[0] !== void 0 &&\n def[0].componentOptions !== void 0 &&\n def[0].componentOptions.Ctor !== void 0 &&\n def[0].componentOptions.Ctor.sealedOptions !== void 0 &&\n ['QDate', 'QTime', 'QCarousel', 'QColor'].includes(\n def[0].componentOptions.Ctor.sealedOptions.name\n )\n ) ? { cover: true, maxHeight: '99vh' } : {}\n\n const data = {\n ref: 'popup',\n props: { ...props, ...this.qAttrs },\n on: this.onEvents\n }\n\n let component\n\n if (this.type === 'dialog') {\n component = QDialog\n }\n else {\n component = QMenu\n data.props.target = this.target\n data.props.contextMenu = this.contextMenu\n data.props.noParentEvent = true\n data.props.separateClosePopup = true\n }\n\n return h(component, data, def)\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport { getSizeMixin } from '../../mixins/size.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { mergeSlot } from '../../utils/slot.js'\n\nfunction width (val, reverse) {\n if (reverse === true) {\n return { transform: `translateX(100%) scale3d(${-val},1,1)` }\n }\n return { transform: `scale3d(${val},1,1)` }\n}\n\nexport default Vue.extend({\n name: 'QLinearProgress',\n\n mixins: [\n ListenersMixin,\n DarkMixin,\n getSizeMixin({\n xs: 2,\n sm: 4,\n md: 6,\n lg: 10,\n xl: 14\n })\n ],\n\n props: {\n value: {\n type: Number,\n default: 0\n },\n buffer: Number,\n\n color: String,\n trackColor: String,\n\n reverse: Boolean,\n stripe: Boolean,\n indeterminate: Boolean,\n query: Boolean,\n rounded: Boolean,\n\n instantFeedback: Boolean\n },\n\n computed: {\n motion () {\n return this.indeterminate === true || this.query === true\n },\n\n classes () {\n return 'q-linear-progress' +\n (this.color !== void 0 ? ` text-${this.color}` : '') +\n (this.reverse === true || this.query === true ? ' q-linear-progress--reverse' : '') +\n (this.rounded === true ? ' rounded-borders' : '')\n },\n\n trackStyle () {\n return width(this.buffer !== void 0 ? this.buffer : 1, this.reverse)\n },\n\n trackClass () {\n return `q-linear-progress__track--with${this.instantFeedback === true ? 'out' : ''}-transition` +\n ` q-linear-progress__track--${this.isDark === true ? 'dark' : 'light'}` +\n (this.trackColor !== void 0 ? ` bg-${this.trackColor}` : '')\n },\n\n modelStyle () {\n return width(this.motion === true ? 1 : this.value, this.reverse)\n },\n\n modelClasses () {\n return `q-linear-progress__model--with${this.instantFeedback === true ? 'out' : ''}-transition` +\n ` q-linear-progress__model--${this.motion === true ? 'in' : ''}determinate`\n },\n\n stripeStyle () {\n return { width: (this.value * 100) + '%' }\n },\n\n attrs () {\n return {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 1,\n 'aria-valuenow': this.indeterminate === true ? void 0 : this.value\n }\n }\n },\n\n render (h) {\n const child = [\n h('div', {\n staticClass: 'q-linear-progress__track absolute-full',\n style: this.trackStyle,\n class: this.trackClass\n }),\n\n h('div', {\n staticClass: 'q-linear-progress__model absolute-full',\n style: this.modelStyle,\n class: this.modelClasses\n })\n ]\n\n this.stripe === true && this.motion === false && child.push(\n h('div', {\n staticClass: 'q-linear-progress__stripe absolute-full',\n style: this.stripeStyle\n })\n )\n\n return h('div', {\n style: this.sizeStyle,\n class: this.classes,\n attrs: this.attrs,\n on: { ...this.qListeners }\n }, mergeSlot(child, this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QSpinner from '../spinner/QSpinner.js'\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { getScrollTarget, getScrollPosition } from '../../utils/scroll.js'\nimport { between } from '../../utils/format.js'\nimport { prevent } from '../../utils/event.js'\nimport { slot } from '../../utils/slot.js'\n\nconst\n PULLER_HEIGHT = 40,\n OFFSET_TOP = 20\n\nexport default Vue.extend({\n name: 'QPullToRefresh',\n\n mixins: [ ListenersMixin ],\n\n directives: {\n TouchPan\n },\n\n props: {\n color: String,\n bgColor: String,\n icon: String,\n noMouse: Boolean,\n disable: Boolean,\n\n scrollTarget: {\n default: void 0\n }\n },\n\n data () {\n return {\n state: 'pull',\n pullRatio: 0,\n pulling: false,\n pullPosition: -PULLER_HEIGHT,\n animating: false,\n positionCSS: {}\n }\n },\n\n computed: {\n style () {\n return {\n opacity: this.pullRatio,\n transform: `translateY(${this.pullPosition}px) rotate(${this.pullRatio * 360}deg)`\n }\n },\n\n classes () {\n return 'q-pull-to-refresh__puller row flex-center' +\n (this.animating === true ? ' q-pull-to-refresh__puller--animating' : '') +\n (this.bgColor !== void 0 ? ` bg-${this.bgColor}` : '')\n },\n\n directives () {\n if (this.disable !== true) {\n const modifiers = {\n down: true,\n mightPrevent: true\n }\n\n if (this.noMouse !== true) {\n modifiers.mouse = true\n }\n\n return [{\n name: 'touch-pan',\n modifiers,\n value: this.__pull\n }]\n }\n },\n\n contentClass () {\n return `q-pull-to-refresh__content${this.pulling === true ? ' no-pointer-events' : ''}`\n }\n },\n\n watch: {\n scrollTarget () {\n this.updateScrollTarget()\n }\n },\n\n methods: {\n trigger () {\n this.$emit('refresh', () => {\n this.__animateTo({ pos: -PULLER_HEIGHT, ratio: 0 }, () => {\n this.state = 'pull'\n })\n })\n },\n\n updateScrollTarget () {\n this.__scrollTarget = getScrollTarget(this.$el, this.scrollTarget)\n },\n\n __pull (event) {\n if (event.isFinal === true) {\n if (this.pulling === true) {\n this.pulling = false\n\n if (this.state === 'pulled') {\n this.state = 'refreshing'\n this.__animateTo({ pos: OFFSET_TOP })\n this.trigger()\n }\n else if (this.state === 'pull') {\n this.__animateTo({ pos: -PULLER_HEIGHT, ratio: 0 })\n }\n }\n\n return\n }\n\n if (this.animating === true || this.state === 'refreshing') {\n return false\n }\n\n if (event.isFirst === true) {\n if (getScrollPosition(this.__scrollTarget) !== 0) {\n if (this.pulling === true) {\n this.pulling = false\n this.state = 'pull'\n this.__animateTo({ pos: -PULLER_HEIGHT, ratio: 0 })\n }\n\n return false\n }\n\n this.pulling = true\n\n const { top, left } = this.$el.getBoundingClientRect()\n this.positionCSS = {\n top: top + 'px',\n left: left + 'px',\n width: window.getComputedStyle(this.$el).getPropertyValue('width')\n }\n }\n\n prevent(event.evt)\n\n const distance = Math.min(140, Math.max(0, event.distance.y))\n this.pullPosition = distance - PULLER_HEIGHT\n this.pullRatio = between(distance / (OFFSET_TOP + PULLER_HEIGHT), 0, 1)\n\n const state = this.pullPosition > OFFSET_TOP ? 'pulled' : 'pull'\n\n if (this.state !== state) {\n this.state = state\n }\n },\n\n __animateTo ({ pos, ratio }, done) {\n this.animating = true\n this.pullPosition = pos\n\n if (ratio !== void 0) {\n this.pullRatio = ratio\n }\n\n clearTimeout(this.timer)\n this.timer = setTimeout(() => {\n this.animating = false\n done && done()\n }, 300)\n }\n },\n\n mounted () {\n this.updateScrollTarget()\n },\n\n beforeDestroy () {\n clearTimeout(this.timer)\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-pull-to-refresh',\n on: { ...this.qListeners },\n directives: this.directives\n }, [\n h('div', {\n class: this.contentClass\n }, slot(this, 'default')),\n\n h('div', {\n staticClass: 'q-pull-to-refresh__puller-container fixed row flex-center no-pointer-events z-top',\n style: this.positionCSS\n }, [\n h('div', {\n style: this.style,\n class: this.classes\n }, [\n this.state !== 'refreshing'\n ? h(QIcon, {\n props: {\n name: this.icon || this.$q.iconSet.pullToRefresh.icon,\n color: this.color,\n size: '32px'\n }\n })\n : h(QSpinner, {\n props: {\n size: '24px',\n color: this.color\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport {\n getRatio,\n getModel,\n SliderMixin,\n keyCodes\n} from '../slider/slider-utils.js'\n\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 Vue.extend({\n name: 'QRange',\n\n mixins: [ SliderMixin ],\n\n props: {\n value: {\n type: Object,\n default: () => ({\n min: null,\n max: null\n }),\n validator (val) {\n return 'min' in val && 'max' in val\n }\n },\n\n name: String,\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\n data () {\n return {\n model: {\n min: this.value.min === null ? this.min : this.value.min,\n max: this.value.max === null ? this.max : this.value.max\n },\n curMinRatio: 0,\n curMaxRatio: 0\n }\n },\n\n watch: {\n 'value.min' (val) {\n this.model.min = val === null\n ? this.min\n : val\n },\n\n 'value.max' (val) {\n this.model.max = val === null\n ? this.max\n : val\n },\n\n min (value) {\n if (this.model.min < value) {\n this.model.min = value\n }\n if (this.model.max < value) {\n this.model.max = value\n }\n },\n\n max (value) {\n if (this.model.min > value) {\n this.model.min = value\n }\n if (this.model.max > value) {\n this.model.max = value\n }\n }\n },\n\n computed: {\n ratioMin () {\n return this.active === true ? this.curMinRatio : this.modelMinRatio\n },\n\n ratioMax () {\n return this.active === true ? this.curMaxRatio : this.modelMaxRatio\n },\n\n modelMinRatio () {\n return (this.model.min - this.min) / (this.max - this.min)\n },\n\n modelMaxRatio () {\n return (this.model.max - this.min) / (this.max - this.min)\n },\n\n trackStyle () {\n return {\n [ this.positionProp ]: `${100 * this.ratioMin}%`,\n [ this.sizeProp ]: `${100 * (this.ratioMax - this.ratioMin)}%`\n }\n },\n\n minThumbStyle () {\n return {\n [ this.positionProp ]: `${100 * this.ratioMin}%`,\n 'z-index': this.__nextFocus === 'min' ? 2 : void 0\n }\n },\n\n maxThumbStyle () {\n return {\n [ this.positionProp ]: `${100 * this.ratioMax}%`\n }\n },\n\n minThumbClass () {\n if (this.preventFocus === false && this.focus === 'min') {\n return 'q-slider--focus'\n }\n },\n\n maxThumbClass () {\n if (this.preventFocus === false && this.focus === 'max') {\n return 'q-slider--focus'\n }\n },\n\n events () {\n if (this.editable === true) {\n if (this.$q.platform.is.mobile === true) {\n return { click: this.__mobileClick }\n }\n\n const evt = { mousedown: this.__activate }\n\n this.dragOnlyRange === true && Object.assign(evt, {\n focus: () => { this.__focus('both') },\n blur: this.__blur,\n keydown: this.__keydown,\n keyup: this.__keyup\n })\n\n return evt\n }\n },\n\n minEvents () {\n if (this.editable === true && this.$q.platform.is.mobile !== true && this.dragOnlyRange !== true) {\n return {\n focus: () => { this.__focus('min') },\n blur: this.__blur,\n keydown: this.__keydown,\n keyup: this.__keyup\n }\n }\n },\n\n maxEvents () {\n if (this.editable === true && this.$q.platform.is.mobile !== true && this.dragOnlyRange !== true) {\n return {\n focus: () => { this.__focus('max') },\n blur: this.__blur,\n keydown: this.__keydown,\n keyup: this.__keyup\n }\n }\n },\n\n minPinClass () {\n const color = this.leftLabelColor || this.labelColor\n if (color) {\n return `text-${color}`\n }\n },\n\n minPinTextClass () {\n const color = this.leftLabelTextColor || this.labelTextColor\n if (color) {\n return `text-${color}`\n }\n },\n\n maxPinClass () {\n const color = this.rightLabelColor || this.labelColor\n if (color) {\n return `text-${color}`\n }\n },\n\n maxPinTextClass () {\n const color = this.rightLabelTextColor || this.labelTextColor\n if (color) {\n return `text-${color}`\n }\n },\n\n minLabel () {\n return this.leftLabelValue !== void 0\n ? this.leftLabelValue\n : this.model.min\n },\n\n maxLabel () {\n return this.rightLabelValue !== void 0\n ? this.rightLabelValue\n : this.model.max\n },\n\n minPinStyle () {\n const percent = (this.reverse === true ? -this.ratioMin : this.ratioMin - 1)\n return this.__getPinStyle(percent, this.ratioMin)\n },\n\n maxPinStyle () {\n const percent = (this.reverse === true ? -this.ratioMax : this.ratioMax - 1)\n return this.__getPinStyle(percent, this.ratioMax)\n },\n\n formAttrs () {\n return {\n type: 'hidden',\n name: this.name,\n value: `${this.value.min}|${this.value.max}`\n }\n }\n },\n\n methods: {\n __updateValue (change) {\n if (this.model.min !== this.value.min || this.model.max !== this.value.max) {\n this.$emit('input', this.model)\n }\n change === true && this.$emit('change', this.model)\n },\n\n __getDragging (event) {\n const\n { left, top, width, height } = this.$el.getBoundingClientRect(),\n sensitivity = this.dragOnlyRange === true\n ? 0\n : (this.vertical === true\n ? this.$refs.minThumb.offsetHeight / (2 * height)\n : this.$refs.minThumb.offsetWidth / (2 * width)\n ),\n diff = this.max - this.min\n\n const dragging = {\n left,\n top,\n width,\n height,\n valueMin: this.model.min,\n valueMax: this.model.max,\n ratioMin: (this.model.min - this.min) / diff,\n ratioMax: (this.model.max - this.min) / diff\n }\n\n const ratio = getRatio(event, dragging, this.isReversed, this.vertical)\n let type\n\n if (this.dragOnlyRange !== true && ratio < dragging.ratioMin + sensitivity) {\n type = dragType.MIN\n }\n else if (this.dragOnlyRange === true || ratio < dragging.ratioMax - sensitivity) {\n if (this.dragRange === true || this.dragOnlyRange === true) {\n type = dragType.RANGE\n Object.assign(dragging, {\n offsetRatio: ratio,\n offsetModel: getModel(ratio, this.min, this.max, this.step, this.decimals),\n rangeValue: dragging.valueMax - dragging.valueMin,\n rangeRatio: dragging.ratioMax - dragging.ratioMin\n })\n }\n else {\n type = dragging.ratioMax - ratio < ratio - dragging.ratioMin\n ? dragType.MAX\n : dragType.MIN\n }\n }\n else {\n type = dragType.MAX\n }\n\n dragging.type = type\n this.__nextFocus = void 0\n\n return dragging\n },\n\n __updatePosition (event, dragging = this.dragging) {\n const\n ratio = getRatio(event, dragging, this.isReversed, this.vertical),\n model = getModel(ratio, this.min, this.max, this.step, this.decimals)\n let pos\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: model,\n max: dragging.valueMax\n }\n this.__nextFocus = 'min'\n }\n else {\n pos = {\n minR: dragging.ratioMax,\n maxR: ratio,\n min: dragging.valueMax,\n max: model\n }\n this.__nextFocus = '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: model\n }\n this.__nextFocus = 'max'\n }\n else {\n pos = {\n minR: ratio,\n maxR: dragging.ratioMin,\n min: model,\n max: dragging.valueMin\n }\n this.__nextFocus = '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 = model - dragging.offsetModel,\n min = between(dragging.valueMin + modelDelta, this.min, this.max - dragging.rangeValue)\n\n pos = {\n minR,\n maxR: minR + dragging.rangeRatio,\n min: parseFloat(min.toFixed(this.decimals)),\n max: parseFloat((min + dragging.rangeValue).toFixed(this.decimals))\n }\n break\n }\n\n this.model = {\n min: pos.min,\n max: pos.max\n }\n\n // If either of the values to be emitted are null, set them to the defaults the user has entered.\n if (this.model.min === null || this.model.max === null) {\n this.model.min = pos.min || this.min\n this.model.max = pos.max || this.max\n }\n\n if (this.snap !== true || this.step === 0) {\n this.curMinRatio = pos.minR\n this.curMaxRatio = pos.maxR\n }\n else {\n const diff = this.max - this.min\n this.curMinRatio = (this.model.min - this.min) / diff\n this.curMaxRatio = (this.model.max - this.min) / diff\n }\n },\n\n __focus (which) {\n this.focus = which\n },\n\n __keydown (evt) {\n if (!keyCodes.includes(evt.keyCode)) {\n return\n }\n\n stopAndPrevent(evt)\n\n const\n step = ([34, 33].includes(evt.keyCode) ? 10 : 1) * this.computedStep,\n offset = [34, 37, 40].includes(evt.keyCode) ? -step : step\n\n if (this.dragOnlyRange) {\n const interval = this.dragOnlyRange\n ? this.model.max - this.model.min\n : 0\n\n const min = between(\n parseFloat((this.model.min + offset).toFixed(this.decimals)),\n this.min,\n this.max - interval\n )\n\n this.model = {\n min,\n max: parseFloat((min + interval).toFixed(this.decimals))\n }\n }\n else if (this.focus === false) {\n return\n }\n else {\n const which = this.focus\n\n this.model = {\n ...this.model,\n [which]: between(\n parseFloat((this.model[which] + offset).toFixed(this.decimals)),\n which === 'min' ? this.min : this.model.min,\n which === 'max' ? this.max : this.model.max\n )\n }\n }\n\n this.__updateValue()\n },\n\n __getThumb (h, which) {\n const child = [\n this.__getThumbSvg(h),\n h('div', { staticClass: 'q-slider__focus-ring' })\n ]\n\n if (this.label === true || this.labelAlways === true) {\n child.push(\n h('div', {\n staticClass: `q-slider__pin q-slider__pin${this.axis} absolute`,\n style: this[which + 'PinStyle'].pin,\n class: this[which + 'PinClass']\n }, [\n h('div', {\n staticClass: `q-slider__pin-text-container q-slider__pin-text-container${this.axis}`,\n style: this[which + 'PinStyle'].pinTextContainer\n }, [\n h('span', {\n staticClass: 'q-slider__pin-text',\n class: this[which + 'PinTextClass']\n }, [\n this[which + 'Label']\n ])\n ])\n ]),\n\n h('div', {\n staticClass: `q-slider__arrow q-slider__arrow${this.axis}`,\n class: this[which + 'PinClass']\n })\n )\n }\n\n return h('div', {\n ref: which + 'Thumb',\n staticClass: `q-slider__thumb-container q-slider__thumb-container${this.axis} absolute non-selectable`,\n style: this[which + 'ThumbStyle'],\n class: this[which + 'ThumbClass'],\n on: this[which + 'Events'],\n attrs: { tabindex: this.dragOnlyRange !== true ? this.computedTabindex : null }\n }, child)\n }\n },\n\n render (h) {\n const track = [\n h('div', {\n staticClass: `q-slider__track q-slider__track${this.axis} absolute`,\n style: this.trackStyle\n })\n ]\n\n this.markers === true && track.push(\n h('div', {\n staticClass: `q-slider__track-markers q-slider__track-markers${this.axis} absolute-full fit`,\n style: this.markerStyle\n })\n )\n\n const child = [\n h('div', {\n staticClass: `q-slider__track-container q-slider__track-container${this.axis} absolute`\n }, track),\n\n this.__getThumb(h, 'min'),\n this.__getThumb(h, 'max')\n ]\n\n if (this.name !== void 0 && this.disable !== true) {\n this.__injectFormInput(child, 'push')\n }\n\n return h('div', {\n staticClass: this.value.min === null || this.value.max === null\n ? 'q-slider--no-value'\n : void 0,\n attrs: {\n ...this.attrs,\n 'aria-valuenow': this.value.min + '|' + this.value.max,\n tabindex: this.dragOnlyRange === true && this.$q.platform.is.mobile !== true\n ? this.computedTabindex\n : null\n },\n class: this.classes,\n on: this.events,\n directives: this.panDirectives\n }, child)\n }\n})\n","import Vue from 'vue'\n\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { between } from '../../utils/format.js'\nimport QIcon from '../icon/QIcon.js'\n\nimport SizeMixin from '../../mixins/size.js'\nimport FormMixin from '../../mixins/form.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport cache from '../../utils/cache.js'\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QRating',\n\n mixins: [ SizeMixin, FormMixin, ListenersMixin ],\n\n props: {\n value: {\n type: Number,\n required: true\n },\n\n max: {\n type: [String, Number],\n default: 5\n },\n\n icon: [String, Array],\n iconHalf: [String, Array],\n iconSelected: [String, Array],\n\n color: [String, Array],\n colorHalf: [String, Array],\n colorSelected: [String, Array],\n\n noReset: Boolean,\n noDimming: Boolean,\n\n readonly: Boolean,\n disable: Boolean\n },\n\n data () {\n return {\n mouseModel: 0\n }\n },\n\n computed: {\n editable () {\n return this.readonly !== true && this.disable !== true\n },\n\n classes () {\n return `q-rating--${this.editable === true ? '' : 'non-'}editable` +\n (this.noDimming === true ? ' q-rating--no-dimming' : '') +\n (this.disable === true ? ' disabled' : '') +\n (this.color !== void 0 && Array.isArray(this.color) === false ? ` text-${this.color}` : '')\n },\n\n iconData () {\n const\n iconLen = Array.isArray(this.icon) === true ? this.icon.length : 0,\n selIconLen = Array.isArray(this.iconSelected) === true ? this.iconSelected.length : 0,\n halfIconLen = Array.isArray(this.iconHalf) === true ? this.iconHalf.length : 0,\n colorLen = Array.isArray(this.color) === true ? this.color.length : 0,\n selColorLen = Array.isArray(this.colorSelected) === true ? this.colorSelected.length : 0,\n halfColorLen = Array.isArray(this.colorHalf) === true ? this.colorHalf.length : 0\n\n return {\n iconLen,\n icon: iconLen > 0 ? this.icon[iconLen - 1] : this.icon,\n selIconLen,\n selIcon: selIconLen > 0 ? this.iconSelected[selIconLen - 1] : this.iconSelected,\n halfIconLen,\n halfIcon: halfIconLen > 0 ? this.iconHalf[selIconLen - 1] : this.iconHalf,\n colorLen,\n color: colorLen > 0 ? this.color[colorLen - 1] : this.color,\n selColorLen,\n selColor: selColorLen > 0 ? this.colorSelected[selColorLen - 1] : this.colorSelected,\n halfColorLen,\n halfColor: halfColorLen > 0 ? this.colorHalf[halfColorLen - 1] : this.colorHalf\n }\n },\n\n attrs () {\n if (this.disable === true) {\n return { 'aria-disabled': 'true' }\n }\n if (this.readonly === true) {\n return { 'aria-readonly': 'true' }\n }\n }\n },\n\n methods: {\n __set (value) {\n if (this.editable === true) {\n const\n model = between(parseInt(value, 10), 1, parseInt(this.max, 10)),\n newVal = this.noReset !== true && this.value === model ? 0 : model\n\n newVal !== this.value && this.$emit('input', newVal)\n this.mouseModel = 0\n }\n },\n\n __setHoverValue (value) {\n if (this.editable === true) {\n this.mouseModel = value\n }\n },\n\n __keyup (e, i) {\n switch (e.keyCode) {\n case 13:\n case 32:\n this.__set(i)\n return stopAndPrevent(e)\n case 37: // LEFT ARROW\n case 40: // DOWN ARROW\n if (this.$refs[`rt${i - 1}`]) {\n this.$refs[`rt${i - 1}`].focus()\n }\n return stopAndPrevent(e)\n case 39: // RIGHT ARROW\n case 38: // UP ARROW\n if (this.$refs[`rt${i + 1}`]) {\n this.$refs[`rt${i + 1}`].focus()\n }\n return stopAndPrevent(e)\n }\n }\n },\n\n render (h) {\n const\n child = [],\n tabindex = this.editable === true ? 0 : null,\n icons = this.iconData,\n ceil = Math.ceil(this.value)\n\n const halfIndex = this.iconHalf === void 0 || ceil === this.value\n ? -1\n : ceil\n\n for (let i = 1; i <= this.max; i++) {\n const\n active = (this.mouseModel === 0 && this.value >= i) || (this.mouseModel > 0 && this.mouseModel >= i),\n half = halfIndex === i && this.mouseModel < i,\n exSelected = this.mouseModel > 0 && (half === true ? ceil : this.value) >= i && this.mouseModel < i,\n name = half === true\n ? (i <= icons.halfIconLen ? this.iconHalf[i - 1] : icons.halfIcon)\n : (\n icons.selIcon !== void 0 && (active === true || exSelected === true)\n ? (i <= icons.selIconLen ? this.iconSelected[i - 1] : icons.selIcon)\n : (i <= icons.iconLen ? this.icon[i - 1] : icons.icon)\n ),\n color = half === true\n ? (i <= icons.halfColorLen ? this.colorHalf[i - 1] : icons.halfColor)\n : (\n icons.selColor !== void 0 && active === true\n ? (i <= icons.selColorLen ? this.colorSelected[i - 1] : icons.selColor)\n : (i <= icons.colorLen ? this.color[i - 1] : icons.color)\n )\n\n child.push(\n h(QIcon, {\n key: i,\n ref: `rt${i}`,\n staticClass: 'q-rating__icon',\n class: {\n 'q-rating__icon--active': active === true || half === true,\n 'q-rating__icon--exselected': exSelected,\n 'q-rating__icon--hovered': this.mouseModel === i,\n [`text-${color}`]: color !== void 0\n },\n props: { name: name || this.$q.iconSet.rating.icon },\n attrs: { tabindex },\n on: cache(this, 'i#' + i, {\n click: () => { this.__set(i) },\n mouseover: () => { this.__setHoverValue(i) },\n mouseout: () => { this.mouseModel = 0 },\n focus: () => { this.__setHoverValue(i) },\n blur: () => { this.mouseModel = 0 },\n keyup: e => { this.__keyup(e, i) }\n })\n }, slot(this, `tip-${i}`))\n )\n }\n\n if (this.name !== void 0 && this.disable !== true) {\n this.__injectFormInput(child, 'push')\n }\n\n return h('div', {\n staticClass: 'q-rating row inline items-center',\n class: this.classes,\n style: this.sizeStyle,\n attrs: this.attrs,\n on: { ...this.qListeners }\n }, child)\n }\n})\n","import Vue from 'vue'\n\nimport RatioMixin from '../../mixins/ratio.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QResponsive',\n\n mixins: [ RatioMixin, ListenersMixin ],\n\n render (h) {\n return h('div', {\n staticClass: 'q-responsive',\n on: { ...this.qListeners }\n }, [\n h('div', {\n staticClass: 'q-responsive__filler overflow-hidden'\n }, [\n h('div', { style: this.ratioStyle })\n ]),\n\n h('div', {\n staticClass: 'q-responsive__content absolute-full fit'\n }, slot(this, 'default'))\n ])\n }\n})\n","import Vue from 'vue'\n\nimport { between } from '../../utils/format.js'\nimport { setScrollPosition, setHorizontalScrollPosition } from '../../utils/scroll.js'\nimport { mergeSlot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\nimport debounce from '../../utils/debounce.js'\n\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\nimport QScrollObserver from '../scroll-observer/QScrollObserver.js'\nimport TouchPan from '../../directives/TouchPan.js'\nimport DarkMixin from '../../mixins/dark.js'\nimport { ariaHidden } from '../../mixins/attrs'\n\nexport default Vue.extend({\n name: 'QScrollArea',\n\n mixins: [ DarkMixin ],\n\n directives: {\n TouchPan\n },\n\n props: {\n barStyle: [ Array, String, Object ],\n thumbStyle: Object,\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 horizontal: Boolean\n },\n\n data () {\n return {\n // state management\n tempShowing: false,\n panning: false,\n hover: false,\n\n // other...\n containerWidth: 0,\n containerHeight: 0,\n scrollPosition: 0,\n scrollSize: 0\n }\n },\n\n computed: {\n classes () {\n return 'q-scrollarea' +\n (this.isDark === true ? ' q-scrollarea--dark' : '')\n },\n\n thumbHidden () {\n return (\n (this.visible === null ? this.hover : this.visible) !== true &&\n this.tempShowing === false &&\n this.panning === false\n ) || this.scrollSize <= this.containerSize\n },\n\n thumbSize () {\n return Math.round(\n between(\n this.containerSize * this.containerSize / this.scrollSize,\n 50,\n this.containerSize\n )\n )\n },\n\n style () {\n const pos = this.scrollPercentage * (this.containerSize - this.thumbSize)\n return Object.assign(\n {},\n this.thumbStyle,\n this.horizontal === true\n ? {\n left: `${pos}px`,\n width: `${this.thumbSize}px`\n }\n : {\n top: `${pos}px`,\n height: `${this.thumbSize}px`\n }\n )\n },\n\n mainStyle () {\n return this.thumbHidden === true\n ? this.contentStyle\n : this.contentActiveStyle\n },\n\n scrollPercentage () {\n const p = between(this.scrollPosition / (this.scrollSize - this.containerSize), 0, 1)\n return Math.round(p * 10000) / 10000\n },\n\n containerSize () {\n return this[`container${this.dirProps.suffix}`]\n },\n\n dirProps () {\n return this.horizontal === true\n ? { prefix: 'horizontal', suffix: 'Width', scroll: 'scrollLeft', classSuffix: 'h absolute-bottom', dir: 'right', dist: 'x' }\n : { prefix: 'vertical', suffix: 'Height', scroll: 'scrollTop', classSuffix: 'v absolute-right', dir: 'down', dist: 'y' }\n },\n\n thumbClass () {\n return `q-scrollarea__thumb--${this.dirProps.classSuffix}` +\n (this.thumbHidden === true ? ' q-scrollarea__thumb--invisible' : '')\n },\n\n barClass () {\n return `q-scrollarea__bar--${this.dirProps.classSuffix}` +\n (this.thumbHidden === true ? ' q-scrollarea__bar--invisible' : '')\n },\n\n thumbDirectives () {\n return [{\n name: 'touch-pan',\n modifiers: {\n [ this.horizontal === true ? 'horizontal' : 'vertical' ]: true,\n prevent: true,\n mouse: true,\n mouseAllDir: true\n },\n value: this.__panThumb\n }]\n }\n },\n\n methods: {\n getScrollTarget () {\n return this.$refs.target\n },\n\n getScrollPosition () {\n return this.scrollPosition\n },\n\n setScrollPosition (offset, duration) {\n const fn = this.horizontal === true\n ? setHorizontalScrollPosition\n : setScrollPosition\n\n fn(this.$refs.target, offset, duration)\n },\n\n setScrollPercentage (percentage, duration) {\n this.setScrollPosition(\n percentage * (this.scrollSize - this.containerSize),\n duration\n )\n },\n\n __updateContainer ({ height, width }) {\n let change = false\n\n if (this.containerWidth !== width) {\n this.containerWidth = width\n change = true\n }\n\n if (this.containerHeight !== height) {\n this.containerHeight = height\n change = true\n }\n\n change === true && this.__startTimer()\n },\n\n __updateScroll (info) {\n if (this.scrollPosition !== info.position) {\n this.scrollPosition = info.position\n this.__startTimer()\n }\n },\n\n __updateScrollSize ({ height, width }) {\n if (this.horizontal === true) {\n if (this.scrollSize !== width) {\n this.scrollSize = width\n this.__startTimer()\n }\n }\n else if (this.scrollSize !== height) {\n this.scrollSize = height\n this.__startTimer()\n }\n },\n\n __panThumb (e) {\n if (e.isFirst === true) {\n if (this.thumbHidden === true) {\n return\n }\n\n this.refPos = this.scrollPosition\n this.panning = true\n }\n else if (this.panning !== true) {\n return\n }\n\n if (e.isFinal === true) {\n this.panning = false\n }\n\n const multiplier = (this.scrollSize - this.containerSize) / (this.containerSize - this.thumbSize)\n const distance = e.distance[this.dirProps.dist]\n const pos = this.refPos + (e.direction === this.dirProps.dir ? 1 : -1) * distance * multiplier\n\n this.__setScroll(pos)\n },\n\n __mouseDown (evt) {\n if (this.thumbHidden !== true) {\n const pos = evt[`offset${this.horizontal === true ? 'X' : 'Y'}`] - this.thumbSize / 2\n this.__setScroll(pos / this.containerSize * this.scrollSize)\n\n // activate thumb pan\n if (this.$refs.thumb !== void 0) {\n this.$refs.thumb.dispatchEvent(new MouseEvent(evt.type, evt))\n }\n }\n },\n\n __startTimer () {\n if (this.tempShowing === true) {\n clearTimeout(this.timer)\n }\n else {\n this.tempShowing = true\n }\n\n this.timer = setTimeout(() => {\n this.tempShowing = false\n }, this.delay)\n\n this.__emitScroll()\n },\n\n __setScroll (offset) {\n this.$refs.target[this.dirProps.scroll] = offset\n }\n },\n\n render (h) {\n return h('div', {\n class: this.classes,\n on: cache(this, 'desk', {\n mouseenter: () => { this.hover = true },\n mouseleave: () => { this.hover = false }\n })\n }, [\n h('div', {\n ref: 'target',\n staticClass: 'scroll relative-position fit hide-scrollbar'\n }, [\n h('div', {\n staticClass: 'absolute',\n style: this.mainStyle,\n class: `full-${this.horizontal === true ? 'height' : 'width'}`\n }, mergeSlot([\n h(QResizeObserver, {\n on: cache(this, 'resizeIn', { resize: this.__updateScrollSize })\n })\n ], this, 'default')),\n\n h(QScrollObserver, {\n props: { horizontal: this.horizontal },\n on: cache(this, 'scroll', { scroll: this.__updateScroll })\n })\n ]),\n\n h(QResizeObserver, {\n on: cache(this, 'resizeOut', { resize: this.__updateContainer })\n }),\n\n h('div', {\n staticClass: 'q-scrollarea__bar',\n style: this.barStyle,\n class: this.barClass,\n attrs: ariaHidden,\n on: cache(this, 'bar', {\n mousedown: this.__mouseDown\n })\n }),\n\n h('div', {\n ref: 'thumb',\n staticClass: 'q-scrollarea__thumb',\n style: this.style,\n class: this.thumbClass,\n attrs: ariaHidden,\n directives: this.thumbDirectives\n })\n ])\n },\n\n created () {\n // we have lots of listeners, so\n // ensure we're not emitting same info\n // multiple times\n this.__emitScroll = debounce(() => {\n if (this.$listeners.scroll !== void 0) {\n const info = { ref: this }\n const prefix = this.dirProps.prefix\n\n info[prefix + 'Position'] = this.scrollPosition\n info[prefix + 'Percentage'] = this.scrollPercentage\n info[prefix + 'Size'] = this.scrollSize\n info[prefix + 'ContainerSize'] = this.containerSize\n\n this.$emit('scroll', info)\n }\n }, 0)\n }\n})\n","import debounce from '../utils/debounce.js'\n\nconst aggBucketSize = 1000\n\nconst scrollToEdges = [\n 'start',\n 'center',\n 'end',\n 'start-force',\n 'center-force',\n 'end-force'\n]\n\nconst slice = Array.prototype.slice\n\nlet buggyRTL = void 0\n\n// mobile Chrome takes the crown for this\nfunction detectBuggyRTL () {\n const scroller = document.createElement('div')\n const spacer = document.createElement('div')\n\n scroller.setAttribute('dir', 'rtl')\n scroller.style.width = '1px'\n scroller.style.height = '1px'\n scroller.style.overflow = 'auto'\n\n spacer.style.width = '1000px'\n spacer.style.height = '1px'\n\n document.body.appendChild(scroller)\n scroller.appendChild(spacer)\n scroller.scrollLeft = -1000\n\n buggyRTL = scroller.scrollLeft >= 0\n\n scroller.remove()\n}\n\nfunction sumFn (acc, h) {\n return acc + h\n}\n\nfunction getScrollDetails (\n parent,\n child,\n beforeRef,\n afterRef,\n horizontal,\n rtl,\n stickyStart,\n stickyEnd\n) {\n const\n parentCalc = parent === window ? document.scrollingElement || document.documentElement : parent,\n propElSize = horizontal === true ? 'offsetWidth' : 'offsetHeight',\n details = {\n scrollStart: 0,\n scrollViewSize: -stickyStart - stickyEnd,\n scrollMaxSize: 0,\n offsetStart: -stickyStart,\n offsetEnd: -stickyEnd\n }\n\n if (horizontal === true) {\n if (parent === window) {\n details.scrollStart = window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n details.scrollViewSize += window.innerWidth\n }\n else {\n details.scrollStart = parentCalc.scrollLeft\n details.scrollViewSize += parentCalc.clientWidth\n }\n details.scrollMaxSize = parentCalc.scrollWidth\n\n if (rtl === true) {\n details.scrollStart = (buggyRTL === true ? details.scrollMaxSize - details.scrollViewSize : 0) - details.scrollStart\n }\n }\n else {\n if (parent === window) {\n details.scrollStart = window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n details.scrollViewSize += window.innerHeight\n }\n else {\n details.scrollStart = parentCalc.scrollTop\n details.scrollViewSize += parentCalc.clientHeight\n }\n details.scrollMaxSize = parentCalc.scrollHeight\n }\n\n if (beforeRef !== void 0) {\n for (let el = beforeRef.previousElementSibling; el !== null; el = el.previousElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetStart += el[propElSize]\n }\n }\n }\n if (afterRef !== void 0) {\n for (let el = afterRef.nextElementSibling; el !== null; el = el.nextElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetEnd += el[propElSize]\n }\n }\n }\n\n if (child !== parent) {\n const\n parentRect = parentCalc.getBoundingClientRect(),\n childRect = child.getBoundingClientRect()\n\n if (horizontal === true) {\n details.offsetStart += childRect.left - parentRect.left\n details.offsetEnd -= childRect.width\n }\n else {\n details.offsetStart += childRect.top - parentRect.top\n details.offsetEnd -= childRect.height\n }\n\n if (parent !== window) {\n details.offsetStart += details.scrollStart\n }\n details.offsetEnd += details.scrollMaxSize - details.offsetStart\n }\n\n return details\n}\n\nfunction setScroll (parent, scroll, horizontal, rtl) {\n if (parent === window) {\n if (horizontal === true) {\n if (rtl === true) {\n scroll = (buggyRTL === true ? document.body.scrollWidth - window.innerWidth : 0) - scroll\n }\n window.scrollTo(scroll, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n }\n else {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, scroll)\n }\n }\n else if (horizontal === true) {\n if (rtl === true) {\n scroll = (buggyRTL === true ? parent.scrollWidth - parent.offsetWidth : 0) - scroll\n }\n parent.scrollLeft = scroll\n }\n else {\n parent.scrollTop = scroll\n }\n}\n\nfunction sumSize (sizeAgg, size, from, to) {\n if (from >= to) { return 0 }\n\n const\n lastTo = size.length,\n fromAgg = Math.floor(from / aggBucketSize),\n toAgg = Math.floor((to - 1) / aggBucketSize) + 1\n\n let total = sizeAgg.slice(fromAgg, toAgg).reduce(sumFn, 0)\n\n if (from % aggBucketSize !== 0) {\n total -= size.slice(fromAgg * aggBucketSize, from).reduce(sumFn, 0)\n }\n if (to % aggBucketSize !== 0 && to !== lastTo) {\n total -= size.slice(to, toAgg * aggBucketSize).reduce(sumFn, 0)\n }\n\n return total\n}\n\nconst commonVirtScrollProps = {\n virtualScrollSliceSize: {\n type: Number,\n default: null\n },\n\n virtualScrollItemSize: {\n type: Number,\n default: 24\n },\n\n virtualScrollStickySizeStart: {\n type: Number,\n default: 0\n },\n\n virtualScrollStickySizeEnd: {\n type: Number,\n default: 0\n },\n\n tableColspan: [ Number, String ]\n}\n\nexport const commonVirtPropsList = Object.keys(commonVirtScrollProps)\n\nexport default {\n props: {\n virtualScrollHorizontal: Boolean,\n ...commonVirtScrollProps\n },\n\n data () {\n return {\n virtualScrollSliceRange: { from: 0, to: 0 }\n }\n },\n\n watch: {\n virtualScrollHorizontal () {\n this.__setVirtualScrollSize()\n },\n\n needsReset () {\n this.reset()\n }\n },\n\n computed: {\n needsReset () {\n return ['virtualScrollItemSize', 'virtualScrollHorizontal']\n .map(p => this[p]).join(';')\n },\n\n colspanAttr () {\n return this.tableColspan !== void 0\n ? { colspan: this.tableColspan }\n : { colspan: 100 }\n }\n },\n\n methods: {\n reset () {\n this.__resetVirtualScroll(this.prevToIndex, true)\n },\n\n refresh (toIndex) {\n this.__resetVirtualScroll(toIndex === void 0 ? this.prevToIndex : toIndex)\n },\n\n scrollTo (toIndex, edge) {\n const scrollEl = this.__getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const scrollDetails = getScrollDetails(\n scrollEl,\n this.__getVirtualScrollEl(),\n this.$refs.before,\n this.$refs.after,\n this.virtualScrollHorizontal,\n this.$q.lang.rtl,\n this.virtualScrollStickySizeStart,\n this.virtualScrollStickySizeEnd\n )\n\n this.__scrollViewSize !== scrollDetails.scrollViewSize && this.__setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n this.__setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n Math.min(this.virtualScrollLength - 1, Math.max(0, parseInt(toIndex, 10) || 0)),\n 0,\n scrollToEdges.indexOf(edge) > -1 ? edge : (this.prevToIndex > -1 && toIndex > this.prevToIndex ? 'end' : 'start')\n )\n },\n\n __onVirtualScrollEvt () {\n const scrollEl = this.__getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const\n scrollDetails = getScrollDetails(\n scrollEl,\n this.__getVirtualScrollEl(),\n this.$refs.before,\n this.$refs.after,\n this.virtualScrollHorizontal,\n this.$q.lang.rtl,\n this.virtualScrollStickySizeStart,\n this.virtualScrollStickySizeEnd\n ),\n listLastIndex = this.virtualScrollLength - 1,\n listEndOffset = scrollDetails.scrollMaxSize - scrollDetails.offsetStart - scrollDetails.offsetEnd - this.virtualScrollPaddingAfter\n\n if (this.prevScrollStart === scrollDetails.scrollStart) {\n return\n }\n this.prevScrollStart = void 0\n\n if (scrollDetails.scrollMaxSize <= 0) {\n this.__setVirtualScrollSliceRange(scrollEl, scrollDetails, 0, 0)\n return\n }\n\n this.__scrollViewSize !== scrollDetails.scrollViewSize && this.__setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n this.__updateVirtualScrollSizes(this.virtualScrollSliceRange.from)\n\n const scrollMaxStart = scrollDetails.scrollMaxSize - Math.max(scrollDetails.scrollViewSize, scrollDetails.offsetEnd) - this.virtualScrollSizes[listLastIndex]\n\n if (scrollMaxStart > 0 && scrollDetails.scrollStart >= scrollMaxStart) {\n this.__setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n listLastIndex,\n scrollDetails.scrollMaxSize - scrollDetails.offsetEnd - this.virtualScrollSizesAgg.reduce(sumFn, 0)\n )\n\n return\n }\n\n let\n toIndex = 0,\n listOffset = scrollDetails.scrollStart - scrollDetails.offsetStart,\n offset = listOffset\n\n if (listOffset <= listEndOffset && listOffset + scrollDetails.scrollViewSize >= this.virtualScrollPaddingBefore) {\n listOffset -= this.virtualScrollPaddingBefore\n toIndex = this.virtualScrollSliceRange.from\n offset = listOffset\n }\n else {\n for (let j = 0; listOffset >= this.virtualScrollSizesAgg[j] && toIndex < listLastIndex; j++) {\n listOffset -= this.virtualScrollSizesAgg[j]\n toIndex += aggBucketSize\n }\n }\n\n while (listOffset > 0 && toIndex < listLastIndex) {\n listOffset -= this.virtualScrollSizes[toIndex]\n if (listOffset > -scrollDetails.scrollViewSize) {\n toIndex++\n offset = listOffset\n }\n else {\n offset = this.virtualScrollSizes[toIndex] + listOffset\n }\n }\n\n this.__setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n toIndex,\n offset\n )\n },\n\n __setVirtualScrollSliceRange (scrollEl, scrollDetails, toIndex, offset, align) {\n const alignForce = typeof align === 'string' && align.indexOf('-force') > -1\n const alignEnd = alignForce === true ? align.replace('-force', '') : align\n\n let\n from = Math.max(0, Math.ceil(toIndex - this.virtualScrollSliceSizeComputed / (alignEnd === void 0 || alignEnd === 'center' ? 2 : (alignEnd === 'start' ? 3 : 1.5)))),\n to = from + this.virtualScrollSliceSizeComputed\n\n if (to > this.virtualScrollLength) {\n to = this.virtualScrollLength\n from = Math.max(0, to - this.virtualScrollSliceSizeComputed)\n }\n\n const rangeChanged = from !== this.virtualScrollSliceRange.from || to !== this.virtualScrollSliceRange.to\n\n if (rangeChanged === false && alignEnd === void 0) {\n this.__emitScroll(toIndex)\n\n return\n }\n\n const hadFocus = rangeChanged === true && typeof scrollEl.contains === 'function' && scrollEl.contains(document.activeElement)\n const sizeBefore = alignEnd !== void 0 ? this.virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0) : 0\n\n if (rangeChanged === true) {\n this.virtualScrollSliceRange = { from, to }\n this.virtualScrollPaddingBefore = sumSize(this.virtualScrollSizesAgg, this.virtualScrollSizes, 0, from)\n this.virtualScrollPaddingAfter = sumSize(this.virtualScrollSizesAgg, this.virtualScrollSizes, to, this.virtualScrollLength)\n }\n\n this.__activeScrollStart = scrollDetails.scrollStart\n\n requestAnimationFrame(() => {\n if (hadFocus === true && scrollEl.contains(document.activeElement) !== true) {\n scrollEl.focus()\n }\n\n if (this.__activeScrollStart !== scrollDetails.scrollStart) {\n return\n }\n\n if (rangeChanged === true) {\n this.__updateVirtualScrollSizes(from)\n }\n\n const\n sizeAfter = this.virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0),\n posStart = sizeAfter + scrollDetails.offsetStart + this.virtualScrollPaddingBefore,\n posEnd = posStart + this.virtualScrollSizes[toIndex],\n rtl = this.$q.lang.rtl === true\n\n let scrollPosition = posStart + offset\n\n if (alignEnd !== void 0) {\n const sizeDiff = sizeAfter - sizeBefore\n const scrollStart = scrollDetails.scrollStart + sizeDiff\n\n scrollPosition = alignForce !== true && scrollStart < posStart && posEnd < scrollStart + scrollDetails.scrollViewSize\n ? scrollStart\n : (\n alignEnd === 'end'\n ? posEnd - scrollDetails.scrollViewSize\n : posStart - (alignEnd === 'start' ? 0 : Math.round((scrollDetails.scrollViewSize - this.virtualScrollSizes[toIndex]) / 2))\n )\n }\n\n this.prevScrollStart = scrollPosition\n\n setScroll(\n scrollEl,\n scrollPosition,\n this.virtualScrollHorizontal,\n rtl\n )\n\n this.__emitScroll(toIndex)\n })\n },\n\n __updateVirtualScrollSizes (from) {\n const contentEl = this.$refs.content\n\n if (contentEl !== void 0) {\n const\n children = slice.call(contentEl.children).filter(el => el.classList.contains('q-virtual-scroll--skip') === false),\n childrenLength = children.length,\n sizeFn = this.virtualScrollHorizontal === true\n ? el => el.getBoundingClientRect().width\n : el => el.offsetHeight\n\n let\n index = from,\n size, diff\n\n for (let i = 0; i < childrenLength;) {\n size = sizeFn(children[i])\n i++\n\n while (i < childrenLength && children[i].classList.contains('q-virtual-scroll--with-prev') === true) {\n size += sizeFn(children[i])\n i++\n }\n\n diff = size - this.virtualScrollSizes[index]\n\n if (diff !== 0) {\n this.virtualScrollSizes[index] += diff\n this.virtualScrollSizesAgg[Math.floor(index / aggBucketSize)] += diff\n }\n\n index++\n }\n }\n },\n\n __resetVirtualScroll (toIndex, fullReset) {\n const defaultSize = this.virtualScrollItemSize\n\n if (fullReset === true || Array.isArray(this.virtualScrollSizes) === false) {\n this.virtualScrollSizes = []\n }\n\n const oldVirtualScrollSizesLength = this.virtualScrollSizes.length\n\n this.virtualScrollSizes.length = this.virtualScrollLength\n\n for (let i = this.virtualScrollLength - 1; i >= oldVirtualScrollSizesLength; i--) {\n this.virtualScrollSizes[i] = defaultSize\n }\n\n const jMax = Math.floor((this.virtualScrollLength - 1) / aggBucketSize)\n this.virtualScrollSizesAgg = []\n for (let j = 0; j <= jMax; j++) {\n let size = 0\n const iMax = Math.min((j + 1) * aggBucketSize, this.virtualScrollLength)\n for (let i = j * aggBucketSize; i < iMax; i++) {\n size += this.virtualScrollSizes[i]\n }\n this.virtualScrollSizesAgg.push(size)\n }\n\n this.prevToIndex = -1\n this.prevScrollStart = void 0\n\n if (toIndex >= 0) {\n this.__updateVirtualScrollSizes(this.virtualScrollSliceRange.from)\n\n this.$nextTick(() => {\n this.scrollTo(toIndex)\n })\n }\n else {\n this.virtualScrollPaddingBefore = sumSize(this.virtualScrollSizesAgg, this.virtualScrollSizes, 0, this.virtualScrollSliceRange.from)\n this.virtualScrollPaddingAfter = sumSize(this.virtualScrollSizesAgg, this.virtualScrollSizes, this.virtualScrollSliceRange.to, this.virtualScrollLength)\n\n this.__onVirtualScrollEvt()\n }\n },\n\n __setVirtualScrollSize (scrollViewSize) {\n if (this.virtualScrollSliceSize > 0) {\n this.virtualScrollSliceSizeComputed = this.virtualScrollSliceSize\n\n return\n }\n\n if (scrollViewSize === void 0 && typeof window !== 'undefined') {\n const scrollEl = this.__getVirtualScrollTarget()\n\n if (scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {\n scrollViewSize = getScrollDetails(\n scrollEl,\n this.__getVirtualScrollEl(),\n this.$refs.before,\n this.$refs.after,\n this.virtualScrollHorizontal,\n this.$q.lang.rtl,\n this.virtualScrollStickySizeStart,\n this.virtualScrollStickySizeEnd\n ).scrollViewSize\n }\n }\n\n this.__scrollViewSize = scrollViewSize\n\n this.virtualScrollSliceSizeComputed = scrollViewSize === void 0 || scrollViewSize <= 0\n ? 30\n : Math.ceil(scrollViewSize / this.virtualScrollItemSize * 3)\n },\n\n __padVirtualScroll (h, tag, content) {\n const paddingSize = this.virtualScrollHorizontal === true ? 'width' : 'height'\n\n return [\n tag === 'tbody'\n ? h(tag, {\n staticClass: 'q-virtual-scroll__padding',\n key: 'before',\n ref: 'before'\n }, [\n h('tr', [\n h('td', {\n style: { [paddingSize]: `${this.virtualScrollPaddingBefore}px` },\n attrs: this.colspanAttr\n })\n ])\n ])\n : h(tag, {\n staticClass: 'q-virtual-scroll__padding',\n key: 'before',\n ref: 'before',\n style: { [paddingSize]: `${this.virtualScrollPaddingBefore}px` }\n }),\n\n h(tag, {\n staticClass: 'q-virtual-scroll__content',\n key: 'content',\n ref: 'content'\n }, content),\n\n tag === 'tbody'\n ? h(tag, {\n staticClass: 'q-virtual-scroll__padding',\n key: 'after',\n ref: 'after'\n }, [\n h('tr', [\n h('td', {\n style: { [paddingSize]: `${this.virtualScrollPaddingAfter}px` },\n attrs: this.colspanAttr\n })\n ])\n ])\n : h(tag, {\n staticClass: 'q-virtual-scroll__padding',\n key: 'after',\n ref: 'after',\n style: { [paddingSize]: `${this.virtualScrollPaddingAfter}px` }\n })\n ]\n },\n\n __emitScroll (index) {\n if (this.prevToIndex !== index) {\n this.qListeners['virtual-scroll'] !== void 0 && this.$emit('virtual-scroll', {\n index,\n from: this.virtualScrollSliceRange.from,\n to: this.virtualScrollSliceRange.to - 1,\n direction: index < this.prevToIndex ? 'decrease' : 'increase',\n ref: this\n })\n\n this.prevToIndex = index\n }\n }\n },\n\n created () {\n this.__setVirtualScrollSize()\n },\n\n beforeMount () {\n buggyRTL === void 0 && detectBuggyRTL()\n this.__onVirtualScrollEvt = debounce(this.__onVirtualScrollEvt, this.$q.platform.is.ios === true ? 120 : 70)\n this.__setVirtualScrollSize()\n }\n}\n","import Vue from 'vue'\n\nimport QField from '../field/QField.js'\nimport QIcon from '../icon/QIcon.js'\nimport QChip from '../chip/QChip.js'\n\nimport QItem from '../item/QItem.js'\nimport QItemSection from '../item/QItemSection.js'\nimport QItemLabel from '../item/QItemLabel.js'\n\nimport QMenu from '../menu/QMenu.js'\nimport QDialog from '../dialog/QDialog.js'\n\nimport { isDeepEqual } from '../../utils/is.js'\nimport { stop, prevent, stopAndPrevent } from '../../utils/event.js'\nimport { normalizeToInterval } from '../../utils/format.js'\nimport { shouldIgnoreKey, isKeyCode } from '../../utils/key-composition.js'\nimport { mergeSlot } from '../../utils/slot.js'\nimport cache from '../../utils/cache.js'\n\nimport { FormFieldMixin } from '../../mixins/form.js'\nimport VirtualScroll from '../../mixins/virtual-scroll.js'\nimport CompositionMixin from '../../mixins/composition.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nconst validateNewValueMode = v => ['add', 'add-unique', 'toggle'].includes(v)\nconst reEscapeList = '.*+?^${}()|[]\\\\'\n\nexport default Vue.extend({\n name: 'QSelect',\n\n mixins: [\n QField,\n VirtualScroll,\n CompositionMixin,\n FormFieldMixin,\n ListenersMixin\n ],\n\n props: {\n value: {\n required: true\n },\n\n multiple: Boolean,\n\n displayValue: [String, Number],\n displayValueSanitize: Boolean,\n dropdownIcon: String,\n\n options: {\n type: Array,\n default: () => []\n },\n\n optionValue: [Function, String],\n optionLabel: [Function, String],\n optionDisable: [Function, String],\n\n hideSelected: Boolean,\n hideDropdownIcon: Boolean,\n fillInput: Boolean,\n\n maxValues: [Number, String],\n\n optionsDense: Boolean,\n optionsDark: {\n type: Boolean,\n default: null\n },\n optionsSelectedClass: String,\n optionsSanitize: Boolean,\n\n optionsCover: Boolean,\n\n menuShrink: Boolean,\n menuAnchor: String,\n menuSelf: String,\n menuOffset: Array,\n\n popupContentClass: String,\n popupContentStyle: [String, Array, Object],\n\n useInput: Boolean,\n useChips: Boolean,\n\n newValueMode: {\n type: String,\n validator: validateNewValueMode\n },\n\n mapOptions: Boolean,\n emitValue: Boolean,\n\n inputDebounce: {\n type: [Number, String],\n default: 500\n },\n\n inputClass: [Array, String, Object],\n inputStyle: [Array, String, Object],\n\n tabindex: {\n type: [String, Number],\n default: 0\n },\n\n transitionShow: String,\n transitionHide: String,\n\n behavior: {\n type: String,\n validator: v => ['default', 'menu', 'dialog'].includes(v),\n default: 'default'\n }\n },\n\n data () {\n return {\n menu: false,\n dialog: false,\n optionIndex: -1,\n inputValue: '',\n dialogFieldFocused: false\n }\n },\n\n watch: {\n innerValue: {\n handler (val) {\n this.innerValueCache = val\n\n if (\n this.useInput === true &&\n this.fillInput === true &&\n this.multiple !== true &&\n // Prevent re-entering in filter while filtering\n // Also prevent clearing inputValue while filtering\n this.innerLoading !== true &&\n ((this.dialog !== true && this.menu !== true) || this.hasValue !== true)\n ) {\n this.userInputValue !== true && this.__resetInputValue()\n if (this.dialog === true || this.menu === true) {\n this.filter('')\n }\n }\n },\n immediate: true\n },\n\n fillInput () {\n this.__resetInputValue()\n },\n\n menu (show) {\n this.__updateMenu(show)\n }\n },\n\n computed: {\n isOptionsDark () {\n return this.optionsDark === null\n ? this.isDark\n : this.optionsDark\n },\n\n virtualScrollLength () {\n return Array.isArray(this.options)\n ? this.options.length\n : 0\n },\n\n fieldClass () {\n return `q-select q-field--auto-height q-select--with${this.useInput !== true ? 'out' : ''}-input` +\n ` q-select--with${this.useChips !== true ? 'out' : ''}-chips` +\n ` q-select--${this.multiple === true ? 'multiple' : 'single'}`\n },\n\n computedInputClass () {\n if (this.hideSelected === true || this.innerValue.length === 0) {\n return this.inputClass\n }\n\n return this.inputClass === void 0\n ? 'q-field__input--padding'\n : [this.inputClass, 'q-field__input--padding']\n },\n\n menuContentClass () {\n return (this.virtualScrollHorizontal === true ? 'q-virtual-scroll--horizontal' : '') +\n (this.popupContentClass ? ' ' + this.popupContentClass : '')\n },\n\n innerValue () {\n const\n mapNull = this.mapOptions === true && this.multiple !== true,\n val = this.value !== void 0 && (this.value !== null || mapNull === true)\n ? (this.multiple === true && Array.isArray(this.value) ? this.value : [ this.value ])\n : []\n\n if (this.mapOptions === true && Array.isArray(this.options) === true) {\n const cache = this.mapOptions === true && this.innerValueCache !== void 0\n ? this.innerValueCache\n : []\n const values = val.map(v => this.__getOption(v, cache))\n\n return this.value === null && mapNull === true\n ? values.filter(v => v !== null)\n : values\n }\n\n return val\n },\n\n noOptions () {\n return this.virtualScrollLength === 0\n },\n\n selectedString () {\n return this.innerValue\n .map(opt => this.getOptionLabel(opt))\n .join(', ')\n },\n\n sanitizeFn () {\n return this.optionsSanitize === true\n ? () => true\n : opt => opt !== void 0 && opt !== null && opt.sanitize === true\n },\n\n displayAsText () {\n return this.displayValueSanitize === true || (\n this.displayValue === void 0 && (\n this.optionsSanitize === true ||\n this.innerValue.some(this.sanitizeFn)\n )\n )\n },\n\n computedTabindex () {\n return this.focused === true ? this.tabindex : -1\n },\n\n selectedScope () {\n return this.innerValue.map((opt, i) => ({\n index: i,\n opt,\n sanitize: this.sanitizeFn(opt),\n selected: true,\n removeAtIndex: this.__removeAtIndexAndFocus,\n toggleOption: this.toggleOption,\n tabindex: this.computedTabindex\n }))\n },\n\n optionScope () {\n if (this.virtualScrollLength === 0) {\n return []\n }\n\n const { from, to } = this.virtualScrollSliceRange\n\n return this.options.slice(from, to).map((opt, i) => {\n const disable = this.isOptionDisabled(opt) === true\n const index = from + i\n\n const itemProps = {\n clickable: true,\n active: false,\n activeClass: this.computedOptionsSelectedClass,\n manualFocus: true,\n focused: false,\n disable,\n tabindex: -1,\n dense: this.optionsDense,\n dark: this.isOptionsDark\n }\n\n if (disable !== true) {\n this.isOptionSelected(opt) === true && (itemProps.active = true)\n this.optionIndex === index && (itemProps.focused = true)\n }\n\n const itemEvents = {\n click: () => { this.toggleOption(opt) }\n }\n\n if (this.$q.platform.is.desktop === true) {\n itemEvents.mousemove = () => { this.setOptionIndex(index) }\n }\n\n return {\n index,\n opt,\n sanitize: this.sanitizeFn(opt),\n selected: itemProps.active,\n focused: itemProps.focused,\n toggleOption: this.toggleOption,\n setOptionIndex: this.setOptionIndex,\n itemProps,\n itemEvents\n }\n })\n },\n\n dropdownArrowIcon () {\n return this.dropdownIcon !== void 0\n ? this.dropdownIcon\n : this.$q.iconSet.arrow.dropdown\n },\n\n squaredMenu () {\n return this.optionsCover === false &&\n this.outlined !== true &&\n this.standout !== true &&\n this.borderless !== true &&\n this.rounded !== true\n },\n\n computedOptionsSelectedClass () {\n return this.optionsSelectedClass !== void 0\n ? this.optionsSelectedClass\n : (this.color !== void 0 ? `text-${this.color}` : '')\n },\n\n innerOptionsValue () {\n return this.innerValue.map(opt => this.getOptionValue(opt))\n },\n\n // returns method to get value of an option;\n // takes into account 'option-value' prop\n getOptionValue () {\n return this.__getPropValueFn('optionValue', 'value')\n },\n\n // returns method to get label of an option;\n // takes into account 'option-label' prop\n getOptionLabel () {\n return this.__getPropValueFn('optionLabel', 'label')\n },\n\n // returns method to tell if an option is disabled;\n // takes into account 'option-disable' prop\n isOptionDisabled () {\n return this.__getPropValueFn('optionDisable', 'disable')\n },\n\n inputControlEvents () {\n const on = {\n input: this.__onInput,\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n change: this.__onChange,\n keydown: this.__onTargetKeydown,\n keyup: this.__onTargetKeyup,\n keypress: this.__onTargetKeypress,\n focus: this.__selectInputText,\n click: e => {\n this.hasDialog === true && stop(e)\n }\n }\n\n on.compositionstart = on.compositionupdate = on.compositionend = this.__onComposition\n\n return on\n }\n },\n\n methods: {\n getEmittingOptionValue (opt) {\n return this.emitValue === true\n ? this.getOptionValue(opt)\n : opt\n },\n\n removeAtIndex (index) {\n if (index > -1 && index < this.innerValue.length) {\n if (this.multiple === true) {\n const model = this.value.slice()\n this.$emit('remove', { index, value: model.splice(index, 1)[0] })\n this.$emit('input', model)\n }\n else {\n this.$emit('input', null)\n }\n }\n },\n\n __removeAtIndexAndFocus (index) {\n this.removeAtIndex(index)\n this.__focus()\n },\n\n add (opt, unique) {\n const val = this.getEmittingOptionValue(opt)\n\n if (this.multiple !== true) {\n this.fillInput === true && this.updateInputValue(\n this.getOptionLabel(opt),\n true,\n true\n )\n\n this.$emit('input', val)\n return\n }\n\n if (this.innerValue.length === 0) {\n this.$emit('add', { index: 0, value: val })\n this.$emit('input', this.multiple === true ? [ val ] : val)\n return\n }\n\n if (unique === true && this.isOptionSelected(opt) === true) {\n return\n }\n\n if (this.maxValues !== void 0 && this.value.length >= this.maxValues) {\n return\n }\n\n const model = this.value.slice()\n\n this.$emit('add', { index: model.length, value: val })\n model.push(val)\n this.$emit('input', model)\n },\n\n toggleOption (opt, keepOpen) {\n if (this.editable !== true || opt === void 0 || this.isOptionDisabled(opt) === true) {\n return\n }\n\n const optValue = this.getOptionValue(opt)\n\n if (this.multiple !== true) {\n if (keepOpen !== true) {\n this.updateInputValue(\n this.fillInput === true ? this.getOptionLabel(opt) : '',\n true,\n true\n )\n\n this.hidePopup()\n }\n\n this.$refs.target !== void 0 && this.$refs.target.focus()\n\n if (isDeepEqual(this.getOptionValue(this.innerValue[0]), optValue) !== true) {\n this.$emit('input', this.emitValue === true ? optValue : opt)\n }\n return\n }\n\n (this.hasDialog !== true || this.dialogFieldFocused === true) && this.__focus()\n\n this.__selectInputText()\n\n if (this.innerValue.length === 0) {\n const val = this.emitValue === true ? optValue : opt\n this.$emit('add', { index: 0, value: val })\n this.$emit('input', this.multiple === true ? [ val ] : val)\n return\n }\n\n const\n model = this.value.slice(),\n index = this.innerOptionsValue.findIndex(v => isDeepEqual(v, optValue))\n\n if (index > -1) {\n this.$emit('remove', { index, value: model.splice(index, 1)[0] })\n }\n else {\n if (this.maxValues !== void 0 && model.length >= this.maxValues) {\n return\n }\n\n const val = this.emitValue === true ? optValue : opt\n\n this.$emit('add', { index: model.length, value: val })\n model.push(val)\n }\n\n this.$emit('input', model)\n },\n\n setOptionIndex (index) {\n if (this.$q.platform.is.desktop !== true) { return }\n\n const val = index > -1 && index < this.virtualScrollLength\n ? index\n : -1\n\n if (this.optionIndex !== val) {\n this.optionIndex = val\n }\n },\n\n moveOptionSelection (offset = 1, skipInputValue) {\n if (this.menu === true) {\n let index = this.optionIndex\n do {\n index = normalizeToInterval(\n index + offset,\n -1,\n this.virtualScrollLength - 1\n )\n }\n while (index !== -1 && index !== this.optionIndex && this.isOptionDisabled(this.options[index]) === true)\n\n if (this.optionIndex !== index) {\n this.setOptionIndex(index)\n this.scrollTo(index)\n\n if (skipInputValue !== true && this.useInput === true && this.fillInput === true) {\n this.__setInputValue(index >= 0\n ? this.getOptionLabel(this.options[index])\n : this.defaultInputValue\n )\n }\n }\n }\n },\n\n __getOption (value, innerValueCache) {\n const fn = opt => isDeepEqual(this.getOptionValue(opt), value)\n return this.options.find(fn) || innerValueCache.find(fn) || value\n },\n\n __getPropValueFn (propName, defaultVal) {\n const val = this[propName] !== void 0\n ? this[propName]\n : defaultVal\n\n return typeof val === 'function'\n ? val\n : opt => Object(opt) === opt && val in opt\n ? opt[val]\n : opt\n },\n\n isOptionSelected (opt) {\n const val = this.getOptionValue(opt)\n return this.innerOptionsValue.find(v => isDeepEqual(v, val)) !== void 0\n },\n\n __selectInputText () {\n if (this.useInput === true && this.$refs.target !== void 0) {\n this.$refs.target.select()\n }\n },\n\n __onTargetKeyup (e) {\n // if ESC and we have an opened menu\n // then stop propagation (might be caught by a QDialog\n // and so it will also close the QDialog, which is wrong)\n if (isKeyCode(e, 27) === true && this.menu === true) {\n stop(e)\n // on ESC we need to close the dialog also\n this.hidePopup()\n this.__resetInputValue()\n }\n\n this.$emit('keyup', e)\n },\n\n __onTargetAutocomplete (e) {\n const { value } = e.target\n\n e.target.value = ''\n\n if (e.keyCode !== void 0) {\n this.__onTargetKeyup(e)\n return\n }\n\n if (typeof value === 'string' && value.length > 0) {\n const needle = value.toLocaleLowerCase()\n\n let fn = opt => this.getOptionValue(opt).toLocaleLowerCase() === needle\n let option = this.options.find(fn)\n\n if (option !== null) {\n this.innerValue.indexOf(option) === -1 && this.toggleOption(option)\n }\n else {\n fn = opt => this.getOptionLabel(opt).toLocaleLowerCase() === needle\n option = this.options.find(fn)\n\n if (option !== null) {\n this.innerValue.indexOf(option) === -1 && this.toggleOption(option)\n }\n }\n }\n },\n\n __onTargetKeypress (e) {\n this.$emit('keypress', e)\n },\n\n __onTargetKeydown (e) {\n this.$emit('keydown', e)\n\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const newValueModeValid = this.inputValue.length > 0 &&\n (this.newValueMode !== void 0 || this.qListeners['new-value'] !== void 0)\n const tabShouldSelect = e.shiftKey !== true &&\n this.multiple !== true &&\n (this.optionIndex > -1 || newValueModeValid === true)\n\n // escape\n if (e.keyCode === 27) {\n prevent(e) // prevent clearing the inputValue\n return\n }\n\n // tab\n if (e.keyCode === 9 && tabShouldSelect === false) {\n this.__closeMenu()\n return\n }\n\n if (e.target === void 0 || e.target.id !== this.targetUid) { return }\n\n // down\n if (\n e.keyCode === 40 &&\n this.innerLoading !== true &&\n this.menu === false\n ) {\n stopAndPrevent(e)\n this.showPopup()\n return\n }\n\n // backspace\n if (\n e.keyCode === 8 &&\n this.multiple === true &&\n this.hideSelected !== true &&\n this.inputValue.length === 0 &&\n Array.isArray(this.value)\n ) {\n this.removeAtIndex(this.value.length - 1)\n return\n }\n\n // up, down\n if (e.keyCode === 38 || e.keyCode === 40) {\n stopAndPrevent(e)\n this.moveOptionSelection(e.keyCode === 38 ? -1 : 1, this.multiple)\n }\n\n const optionsLength = this.virtualScrollLength\n\n // clear search buffer if expired\n if (this.searchBuffer === void 0 || this.searchBufferExp < Date.now()) {\n this.searchBuffer = ''\n }\n\n // keyboard search when not having use-input\n if (\n optionsLength > 0 &&\n this.useInput !== true &&\n e.key.length === 1 && // printable char\n e.altKey === e.ctrlKey && // not kbd shortcut\n (e.keyCode !== 32 || this.searchBuffer.length > 0) // space in middle of search\n ) {\n this.menu !== true && this.showPopup(e)\n\n const\n char = e.key.toLocaleLowerCase(),\n keyRepeat = this.searchBuffer.length === 1 && this.searchBuffer[0] === char\n\n this.searchBufferExp = Date.now() + 1500\n if (keyRepeat === false) {\n stopAndPrevent(e)\n this.searchBuffer += char\n }\n\n const searchRe = new RegExp('^' + this.searchBuffer.split('').map(l => reEscapeList.indexOf(l) > -1 ? '\\\\' + l : l).join('.*'), 'i')\n\n let index = this.optionIndex\n\n if (keyRepeat === true || index < 0 || searchRe.test(this.getOptionLabel(this.options[index])) !== true) {\n do {\n index = normalizeToInterval(index + 1, -1, optionsLength - 1)\n }\n while (index !== this.optionIndex && (\n this.isOptionDisabled(this.options[index]) === true ||\n searchRe.test(this.getOptionLabel(this.options[index])) !== true\n ))\n }\n\n if (this.optionIndex !== index) {\n this.$nextTick(() => {\n this.setOptionIndex(index)\n this.scrollTo(index)\n\n if (index >= 0 && this.useInput === true && this.fillInput === true) {\n this.__setInputValue(this.getOptionLabel(this.options[index]))\n }\n })\n }\n\n return\n }\n\n // enter, space (when not using use-input and not in search), or tab (when not using multiple and option selected)\n // same target is checked above\n if (\n e.keyCode !== 13 &&\n (e.keyCode !== 32 || this.useInput === true || this.searchBuffer !== '') &&\n (e.keyCode !== 9 || tabShouldSelect === false)\n ) { return }\n\n e.keyCode !== 9 && stopAndPrevent(e)\n\n if (this.optionIndex > -1 && this.optionIndex < optionsLength) {\n this.toggleOption(this.options[this.optionIndex])\n return\n }\n\n if (newValueModeValid === true) {\n const done = (val, mode) => {\n if (mode) {\n if (validateNewValueMode(mode) !== true) {\n return\n }\n }\n else {\n mode = this.newValueMode\n }\n\n if (val === void 0 || val === null) {\n return\n }\n\n this.updateInputValue('', this.multiple !== true, true)\n\n this[mode === 'toggle' ? 'toggleOption' : 'add'](\n val,\n mode === 'add-unique'\n )\n\n if (this.multiple !== true) {\n this.$refs.target !== void 0 && this.$refs.target.focus()\n this.hidePopup()\n }\n }\n\n if (this.qListeners['new-value'] !== void 0) {\n this.$emit('new-value', this.inputValue, done)\n }\n else {\n done(this.inputValue)\n }\n\n if (this.multiple !== true) {\n return\n }\n }\n\n if (this.menu === true) {\n this.__closeMenu()\n }\n else if (this.innerLoading !== true) {\n this.showPopup()\n }\n },\n\n __getVirtualScrollEl () {\n return this.hasDialog === true\n ? this.$refs.menuContent\n : (\n this.$refs.menu !== void 0 && this.$refs.menu.__portal !== void 0\n ? this.$refs.menu.__portal.$el\n : void 0\n )\n },\n\n __getVirtualScrollTarget () {\n return this.__getVirtualScrollEl()\n },\n\n __getSelection (h, fromDialog) {\n if (this.hideSelected === true) {\n return fromDialog === true || this.dialog !== true || this.hasDialog !== true\n ? []\n : [\n h('span', {\n domProps: {\n textContent: this.inputValue\n }\n })\n ]\n }\n\n if (this.$scopedSlots['selected-item'] !== void 0) {\n return this.selectedScope.map(scope => this.$scopedSlots['selected-item'](scope)).slice()\n }\n\n if (this.$scopedSlots.selected !== void 0) {\n return this.$scopedSlots.selected().slice()\n }\n\n if (this.useChips === true) {\n return this.selectedScope.map((scope, i) => h(QChip, {\n key: 'option-' + i,\n props: {\n removable: this.editable === true && this.isOptionDisabled(scope.opt) !== true,\n dense: true,\n textColor: this.color,\n tabindex: this.computedTabindex\n },\n on: cache(this, 'rem#' + i, {\n remove () { scope.removeAtIndex(i) }\n })\n }, [\n h('span', {\n staticClass: 'ellipsis',\n domProps: {\n [scope.sanitize === true ? 'textContent' : 'innerHTML']: this.getOptionLabel(scope.opt)\n }\n })\n ]))\n }\n\n return [\n h('span', {\n domProps: {\n [this.displayAsText ? 'textContent' : 'innerHTML']: this.displayValue !== void 0\n ? this.displayValue\n : this.selectedString\n }\n })\n ]\n },\n\n __getControl (h, fromDialog) {\n const child = this.__getSelection(h, fromDialog)\n const isTarget = fromDialog === true || this.dialog !== true || this.hasDialog !== true\n\n if (isTarget === true && this.useInput === true) {\n child.push(this.__getInput(h, fromDialog))\n }\n else if (this.editable === true) {\n isTarget === true && child.push(\n h('div', {\n // there can be only one (when dialog is opened the control in dialog should be target)\n ref: 'target',\n key: 'd_t',\n staticClass: 'no-outline',\n attrs: {\n id: this.targetUid,\n tabindex: this.tabindex\n },\n on: cache(this, 'f-tget', {\n keydown: this.__onTargetKeydown,\n keyup: this.__onTargetKeyup,\n keypress: this.__onTargetKeypress\n })\n })\n )\n\n this.qAttrs.autocomplete !== void 0 && child.push(\n h('input', {\n staticClass: 'q-select__autocomplete-input no-outline',\n attrs: { autocomplete: this.qAttrs.autocomplete },\n on: cache(this, 'autoinp', {\n keyup: this.__onTargetAutocomplete\n })\n })\n )\n }\n\n if (this.nameProp !== void 0 && this.disable !== true && this.innerOptionsValue.length > 0) {\n const opts = this.innerOptionsValue.map(value => h('option', {\n attrs: { value, selected: true }\n }))\n\n child.push(\n h('select', {\n staticClass: 'hidden',\n attrs: {\n name: this.nameProp,\n multiple: this.multiple\n }\n }, opts)\n )\n }\n\n return h('div', { staticClass: 'q-field__native row items-center', attrs: this.qAttrs }, child)\n },\n\n __getOptions (h) {\n if (this.menu !== true) {\n return void 0\n }\n\n const fn = this.$scopedSlots.option !== void 0\n ? this.$scopedSlots.option\n : scope => h(QItem, {\n key: scope.index,\n props: scope.itemProps,\n on: scope.itemEvents\n }, [\n h(QItemSection, [\n h(QItemLabel, {\n domProps: {\n [scope.sanitize === true ? 'textContent' : 'innerHTML']: this.getOptionLabel(scope.opt)\n }\n })\n ])\n ])\n\n let options = this.__padVirtualScroll(h, 'div', this.optionScope.map(fn))\n\n if (this.$scopedSlots['before-options'] !== void 0) {\n options = this.$scopedSlots['before-options']().concat(options)\n }\n\n return mergeSlot(options, this, 'after-options')\n },\n\n __getInnerAppend (h) {\n return this.loading !== true && this.innerLoading !== true && this.hideDropdownIcon !== true\n ? [\n h(QIcon, {\n staticClass: 'q-select__dropdown-icon',\n props: { name: this.dropdownArrowIcon }\n })\n ]\n : null\n },\n\n __getInput (h, fromDialog) {\n const options = {\n ref: 'target',\n key: 'i_t',\n staticClass: 'q-field__input q-placeholder col',\n style: this.inputStyle,\n class: this.computedInputClass,\n domProps: { value: this.inputValue !== void 0 ? this.inputValue : '' },\n attrs: {\n // required for Android in order to show ENTER key when in form\n type: 'search',\n ...this.qAttrs,\n id: this.targetUid,\n maxlength: this.maxlength, // this is converted to prop by QField\n tabindex: this.tabindex,\n 'data-autofocus': fromDialog === true ? false : this.autofocus,\n disabled: this.disable === true,\n readonly: this.readonly === true\n },\n on: this.inputControlEvents\n }\n\n if (fromDialog !== true && this.hasDialog === true) {\n options.staticClass += ' no-pointer-events'\n options.attrs.readonly = true\n }\n\n return h('input', options)\n },\n\n __onChange (e) {\n this.__onComposition(e)\n },\n\n __onInput (e) {\n clearTimeout(this.inputTimer)\n\n if (e && e.target && e.target.composing === true) {\n return\n }\n\n this.__setInputValue(e.target.value || '')\n // mark it here as user input so that if updateInputValue is called\n // before filter is called the indicator is reset\n this.userInputValue = true\n this.defaultInputValue = this.inputValue\n\n if (\n this.focused !== true &&\n (this.hasDialog !== true || this.dialogFieldFocused === true)\n ) {\n this.__focus()\n }\n\n if (this.qListeners.filter !== void 0) {\n this.inputTimer = setTimeout(() => {\n this.filter(this.inputValue)\n }, this.inputDebounce)\n }\n },\n\n __setInputValue (inputValue) {\n if (this.inputValue !== inputValue) {\n this.inputValue = inputValue\n this.$emit('input-value', inputValue)\n }\n },\n\n updateInputValue (val, noFiltering, internal) {\n this.userInputValue = internal !== true\n\n if (this.useInput === true) {\n this.__setInputValue(val)\n\n if (noFiltering === true || internal !== true) {\n this.defaultInputValue = val\n }\n\n noFiltering !== true && this.filter(val)\n }\n },\n\n filter (val) {\n if (this.qListeners.filter === void 0 || this.focused !== true) {\n return\n }\n\n if (this.innerLoading === true) {\n this.$emit('filter-abort')\n }\n else {\n this.innerLoading = true\n }\n\n if (\n val !== '' &&\n this.multiple !== true &&\n this.innerValue.length > 0 &&\n this.userInputValue !== true &&\n val === this.getOptionLabel(this.innerValue[0])\n ) {\n val = ''\n }\n\n const filterId = setTimeout(() => {\n this.menu === true && (this.menu = false)\n }, 10)\n clearTimeout(this.filterId)\n this.filterId = filterId\n\n this.$emit(\n 'filter',\n val,\n (fn, afterFn) => {\n if (this.focused === true && this.filterId === filterId) {\n clearTimeout(this.filterId)\n\n typeof fn === 'function' && fn()\n\n this.$nextTick(() => {\n this.innerLoading = false\n\n if (this.editable === true) {\n if (this.menu === true) {\n this.__updateMenu(true)\n }\n else {\n this.menu = true\n }\n }\n\n typeof afterFn === 'function' && this.$nextTick(() => { afterFn(this) })\n })\n }\n },\n () => {\n if (this.focused === true && this.filterId === filterId) {\n clearTimeout(this.filterId)\n this.innerLoading = false\n }\n this.menu === true && (this.menu = false)\n }\n )\n },\n\n __getControlEvents () {\n const focusout = e => {\n this.__onControlFocusout(e, () => {\n this.__resetInputValue()\n this.__closeMenu()\n })\n }\n\n return {\n focusin: this.__onControlFocusin,\n focusout,\n 'popup-show': this.__onControlPopupShow,\n 'popup-hide': e => {\n e !== void 0 && stop(e)\n this.$emit('popup-hide', e)\n this.hasPopupOpen = false\n focusout(e)\n },\n click: e => {\n if (this.hasDialog !== true) {\n // label from QField will propagate click on the input (except IE)\n if (\n (this.useInput === true && e.target.classList.contains('q-field__input') !== true) ||\n (this.useInput !== true && e.target.classList.contains('no-outline') === true)\n ) {\n return\n }\n\n if (this.menu === true) {\n this.__closeMenu()\n this.$refs.target !== void 0 && this.$refs.target.focus()\n return\n }\n }\n\n this.showPopup(e)\n }\n }\n },\n\n __getControlChild (h) {\n if (\n this.editable !== false && (\n this.dialog === true || // dialog always has menu displayed, so need to render it\n this.noOptions !== true ||\n this.$scopedSlots['no-option'] !== void 0\n )\n ) {\n return this[`__get${this.hasDialog === true ? 'Dialog' : 'Menu'}`](h)\n }\n },\n\n __getMenu (h) {\n const child = this.noOptions === true\n ? (\n this.$scopedSlots['no-option'] !== void 0\n ? this.$scopedSlots['no-option']({ inputValue: this.inputValue })\n : null\n )\n : this.__getOptions(h)\n\n return h(QMenu, {\n ref: 'menu',\n props: {\n value: this.menu,\n fit: this.menuShrink !== true,\n cover: this.optionsCover === true && this.noOptions !== true && this.useInput !== true,\n anchor: this.menuAnchor,\n self: this.menuSelf,\n offset: this.menuOffset,\n contentClass: this.menuContentClass,\n contentStyle: this.popupContentStyle,\n dark: this.isOptionsDark,\n noParentEvent: true,\n noRefocus: true,\n noFocus: true,\n square: this.squaredMenu,\n transitionShow: this.transitionShow,\n transitionHide: this.transitionHide,\n separateClosePopup: true\n },\n on: cache(this, 'menu', {\n '&scroll': this.__onVirtualScrollEvt,\n 'before-hide': this.__closeMenu\n })\n }, child)\n },\n\n __onDialogFieldFocus (e) {\n stop(e)\n this.$refs.target !== void 0 && this.$refs.target.focus()\n this.dialogFieldFocused = true\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, 0)\n },\n\n __onDialogFieldBlur (e) {\n stop(e)\n this.$nextTick(() => {\n this.dialogFieldFocused = false\n })\n },\n\n __getDialog (h) {\n const content = [\n h(QField, {\n staticClass: `col-auto ${this.fieldClass}`,\n props: {\n ...this.$props,\n for: this.targetUid,\n dark: this.isOptionsDark,\n square: true,\n loading: this.innerLoading,\n filled: true,\n stackLabel: this.inputValue.length > 0\n },\n on: {\n ...this.qListeners,\n focus: this.__onDialogFieldFocus,\n blur: this.__onDialogFieldBlur\n },\n scopedSlots: {\n ...this.$scopedSlots,\n rawControl: () => this.__getControl(h, true),\n before: void 0,\n after: void 0\n }\n })\n ]\n\n this.menu === true && content.push(\n h('div', {\n ref: 'menuContent',\n staticClass: 'scroll',\n class: this.menuContentClass,\n style: this.popupContentStyle,\n on: cache(this, 'virtMenu', {\n click: prevent,\n '&scroll': this.__onVirtualScrollEvt\n })\n }, (\n this.noOptions === true\n ? (\n this.$scopedSlots['no-option'] !== void 0\n ? this.$scopedSlots['no-option']({ inputValue: this.inputValue })\n : null\n )\n : this.__getOptions(h)\n ))\n )\n\n return h(QDialog, {\n ref: 'dialog',\n props: {\n value: this.dialog,\n dark: this.isOptionsDark,\n position: this.useInput === true ? 'top' : void 0,\n transitionShow: this.transitionShowComputed,\n transitionHide: this.transitionHide\n },\n on: cache(this, 'dialog', {\n 'before-hide': this.__onDialogBeforeHide,\n hide: this.__onDialogHide,\n show: this.__onDialogShow\n })\n }, [\n h('div', {\n staticClass: 'q-select__dialog' +\n (this.isOptionsDark === true ? ' q-select__dialog--dark q-dark' : '') +\n (this.dialogFieldFocused === true ? ' q-select__dialog--focused' : '')\n }, content)\n ])\n },\n\n __onDialogBeforeHide () {\n this.$refs.dialog.__refocusTarget = this.$el.querySelector('.q-field__native > [tabindex]:last-child')\n this.focused = false\n },\n\n __onDialogHide (e) {\n this.hidePopup()\n this.focused === false && this.$emit('blur', e)\n this.__resetInputValue()\n },\n\n __onDialogShow () {\n const el = document.activeElement\n // IE can have null document.activeElement\n if (\n (el === null || el.id !== this.targetUid) &&\n this.$refs.target !== el &&\n this.$refs.target !== void 0\n ) {\n this.$refs.target.focus()\n }\n },\n\n __closeMenu () {\n if (this.dialog === true) {\n return\n }\n\n this.optionIndex = -1\n\n if (this.menu === true) {\n this.menu = false\n }\n\n if (this.focused === false) {\n clearTimeout(this.filterId)\n this.filterId = void 0\n\n if (this.innerLoading === true) {\n this.$emit('filter-abort')\n this.innerLoading = false\n }\n }\n },\n\n showPopup (e) {\n if (this.editable !== true) {\n return\n }\n\n if (this.hasDialog === true) {\n this.__onControlFocusin(e)\n this.dialog = true\n this.$nextTick(() => {\n this.__focus()\n })\n }\n else {\n this.__focus()\n }\n\n if (this.qListeners.filter !== void 0) {\n this.filter(this.inputValue)\n }\n else if (this.noOptions !== true || this.$scopedSlots['no-option'] !== void 0) {\n this.menu = true\n }\n },\n\n hidePopup () {\n this.dialog = false\n this.__closeMenu()\n },\n\n __resetInputValue () {\n this.useInput === true && this.updateInputValue(\n this.multiple !== true && this.fillInput === true && this.innerValue.length > 0\n ? this.getOptionLabel(this.innerValue[0]) || ''\n : '',\n true,\n true\n )\n },\n\n __updateMenu (show) {\n let optionIndex = -1\n\n if (show === true) {\n if (this.innerValue.length > 0) {\n const val = this.getOptionValue(this.innerValue[0])\n optionIndex = this.options.findIndex(v => isDeepEqual(this.getOptionValue(v), val))\n }\n\n this.__resetVirtualScroll(optionIndex)\n }\n\n this.setOptionIndex(optionIndex)\n },\n\n __onPreRender () {\n this.hasDialog = this.$q.platform.is.mobile !== true && this.behavior !== 'dialog'\n ? false\n : this.behavior !== 'menu' && (\n this.useInput === true\n ? this.$scopedSlots['no-option'] !== void 0 || this.qListeners.filter !== void 0 || this.noOptions === false\n : true\n )\n\n this.transitionShowComputed = this.hasDialog === true && this.useInput === true && this.$q.platform.is.ios === true\n ? 'fade'\n : this.transitionShow\n },\n\n __onPostRender () {\n if (this.dialog === false && this.$refs.menu !== void 0) {\n this.$refs.menu.updatePosition()\n }\n },\n\n updateMenuPosition () {\n this.__onPostRender()\n }\n },\n\n beforeDestroy () {\n clearTimeout(this.inputTimer)\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport TagMixin from '../../mixins/tag.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport const skeletonTypes = [\n 'text', 'rect', 'circle',\n 'QBtn', 'QBadge', 'QChip', 'QToolbar',\n 'QCheckbox', 'QRadio', 'QToggle',\n 'QSlider', 'QRange', 'QInput',\n 'QAvatar'\n]\n\nexport const skeletonAnimations = [\n 'wave', 'pulse', 'pulse-x', 'pulse-y', 'fade', 'blink', 'none'\n]\n\nexport default Vue.extend({\n name: 'QSkeleton',\n\n mixins: [ DarkMixin, TagMixin, ListenersMixin ],\n\n props: {\n type: {\n type: String,\n validator: v => skeletonTypes.includes(v),\n default: 'rect'\n },\n\n animation: {\n type: String,\n validator: v => skeletonAnimations.includes(v),\n default: 'wave'\n },\n\n square: Boolean,\n bordered: Boolean,\n\n size: String,\n width: String,\n height: String\n },\n\n computed: {\n style () {\n return this.size !== void 0\n ? { width: this.size, height: this.size }\n : { width: this.width, height: this.height }\n },\n\n classes () {\n return `q-skeleton--${this.isDark === true ? 'dark' : 'light'} q-skeleton--type-${this.type}` +\n (this.animation !== 'none' ? ` q-skeleton--anim q-skeleton--anim-${this.animation}` : '') +\n (this.square === true ? ' q-skeleton--square' : '') +\n (this.bordered === true ? ' q-skeleton--bordered' : '')\n }\n },\n\n render (h) {\n return h(this.tag, {\n staticClass: 'q-skeleton',\n class: this.classes,\n style: this.style,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\nimport { cacheWithFn } from '../../utils/cache.js'\n\nconst slotsDef = [\n ['left', 'center', 'start', 'width'],\n ['right', 'center', 'end', 'width'],\n ['top', 'start', 'center', 'height'],\n ['bottom', 'end', 'center', 'height']\n]\n\nexport default Vue.extend({\n name: 'QSlideItem',\n\n mixins: [ DarkMixin, ListenersMixin ],\n\n props: {\n leftColor: String,\n rightColor: String,\n topColor: String,\n bottomColor: String\n },\n\n directives: {\n TouchPan\n },\n\n computed: {\n langDir () {\n return this.$q.lang.rtl === true\n ? { left: 'right', right: 'left' }\n : { left: 'left', right: 'right' }\n }\n },\n\n methods: {\n reset () {\n this.$refs.content.style.transform = `translate(0,0)`\n },\n\n __pan (evt) {\n const node = this.$refs.content\n\n if (evt.isFirst) {\n this.__dir = null\n this.__size = { left: 0, right: 0, top: 0, bottom: 0 }\n this.__scale = 0\n\n node.classList.add('no-transition')\n\n slotsDef.forEach(slot => {\n if (this.$scopedSlots[slot[0]] !== void 0) {\n const node = this.$refs[slot[0] + 'Content']\n node.style.transform = `scale(1)`\n this.__size[slot[0]] = node.getBoundingClientRect()[slot[3]]\n }\n })\n\n this.__axis = (evt.direction === 'up' || evt.direction === 'down')\n ? 'Y'\n : 'X'\n }\n else if (evt.isFinal) {\n node.classList.remove('no-transition')\n\n if (this.__scale === 1) {\n node.style.transform = `translate${this.__axis}(${this.__dir * 100}%)`\n\n this.timer = setTimeout(() => {\n this.$emit(this.__showing, { reset: this.reset })\n this.$emit('action', { side: this.__showing, reset: this.reset })\n }, 230)\n }\n else {\n node.style.transform = `translate(0,0)`\n }\n\n return\n }\n else {\n evt.direction = this.__axis === 'X'\n ? evt.offset.x < 0 ? 'left' : 'right'\n : evt.offset.y < 0 ? 'up' : 'down'\n }\n\n if (\n (this.$scopedSlots.left === void 0 && evt.direction === this.langDir.right) ||\n (this.$scopedSlots.right === void 0 && evt.direction === this.langDir.left) ||\n (this.$scopedSlots.top === void 0 && evt.direction === 'down') ||\n (this.$scopedSlots.bottom === void 0 && evt.direction === 'up')\n ) {\n node.style.transform = `translate(0,0)`\n return\n }\n\n let showing, dir, dist\n\n if (this.__axis === 'X') {\n dir = evt.direction === 'left' ? -1 : 1\n showing = dir === 1 ? this.langDir.left : this.langDir.right\n dist = evt.distance.x\n }\n else {\n dir = evt.direction === 'up' ? -2 : 2\n showing = dir === 2 ? 'top' : 'bottom'\n dist = evt.distance.y\n }\n\n if (this.__dir !== null && Math.abs(dir) !== Math.abs(this.__dir)) {\n return\n }\n\n if (this.__dir !== dir) {\n ['left', 'right', 'top', 'bottom'].forEach(d => {\n if (this.$refs[d] !== void 0) {\n this.$refs[d].style.visibility = showing === d\n ? 'visible'\n : 'hidden'\n }\n })\n this.__showing = showing\n this.__dir = dir\n }\n\n this.__scale = Math.max(0, Math.min(1, (dist - 40) / this.__size[showing]))\n\n node.style.transform = `translate${this.__axis}(${dist * dir / Math.abs(dir)}px)`\n this.$refs[`${showing}Content`].style.transform = `scale(${this.__scale})`\n }\n },\n\n render (h) {\n const\n content = [],\n slots = {\n left: this.$scopedSlots[this.langDir.right] !== void 0,\n right: this.$scopedSlots[this.langDir.left] !== void 0,\n up: this.$scopedSlots.bottom !== void 0,\n down: this.$scopedSlots.top !== void 0\n },\n dirs = Object.keys(slots).filter(key => slots[key] === true)\n\n slotsDef.forEach(slot => {\n const dir = slot[0]\n\n if (this.$scopedSlots[dir] !== void 0) {\n content.push(\n h('div', {\n ref: dir,\n class: `q-slide-item__${dir} absolute-full row no-wrap items-${slot[1]} justify-${slot[2]}` +\n (this[dir + 'Color'] !== void 0 ? ` bg-${this[dir + 'Color']}` : '')\n }, [\n h('div', { ref: dir + 'Content' }, this.$scopedSlots[dir]())\n ])\n )\n }\n })\n\n content.push(\n h('div', {\n ref: 'content',\n key: 'content',\n staticClass: 'q-slide-item__content',\n directives: dirs.length > 0\n ? cacheWithFn(this, 'dir#' + dirs.join(''), () => {\n const modifiers = {\n prevent: true,\n stop: true,\n mouse: true\n }\n\n dirs.forEach(dir => {\n modifiers[dir] = true\n })\n\n return [{\n name: 'touch-pan',\n value: this.__pan,\n modifiers\n }]\n })\n : null\n }, slot(this, 'default'))\n )\n\n return h('div', {\n staticClass: 'q-slide-item q-item-type overflow-hidden',\n class: this.isDark === true ? `q-slide-item--dark q-dark` : '',\n on: { ...this.qListeners }\n }, content)\n },\n\n beforeDestroy () {\n clearTimeout(this.timer)\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nexport default Vue.extend({\n name: 'QSpace',\n\n mixins: [ ListenersMixin ],\n\n render (h) {\n return h('div', {\n staticClass: 'q-space',\n on: { ...this.qListeners }\n })\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerAudio',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'fill': 'currentColor',\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 55 80',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('g', {\n attrs: {\n 'transform': 'matrix(1 0 0 -1 0 80)'\n }\n }, [\n h('rect', {\n attrs: {\n 'width': '10',\n 'height': '20',\n 'rx': '3'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'begin': '0s',\n 'dur': '4.3s',\n 'values': '20;45;57;80;64;32;66;45;64;23;66;13;64;56;34;34;2;23;76;79;20',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('rect', {\n attrs: {\n 'x': '15',\n 'width': '10',\n 'height': '80',\n 'rx': '3'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'begin': '0s',\n 'dur': '2s',\n 'values': '80;55;33;5;75;23;73;33;12;14;60;80',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('rect', {\n attrs: {\n 'x': '30',\n 'width': '10',\n 'height': '50',\n 'rx': '3'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'begin': '0s',\n 'dur': '1.4s',\n 'values': '50;34;78;23;56;23;34;76;80;54;21;50',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('rect', {\n attrs: {\n 'x': '45',\n 'width': '10',\n 'height': '30',\n 'rx': '3'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'begin': '0s',\n 'dur': '2s',\n 'values': '30;45;13;80;56;72;45;76;34;23;67;30',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerBall',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'stroke': 'currentColor',\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 57 57',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('g', {\n attrs: {\n 'transform': 'translate(1 1)',\n 'stroke-width': '2',\n 'fill': 'none',\n 'fill-rule': 'evenodd'\n }\n }, [\n h('circle', {\n attrs: {\n 'cx': '5',\n 'cy': '50',\n 'r': '5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'cy',\n 'begin': '0s',\n 'dur': '2.2s',\n 'values': '50;5;50;50',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'cx',\n 'begin': '0s',\n 'dur': '2.2s',\n 'values': '5;27;49;5',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '27',\n 'cy': '5',\n 'r': '5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'cy',\n 'begin': '0s',\n 'dur': '2.2s',\n 'from': '5',\n 'to': '5',\n 'values': '5;50;50;5',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'cx',\n 'begin': '0s',\n 'dur': '2.2s',\n 'from': '27',\n 'to': '27',\n 'values': '27;49;5;27',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '49',\n 'cy': '50',\n 'r': '5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'cy',\n 'begin': '0s',\n 'dur': '2.2s',\n 'values': '50;50;5;50',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'cx',\n 'from': '49',\n 'to': '49',\n 'begin': '0s',\n 'dur': '2.2s',\n 'values': '49;5;27;49',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerBars',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'fill': 'currentColor',\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 135 140',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('rect', {\n attrs: {\n 'y': '10',\n 'width': '15',\n 'height': '120',\n 'rx': '6'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'begin': '0.5s',\n 'dur': '1s',\n 'values': '120;110;100;90;80;70;60;50;40;140;120',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'y',\n 'begin': '0.5s',\n 'dur': '1s',\n 'values': '10;15;20;25;30;35;40;45;50;0;10',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('rect', {\n attrs: {\n 'x': '30',\n 'y': '10',\n 'width': '15',\n 'height': '120',\n 'rx': '6'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'begin': '0.25s',\n 'dur': '1s',\n 'values': '120;110;100;90;80;70;60;50;40;140;120',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'y',\n 'begin': '0.25s',\n 'dur': '1s',\n 'values': '10;15;20;25;30;35;40;45;50;0;10',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('rect', {\n attrs: {\n 'x': '60',\n 'width': '15',\n 'height': '140',\n 'rx': '6'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'begin': '0s',\n 'dur': '1s',\n 'values': '120;110;100;90;80;70;60;50;40;140;120',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'y',\n 'begin': '0s',\n 'dur': '1s',\n 'values': '10;15;20;25;30;35;40;45;50;0;10',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('rect', {\n attrs: {\n 'x': '90',\n 'y': '10',\n 'width': '15',\n 'height': '120',\n 'rx': '6'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'begin': '0.25s',\n 'dur': '1s',\n 'values': '120;110;100;90;80;70;60;50;40;140;120',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'y',\n 'begin': '0.25s',\n 'dur': '1s',\n 'values': '10;15;20;25;30;35;40;45;50;0;10',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('rect', {\n attrs: {\n 'x': '120',\n 'y': '10',\n 'width': '15',\n 'height': '120',\n 'rx': '6'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'begin': '0.5s',\n 'dur': '1s',\n 'values': '120;110;100;90;80;70;60;50;40;140;120',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'y',\n 'begin': '0.5s',\n 'dur': '1s',\n 'values': '10;15;20;25;30;35;40;45;50;0;10',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerComment',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': '0 0 100 100',\n 'preserveAspectRatio': 'xMidYMid'\n }\n }, [\n h('rect', {\n attrs: {\n 'x': '0',\n 'y': '0',\n 'width': '100',\n 'height': '100',\n 'fill': 'none'\n }\n }),\n h('path', {\n attrs: {\n 'd': 'M78,19H22c-6.6,0-12,5.4-12,12v31c0,6.6,5.4,12,12,12h37.2c0.4,3,1.8,5.6,3.7,7.6c2.4,2.5,5.1,4.1,9.1,4 c-1.4-2.1-2-7.2-2-10.3c0-0.4,0-0.8,0-1.3h8c6.6,0,12-5.4,12-12V31C90,24.4,84.6,19,78,19z',\n 'fill': 'currentColor'\n }\n }),\n h('circle', {\n attrs: {\n 'cx': '30',\n 'cy': '47',\n 'r': '5',\n 'fill': '#fff'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'opacity',\n 'from': '0',\n 'to': '1',\n 'values': '0;1;1',\n 'keyTimes': '0;0.2;1',\n 'dur': '1s',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '50',\n 'cy': '47',\n 'r': '5',\n 'fill': '#fff'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'opacity',\n 'from': '0',\n 'to': '1',\n 'values': '0;0;1;1',\n 'keyTimes': '0;0.2;0.4;1',\n 'dur': '1s',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '70',\n 'cy': '47',\n 'r': '5',\n 'fill': '#fff'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'opacity',\n 'from': '0',\n 'to': '1',\n 'values': '0;0;1;1',\n 'keyTimes': '0;0.4;0.6;1',\n 'dur': '1s',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerCube',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': '0 0 100 100',\n 'preserveAspectRatio': 'xMidYMid'\n }\n }, [\n h('rect', {\n attrs: {\n 'x': '0',\n 'y': '0',\n 'width': '100',\n 'height': '100',\n 'fill': 'none'\n }\n }),\n h('g', {\n attrs: {\n 'transform': 'translate(25 25)'\n }\n }, [\n h('rect', {\n attrs: {\n 'x': '-20',\n 'y': '-20',\n 'width': '40',\n 'height': '40',\n 'fill': 'currentColor',\n 'opacity': '0.9'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'scale',\n 'from': '1.5',\n 'to': '1',\n 'repeatCount': 'indefinite',\n 'begin': '0s',\n 'dur': '1s',\n 'calcMode': 'spline',\n 'keySplines': '0.2 0.8 0.2 0.8',\n 'keyTimes': '0;1'\n }\n })\n ])\n ]),\n h('g', {\n attrs: {\n 'transform': 'translate(75 25)'\n }\n }, [\n h('rect', {\n attrs: {\n 'x': '-20',\n 'y': '-20',\n 'width': '40',\n 'height': '40',\n 'fill': 'currentColor',\n 'opacity': '0.8'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'scale',\n 'from': '1.5',\n 'to': '1',\n 'repeatCount': 'indefinite',\n 'begin': '0.1s',\n 'dur': '1s',\n 'calcMode': 'spline',\n 'keySplines': '0.2 0.8 0.2 0.8',\n 'keyTimes': '0;1'\n }\n })\n ])\n ]),\n h('g', {\n attrs: {\n 'transform': 'translate(25 75)'\n }\n }, [\n h('rect', {\n staticClass: 'cube',\n attrs: {\n 'x': '-20',\n 'y': '-20',\n 'width': '40',\n 'height': '40',\n 'fill': 'currentColor',\n 'opacity': '0.7'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'scale',\n 'from': '1.5',\n 'to': '1',\n 'repeatCount': 'indefinite',\n 'begin': '0.3s',\n 'dur': '1s',\n 'calcMode': 'spline',\n 'keySplines': '0.2 0.8 0.2 0.8',\n 'keyTimes': '0;1'\n }\n })\n ])\n ]),\n h('g', {\n attrs: {\n 'transform': 'translate(75 75)'\n }\n }, [\n h('rect', {\n staticClass: 'cube',\n attrs: {\n 'x': '-20',\n 'y': '-20',\n 'width': '40',\n 'height': '40',\n 'fill': 'currentColor',\n 'opacity': '0.6'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'scale',\n 'from': '1.5',\n 'to': '1',\n 'repeatCount': 'indefinite',\n 'begin': '0.2s',\n 'dur': '1s',\n 'calcMode': 'spline',\n 'keySplines': '0.2 0.8 0.2 0.8',\n 'keyTimes': '0;1'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerDots',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'fill': 'currentColor',\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 120 30',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('circle', {\n attrs: {\n 'cx': '15',\n 'cy': '15',\n 'r': '15'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'r',\n 'from': '15',\n 'to': '15',\n 'begin': '0s',\n 'dur': '0.8s',\n 'values': '15;9;15',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'from': '1',\n 'to': '1',\n 'begin': '0s',\n 'dur': '0.8s',\n 'values': '1;.5;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '60',\n 'cy': '15',\n 'r': '9',\n 'fill-opacity': '.3'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'r',\n 'from': '9',\n 'to': '9',\n 'begin': '0s',\n 'dur': '0.8s',\n 'values': '9;15;9',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'from': '.5',\n 'to': '.5',\n 'begin': '0s',\n 'dur': '0.8s',\n 'values': '.5;1;.5',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '105',\n 'cy': '15',\n 'r': '15'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'r',\n 'from': '15',\n 'to': '15',\n 'begin': '0s',\n 'dur': '0.8s',\n 'values': '15;9;15',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'from': '1',\n 'to': '1',\n 'begin': '0s',\n 'dur': '0.8s',\n 'values': '1;.5;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerFacebook',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 100 100',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'preserveAspectRatio': 'xMidYMid'\n }\n }, [\n h('g', {\n attrs: {\n 'transform': 'translate(20 50)'\n }\n }, [\n h('rect', {\n attrs: {\n 'x': '-10',\n 'y': '-30',\n 'width': '20',\n 'height': '60',\n 'fill': 'currentColor',\n 'opacity': '0.6'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'scale',\n 'from': '2',\n 'to': '1',\n 'begin': '0s',\n 'repeatCount': 'indefinite',\n 'dur': '1s',\n 'calcMode': 'spline',\n 'keySplines': '0.1 0.9 0.4 1',\n 'keyTimes': '0;1',\n 'values': '2;1'\n }\n })\n ])\n ]),\n h('g', {\n attrs: {\n 'transform': 'translate(50 50)'\n }\n }, [\n h('rect', {\n attrs: {\n 'x': '-10',\n 'y': '-30',\n 'width': '20',\n 'height': '60',\n 'fill': 'currentColor',\n 'opacity': '0.8'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'scale',\n 'from': '2',\n 'to': '1',\n 'begin': '0.1s',\n 'repeatCount': 'indefinite',\n 'dur': '1s',\n 'calcMode': 'spline',\n 'keySplines': '0.1 0.9 0.4 1',\n 'keyTimes': '0;1',\n 'values': '2;1'\n }\n })\n ])\n ]),\n h('g', {\n attrs: {\n 'transform': 'translate(80 50)'\n }\n }, [\n h('rect', {\n attrs: {\n 'x': '-10',\n 'y': '-30',\n 'width': '20',\n 'height': '60',\n 'fill': 'currentColor',\n 'opacity': '0.9'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'scale',\n 'from': '2',\n 'to': '1',\n 'begin': '0.2s',\n 'repeatCount': 'indefinite',\n 'dur': '1s',\n 'calcMode': 'spline',\n 'keySplines': '0.1 0.9 0.4 1',\n 'keyTimes': '0;1',\n 'values': '2;1'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerGears',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 100 100',\n 'preserveAspectRatio': 'xMidYMid',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('g', {\n attrs: {\n 'transform': 'translate(-20,-20)'\n }\n }, [\n h('path', {\n attrs: {\n 'd': 'M79.9,52.6C80,51.8,80,50.9,80,50s0-1.8-0.1-2.6l-5.1-0.4c-0.3-2.4-0.9-4.6-1.8-6.7l4.2-2.9c-0.7-1.6-1.6-3.1-2.6-4.5 L70,35c-1.4-1.9-3.1-3.5-4.9-4.9l2.2-4.6c-1.4-1-2.9-1.9-4.5-2.6L59.8,27c-2.1-0.9-4.4-1.5-6.7-1.8l-0.4-5.1C51.8,20,50.9,20,50,20 s-1.8,0-2.6,0.1l-0.4,5.1c-2.4,0.3-4.6,0.9-6.7,1.8l-2.9-4.1c-1.6,0.7-3.1,1.6-4.5,2.6l2.1,4.6c-1.9,1.4-3.5,3.1-5,4.9l-4.5-2.1 c-1,1.4-1.9,2.9-2.6,4.5l4.1,2.9c-0.9,2.1-1.5,4.4-1.8,6.8l-5,0.4C20,48.2,20,49.1,20,50s0,1.8,0.1,2.6l5,0.4 c0.3,2.4,0.9,4.7,1.8,6.8l-4.1,2.9c0.7,1.6,1.6,3.1,2.6,4.5l4.5-2.1c1.4,1.9,3.1,3.5,5,4.9l-2.1,4.6c1.4,1,2.9,1.9,4.5,2.6l2.9-4.1 c2.1,0.9,4.4,1.5,6.7,1.8l0.4,5.1C48.2,80,49.1,80,50,80s1.8,0,2.6-0.1l0.4-5.1c2.3-0.3,4.6-0.9,6.7-1.8l2.9,4.2 c1.6-0.7,3.1-1.6,4.5-2.6L65,69.9c1.9-1.4,3.5-3,4.9-4.9l4.6,2.2c1-1.4,1.9-2.9,2.6-4.5L73,59.8c0.9-2.1,1.5-4.4,1.8-6.7L79.9,52.6 z M50,65c-8.3,0-15-6.7-15-15c0-8.3,6.7-15,15-15s15,6.7,15,15C65,58.3,58.3,65,50,65z',\n 'fill': 'currentColor'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'rotate',\n 'from': '90 50 50',\n 'to': '0 50 50',\n 'dur': '1s',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ]),\n h('g', {\n attrs: {\n 'transform': 'translate(20,20) rotate(15 50 50)'\n }\n }, [\n h('path', {\n attrs: {\n 'd': 'M79.9,52.6C80,51.8,80,50.9,80,50s0-1.8-0.1-2.6l-5.1-0.4c-0.3-2.4-0.9-4.6-1.8-6.7l4.2-2.9c-0.7-1.6-1.6-3.1-2.6-4.5 L70,35c-1.4-1.9-3.1-3.5-4.9-4.9l2.2-4.6c-1.4-1-2.9-1.9-4.5-2.6L59.8,27c-2.1-0.9-4.4-1.5-6.7-1.8l-0.4-5.1C51.8,20,50.9,20,50,20 s-1.8,0-2.6,0.1l-0.4,5.1c-2.4,0.3-4.6,0.9-6.7,1.8l-2.9-4.1c-1.6,0.7-3.1,1.6-4.5,2.6l2.1,4.6c-1.9,1.4-3.5,3.1-5,4.9l-4.5-2.1 c-1,1.4-1.9,2.9-2.6,4.5l4.1,2.9c-0.9,2.1-1.5,4.4-1.8,6.8l-5,0.4C20,48.2,20,49.1,20,50s0,1.8,0.1,2.6l5,0.4 c0.3,2.4,0.9,4.7,1.8,6.8l-4.1,2.9c0.7,1.6,1.6,3.1,2.6,4.5l4.5-2.1c1.4,1.9,3.1,3.5,5,4.9l-2.1,4.6c1.4,1,2.9,1.9,4.5,2.6l2.9-4.1 c2.1,0.9,4.4,1.5,6.7,1.8l0.4,5.1C48.2,80,49.1,80,50,80s1.8,0,2.6-0.1l0.4-5.1c2.3-0.3,4.6-0.9,6.7-1.8l2.9,4.2 c1.6-0.7,3.1-1.6,4.5-2.6L65,69.9c1.9-1.4,3.5-3,4.9-4.9l4.6,2.2c1-1.4,1.9-2.9,2.6-4.5L73,59.8c0.9-2.1,1.5-4.4,1.8-6.7L79.9,52.6 z M50,65c-8.3,0-15-6.7-15-15c0-8.3,6.7-15,15-15s15,6.7,15,15C65,58.3,58.3,65,50,65z',\n 'fill': 'currentColor'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'rotate',\n 'from': '0 50 50',\n 'to': '90 50 50',\n 'dur': '1s',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerGrid',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'fill': 'currentColor',\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 105 105',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('circle', {\n attrs: {\n 'cx': '12.5',\n 'cy': '12.5',\n 'r': '12.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '0s',\n 'dur': '1s',\n 'values': '1;.2;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '12.5',\n 'cy': '52.5',\n 'r': '12.5',\n 'fill-opacity': '.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '100ms',\n 'dur': '1s',\n 'values': '1;.2;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '52.5',\n 'cy': '12.5',\n 'r': '12.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '300ms',\n 'dur': '1s',\n 'values': '1;.2;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '52.5',\n 'cy': '52.5',\n 'r': '12.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '600ms',\n 'dur': '1s',\n 'values': '1;.2;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '92.5',\n 'cy': '12.5',\n 'r': '12.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '800ms',\n 'dur': '1s',\n 'values': '1;.2;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '92.5',\n 'cy': '52.5',\n 'r': '12.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '400ms',\n 'dur': '1s',\n 'values': '1;.2;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '12.5',\n 'cy': '92.5',\n 'r': '12.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '700ms',\n 'dur': '1s',\n 'values': '1;.2;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '52.5',\n 'cy': '92.5',\n 'r': '12.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '500ms',\n 'dur': '1s',\n 'values': '1;.2;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '92.5',\n 'cy': '92.5',\n 'r': '12.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '200ms',\n 'dur': '1s',\n 'values': '1;.2;1',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerHearts',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'fill': 'currentColor',\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 140 64',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('path', {\n attrs: {\n 'd': 'M30.262 57.02L7.195 40.723c-5.84-3.976-7.56-12.06-3.842-18.063 3.715-6 11.467-7.65 17.306-3.68l4.52 3.76 2.6-5.274c3.716-6.002 11.47-7.65 17.304-3.68 5.84 3.97 7.56 12.054 3.842 18.062L34.49 56.118c-.897 1.512-2.793 1.915-4.228.9z',\n 'fill-opacity': '.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '0s',\n 'dur': '1.4s',\n 'values': '0.5;1;0.5',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('path', {\n attrs: {\n 'd': 'M105.512 56.12l-14.44-24.272c-3.716-6.008-1.996-14.093 3.843-18.062 5.835-3.97 13.588-2.322 17.306 3.68l2.6 5.274 4.52-3.76c5.84-3.97 13.593-2.32 17.308 3.68 3.718 6.003 1.998 14.088-3.842 18.064L109.74 57.02c-1.434 1.014-3.33.61-4.228-.9z',\n 'fill-opacity': '.5'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'fill-opacity',\n 'begin': '0.7s',\n 'dur': '1.4s',\n 'values': '0.5;1;0.5',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('path', {\n attrs: {\n 'd': 'M67.408 57.834l-23.01-24.98c-5.864-6.15-5.864-16.108 0-22.248 5.86-6.14 15.37-6.14 21.234 0L70 16.168l4.368-5.562c5.863-6.14 15.375-6.14 21.235 0 5.863 6.14 5.863 16.098 0 22.247l-23.007 24.98c-1.43 1.556-3.757 1.556-5.188 0z'\n }\n })\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerHourglass',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 100 100',\n 'preserveAspectRatio': 'xMidYMid',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('g', [\n h('path', {\n staticClass: 'glass',\n attrs: {\n 'fill': 'none',\n 'stroke': 'currentColor',\n 'stroke-width': '5',\n 'stroke-miterlimit': '10',\n 'd': 'M58.4,51.7c-0.9-0.9-1.4-2-1.4-2.3s0.5-0.4,1.4-1.4 C70.8,43.8,79.8,30.5,80,15.5H70H30H20c0.2,15,9.2,28.1,21.6,32.3c0.9,0.9,1.4,1.2,1.4,1.5s-0.5,1.6-1.4,2.5 C29.2,56.1,20.2,69.5,20,85.5h10h40h10C79.8,69.5,70.8,55.9,58.4,51.7z'\n }\n }),\n h('clipPath', {\n attrs: {\n 'id': 'uil-hourglass-clip1'\n }\n }, [\n h('rect', {\n staticClass: 'clip',\n attrs: {\n 'x': '15',\n 'y': '20',\n 'width': '70',\n 'height': '25'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'from': '25',\n 'to': '0',\n 'dur': '1s',\n 'repeatCount': 'indefinite',\n 'values': '25;0;0',\n 'keyTimes': '0;0.5;1'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'y',\n 'from': '20',\n 'to': '45',\n 'dur': '1s',\n 'repeatCount': 'indefinite',\n 'values': '20;45;45',\n 'keyTimes': '0;0.5;1'\n }\n })\n ])\n ]),\n h('clipPath', {\n attrs: {\n 'id': 'uil-hourglass-clip2'\n }\n }, [\n h('rect', {\n staticClass: 'clip',\n attrs: {\n 'x': '15',\n 'y': '55',\n 'width': '70',\n 'height': '25'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'height',\n 'from': '0',\n 'to': '25',\n 'dur': '1s',\n 'repeatCount': 'indefinite',\n 'values': '0;25;25',\n 'keyTimes': '0;0.5;1'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'y',\n 'from': '80',\n 'to': '55',\n 'dur': '1s',\n 'repeatCount': 'indefinite',\n 'values': '80;55;55',\n 'keyTimes': '0;0.5;1'\n }\n })\n ])\n ]),\n h('path', {\n staticClass: 'sand',\n attrs: {\n 'd': 'M29,23c3.1,11.4,11.3,19.5,21,19.5S67.9,34.4,71,23H29z',\n 'clip-path': 'url(#uil-hourglass-clip1)',\n 'fill': 'currentColor'\n }\n }),\n h('path', {\n staticClass: 'sand',\n attrs: {\n 'd': 'M71.6,78c-3-11.6-11.5-20-21.5-20s-18.5,8.4-21.5,20H71.6z',\n 'clip-path': 'url(#uil-hourglass-clip2)',\n 'fill': 'currentColor'\n }\n }),\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'rotate',\n 'from': '0 50 50',\n 'to': '180 50 50',\n 'repeatCount': 'indefinite',\n 'dur': '1s',\n 'values': '0 50 50;0 50 50;180 50 50',\n 'keyTimes': '0;0.7;1'\n }\n })\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerInfinity',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 100 100',\n 'preserveAspectRatio': 'xMidYMid'\n }\n }, [\n h('path', {\n attrs: {\n 'd': 'M24.3,30C11.4,30,5,43.3,5,50s6.4,20,19.3,20c19.3,0,32.1-40,51.4-40C88.6,30,95,43.3,95,50s-6.4,20-19.3,20C56.4,70,43.6,30,24.3,30z',\n 'fill': 'none',\n 'stroke': 'currentColor',\n 'stroke-width': '8',\n 'stroke-dasharray': '10.691205342610678 10.691205342610678',\n 'stroke-dashoffset': '0'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-dashoffset',\n 'from': '0',\n 'to': '21.382410685221355',\n 'begin': '0',\n 'dur': '2s',\n 'repeatCount': 'indefinite',\n 'fill': 'freeze'\n }\n })\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerIos',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'stroke': 'currentColor',\n 'fill': 'currentColor',\n 'viewBox': '0 0 64 64'\n }\n }, [\n h('g', {\n attrs: {\n 'stroke-width': '4',\n 'stroke-linecap': 'round'\n }\n }, [\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(180)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(210)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(240)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '.1;0;1;.85;.7;.65;.55;.45;.35;.25;.15;.1',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(270)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '.15;.1;0;1;.85;.7;.65;.55;.45;.35;.25;.15',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(300)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '.25;.15;.1;0;1;.85;.7;.65;.55;.45;.35;.25',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(330)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '.35;.25;.15;.1;0;1;.85;.7;.65;.55;.45;.35',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(0)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '.45;.35;.25;.15;.1;0;1;.85;.7;.65;.55;.45',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(30)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '.55;.45;.35;.25;.15;.1;0;1;.85;.7;.65;.55',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(60)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '.65;.55;.45;.35;.25;.15;.1;0;1;.85;.7;.65',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(90)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '.7;.65;.55;.45;.35;.25;.15;.1;0;1;.85;.7',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(120)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1;.85',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('line', {\n attrs: {\n 'y1': '17',\n 'y2': '29',\n 'transform': 'translate(32,32) rotate(150)'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'dur': '750ms',\n 'values': '1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerOval',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'stroke': 'currentColor',\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 38 38',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('g', {\n attrs: {\n 'transform': 'translate(1 1)',\n 'stroke-width': '2',\n 'fill': 'none',\n 'fill-rule': 'evenodd'\n }\n }, [\n h('circle', {\n attrs: {\n 'stroke-opacity': '.5',\n 'cx': '18',\n 'cy': '18',\n 'r': '18'\n }\n }),\n h('path', {\n attrs: {\n 'd': 'M36 18c0-9.94-8.06-18-18-18'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'rotate',\n 'from': '0 18 18',\n 'to': '360 18 18',\n 'dur': '1s',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerPie',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 100 100',\n 'preserveAspectRatio': 'xMidYMid',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('path', {\n attrs: {\n 'd': 'M0 50A50 50 0 0 1 50 0L50 50L0 50',\n 'fill': 'currentColor',\n 'opacity': '0.5'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'rotate',\n 'from': '0 50 50',\n 'to': '360 50 50',\n 'dur': '0.8s',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('path', {\n attrs: {\n 'd': 'M50 0A50 50 0 0 1 100 50L50 50L50 0',\n 'fill': 'currentColor',\n 'opacity': '0.5'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'rotate',\n 'from': '0 50 50',\n 'to': '360 50 50',\n 'dur': '1.6s',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('path', {\n attrs: {\n 'd': 'M100 50A50 50 0 0 1 50 100L50 50L100 50',\n 'fill': 'currentColor',\n 'opacity': '0.5'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'rotate',\n 'from': '0 50 50',\n 'to': '360 50 50',\n 'dur': '2.4s',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('path', {\n attrs: {\n 'd': 'M50 100A50 50 0 0 1 0 50L50 50L50 100',\n 'fill': 'currentColor',\n 'opacity': '0.5'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'rotate',\n 'from': '0 50 50',\n 'to': '360 50 50',\n 'dur': '3.2s',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerPuff',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'stroke': 'currentColor',\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 44 44',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('g', {\n attrs: {\n 'fill': 'none',\n 'fill-rule': 'evenodd',\n 'stroke-width': '2'\n }\n }, [\n h('circle', {\n attrs: {\n 'cx': '22',\n 'cy': '22',\n 'r': '1'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'r',\n 'begin': '0s',\n 'dur': '1.8s',\n 'values': '1; 20',\n 'calcMode': 'spline',\n 'keyTimes': '0; 1',\n 'keySplines': '0.165, 0.84, 0.44, 1',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'begin': '0s',\n 'dur': '1.8s',\n 'values': '1; 0',\n 'calcMode': 'spline',\n 'keyTimes': '0; 1',\n 'keySplines': '0.3, 0.61, 0.355, 1',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '22',\n 'cy': '22',\n 'r': '1'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'r',\n 'begin': '-0.9s',\n 'dur': '1.8s',\n 'values': '1; 20',\n 'calcMode': 'spline',\n 'keyTimes': '0; 1',\n 'keySplines': '0.165, 0.84, 0.44, 1',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'begin': '-0.9s',\n 'dur': '1.8s',\n 'values': '1; 0',\n 'calcMode': 'spline',\n 'keyTimes': '0; 1',\n 'keySplines': '0.3, 0.61, 0.355, 1',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerRadio',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 100 100',\n 'preserveAspectRatio': 'xMidYMid',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('g', {\n attrs: {\n 'transform': 'scale(0.55)'\n }\n }, [\n h('circle', {\n attrs: {\n 'cx': '30',\n 'cy': '150',\n 'r': '30',\n 'fill': 'currentColor'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'opacity',\n 'from': '0',\n 'to': '1',\n 'dur': '1s',\n 'begin': '0',\n 'repeatCount': 'indefinite',\n 'keyTimes': '0;0.5;1',\n 'values': '0;1;1'\n }\n })\n ]),\n h('path', {\n attrs: {\n 'd': 'M90,150h30c0-49.7-40.3-90-90-90v30C63.1,90,90,116.9,90,150z',\n 'fill': 'currentColor'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'opacity',\n 'from': '0',\n 'to': '1',\n 'dur': '1s',\n 'begin': '0.1',\n 'repeatCount': 'indefinite',\n 'keyTimes': '0;0.5;1',\n 'values': '0;1;1'\n }\n })\n ]),\n h('path', {\n attrs: {\n 'd': 'M150,150h30C180,67.2,112.8,0,30,0v30C96.3,30,150,83.7,150,150z',\n 'fill': 'currentColor'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'opacity',\n 'from': '0',\n 'to': '1',\n 'dur': '1s',\n 'begin': '0.2',\n 'repeatCount': 'indefinite',\n 'keyTimes': '0;0.5;1',\n 'values': '0;1;1'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerRings',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'stroke': 'currentColor',\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 45 45',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('g', {\n attrs: {\n 'fill': 'none',\n 'fill-rule': 'evenodd',\n 'transform': 'translate(1 1)',\n 'stroke-width': '2'\n }\n }, [\n h('circle', {\n attrs: {\n 'cx': '22',\n 'cy': '22',\n 'r': '6'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'r',\n 'begin': '1.5s',\n 'dur': '3s',\n 'values': '6;22',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'begin': '1.5s',\n 'dur': '3s',\n 'values': '1;0',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-width',\n 'begin': '1.5s',\n 'dur': '3s',\n 'values': '2;0',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '22',\n 'cy': '22',\n 'r': '6'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'r',\n 'begin': '3s',\n 'dur': '3s',\n 'values': '6;22',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-opacity',\n 'begin': '3s',\n 'dur': '3s',\n 'values': '1;0',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n }),\n h('animate', {\n attrs: {\n 'attributeName': 'stroke-width',\n 'begin': '3s',\n 'dur': '3s',\n 'values': '2;0',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'cx': '22',\n 'cy': '22',\n 'r': '8'\n }\n }, [\n h('animate', {\n attrs: {\n 'attributeName': 'r',\n 'begin': '0s',\n 'dur': '1.5s',\n 'values': '6;1;2;3;4;5;6',\n 'calcMode': 'linear',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport mixin from './spinner-mixin.js'\n\nexport default Vue.extend({\n name: 'QSpinnerTail',\n\n mixins: [mixin],\n\n render (h) {\n return h('svg', {\n staticClass: 'q-spinner',\n class: this.classes,\n on: { ...this.qListeners },\n attrs: {\n focusable: 'false' /* needed for IE11 */,\n 'width': this.cSize,\n 'height': this.cSize,\n 'viewBox': '0 0 38 38',\n 'xmlns': 'http://www.w3.org/2000/svg'\n }\n }, [\n h('defs', [\n h('linearGradient', {\n attrs: {\n 'x1': '8.042%',\n 'y1': '0%',\n 'x2': '65.682%',\n 'y2': '23.865%',\n 'id': 'a'\n }\n }, [\n h('stop', {\n attrs: {\n 'stop-color': 'currentColor',\n 'stop-opacity': '0',\n 'offset': '0%'\n }\n }),\n h('stop', {\n attrs: {\n 'stop-color': 'currentColor',\n 'stop-opacity': '.631',\n 'offset': '63.146%'\n }\n }),\n h('stop', {\n attrs: {\n 'stop-color': 'currentColor',\n 'offset': '100%'\n }\n })\n ])\n ]),\n h('g', {\n attrs: {\n 'transform': 'translate(1 1)',\n 'fill': 'none',\n 'fill-rule': 'evenodd'\n }\n }, [\n h('path', {\n attrs: {\n 'd': 'M36 18c0-9.94-8.06-18-18-18',\n 'stroke': 'url(#a)',\n 'stroke-width': '2'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'rotate',\n 'from': '0 18 18',\n 'to': '360 18 18',\n 'dur': '0.9s',\n 'repeatCount': 'indefinite'\n }\n })\n ]),\n h('circle', {\n attrs: {\n 'fill': 'currentColor',\n 'cx': '36',\n 'cy': '18',\n 'r': '1'\n }\n }, [\n h('animateTransform', {\n attrs: {\n 'attributeName': 'transform',\n 'type': 'rotate',\n 'from': '0 18 18',\n 'to': '360 18 18',\n 'dur': '0.9s',\n 'repeatCount': 'indefinite'\n }\n })\n ])\n ])\n ])\n }\n})\n","import Vue from 'vue'\n\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot, mergeSlot } from '../../utils/slot.js'\nimport { stop } from '../../utils/event.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QSplitter',\n\n mixins: [ DarkMixin, ListenersMixin ],\n\n directives: {\n TouchPan\n },\n\n props: {\n value: {\n type: Number,\n required: true\n },\n reverse: Boolean,\n unit: {\n type: String,\n default: '%',\n validator: v => [ '%', 'px' ].includes(v)\n },\n\n limits: {\n type: Array,\n validator: v => {\n if (v.length !== 2) return false\n if (typeof v[0] !== 'number' || typeof v[1] !== 'number') return false\n return v[0] >= 0 && v[0] <= v[1]\n }\n },\n\n emitImmediately: Boolean,\n\n horizontal: Boolean,\n disable: Boolean,\n\n beforeClass: [Array, String, Object],\n afterClass: [Array, String, Object],\n\n separatorClass: [Array, String, Object],\n separatorStyle: [Array, String, Object]\n },\n\n watch: {\n value: {\n immediate: true,\n handler (v) {\n this.__normalize(v, this.computedLimits)\n }\n },\n\n limits: {\n deep: true,\n handler () {\n this.$nextTick(() => {\n this.__normalize(this.value, this.computedLimits)\n })\n }\n }\n },\n\n computed: {\n classes () {\n return (this.horizontal === true ? 'column' : 'row') +\n ` q-splitter--${this.horizontal === true ? 'horizontal' : 'vertical'}` +\n ` q-splitter--${this.disable === true ? 'disabled' : 'workable'}` +\n (this.isDark === true ? ' q-splitter--dark' : '')\n },\n\n prop () {\n return this.horizontal === true ? 'height' : 'width'\n },\n\n side () {\n return this.reverse !== true ? 'before' : 'after'\n },\n\n computedLimits () {\n return this.limits !== void 0\n ? this.limits\n : (this.unit === '%' ? [ 10, 90 ] : [ 50, Infinity ])\n },\n\n styles () {\n return {\n [this.side]: {\n [this.prop]: this.__getCSSValue(this.value)\n }\n }\n },\n\n separatorDirectives () {\n if (this.disable !== true) {\n return [{\n name: 'touch-pan',\n value: this.__pan,\n modifiers: {\n [ this.horizontal === true ? 'vertical' : 'horizontal' ]: true,\n prevent: true,\n stop: true,\n mouse: true,\n mouseAllDir: true\n }\n }]\n }\n }\n },\n\n methods: {\n __pan (evt) {\n if (evt.isFirst === true) {\n const size = this.$el.getBoundingClientRect()[this.prop]\n\n this.__dir = this.horizontal === true ? 'up' : 'left'\n this.__maxValue = this.unit === '%' ? 100 : size\n this.__value = Math.min(this.__maxValue, this.computedLimits[1], Math.max(this.computedLimits[0], this.value))\n this.__multiplier = (this.reverse !== true ? 1 : -1) *\n (this.horizontal === true ? 1 : (this.$q.lang.rtl === true ? -1 : 1)) *\n (this.unit === '%' ? (size === 0 ? 0 : 100 / size) : 1)\n\n this.$el.classList.add('q-splitter--active')\n return\n }\n\n if (evt.isFinal === true) {\n if (this.__normalized !== this.value) {\n this.$emit('input', this.__normalized)\n }\n\n this.$el.classList.remove('q-splitter--active')\n return\n }\n\n const val = this.__value +\n this.__multiplier *\n (evt.direction === this.__dir ? -1 : 1) *\n evt.distance[this.horizontal === true ? 'y' : 'x']\n\n this.__normalized = Math.min(this.__maxValue, this.computedLimits[1], Math.max(this.computedLimits[0], val))\n\n this.$refs[this.side].style[this.prop] = this.__getCSSValue(this.__normalized)\n\n if (this.emitImmediately === true && this.value !== this.__normalized) {\n this.$emit('input', this.__normalized)\n }\n },\n\n __normalize (val, limits) {\n if (val < limits[0]) {\n this.$emit('input', limits[0])\n }\n else if (val > limits[1]) {\n this.$emit('input', limits[1])\n }\n },\n\n __getCSSValue (value) {\n return (this.unit === '%' ? value : Math.round(value)) + this.unit\n }\n },\n\n render (h) {\n const attrs = this.disable === true ? { 'aria-disabled': 'true' } : void 0\n const child = [\n h('div', {\n ref: 'before',\n staticClass: 'q-splitter__panel q-splitter__before' + (this.reverse === true ? ' col' : ''),\n style: this.styles.before,\n class: this.beforeClass,\n on: cache(this, 'stop', { input: stop })\n }, slot(this, 'before')),\n\n h('div', {\n staticClass: 'q-splitter__separator',\n style: this.separatorStyle,\n class: this.separatorClass,\n attrs\n }, [\n h('div', {\n staticClass: 'absolute-full q-splitter__separator-area',\n directives: this.separatorDirectives\n }, slot(this, 'separator'))\n ]),\n\n h('div', {\n ref: 'after',\n staticClass: 'q-splitter__panel q-splitter__after' + (this.reverse === true ? '' : ' col'),\n style: this.styles.after,\n class: this.afterClass,\n on: cache(this, 'stop', { input: stop })\n }, slot(this, 'after'))\n ]\n\n return h('div', {\n staticClass: 'q-splitter no-wrap',\n class: this.classes,\n on: { ...this.qListeners }\n }, mergeSlot(child, this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport Ripple from '../../directives/Ripple.js'\n\nimport AttrsMixin from '../../mixins/attrs.js'\n\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'StepHeader',\n\n mixins: [ AttrsMixin ],\n\n directives: {\n Ripple\n },\n\n props: {\n stepper: {},\n step: {}\n },\n\n computed: {\n isActive () {\n return this.stepper.value === this.step.name\n },\n\n isDisable () {\n const opt = this.step.disable\n return opt === true || opt === ''\n },\n\n isError () {\n const opt = this.step.error\n return opt === true || opt === ''\n },\n\n isDone () {\n const opt = this.step.done\n return this.isDisable === false && (opt === true || opt === '')\n },\n\n headerNav () {\n const\n opt = this.step.headerNav,\n nav = opt === true || opt === '' || opt === void 0\n\n return this.isDisable === false &&\n this.stepper.headerNav &&\n nav\n },\n\n hasPrefix () {\n return this.step.prefix &&\n this.isActive === false &&\n this.isError === false &&\n this.isDone === false\n },\n\n icon () {\n if (this.isActive === true) {\n return this.step.activeIcon || this.stepper.activeIcon || this.$q.iconSet.stepper.active\n }\n if (this.isError === true) {\n return this.step.errorIcon || this.stepper.errorIcon || this.$q.iconSet.stepper.error\n }\n if (this.isDisable === false && this.isDone === true) {\n return this.step.doneIcon || this.stepper.doneIcon || this.$q.iconSet.stepper.done\n }\n\n return this.step.icon || this.stepper.inactiveIcon\n },\n\n color () {\n const errorColor = this.isError === true\n ? this.step.errorColor || this.stepper.errorColor\n : void 0\n\n if (this.isActive === true) {\n const color = this.step.activeColor || this.stepper.activeColor || this.step.color\n return color !== void 0\n ? color\n : errorColor\n }\n if (errorColor !== void 0) {\n return errorColor\n }\n if (this.isDisable === false && this.isDone === true) {\n return this.step.doneColor || this.stepper.doneColor || this.step.color || this.stepper.inactiveColor\n }\n\n return this.step.color || this.stepper.inactiveColor\n },\n\n classes () {\n return `q-stepper__tab col-grow flex items-center no-wrap relative-position` +\n (this.color !== void 0 ? ` text-${this.color}` : '') +\n (this.isError === true ? ' q-stepper__tab--error' : '') +\n (this.isActive === true ? ' q-stepper__tab--active' : '') +\n (this.isDone === true ? ' q-stepper__tab--done' : '') +\n (this.headerNav === true ? ' q-stepper__tab--navigation q-focusable q-hoverable' : '') +\n (this.isDisable === true ? ' q-stepper__tab--disabled' : '')\n }\n },\n\n methods: {\n activate () {\n this.$refs.blurTarget !== void 0 && this.$refs.blurTarget.focus()\n this.isActive === false && this.stepper.goTo(this.step.name)\n },\n\n keyup (e) {\n if (e.keyCode === 13 && this.isActive === false) {\n this.stepper.goTo(this.step.name)\n }\n }\n },\n\n render (h) {\n const data = { class: this.classes }\n\n if (this.stepper.headerNav === true) {\n data.directives = [{\n name: 'ripple',\n value: this.headerNav\n }]\n }\n\n this.headerNav === true && Object.assign(data, {\n on: cache(this, 'headnavon', {\n click: this.activate,\n keyup: this.keyup\n }),\n attrs: this.isDisable === true\n ? { tabindex: -1, 'aria-disabled': 'true' }\n : { tabindex: this.qAttrs.tabindex || 0 }\n })\n\n const child = [\n h('div', { staticClass: 'q-focus-helper', attrs: { tabindex: -1 }, ref: 'blurTarget' }),\n\n h('div', { staticClass: 'q-stepper__dot row flex-center q-stepper__line relative-position' }, [\n h('span', { staticClass: 'row flex-center' }, [\n this.hasPrefix === true\n ? this.step.prefix\n : h(QIcon, { props: { name: this.icon } })\n ])\n ])\n ]\n\n if (this.step.title !== void 0 && this.step.title !== null) {\n const content = [\n h('div', { staticClass: 'q-stepper__title' }, [ this.step.title ])\n ]\n\n if (this.step.caption !== void 0 && this.step.caption !== null) {\n content.push(\n h('div', { staticClass: 'q-stepper__caption' }, [ this.step.caption ])\n )\n }\n\n child.push(\n h('div', {\n staticClass: 'q-stepper__label q-stepper__line relative-position'\n }, content)\n )\n }\n\n return h('div', data, child)\n }\n})\n","import Vue from 'vue'\n\nimport QSlideTransition from '../slide-transition/QSlideTransition.js'\nimport StepHeader from './StepHeader.js'\n\nimport { PanelChildMixin } from '../../mixins/panel.js'\n\nimport { slot } from '../../utils/slot.js'\n\nconst StepWrapper = Vue.extend({\n name: 'QStepWrapper',\n\n render (h) {\n return h('div', {\n staticClass: 'q-stepper__step-content'\n }, [\n h('div', {\n staticClass: 'q-stepper__step-inner'\n }, slot(this, 'default'))\n ])\n }\n})\n\nexport default Vue.extend({\n name: 'QStep',\n\n inject: {\n stepper: {\n default () {\n console.error('QStep needs to be child of QStepper')\n }\n }\n },\n\n mixins: [ PanelChildMixin ],\n\n props: {\n icon: String,\n color: String,\n title: {\n type: String,\n required: true\n },\n caption: String,\n prefix: [ String, Number ],\n\n doneIcon: String,\n doneColor: String,\n activeIcon: String,\n activeColor: String,\n errorIcon: String,\n errorColor: String,\n\n headerNav: {\n type: Boolean,\n default: true\n },\n done: Boolean,\n error: Boolean\n },\n\n computed: {\n isActive () {\n return this.stepper.value === this.name\n }\n },\n\n watch: {\n isActive (active) {\n if (\n active === true &&\n this.stepper.vertical === true\n ) {\n this.$nextTick(() => {\n if (this.$el !== void 0) {\n this.$el.scrollTop = 0\n }\n })\n }\n }\n },\n\n render (h) {\n const vertical = this.stepper.vertical\n const content = vertical === true && this.stepper.keepAlive === true\n ? h(\n 'keep-alive',\n this.isActive === true\n ? [ h(StepWrapper, { key: this.name }, slot(this, 'default')) ]\n : void 0\n )\n : (\n vertical !== true || this.isActive === true\n ? StepWrapper.options.render.call(this, h)\n : void 0\n )\n\n return h(\n 'div',\n {\n staticClass: 'q-stepper__step',\n on: { ...this.qListeners }\n },\n vertical === true\n ? [\n h(StepHeader, {\n props: {\n stepper: this.stepper,\n step: this\n }\n }),\n\n this.stepper.animated === true\n ? h(QSlideTransition, [ content ])\n : content\n ]\n : [ content ]\n )\n }\n})\n","import Vue from 'vue'\n\nimport StepHeader from './StepHeader.js'\n\nimport { PanelParentMixin } from '../../mixins/panel.js'\nimport DarkMixin from '../../mixins/dark.js'\n\nimport { slot, mergeSlot } from '../../utils/slot.js'\nimport { stop } from '../../utils/event.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QStepper',\n\n provide () {\n return {\n stepper: this\n }\n },\n\n mixins: [ DarkMixin, PanelParentMixin ],\n\n props: {\n flat: Boolean,\n bordered: Boolean,\n alternativeLabels: Boolean,\n headerNav: Boolean,\n contracted: Boolean,\n headerClass: String,\n\n inactiveColor: String,\n inactiveIcon: String,\n doneIcon: String,\n doneColor: String,\n activeIcon: String,\n activeColor: String,\n errorIcon: String,\n errorColor: String\n },\n\n computed: {\n classes () {\n return `q-stepper q-stepper--${this.vertical === true ? 'vertical' : 'horizontal'}` +\n (this.flat === true || this.isDark === true ? ' q-stepper--flat no-shadow' : '') +\n (this.bordered === true || (this.isDark === true && this.flat === false) ? ' q-stepper--bordered' : '') +\n (this.contracted === true ? ' q-stepper--contracted' : '') +\n (this.isDark === true ? ' q-stepper--dark q-dark' : '')\n },\n\n headerClasses () {\n return 'q-stepper__header row items-stretch justify-between' +\n ` q-stepper__header--${this.alternativeLabels === true ? 'alternative' : 'standard'}-labels` +\n (this.flat === false || this.bordered === true ? ' q-stepper__header--border' : '') +\n (this.headerClass !== void 0 ? ` ${this.headerClass}` : '')\n }\n },\n\n methods: {\n __getContent (h) {\n const top = slot(this, 'message', [])\n\n if (this.vertical === true) {\n this.__isValidPanelName(this.value) && this.__updatePanelIndex()\n\n const content = h('div', {\n staticClass: 'q-stepper__content',\n // stop propagation of content emitted @input\n // which would tamper with Panel's model\n on: cache(this, 'stop', { input: stop })\n }, slot(this, 'default'))\n\n return top === void 0\n ? [ content ]\n : top.concat(content)\n }\n\n return [\n h('div', { class: this.headerClasses }, this.__getAllPanels().map(panel => {\n const step = panel.componentOptions.propsData\n\n return h(StepHeader, {\n key: step.name,\n props: {\n stepper: this,\n step\n }\n })\n }))\n ].concat(\n top,\n\n h('div', {\n staticClass: 'q-stepper__content q-panel-parent',\n directives: this.panelDirectives\n }, this.__getPanelContent(h))\n )\n },\n\n __renderPanels (h) {\n return h('div', {\n class: this.classes,\n on: { ...this.qListeners }\n }, mergeSlot(this.__getContent(h), this, 'navigation'))\n }\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QStepperNavigation',\n\n mixins: [ ListenersMixin ],\n\n render (h) {\n return h('div', {\n staticClass: 'q-stepper__nav',\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","export default {\n computed: {\n marginalsProps () {\n return {\n pagination: this.computedPagination,\n pagesNumber: this.pagesNumber,\n isFirstPage: this.isFirstPage,\n isLastPage: this.isLastPage,\n firstPage: this.firstPage,\n prevPage: this.prevPage,\n nextPage: this.nextPage,\n lastPage: this.lastPage,\n\n inFullscreen: this.inFullscreen,\n toggleFullscreen: this.toggleFullscreen\n }\n }\n },\n\n methods: {\n getTop (h) {\n const\n top = this.$scopedSlots.top,\n topLeft = this.$scopedSlots['top-left'],\n topRight = this.$scopedSlots['top-right'],\n topSelection = this.$scopedSlots['top-selection'],\n hasSelection = this.hasSelectionMode === true &&\n topSelection !== void 0 &&\n this.rowsSelectedNumber > 0,\n staticClass = 'q-table__top relative-position row items-center'\n\n if (top !== void 0) {\n return h('div', { staticClass }, [ top(this.marginalsProps) ])\n }\n\n let child\n\n if (hasSelection === true) {\n child = topSelection(this.marginalsProps).slice()\n }\n else {\n child = []\n\n if (topLeft !== void 0) {\n child.push(\n h('div', { staticClass: 'q-table-control' }, [\n topLeft(this.marginalsProps)\n ])\n )\n }\n else if (this.title) {\n child.push(\n h('div', { staticClass: 'q-table__control' }, [\n h('div', { staticClass: 'q-table__title', class: this.titleClass }, this.title)\n ])\n )\n }\n }\n\n if (topRight !== void 0) {\n child.push(h('div', { staticClass: 'q-table__separator col' }))\n child.push(\n h('div', { staticClass: 'q-table__control' }, [\n topRight(this.marginalsProps)\n ])\n )\n }\n\n if (child.length === 0) {\n return\n }\n\n return h('div', { staticClass }, child)\n }\n }\n}\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot, uniqueSlot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QTh',\n\n mixins: [ ListenersMixin ],\n\n props: {\n props: Object,\n autoWidth: Boolean\n },\n\n render (h) {\n const on = { ...this.qListeners }\n\n if (this.props === void 0) {\n return h('th', {\n on,\n class: this.autoWidth === true ? 'q-table--col-auto-width' : null\n }, slot(this, 'default'))\n }\n\n let col, child\n const name = this.$vnode.key\n\n if (name) {\n col = this.props.colsMap[name]\n if (col === void 0) { return }\n }\n else {\n col = this.props.col\n }\n\n if (col.sortable === true) {\n const action = col.align === 'right'\n ? 'unshift'\n : 'push'\n\n child = uniqueSlot(this, 'default', [])\n child[action](\n h(QIcon, {\n props: { name: this.$q.iconSet.table.arrowUp },\n staticClass: col.__iconClass\n })\n )\n }\n else {\n child = slot(this, 'default')\n }\n\n const evt = col.sortable === true\n ? {\n click: evt => {\n this.props.sort(col)\n this.$emit('click', evt)\n }\n }\n : {}\n\n return h('th', {\n on: { ...on, ...evt },\n style: col.headerStyle,\n class: col.__thClass +\n (this.autoWidth === true ? ' q-table--col-auto-width' : '')\n }, child)\n }\n})\n","import QCheckbox from '../checkbox/QCheckbox.js'\nimport QTh from './QTh.js'\n\nimport cache from '../../utils/cache.js'\n\nexport default {\n methods: {\n getTableHeader (h) {\n const child = this.getTableHeaderRow(h)\n\n if (this.loading === true && this.$scopedSlots.loading === void 0) {\n child.push(\n h('tr', { staticClass: 'q-table__progress' }, [\n h('th', {\n staticClass: 'relative-position',\n attrs: { colspan: this.computedColspan }\n }, this.__getProgress(h))\n ])\n )\n }\n\n return h('thead', child)\n },\n\n getTableHeaderRow (h) {\n const\n header = this.$scopedSlots.header,\n headerCell = this.$scopedSlots['header-cell']\n\n if (header !== void 0) {\n return header(this.addTableHeaderRowMeta({\n header: true, cols: this.computedCols, sort: this.sort, colsMap: this.computedColsMap\n })).slice()\n }\n\n const child = this.computedCols.map(col => {\n const\n headerCellCol = this.$scopedSlots[`header-cell-${col.name}`],\n slot = headerCellCol !== void 0 ? headerCellCol : headerCell,\n props = {\n col, cols: this.computedCols, sort: this.sort, colsMap: this.computedColsMap\n }\n\n return slot !== void 0\n ? slot(props)\n : h(QTh, {\n key: col.name,\n props: { props },\n style: col.headerStyle,\n class: col.headerClasses\n }, col.label)\n })\n\n if (this.singleSelection === true && this.grid !== true) {\n child.unshift(h('th', { staticClass: 'q-table--col-auto-width' }, [' ']))\n }\n else if (this.multipleSelection === true) {\n child.unshift(h('th', { staticClass: 'q-table--col-auto-width' }, [\n h(QCheckbox, {\n props: {\n color: this.color,\n value: this.someRowsSelected === true\n ? null\n : this.allRowsSelected,\n dark: this.isDark,\n dense: this.dense\n },\n on: cache(this, 'inp', {\n input: val => {\n if (this.someRowsSelected === true) {\n val = false\n }\n this.__updateSelection(\n this.computedRows.map(this.getRowKey),\n this.computedRows,\n val\n )\n }\n })\n })\n ]))\n }\n\n return [\n h('tr', {\n style: this.tableHeaderStyle,\n class: this.tableHeaderClass\n }, child)\n ]\n },\n\n addTableHeaderRowMeta (data) {\n if (this.multipleSelection === true) {\n Object.defineProperty(data, 'selected', {\n get: () => this.someRowsSelected === true\n ? 'some'\n : this.allRowsSelected,\n set: val => {\n if (this.someRowsSelected === true) {\n val = false\n }\n this.__updateSelection(\n this.computedRows.map(this.getRowKey),\n this.computedRows,\n val\n )\n },\n configurable: true,\n enumerable: true\n })\n data.partialSelected = this.someRowsSelected\n data.multipleSelect = true\n }\n\n return data\n }\n }\n}\n","import QCheckbox from '../checkbox/QCheckbox.js'\n\nexport default {\n methods: {\n getTableRowBody (row, body, pageIndex) {\n const\n key = this.getRowKey(row),\n selected = this.isRowSelected(key)\n\n return body(this.addBodyRowMeta({\n key,\n row,\n pageIndex,\n cols: this.computedCols,\n colsMap: this.computedColsMap,\n __trClass: selected ? 'selected' : ''\n }))\n },\n\n getTableRow (h, row, pageIndex) {\n const\n bodyCell = this.$scopedSlots['body-cell'],\n key = this.getRowKey(row),\n selected = this.isRowSelected(key),\n child = this.computedCols.map(col => {\n const\n bodyCellCol = this.$scopedSlots[`body-cell-${col.name}`],\n slot = bodyCellCol !== void 0 ? bodyCellCol : bodyCell\n\n return slot !== void 0\n ? slot(this.addBodyCellMetaData({ row, pageIndex, col }))\n : h('td', {\n class: col.__tdClass,\n style: col.style\n }, this.getCellValue(col, row))\n })\n\n this.hasSelectionMode === true && child.unshift(\n h('td', { staticClass: 'q-table--col-auto-width' }, [\n h(QCheckbox, {\n props: {\n value: selected,\n color: this.color,\n dark: this.isDark,\n dense: this.dense\n },\n on: {\n input: (adding, evt) => {\n this.__updateSelection([ key ], [ row ], adding, evt)\n }\n }\n })\n ])\n )\n\n const data = { key, class: { selected }, on: {} }\n\n if (this.qListeners['row-click'] !== void 0) {\n data.class['cursor-pointer'] = true\n data.on.click = evt => {\n this.$emit('row-click', evt, row, pageIndex)\n }\n }\n\n if (this.qListeners['row-dblclick'] !== void 0) {\n data.class['cursor-pointer'] = true\n data.on.dblclick = evt => {\n this.$emit('row-dblclick', evt, row, pageIndex)\n }\n }\n\n return h('tr', data, child)\n },\n\n getTableBody (h) {\n const\n body = this.$scopedSlots.body,\n topRow = this.$scopedSlots['top-row'],\n bottomRow = this.$scopedSlots['bottom-row'],\n mapFn = body !== void 0\n ? (row, pageIndex) => this.getTableRowBody(row, body, pageIndex)\n : (row, pageIndex) => this.getTableRow(h, row, pageIndex)\n\n let child = this.computedRows.map(mapFn)\n\n if (topRow !== void 0) {\n child = topRow({ cols: this.computedCols }).concat(child)\n }\n if (bottomRow !== void 0) {\n child = child.concat(bottomRow({ cols: this.computedCols }))\n }\n\n return h('tbody', child)\n },\n\n getTableRowVirtual (h) {\n const body = this.$scopedSlots.body\n\n return body !== void 0\n ? props => this.getTableRowBody(props.item, body, props.index)\n : props => this.getTableRow(h, props.item, props.index)\n },\n\n addBodyRowMeta (data) {\n data.rowIndex = this.firstRowIndex + data.pageIndex\n\n this.hasSelectionMode === true && Object.defineProperty(data, 'selected', {\n get: () => this.isRowSelected(data.key),\n set: adding => {\n this.__updateSelection([ data.key ], [ data.row ], adding)\n },\n configurable: true,\n enumerable: true\n })\n\n Object.defineProperty(data, 'expand', {\n get: () => this.isRowExpanded(data.key),\n set: adding => {\n this.__updateExpanded(data.key, adding)\n },\n configurable: true,\n enumerable: true\n })\n\n data.cols = data.cols.map(col => {\n const c = { ...col }\n Object.defineProperty(c, 'value', {\n get: () => this.getCellValue(col, data.row),\n configurable: true,\n enumerable: true\n })\n return c\n })\n\n return data\n },\n\n addBodyCellMetaData (data) {\n data.rowIndex = this.firstRowIndex + data.pageIndex\n\n Object.defineProperty(data, 'value', {\n get: () => this.getCellValue(data.col, data.row),\n configurable: true,\n enumerable: true\n })\n return data\n },\n\n getCellValue (col, row) {\n const val = typeof col.field === 'function' ? col.field(row) : row[col.field]\n return col.format !== void 0 ? col.format(val, row) : val\n }\n }\n}\n","import QSelect from '../select/QSelect.js'\nimport QBtn from '../btn/QBtn.js'\nimport QIcon from '../icon/QIcon.js'\n\nimport cache from '../../utils/cache.js'\n\nconst staticClass = 'q-table__bottom row items-center'\n\nexport default {\n props: {\n hideBottom: Boolean,\n hideSelectedBanner: Boolean,\n hideNoData: Boolean,\n hidePagination: Boolean\n },\n\n computed: {\n navIcon () {\n const ico = [\n this.iconFirstPage || this.$q.iconSet.table.firstPage,\n this.iconPrevPage || this.$q.iconSet.table.prevPage,\n this.iconNextPage || this.$q.iconSet.table.nextPage,\n this.iconLastPage || this.$q.iconSet.table.lastPage\n ]\n return this.$q.lang.rtl === true ? ico.reverse() : ico\n }\n },\n\n methods: {\n getBottom (h) {\n if (this.hideBottom === true) {\n return\n }\n\n if (this.nothingToDisplay === true) {\n if (this.hideNoData === true) {\n return\n }\n\n const message = this.loading === true\n ? this.loadingLabel || this.$q.lang.table.loading\n : (this.filter ? this.noResultsLabel || this.$q.lang.table.noResults : this.noDataLabel || this.$q.lang.table.noData)\n\n const noData = this.$scopedSlots['no-data']\n const children = noData !== void 0\n ? [ noData({ message, icon: this.$q.iconSet.table.warning, filter: this.filter }) ]\n : [\n h(QIcon, {\n staticClass: 'q-table__bottom-nodata-icon',\n props: { name: this.$q.iconSet.table.warning }\n }),\n message\n ]\n\n return h('div', {\n staticClass: staticClass + ' q-table__bottom--nodata'\n }, children)\n }\n\n const bottom = this.$scopedSlots.bottom\n\n if (bottom !== void 0) {\n return h('div', { staticClass }, [ bottom(this.marginalsProps) ])\n }\n\n const child = this.hideSelectedBanner !== true && this.hasSelectionMode === true && this.rowsSelectedNumber > 0\n ? [\n h('div', { staticClass: 'q-table__control' }, [\n h('div', [\n (this.selectedRowsLabel || this.$q.lang.table.selectedRecords)(this.rowsSelectedNumber)\n ])\n ])\n ]\n : []\n\n if (this.hidePagination !== true) {\n return h('div', {\n staticClass: staticClass + ' justify-end'\n }, this.getPaginationRow(h, child))\n }\n\n if (child.length > 0) {\n return h('div', { staticClass }, child)\n }\n },\n\n getPaginationRow (h, child) {\n let control\n const\n { rowsPerPage } = this.computedPagination,\n paginationLabel = this.paginationLabel || this.$q.lang.table.pagination,\n paginationSlot = this.$scopedSlots.pagination,\n hasOpts = this.rowsPerPageOptions.length > 1\n\n child.push(\n h('div', { staticClass: 'q-table__separator col' })\n )\n\n if (hasOpts === true) {\n child.push(\n h('div', { staticClass: 'q-table__control' }, [\n h('span', { staticClass: 'q-table__bottom-item' }, [\n this.rowsPerPageLabel || this.$q.lang.table.recordsPerPage\n ]),\n h(QSelect, {\n staticClass: 'q-table__select inline q-table__bottom-item',\n props: {\n color: this.color,\n value: rowsPerPage,\n options: this.computedRowsPerPageOptions,\n displayValue: rowsPerPage === 0\n ? this.$q.lang.table.allRows\n : rowsPerPage,\n dark: this.isDark,\n borderless: true,\n dense: true,\n optionsDense: true,\n optionsCover: true\n },\n on: cache(this, 'pgSize', {\n input: pag => {\n this.setPagination({\n page: 1,\n rowsPerPage: pag.value\n })\n }\n })\n })\n ])\n )\n }\n\n if (paginationSlot !== void 0) {\n control = paginationSlot(this.marginalsProps)\n }\n else {\n control = [\n h('span', rowsPerPage !== 0 ? { staticClass: 'q-table__bottom-item' } : {}, [\n rowsPerPage\n ? paginationLabel(this.firstRowIndex + 1, Math.min(this.lastRowIndex, this.computedRowsNumber), this.computedRowsNumber)\n : paginationLabel(1, this.filteredSortedRowsNumber, this.computedRowsNumber)\n ])\n ]\n\n if (rowsPerPage !== 0 && this.pagesNumber > 1) {\n const btnProps = {\n color: this.color,\n round: true,\n dense: true,\n flat: true\n }\n\n if (this.dense === true) {\n btnProps.size = 'sm'\n }\n\n this.pagesNumber > 2 && control.push(\n h(QBtn, {\n key: 'pgFirst',\n props: {\n ...btnProps,\n icon: this.navIcon[0],\n disable: this.isFirstPage\n },\n on: cache(this, 'pgFirst', { click: this.firstPage })\n })\n )\n\n control.push(\n h(QBtn, {\n key: 'pgPrev',\n props: {\n ...btnProps,\n icon: this.navIcon[1],\n disable: this.isFirstPage\n },\n on: cache(this, 'pgPrev', { click: this.prevPage })\n }),\n\n h(QBtn, {\n key: 'pgNext',\n props: {\n ...btnProps,\n icon: this.navIcon[2],\n disable: this.isLastPage\n },\n on: cache(this, 'pgNext', { click: this.nextPage })\n })\n )\n\n this.pagesNumber > 2 && control.push(\n h(QBtn, {\n key: 'pgLast',\n props: {\n ...btnProps,\n icon: this.navIcon[3],\n disable: this.isLastPage\n },\n on: cache(this, 'pgLast', { click: this.lastPage })\n })\n )\n }\n }\n\n child.push(\n h('div', { staticClass: 'q-table__control' }, control)\n )\n\n return child\n }\n }\n}\n","import QCheckbox from '../checkbox/QCheckbox.js'\nimport QSeparator from '../separator/QSeparator.js'\n\nexport default {\n methods: {\n getGridBody (h) {\n const item = this.$scopedSlots.item !== void 0\n ? this.$scopedSlots.item\n : scope => {\n const child = scope.cols.map(\n col => h('div', { staticClass: 'q-table__grid-item-row' }, [\n h('div', { staticClass: 'q-table__grid-item-title' }, [ col.label ]),\n h('div', { staticClass: 'q-table__grid-item-value' }, [ col.value ])\n ])\n )\n\n this.hasSelectionMode === true && child.unshift(\n h('div', { staticClass: 'q-table__grid-item-row' }, [\n h(QCheckbox, {\n props: {\n value: scope.selected,\n color: this.color,\n dark: this.isDark,\n dense: true\n },\n on: {\n input: (adding, evt) => {\n this.__updateSelection([ scope.key ], [ scope.row ], adding, evt)\n }\n }\n })\n ]),\n\n h(QSeparator, { props: { dark: this.isDark } })\n )\n\n const data = {\n staticClass: 'q-table__grid-item-card' + this.cardDefaultClass,\n class: this.cardClass,\n style: this.cardStyle,\n on: {}\n }\n\n if (this.qListeners['row-click'] !== void 0 || this.qListeners['row-dblclick'] !== void 0) {\n data.staticClass += ' cursor-pointer'\n }\n\n if (this.qListeners['row-click'] !== void 0) {\n data.on.click = evt => {\n this.$emit('row-click', evt, scope.row, scope.pageIndex)\n }\n }\n\n if (this.qListeners['row-dblclick'] !== void 0) {\n data.on.dblclick = evt => {\n this.$emit('row-dblclick', evt, scope.row, scope.pageIndex)\n }\n }\n\n return h('div', {\n staticClass: 'q-table__grid-item col-xs-12 col-sm-6 col-md-4 col-lg-3',\n class: scope.selected === true ? 'q-table__grid-item--selected' : ''\n }, [\n h('div', data, child)\n ])\n }\n\n return h('div', {\n staticClass: 'q-table__grid-content row',\n class: this.cardContainerClass,\n style: this.cardContainerStyle\n }, this.computedRows.map((row, pageIndex) => {\n const\n key = this.getRowKey(row),\n selected = this.isRowSelected(key)\n\n return item(this.addBodyRowMeta({\n key,\n row,\n pageIndex,\n cols: this.computedCols,\n colsMap: this.computedColsMap,\n __trClass: selected ? 'selected' : ''\n }))\n }))\n },\n\n getGridHeader (h) {\n const child = this.gridHeader === true\n ? [\n h('table', { staticClass: 'q-table' }, [\n this.getTableHeader(h)\n ])\n ]\n : (\n this.loading === true && this.$scopedSlots.loading === void 0\n ? this.__getProgress(h)\n : void 0\n )\n\n return h('div', { staticClass: 'q-table__middle' }, child)\n }\n }\n}\n","export default function (h, conf, content) {\n return h('div', {\n ...conf,\n staticClass: 'q-table__middle' + (conf.staticClass !== void 0 ? ' ' + conf.staticClass : '')\n }, [\n h('table', { staticClass: 'q-table' }, content)\n ])\n}\n","import Vue from 'vue'\n\nimport QList from '../item/QList.js'\nimport QMarkupTable from '../markup-table/QMarkupTable.js'\nimport getTableMiddle from '../table/get-table-middle.js'\n\nimport VirtualScroll from '../../mixins/virtual-scroll.js'\nimport AttrsMixin from '../../mixins/attrs.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { listenOpts } from '../../utils/event.js'\nimport { mergeSlot } from '../../utils/slot.js'\n\nconst comps = {\n list: QList,\n table: QMarkupTable\n}\n\nexport default Vue.extend({\n name: 'QVirtualScroll',\n\n mixins: [ AttrsMixin, ListenersMixin, VirtualScroll ],\n\n props: {\n type: {\n type: String,\n default: 'list',\n validator: v => ['list', 'table', '__qtable'].includes(v)\n },\n\n items: {\n type: Array,\n default: () => []\n },\n\n itemsFn: Function,\n itemsSize: Number,\n\n scrollTarget: {\n default: void 0\n }\n },\n\n computed: {\n virtualScrollLength () {\n return this.itemsSize >= 0 && this.itemsFn !== void 0\n ? parseInt(this.itemsSize, 10)\n : (Array.isArray(this.items) ? this.items.length : 0)\n },\n\n virtualScrollScope () {\n if (this.virtualScrollLength === 0) {\n return []\n }\n\n const mapFn = (item, i) => ({\n index: this.virtualScrollSliceRange.from + i,\n item\n })\n\n if (this.itemsFn === void 0) {\n return this.items.slice(this.virtualScrollSliceRange.from, this.virtualScrollSliceRange.to).map(mapFn)\n }\n\n return this.itemsFn(this.virtualScrollSliceRange.from, this.virtualScrollSliceRange.to - this.virtualScrollSliceRange.from).map(mapFn)\n },\n\n classes () {\n return 'q-virtual-scroll q-virtual-scroll' + (this.virtualScrollHorizontal === true ? '--horizontal' : '--vertical') +\n (this.scrollTarget !== void 0 ? '' : ' scroll')\n },\n\n attrs () {\n return this.scrollTarget !== void 0 ? void 0 : { tabindex: 0 }\n }\n },\n\n watch: {\n virtualScrollLength () {\n this.__resetVirtualScroll()\n },\n\n scrollTarget () {\n this.__unconfigureScrollTarget()\n this.__configureScrollTarget()\n }\n },\n\n methods: {\n __getVirtualScrollEl () {\n return this.$el\n },\n\n __getVirtualScrollTarget () {\n return this.__scrollTarget\n },\n\n __configureScrollTarget () {\n this.__scrollTarget = getScrollTarget(this.$el, this.scrollTarget)\n this.__scrollTarget.addEventListener('scroll', this.__onVirtualScrollEvt, listenOpts.passive)\n },\n\n __unconfigureScrollTarget () {\n if (this.__scrollTarget !== void 0) {\n this.__scrollTarget.removeEventListener('scroll', this.__onVirtualScrollEvt, listenOpts.passive)\n this.__scrollTarget = void 0\n }\n }\n },\n\n beforeMount () {\n this.__resetVirtualScroll()\n },\n\n mounted () {\n this.__configureScrollTarget()\n },\n\n beforeDestroy () {\n this.__unconfigureScrollTarget()\n },\n\n render (h) {\n if (this.$scopedSlots.default === void 0) {\n console.error(`QVirtualScroll: default scoped slot is required for rendering`, this)\n return\n }\n\n let child = this.__padVirtualScroll(\n h,\n this.type === 'list' ? 'div' : 'tbody',\n this.virtualScrollScope.map(this.$scopedSlots.default)\n )\n\n if (this.$scopedSlots.before !== void 0) {\n child = this.$scopedSlots.before().concat(child)\n }\n\n child = mergeSlot(child, this, 'after')\n\n return this.type === '__qtable'\n ? getTableMiddle(h, { staticClass: this.classes }, child)\n : h(comps[this.type], {\n class: this.classes,\n attrs: this.attrs,\n props: this.qAttrs,\n on: { ...this.qListeners }\n }, child)\n }\n})\n","export function sortString (a, b) {\n if (typeof a !== 'string') {\n throw new TypeError('The value for sorting must be a String')\n }\n return a.localeCompare(b)\n}\n\nexport function sortNumber (a, b) {\n return a - b\n}\n\nexport function sortDate (a, b) {\n return (new Date(a)) - (new Date(b))\n}\n\nexport function sortBoolean (a, b) {\n return a && !b\n ? -1\n : (!a && b ? 1 : 0)\n}\n","import { sortDate } from '../../utils/sort.js'\nimport { isNumber, isDate } from '../../utils/is.js'\n\nexport default {\n props: {\n sortMethod: {\n type: Function,\n default (data, sortBy, descending) {\n const col = this.colList.find(def => def.name === sortBy)\n if (col === void 0 || col.field === void 0) {\n return data\n }\n\n const\n dir = descending === true ? -1 : 1,\n val = typeof col.field === 'function'\n ? v => col.field(v)\n : v => v[col.field]\n\n return data.sort((a, b) => {\n let\n A = val(a),\n B = val(b)\n\n if (A === null || A === void 0) {\n return -1 * dir\n }\n if (B === null || B === void 0) {\n return 1 * dir\n }\n if (col.sort !== void 0) {\n return col.sort(A, B, a, b) * dir\n }\n if (isNumber(A) === true && isNumber(B) === true) {\n return (A - B) * dir\n }\n if (isDate(A) === true && isDate(B) === true) {\n return sortDate(A, B) * dir\n }\n if (typeof A === 'boolean' && typeof B === 'boolean') {\n return (A - B) * dir\n }\n\n [A, B] = [A, B].map(s => (s + '').toLocaleString().toLowerCase())\n\n return A < B\n ? -1 * dir\n : (A === B ? 0 : dir)\n })\n }\n }\n },\n\n computed: {\n columnToSort () {\n const { sortBy } = this.computedPagination\n\n if (sortBy) {\n return this.colList.find(def => def.name === sortBy) || null\n }\n }\n },\n\n methods: {\n sort (col /* String(col name) or Object(col definition) */) {\n if (col === Object(col)) {\n col = col.name\n }\n\n let { sortBy, descending } = this.computedPagination\n\n if (sortBy !== col) {\n sortBy = col\n descending = false\n }\n else if (this.binaryStateSort === true) {\n descending = !descending\n }\n else if (descending === true) {\n sortBy = null\n }\n else {\n descending = true\n }\n\n this.setPagination({ sortBy, descending, page: 1 })\n }\n }\n}\n","export default {\n props: {\n filter: [String, Object],\n filterMethod: {\n type: Function,\n default (rows, terms, cols = this.computedCols, cellValue = this.getCellValue) {\n const lowerTerms = terms ? terms.toLowerCase() : ''\n return rows.filter(\n row => cols.some(col => {\n const val = cellValue(col, row) + ''\n const haystack = (val === 'undefined' || val === 'null') ? '' : val.toLowerCase()\n return haystack.indexOf(lowerTerms) !== -1\n })\n )\n }\n }\n },\n\n watch: {\n filter: {\n handler () {\n this.$nextTick(() => {\n this.setPagination({ page: 1 }, true)\n })\n },\n deep: true\n }\n }\n}\n","function samePagination (oldPag, newPag) {\n for (const prop in newPag) {\n if (newPag[prop] !== oldPag[prop]) {\n return false\n }\n }\n return true\n}\n\nfunction fixPagination (p) {\n if (p.page < 1) {\n p.page = 1\n }\n if (p.rowsPerPage !== void 0 && p.rowsPerPage < 1) {\n p.rowsPerPage = 0\n }\n return p\n}\n\nexport default {\n props: {\n pagination: Object,\n rowsPerPageOptions: {\n type: Array,\n default: () => [ 5, 7, 10, 15, 20, 25, 50, 0 ]\n }\n },\n\n computed: {\n computedPagination () {\n const pag = this.qListeners['update:pagination'] !== void 0\n ? { ...this.innerPagination, ...this.pagination }\n : this.innerPagination\n\n return fixPagination(pag)\n },\n\n firstRowIndex () {\n const { page, rowsPerPage } = this.computedPagination\n return (page - 1) * rowsPerPage\n },\n\n lastRowIndex () {\n const { page, rowsPerPage } = this.computedPagination\n return page * rowsPerPage\n },\n\n isFirstPage () {\n return this.computedPagination.page === 1\n },\n\n pagesNumber () {\n return this.computedPagination.rowsPerPage === 0\n ? 1\n : Math.max(\n 1,\n Math.ceil(this.computedRowsNumber / this.computedPagination.rowsPerPage)\n )\n },\n\n isLastPage () {\n return this.lastRowIndex === 0\n ? true\n : this.computedPagination.page >= this.pagesNumber\n },\n\n computedRowsPerPageOptions () {\n const opts = this.rowsPerPageOptions.includes(this.innerPagination.rowsPerPage)\n ? this.rowsPerPageOptions\n : [ this.innerPagination.rowsPerPage ].concat(this.rowsPerPageOptions)\n\n return opts.map(count => ({\n label: count === 0 ? this.$q.lang.table.allRows : '' + count,\n value: count\n }))\n }\n },\n\n watch: {\n pagesNumber (lastPage, oldLastPage) {\n if (lastPage === oldLastPage) {\n return\n }\n\n const currentPage = this.computedPagination.page\n if (lastPage && !currentPage) {\n this.setPagination({ page: 1 })\n }\n else if (lastPage < currentPage) {\n this.setPagination({ page: lastPage })\n }\n }\n },\n\n methods: {\n __sendServerRequest (pagination) {\n this.requestServerInteraction({\n pagination,\n filter: this.filter\n })\n },\n\n setPagination (val, forceServerRequest) {\n const newPagination = fixPagination({\n ...this.computedPagination,\n ...val\n })\n\n if (samePagination(this.computedPagination, newPagination)) {\n if (this.isServerSide === true && forceServerRequest === true) {\n this.__sendServerRequest(newPagination)\n }\n return\n }\n\n if (this.isServerSide === true) {\n this.__sendServerRequest(newPagination)\n return\n }\n\n if (this.pagination !== void 0 && this.qListeners['update:pagination'] !== void 0) {\n this.$emit('update:pagination', newPagination)\n }\n else {\n this.innerPagination = newPagination\n }\n },\n\n firstPage () {\n this.setPagination({ page: 1 })\n },\n\n prevPage () {\n const { page } = this.computedPagination\n if (page > 1) {\n this.setPagination({ page: page - 1 })\n }\n },\n\n nextPage () {\n const { page, rowsPerPage } = this.computedPagination\n if (this.lastRowIndex > 0 && page * rowsPerPage < this.computedRowsNumber) {\n this.setPagination({ page: page + 1 })\n }\n },\n\n lastPage () {\n this.setPagination({ page: this.pagesNumber })\n }\n },\n\n created () {\n if (this.qListeners['update:pagination'] !== void 0) {\n this.$emit('update:pagination', { ...this.computedPagination })\n }\n }\n}\n","export default {\n props: {\n selection: {\n type: String,\n default: 'none',\n validator: v => ['single', 'multiple', 'none'].includes(v)\n },\n selected: {\n type: Array,\n default: () => []\n }\n },\n\n computed: {\n selectedKeys () {\n const keys = {}\n this.selected.map(this.getRowKey).forEach(key => {\n keys[key] = true\n })\n return keys\n },\n\n hasSelectionMode () {\n return this.selection !== 'none'\n },\n\n singleSelection () {\n return this.selection === 'single'\n },\n\n multipleSelection () {\n return this.selection === 'multiple'\n },\n\n allRowsSelected () {\n return this.computedRows.length > 0 && this.computedRows.every(\n row => this.selectedKeys[ this.getRowKey(row) ] === true\n )\n },\n\n someRowsSelected () {\n return this.allRowsSelected !== true &&\n this.computedRows.some(row => this.selectedKeys[ this.getRowKey(row) ] === true)\n },\n\n rowsSelectedNumber () {\n return this.selected.length\n }\n },\n\n methods: {\n isRowSelected (key) {\n return this.selectedKeys[key] === true\n },\n\n clearSelection () {\n this.$emit('update:selected', [])\n },\n\n __updateSelection (keys, rows, added, evt) {\n this.$emit('selection', { rows, added, keys, evt })\n\n const payload = this.singleSelection === true\n ? (added === true ? rows : [])\n : (\n added === true\n ? this.selected.concat(rows)\n : this.selected.filter(\n row => keys.includes(this.getRowKey(row)) === false\n )\n )\n\n this.$emit('update:selected', payload)\n }\n }\n}\n","function getVal (val) {\n return Array.isArray(val)\n ? val.slice()\n : []\n}\n\nexport default {\n props: {\n expanded: Array // sync\n },\n\n data () {\n return {\n innerExpanded: getVal(this.expanded)\n }\n },\n\n watch: {\n expanded (val) {\n this.innerExpanded = getVal(val)\n }\n },\n\n methods: {\n isRowExpanded (key) {\n return this.innerExpanded.includes(key)\n },\n\n setExpanded (val) {\n if (this.expanded !== void 0) {\n this.$emit('update:expanded', val)\n }\n else {\n this.innerExpanded = val\n }\n },\n\n __updateExpanded (key, add) {\n const target = this.innerExpanded.slice()\n const index = target.indexOf(key)\n\n if (add === true) {\n if (index === -1) {\n target.push(key)\n this.setExpanded(target)\n }\n }\n else if (index !== -1) {\n target.splice(index, 1)\n this.setExpanded(target)\n }\n }\n }\n}\n","import { isNumber } from '../../utils/is.js'\n\nexport default {\n props: {\n visibleColumns: Array\n },\n\n computed: {\n colList () {\n if (this.columns !== void 0) {\n return this.columns\n }\n\n // we infer columns from first row\n const row = this.data[0]\n\n return row !== void 0\n ? Object.keys(row).map(name => ({\n name,\n label: name.toUpperCase(),\n field: name,\n align: isNumber(row[name]) ? 'right' : 'left',\n sortable: true\n }))\n : []\n },\n\n computedCols () {\n const { sortBy, descending } = this.computedPagination\n\n const cols = this.visibleColumns !== void 0\n ? this.colList.filter(col => col.required === true || this.visibleColumns.includes(col.name) === true)\n : this.colList\n\n return cols.map(col => {\n const align = col.align || 'right'\n\n return {\n ...col,\n align,\n __iconClass: `q-table__sort-icon q-table__sort-icon--${align}`,\n __thClass: `text-${align}` +\n (col.headerClasses !== void 0 ? ' ' + col.headerClasses : '') +\n (col.sortable === true ? ' sortable' : '') +\n (col.name === sortBy ? ` sorted ${descending === true ? 'sort-desc' : ''}` : ''),\n __tdClass: `text-${align}${col.classes !== void 0 ? ' ' + col.classes : ''}`\n }\n })\n },\n\n computedColsMap () {\n const names = {}\n this.computedCols.forEach(col => {\n names[col.name] = col\n })\n return names\n },\n\n computedColspan () {\n return this.tableColspan !== void 0\n ? this.tableColspan\n : this.computedCols.length + (this.hasSelectionMode === true ? 1 : 0)\n }\n }\n}\n","import Vue from 'vue'\n\nimport Top from './table-top.js'\nimport TableHeader from './table-header.js'\nimport TableBody from './table-body.js'\nimport Bottom from './table-bottom.js'\nimport TableGrid from './table-grid.js'\nimport QVirtualScroll from '../virtual-scroll/QVirtualScroll.js'\nimport QLinearProgress from '../linear-progress/QLinearProgress.js'\nimport getTableMiddle from './get-table-middle.js'\n\nimport { commonVirtPropsList } from '../../mixins/virtual-scroll.js'\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport Sort from './table-sort.js'\nimport Filter from './table-filter.js'\nimport Pagination from './table-pagination.js'\nimport RowSelection from './table-row-selection.js'\nimport RowExpand from './table-row-expand.js'\nimport ColumnSelection from './table-column-selection.js'\nimport FullscreenMixin from '../../mixins/fullscreen.js'\n\nimport cache from '../../utils/cache.js'\n\nconst commonVirtPropsObj = {}\ncommonVirtPropsList.forEach(p => { commonVirtPropsObj[p] = {} })\n\nexport default Vue.extend({\n name: 'QTable',\n\n mixins: [\n DarkMixin,\n ListenersMixin,\n\n FullscreenMixin,\n Top,\n TableHeader,\n TableBody,\n Bottom,\n TableGrid,\n Sort,\n Filter,\n Pagination,\n RowSelection,\n RowExpand,\n ColumnSelection\n ],\n\n props: {\n data: {\n type: Array,\n default: () => []\n },\n rowKey: {\n type: [ String, Function ],\n default: 'id'\n },\n\n columns: Array,\n loading: Boolean,\n binaryStateSort: Boolean,\n\n iconFirstPage: String,\n iconPrevPage: String,\n iconNextPage: String,\n iconLastPage: String,\n\n title: String,\n\n hideHeader: Boolean,\n\n grid: Boolean,\n gridHeader: Boolean,\n\n dense: Boolean,\n flat: Boolean,\n bordered: Boolean,\n square: Boolean,\n separator: {\n type: String,\n default: 'horizontal',\n validator: v => ['horizontal', 'vertical', 'cell', 'none'].includes(v)\n },\n wrapCells: Boolean,\n\n virtualScroll: Boolean,\n ...commonVirtPropsObj,\n\n noDataLabel: String,\n noResultsLabel: String,\n loadingLabel: String,\n selectedRowsLabel: Function,\n rowsPerPageLabel: String,\n paginationLabel: Function,\n\n color: {\n type: String,\n default: 'grey-8'\n },\n\n titleClass: [String, Array, Object],\n tableStyle: [String, Array, Object],\n tableClass: [String, Array, Object],\n tableHeaderStyle: [String, Array, Object],\n tableHeaderClass: [String, Array, Object],\n cardContainerClass: [String, Array, Object],\n cardContainerStyle: [String, Array, Object],\n cardStyle: [String, Array, Object],\n cardClass: [String, Array, Object]\n },\n\n data () {\n return {\n innerPagination: Object.assign({\n sortBy: null,\n descending: false,\n page: 1,\n rowsPerPage: this.rowsPerPageOptions.length > 0\n ? this.rowsPerPageOptions[0]\n : 5\n }, this.pagination)\n }\n },\n\n watch: {\n needsReset () {\n this.hasVirtScroll === true && this.$refs.virtScroll !== void 0 && this.$refs.virtScroll.reset()\n }\n },\n\n computed: {\n getRowKey () {\n return typeof this.rowKey === 'function'\n ? this.rowKey\n : row => row[this.rowKey]\n },\n\n hasVirtScroll () {\n return this.grid !== true && this.virtualScroll === true\n },\n\n needsReset () {\n return ['tableStyle', 'tableClass', 'tableHeaderStyle', 'tableHeaderClass', 'containerClass']\n .map(p => this[p]).join(';')\n },\n\n filteredSortedRows () {\n let rows = this.data\n\n if (this.isServerSide === true || rows.length === 0) {\n return rows\n }\n\n const { sortBy, descending } = this.computedPagination\n\n if (this.filter) {\n rows = this.filterMethod(rows, this.filter, this.computedCols, this.getCellValue)\n }\n\n if (this.columnToSort !== void 0) {\n rows = this.sortMethod(\n this.data === rows ? rows.slice() : rows,\n sortBy,\n descending\n )\n }\n\n return rows\n },\n\n filteredSortedRowsNumber () {\n return this.filteredSortedRows.length\n },\n\n computedRows () {\n let rows = this.filteredSortedRows\n\n if (this.isServerSide === true) {\n return rows\n }\n\n const { rowsPerPage } = this.computedPagination\n\n if (rowsPerPage !== 0) {\n if (this.firstRowIndex === 0 && this.data !== rows) {\n if (rows.length > this.lastRowIndex) {\n rows.length = this.lastRowIndex\n }\n }\n else {\n rows = rows.slice(this.firstRowIndex, this.lastRowIndex)\n }\n }\n\n return rows\n },\n\n computedRowsNumber () {\n return this.isServerSide === true\n ? this.computedPagination.rowsNumber || 0\n : this.filteredSortedRowsNumber\n },\n\n nothingToDisplay () {\n return this.computedRows.length === 0\n },\n\n isServerSide () {\n return this.computedPagination.rowsNumber !== void 0\n },\n\n cardDefaultClass () {\n return ` q-table__card` +\n (this.isDark === true ? ' q-table__card--dark q-dark' : '') +\n (this.square === true ? ` q-table--square` : '') +\n (this.flat === true ? ` q-table--flat` : '') +\n (this.bordered === true ? ` q-table--bordered` : '')\n },\n\n containerClass () {\n return `q-table__container q-table--${this.separator}-separator column no-wrap` +\n (this.loading === true ? ' q-table--loading' : '') +\n (this.grid === true ? ' q-table--grid' : this.cardDefaultClass) +\n (this.isDark === true ? ` q-table--dark` : '') +\n (this.dense === true ? ` q-table--dense` : '') +\n (this.wrapCells === false ? ` q-table--no-wrap` : '') +\n (this.inFullscreen === true ? ` fullscreen scroll` : '')\n },\n\n virtProps () {\n const props = {}\n\n commonVirtPropsList\n .forEach(p => { props[p] = this[p] })\n\n if (props.virtualScrollItemSize === void 0) {\n props.virtualScrollItemSize = this.dense === true ? 28 : 48\n }\n\n return props\n }\n },\n\n render (h) {\n const child = [ this.getTop(h) ]\n const data = { staticClass: this.containerClass }\n\n if (this.grid === true) {\n child.push(this.getGridHeader(h))\n }\n else {\n Object.assign(data, {\n class: this.cardClass,\n style: this.cardStyle\n })\n }\n\n child.push(\n this.getBody(h),\n this.getBottom(h)\n )\n\n if (this.loading === true && this.$scopedSlots.loading !== void 0) {\n child.push(\n this.$scopedSlots.loading()\n )\n }\n\n return h('div', data, child)\n },\n\n methods: {\n requestServerInteraction (prop = {}) {\n this.$nextTick(() => {\n this.$emit('request', {\n pagination: prop.pagination || this.computedPagination,\n filter: prop.filter || this.filter,\n getCellValue: this.getCellValue\n })\n })\n },\n\n resetVirtualScroll () {\n this.hasVirtScroll === true && this.$refs.virtScroll.reset()\n },\n\n getBody (h) {\n if (this.grid === true) {\n return this.getGridBody(h)\n }\n\n const header = this.hideHeader !== true ? this.getTableHeader(h) : null\n\n return this.hasVirtScroll === true\n ? h(QVirtualScroll, {\n ref: 'virtScroll',\n props: {\n ...this.virtProps,\n items: this.computedRows,\n type: '__qtable',\n tableColspan: this.computedColspan\n },\n on: cache(this, 'vs', {\n 'virtual-scroll': this.__onVScroll\n }),\n class: this.tableClass,\n style: this.tableStyle,\n scopedSlots: {\n before: header === null\n ? void 0\n : () => header,\n default: this.getTableRowVirtual(h)\n }\n })\n : getTableMiddle(h, {\n staticClass: 'scroll',\n class: this.tableClass,\n style: this.tableStyle\n }, [\n header,\n this.getTableBody(h)\n ])\n },\n\n scrollTo (toIndex) {\n if (this.$refs.virtScroll !== void 0) {\n this.$refs.virtScroll.scrollTo(toIndex)\n return\n }\n\n toIndex = parseInt(toIndex, 10)\n const rowEl = this.$el.querySelector(`tbody tr:nth-of-type(${toIndex + 1})`)\n\n if (rowEl !== null) {\n const scrollTarget = this.$el.querySelector('.q-table__middle.scroll')\n const { offsetTop } = rowEl\n const direction = offsetTop < scrollTarget.scrollTop ? 'decrease' : 'increase'\n\n scrollTarget.scrollTop = offsetTop\n\n this.$emit('virtual-scroll', {\n index: toIndex,\n from: 0,\n to: this.pagination.rowsPerPage - 1,\n direction\n })\n }\n },\n\n __onVScroll (info) {\n this.$emit('virtual-scroll', info)\n },\n\n __getProgress (h) {\n return [\n h(QLinearProgress, {\n staticClass: 'q-table__linear-progress',\n props: {\n color: this.color,\n dark: this.isDark,\n indeterminate: true,\n trackColor: 'transparent'\n }\n })\n ]\n }\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QTr',\n\n mixins: [ ListenersMixin ],\n\n props: {\n props: Object,\n noHover: Boolean\n },\n\n computed: {\n classes () {\n return 'q-tr' + (this.props === void 0 || this.props.header === true ? '' : ' ' + this.props.__trClass) +\n (this.noHover === true ? ' q-tr--no-hover' : '')\n }\n },\n\n render (h) {\n return h('tr', {\n on: { ...this.qListeners },\n class: this.classes\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QTd',\n\n mixins: [ ListenersMixin ],\n\n props: {\n props: Object,\n autoWidth: Boolean,\n noHover: Boolean\n },\n\n computed: {\n classes () {\n return 'q-td' + (this.autoWidth === true ? ' q-table--col-auto-width' : '') +\n (this.noHover === true ? ' q-td--no-hover' : '')\n }\n },\n\n render (h) {\n const on = this.qListeners\n\n if (this.props === void 0) {\n return h('td', {\n on,\n class: this.classes\n }, slot(this, 'default'))\n }\n\n const name = this.$vnode.key\n\n const col = this.props.colsMap !== void 0 && name\n ? this.props.colsMap[name]\n : this.props.col\n\n if (col === void 0) { return }\n\n return h('td', {\n on,\n style: col.style,\n class: this.classes + ' ' + col.__tdClass\n }, slot(this, 'default'))\n }\n})\n","import { isDeepEqual } from './is'\n\nconst trailingSlashRE = /\\/?$/\n\nfunction queryIncludes (current, target) {\n for (const key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nexport function isSameRoute (current, target) {\n if (!target) {\n return false\n }\n if (current.path && target.path) {\n return (\n current.path.replace(trailingSlashRE, '') === target.path.replace(trailingSlashRE, '') &&\n current.hash === target.hash &&\n isDeepEqual(current.query, target.query)\n )\n }\n if (current.name && target.name) {\n return (\n current.name === target.name &&\n current.hash === target.hash &&\n isDeepEqual(current.query, target.query) &&\n isDeepEqual(current.params, target.params)\n )\n }\n return false\n}\n\nexport function isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(target.path.replace(trailingSlashRE, '/')) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n","import Vue from 'vue'\n\nimport QTab from './QTab.js'\nimport { RouterLinkMixin } from '../../mixins/router-link.js'\nimport { isSameRoute, isIncludedRoute } from '../../utils/router.js'\nimport { stop, stopAndPrevent, noop } from '../../utils/event.js'\n\nexport default Vue.extend({\n name: 'QRouteTab',\n\n mixins: [ QTab, RouterLinkMixin ],\n\n props: {\n to: { required: true }\n },\n\n inject: {\n __activateRoute: {},\n __recalculateScroll: {}\n },\n\n watch: {\n $route () {\n this.__checkActivation()\n }\n },\n\n computed: {\n onEvents () {\n return {\n input: stop,\n ...this.qListeners,\n '!click': this.__activate, // we need capture to intercept before vue-router\n keyup: this.__onKeyup\n }\n }\n },\n\n methods: {\n __activate (e, keyboard) {\n if (this.disable !== true) {\n if (\n e !== void 0 && (\n e.ctrlKey === true ||\n e.shiftKey === true ||\n e.altKey === true ||\n e.metaKey === true\n )\n ) {\n // if it has meta keys, let vue-router link\n // handle this by its own\n this.__checkActivation(true)\n }\n else {\n // we use programatic navigation instead of letting vue-router handle it\n // so we can check for activation when the navigation is complete\n e !== void 0 && stopAndPrevent(e)\n\n const go = (to = this.to, append = this.append, replace = this.replace) => {\n const { route } = this.$router.resolve(to, this.$route, append)\n const checkFn = to === this.to && append === this.append && replace === this.replace\n ? this.__checkActivation\n : noop\n\n // vue-router now throwing error if navigating\n // to the same route that the user is currently at\n // https://github.com/vuejs/vue-router/issues/2872\n this.$router[replace === true ? 'replace' : 'push'](\n route,\n () => { checkFn(true) },\n err => {\n if (err && err.name === 'NavigationDuplicated') {\n checkFn(true)\n }\n }\n )\n }\n\n this.qListeners.click !== void 0 && this.$emit('click', e, go)\n e.navigate !== false && go()\n }\n }\n\n if (keyboard === true) {\n this.$el.focus(e)\n }\n else {\n this.$refs.blurTarget !== void 0 && this.$refs.blurTarget.focus(e)\n }\n },\n\n __checkActivation (selected = false) {\n const\n current = this.$route,\n { href, location, route } = this.$router.resolve(this.to, current, this.append),\n redirected = route.redirectedFrom !== void 0,\n isSameRouteCheck = isSameRoute(current, route),\n checkFunction = this.exact === true ? isSameRoute : isIncludedRoute,\n params = {\n name: this.name,\n selected,\n exact: this.exact,\n priorityMatched: route.matched.length,\n priorityHref: href.length\n }\n\n if (isSameRouteCheck === true || (this.exact !== true && isIncludedRoute(current, route) === true)) {\n this.__activateRoute({\n ...params,\n redirected,\n // if it's an exact match give higher priority\n // even if the tab is not marked as exact\n exact: this.exact === true || isSameRouteCheck === true\n })\n }\n\n if (\n redirected === true &&\n checkFunction(current, {\n path: route.redirectedFrom,\n ...location\n }) === true\n ) {\n this.__activateRoute(params)\n }\n\n this.isActive === true && this.__activateRoute()\n }\n },\n\n mounted () {\n this.__recalculateScroll()\n this.$router !== void 0 && this.__checkActivation()\n },\n\n beforeDestroy () {\n this.__recalculateScroll()\n this.__activateRoute({ remove: true, name: this.name })\n },\n\n render (h) {\n return this.__renderTab(h, 'router-link', this.routerLinkProps)\n }\n})\n","import Vue from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport { slot } from '../../utils/slot.js'\nimport { formatDate, __splitDate } from '../../utils/date.js'\nimport { position } from '../../utils/event.js'\nimport { pad } from '../../utils/format.js'\nimport cache from '../../utils/cache.js'\nimport DateTimeMixin from '../../mixins/datetime.js'\n\nexport default Vue.extend({\n name: 'QTime',\n\n mixins: [ DateTimeMixin ],\n\n directives: {\n TouchPan\n },\n\n props: {\n mask: {\n default: null\n },\n\n format24h: {\n type: Boolean,\n default: null\n },\n\n defaultDate: {\n type: String,\n validator: v => /^-?[\\d]+\\/[0-1]\\d\\/[0-3]\\d$/.test(v)\n },\n\n options: Function,\n hourOptions: Array,\n minuteOptions: Array,\n secondOptions: Array,\n\n withSeconds: Boolean,\n nowBtn: Boolean\n },\n\n data () {\n const model = __splitDate(\n this.value,\n this.__getMask(),\n this.__getLocale(),\n this.calendar,\n this.__getDefaultDateModel()\n )\n\n let view = 'Hour'\n\n if (model.hour !== null) {\n if (model.minute === null) {\n view = 'Minute'\n }\n else if (this.withSeconds === true && model.second === null) {\n view = 'Second'\n }\n }\n\n return {\n view,\n isAM: model.hour === null || model.hour < 12,\n innerModel: model\n }\n },\n\n watch: {\n value (v) {\n const model = __splitDate(\n v,\n this.computedMask,\n this.computedLocale,\n this.calendar,\n this.defaultDateModel\n )\n\n if (\n model.dateHash !== this.innerModel.dateHash ||\n model.timeHash !== this.innerModel.timeHash\n ) {\n this.innerModel = model\n\n if (model.hour === null) {\n this.view = 'Hour'\n }\n else {\n this.isAM = model.hour < 12\n }\n }\n },\n\n computedMask () {\n this.$nextTick(() => {\n this.__updateValue()\n })\n },\n\n computedLocale () {\n this.$nextTick(() => {\n this.__updateValue()\n })\n }\n },\n\n computed: {\n classes () {\n return `q-time q-time--${this.landscape === true ? 'landscape' : 'portrait'}` +\n (this.isDark === true ? ' q-time--dark q-dark' : '') +\n (this.disable === true ? ' disabled' : (this.readonly === true ? ' q-time--readonly' : '')) +\n (this.bordered === true ? ` q-time--bordered` : '') +\n (this.square === true ? ` q-time--square no-border-radius` : '') +\n (this.flat === true ? ` q-time--flat no-shadow` : '')\n },\n\n stringModel () {\n const time = this.innerModel\n\n return {\n hour: time.hour === null\n ? '--'\n : (\n this.computedFormat24h === true\n ? pad(time.hour)\n : String(\n this.isAM === true\n ? (time.hour === 0 ? 12 : time.hour)\n : (time.hour > 12 ? time.hour - 12 : time.hour)\n )\n ),\n minute: time.minute === null\n ? '--'\n : pad(time.minute),\n second: time.second === null\n ? '--'\n : pad(time.second)\n }\n },\n\n defaultDateModel () {\n return this.__getDefaultDateModel()\n },\n\n computedFormat24h () {\n return this.format24h !== null\n ? this.format24h\n : this.$q.lang.date.format24h\n },\n\n pointerStyle () {\n const\n forHour = this.view === 'Hour',\n divider = forHour === true ? 12 : 60,\n amount = this.innerModel[this.view.toLowerCase()],\n degrees = Math.round(amount * (360 / divider)) - 180\n\n let transform = `rotate(${degrees}deg) translateX(-50%)`\n\n if (\n forHour === true &&\n this.computedFormat24h === true &&\n this.innerModel.hour >= 12\n ) {\n transform += ' scale(.7)'\n }\n\n return { transform }\n },\n\n minLink () {\n return this.innerModel.hour !== null\n },\n\n secLink () {\n return this.minLink === true && this.innerModel.minute !== null\n },\n\n hourInSelection () {\n return this.hourOptions !== void 0\n ? val => this.hourOptions.includes(val)\n : (\n this.options !== void 0\n ? val => this.options(val, null, null)\n : void 0\n )\n },\n\n minuteInSelection () {\n return this.minuteOptions !== void 0\n ? val => this.minuteOptions.includes(val)\n : (\n this.options !== void 0\n ? val => this.options(this.innerModel.hour, val, null)\n : void 0\n )\n },\n\n secondInSelection () {\n return this.secondOptions !== void 0\n ? val => this.secondOptions.includes(val)\n : (\n this.options !== void 0\n ? val => this.options(this.innerModel.hour, this.innerModel.minute, val)\n : void 0\n )\n },\n\n hourSnappingGrid () {\n return this.__getSnapGrid(this.hourInSelection, 24)\n },\n\n minuteSnappingGrid () {\n return this.__getSnapGrid(this.minuteInSelection, 60)\n },\n\n secondSnappingGrid () {\n return this.__getSnapGrid(this.secondInSelection, 60)\n },\n\n positions () {\n let start, end, offset = 0, step = 1, inSel\n\n if (this.view === 'Hour') {\n inSel = this.hourInSelection\n\n if (this.computedFormat24h === true) {\n start = 0\n end = 23\n }\n else {\n start = 0\n end = 11\n\n if (this.isAM === false) {\n offset = 12\n }\n }\n }\n else {\n start = 0\n end = 55\n step = 5\n\n if (this.view === 'Minute') {\n inSel = this.minuteInSelection\n }\n else {\n inSel = this.secondInSelection\n }\n }\n\n const pos = []\n\n for (let val = start, index = start; val <= end; val += step, index++) {\n const\n actualVal = val + offset,\n disable = inSel !== void 0 && inSel(actualVal) === false,\n label = this.view === 'Hour' && val === 0\n ? (this.format24h === true ? '00' : '12')\n : val\n\n pos.push({ val: actualVal, index, disable, label })\n }\n\n return pos\n }\n },\n\n methods: {\n setNow () {\n this.__updateValue({\n ...this.__getCurrentDate(),\n ...this.__getCurrentTime()\n })\n this.view = 'Hour'\n },\n\n __getSnapGrid (inSel, count) {\n if (inSel === void 0) {\n return\n }\n\n const snappingGrid = [ ...Array(count).keys() ].map(inSel)\n\n let consecutiveGaps = (count - 1) - snappingGrid.lastIndexOf(true)\n if (consecutiveGaps === -1) {\n return\n }\n\n for (let i = 0; i < count; i++) {\n if (snappingGrid[i] === true) {\n if (consecutiveGaps) {\n if (consecutiveGaps > 1) {\n const sideCount = Math.floor(consecutiveGaps / 2)\n\n const previousVal = ((i - consecutiveGaps - 1) + count) % count\n const previousValStart = ((i - consecutiveGaps) + count) % count\n for (let j = 0, h = previousValStart; j < sideCount; j++, (h = (previousValStart + j + count) % count)) {\n snappingGrid[h] = previousVal\n }\n\n const currentVal = i\n const currentValStart = ((i - sideCount) + count) % count\n for (let j = 0, h = currentValStart; j < sideCount; j++, (h = (currentValStart + j + count) % count)) {\n snappingGrid[h] = currentVal\n }\n } else {\n const previousPosition = ((i - 1) + count) % count\n snappingGrid[previousPosition] = previousPosition\n }\n\n consecutiveGaps = 0\n }\n\n snappingGrid[i] = i\n }\n else if (snappingGrid[i] === false) {\n consecutiveGaps++\n }\n }\n\n return snappingGrid\n },\n\n __getMask () {\n return this.calendar !== 'persian' && this.mask !== null\n ? this.mask\n : `HH:mm${this.withSeconds === true ? ':ss' : ''}`\n },\n\n __getDefaultDateModel () {\n if (typeof this.defaultDate !== 'string') {\n const date = this.__getCurrentDate()\n date.dateHash = date.year + '/' + pad(date.month) + '/' + pad(date.day)\n return date\n }\n\n return __splitDate(this.defaultDate, 'YYYY/MM/DD', void 0, this.calendar)\n },\n\n __click (evt) {\n if (this._isBeingDestroyed === true || this._isDestroyed === true) {\n return\n }\n\n // __activate() has already updated the offset\n // (on desktop only, through mousedown event)\n if (this.$q.platform.is.desktop !== true) {\n this.__updateClock(evt, this.__getClockRect())\n }\n\n this.__goToNextView()\n },\n\n __activate (evt) {\n if (this._isBeingDestroyed !== true && this._isDestroyed !== true) {\n this.__updateClock(evt, this.__getClockRect())\n }\n },\n\n __getClockRect () {\n const\n clock = this.$refs.clock,\n { top, left, width } = clock.getBoundingClientRect(),\n dist = width / 2\n\n return {\n top: top + dist,\n left: left + dist,\n dist: dist * 0.7\n }\n },\n\n __goToNextView () {\n if (this.view === 'Hour') {\n this.view = 'Minute'\n }\n else if (this.withSeconds && this.view === 'Minute') {\n this.view = 'Second'\n }\n },\n\n __drag (event) {\n // cases when on a popup getting closed\n // on previously emitted value\n if (this._isBeingDestroyed === true || this._isDestroyed === true) {\n return\n }\n\n if (event.isFirst === true) {\n this.draggingClockRect = this.__getClockRect()\n this.dragCache = this.__updateClock(event.evt, this.draggingClockRect)\n return\n }\n\n this.dragCache = this.__updateClock(event.evt, this.draggingClockRect, this.dragCache)\n\n if (event.isFinal === true) {\n this.draggingClockRect = false\n this.dragCache = null\n this.__goToNextView()\n }\n },\n\n __updateClock (evt, clockRect, cacheVal) {\n const\n pos = position(evt),\n height = Math.abs(pos.top - clockRect.top),\n distance = Math.sqrt(\n Math.pow(Math.abs(pos.top - clockRect.top), 2) +\n Math.pow(Math.abs(pos.left - clockRect.left), 2)\n )\n let\n val,\n angle = Math.asin(height / distance) * (180 / Math.PI)\n\n if (pos.top < clockRect.top) {\n angle = clockRect.left < pos.left ? 90 - angle : 270 + angle\n }\n else {\n angle = clockRect.left < pos.left ? angle + 90 : 270 - angle\n }\n\n if (this.view === 'Hour') {\n val = Math.round(angle / 30)\n\n if (this.computedFormat24h === true) {\n if (distance < clockRect.dist) {\n if (val < 12) {\n val += 12\n }\n }\n else if (val === 12) {\n val = 0\n }\n this.isAM = val < 12\n }\n else if (this.isAM === true && val === 12) {\n val = 0\n }\n else if (this.isAM === false && val !== 12) {\n val += 12\n }\n\n if (this.hourSnappingGrid !== void 0) {\n val = this.hourSnappingGrid[val]\n }\n }\n else {\n val = Math.round(angle / 6) % 60\n\n if (this.view === 'Minute' && this.minuteSnappingGrid !== void 0) {\n val = this.minuteSnappingGrid[val]\n }\n else if (this.view === 'Second' && this.secondSnappingGrid !== void 0) {\n val = this.secondSnappingGrid[val]\n }\n }\n\n if (cacheVal === val) {\n return val\n }\n\n const opt = this[`${this.view.toLowerCase()}InSelection`]\n\n if (opt !== void 0 && opt(val) !== true) {\n return\n }\n\n this[`__set${this.view}`](val)\n return val\n },\n\n __onKeyupHour (e) {\n if (e.keyCode === 13) { // ENTER\n this.view = 'Hour'\n }\n else {\n const\n wrap = this.computedFormat24h === true ? 24 : 12,\n offset = this.computedFormat24h !== true && this.isAM === false ? 12 : 0\n\n if (e.keyCode === 37) { // ARROW LEFT\n this.__setHour(offset + (24 + this.innerModel.hour - 1) % wrap)\n }\n else if (e.keyCode === 39) { // ARROW RIGHT\n this.__setHour(offset + (24 + this.innerModel.hour + 1) % wrap)\n }\n }\n },\n\n __onKeyupMinute (e) {\n if (e.keyCode === 13) { // ENTER\n this.view = 'Minute'\n }\n else if (e.keyCode === 37) { // ARROW LEFT\n this.__setMinute((60 + this.innerModel.minute - 1) % 60)\n }\n else if (e.keyCode === 39) { // ARROW RIGHT\n this.__setMinute((60 + this.innerModel.minute + 1) % 60)\n }\n },\n\n __onKeyupSecond (e) {\n if (e.keyCode === 13) { // ENTER\n this.view = 'Second'\n }\n else if (e.keyCode === 37) { // ARROW LEFT\n this.__setSecond((60 + this.innerModel.second - 1) % 60)\n }\n else if (e.keyCode === 39) { // ARROW RIGHT\n this.__setSecond((60 + this.innerModel.second + 1) % 60)\n }\n },\n\n __getHeader (h) {\n const label = [\n h('div', {\n staticClass: 'q-time__link',\n class: this.view === 'Hour' ? 'q-time__link--active' : 'cursor-pointer',\n attrs: { tabindex: this.computedTabindex },\n on: cache(this, 'vH', {\n click: () => { this.view = 'Hour' },\n keyup: this.__onKeyupHour\n })\n }, [ this.stringModel.hour ]),\n\n h('div', [ ':' ]),\n\n h(\n 'div',\n this.minLink === true\n ? {\n staticClass: 'q-time__link',\n class: this.view === 'Minute' ? 'q-time__link--active' : 'cursor-pointer',\n attrs: { tabindex: this.computedTabindex },\n on: cache(this, 'vM', {\n click: () => { this.view = 'Minute' },\n keyup: this.__onKeyupMinute\n })\n }\n : { staticClass: 'q-time__link' },\n [ this.stringModel.minute ]\n )\n ]\n\n if (this.withSeconds === true) {\n label.push(\n h('div', [ ':' ]),\n\n h(\n 'div',\n this.secLink === true\n ? {\n staticClass: 'q-time__link',\n class: this.view === 'Second' ? 'q-time__link--active' : 'cursor-pointer',\n attrs: { tabindex: this.computedTabindex },\n on: cache(this, 'vS', {\n click: () => { this.view = 'Second' },\n keyup: this.__onKeyupSecond\n })\n }\n : { staticClass: 'q-time__link' },\n [ this.stringModel.second ]\n )\n )\n }\n\n return h('div', {\n staticClass: 'q-time__header flex flex-center no-wrap',\n class: this.headerClass\n }, [\n h('div', {\n staticClass: 'q-time__header-label row items-center no-wrap',\n attrs: { dir: 'ltr' }\n }, label),\n\n this.computedFormat24h === false ? h('div', {\n staticClass: 'q-time__header-ampm column items-between no-wrap'\n }, [\n h('div', {\n staticClass: 'q-time__link',\n class: this.isAM === true ? 'q-time__link--active' : 'cursor-pointer',\n attrs: { tabindex: this.computedTabindex },\n on: cache(this, 'AM', {\n click: this.__setAm,\n keyup: e => { e.keyCode === 13 && this.__setAm() }\n })\n }, [ 'AM' ]),\n\n h('div', {\n staticClass: 'q-time__link',\n class: this.isAM !== true ? 'q-time__link--active' : 'cursor-pointer',\n attrs: { tabindex: this.computedTabindex },\n on: cache(this, 'PM', {\n click: this.__setPm,\n keyup: e => { e.keyCode === 13 && this.__setPm() }\n })\n }, [ 'PM' ])\n ]) : null\n ])\n },\n\n __getClock (h) {\n const\n view = this.view.toLowerCase(),\n current = this.innerModel[view]\n\n return h('div', {\n staticClass: 'q-time__content col relative-position'\n }, [\n h('transition', {\n props: { name: 'q-transition--scale' }\n }, [\n h('div', {\n key: 'clock' + this.view,\n staticClass: 'q-time__container-parent absolute-full'\n }, [\n h('div', {\n ref: 'clock',\n staticClass: 'q-time__container-child fit overflow-hidden'\n }, [\n h('div', {\n staticClass: 'q-time__clock cursor-pointer non-selectable',\n on: cache(this, 'click', {\n click: this.__click,\n mousedown: this.__activate\n }),\n directives: cache(this, 'touch', [{\n name: 'touch-pan',\n value: this.__drag,\n modifiers: {\n stop: true,\n prevent: true,\n mouse: true\n }\n }])\n }, [\n h('div', { staticClass: 'q-time__clock-circle fit' }, [\n h('div', {\n staticClass: 'q-time__clock-pointer',\n style: this.pointerStyle,\n class: this.innerModel[view] === null ? 'hidden' : (this.color !== void 0 ? `text-${this.color}` : '')\n }),\n\n this.positions.map(pos => h('div', {\n staticClass: `q-time__clock-position row flex-center q-time__clock-pos-${pos.index}`,\n class: pos.val === current\n ? this.headerClass.concat(' q-time__clock-position--active')\n : (pos.disable === true ? 'q-time__clock-position--disable' : null)\n }, [ h('span', [ pos.label ]) ]))\n ])\n ])\n ])\n ])\n ]),\n\n this.nowBtn === true ? h(QBtn, {\n staticClass: 'q-time__now-button absolute',\n props: {\n icon: this.$q.iconSet.datetime.now,\n unelevated: true,\n size: 'sm',\n round: true,\n color: this.color,\n textColor: this.textColor,\n tabindex: this.computedTabindex\n },\n on: cache(this, 'now', {\n click: this.setNow\n })\n }) : null\n ])\n },\n\n __setHour (hour) {\n if (this.innerModel.hour !== hour) {\n this.innerModel.hour = hour\n this.innerModel.minute = null\n this.innerModel.second = null\n }\n },\n\n __setMinute (minute) {\n if (this.innerModel.minute !== minute) {\n this.innerModel.minute = minute\n this.innerModel.second = null\n this.withSeconds !== true && this.__updateValue({ minute })\n }\n },\n\n __setSecond (second) {\n this.innerModel.second !== second && this.__updateValue({ second })\n },\n\n __setAm () {\n if (this.isAM) { return }\n\n this.isAM = true\n\n if (this.innerModel.hour === null) { return }\n this.innerModel.hour -= 12\n this.__verifyAndUpdate()\n },\n\n __setPm () {\n if (!this.isAM) { return }\n\n this.isAM = false\n\n if (this.innerModel.hour === null) { return }\n this.innerModel.hour += 12\n this.__verifyAndUpdate()\n },\n\n __verifyAndUpdate () {\n if (this.hourInSelection !== void 0 && this.hourInSelection(this.innerModel.hour) !== true) {\n this.innerModel = __splitDate()\n this.isAM = true\n this.view = 'Hour'\n return\n }\n\n if (this.minuteInSelection !== void 0 && this.minuteInSelection(this.innerModel.minute) !== true) {\n this.innerModel.minute = null\n this.innerModel.second = null\n this.view = 'Minute'\n return\n }\n\n if (this.withSeconds === true && this.secondInSelection !== void 0 && this.secondInSelection(this.innerModel.second) !== true) {\n this.innerModel.second = null\n this.view = 'Second'\n return\n }\n\n if (this.innerModel.hour === null || this.innerModel.minute === null || (this.withSeconds === true && this.innerModel.second === null)) {\n return\n }\n\n this.__updateValue()\n },\n\n __updateValue (obj) {\n const date = Object.assign({ ...this.innerModel }, obj)\n\n const val = this.calendar === 'persian'\n ? pad(date.hour) + ':' +\n pad(date.minute) +\n (this.withSeconds === true ? ':' + pad(date.second) : '')\n : formatDate(\n new Date(\n date.year,\n date.month === null ? null : date.month - 1,\n date.day,\n date.hour,\n date.minute,\n date.second,\n date.millisecond\n ),\n this.computedMask,\n this.computedLocale,\n date.year,\n date.timezoneOffset\n )\n\n date.changed = val !== this.value\n this.$emit('input', val, date)\n }\n },\n\n render (h) {\n const child = [\n this.__getClock(h)\n ]\n\n const def = slot(this, 'default')\n def !== void 0 && child.push(\n h('div', { staticClass: 'q-time__actions' }, def)\n )\n\n if (this.name !== void 0 && this.disable !== true) {\n this.__injectFormInput(child, 'push')\n }\n\n return h('div', {\n class: this.classes,\n on: { ...this.qListeners },\n attrs: { tabindex: -1 }\n }, [\n this.__getHeader(h),\n h('div', { staticClass: 'q-time__main col overflow-auto' }, child)\n ])\n }\n})\n","import Vue from 'vue'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QTimeline',\n\n mixins: [ DarkMixin, ListenersMixin ],\n\n provide () {\n return {\n __timeline: this\n }\n },\n\n props: {\n color: {\n type: String,\n default: 'primary'\n },\n side: {\n type: String,\n default: 'right',\n validator: v => ['left', 'right'].includes(v)\n },\n layout: {\n type: String,\n default: 'dense',\n validator: v => ['dense', 'comfortable', 'loose'].includes(v)\n }\n },\n\n computed: {\n classes () {\n return `q-timeline--${this.layout} q-timeline--${this.layout}--${this.side}` +\n (this.isDark === true ? ' q-timeline--dark' : '')\n }\n },\n\n render (h) {\n return h('ul', {\n staticClass: 'q-timeline',\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot, uniqueSlot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QTimelineEntry',\n\n inject: {\n __timeline: {\n default () {\n console.error('QTimelineEntry needs to be child of QTimeline')\n }\n }\n },\n\n mixins: [ ListenersMixin ],\n\n props: {\n heading: Boolean,\n tag: {\n type: String,\n default: 'h3'\n },\n side: {\n type: String,\n default: 'right',\n validator: v => ['left', 'right'].includes(v)\n },\n\n icon: String,\n avatar: String,\n\n color: String,\n\n title: String,\n subtitle: String,\n body: String\n },\n\n computed: {\n colorClass () {\n return `text-${this.color || this.__timeline.color}`\n },\n\n classes () {\n return `q-timeline__entry--${this.side}` +\n (this.icon !== void 0 || this.avatar !== void 0 ? ' q-timeline__entry--icon' : '')\n },\n\n reverse () {\n return this.__timeline.layout === 'comfortable' && this.__timeline.side === 'left'\n }\n },\n\n render (h) {\n const child = uniqueSlot(this, 'default', [])\n\n if (this.body !== void 0) {\n child.unshift(this.body)\n }\n\n if (this.heading === true) {\n const content = [\n h('div'),\n h('div'),\n h(\n this.tag,\n { staticClass: 'q-timeline__heading-title' },\n child\n )\n ]\n\n return h('div', {\n staticClass: 'q-timeline__heading',\n on: { ...this.qListeners }\n }, this.reverse === true ? content.reverse() : content)\n }\n\n let dot\n\n if (this.icon !== void 0) {\n dot = [\n h(QIcon, {\n staticClass: 'row items-center justify-center',\n props: { name: this.icon }\n })\n ]\n }\n else if (this.avatar !== void 0) {\n dot = [\n h('img', {\n staticClass: 'q-timeline__dot-img',\n domProps: { src: this.avatar }\n })\n ]\n }\n\n const content = [\n h('div', { staticClass: 'q-timeline__subtitle' }, [\n h('span', slot(this, 'subtitle', [ this.subtitle ]))\n ]),\n\n h('div', {\n staticClass: 'q-timeline__dot',\n class: this.colorClass\n }, dot),\n\n h('div', { staticClass: 'q-timeline__content' }, [\n h('h6', { staticClass: 'q-timeline__title' }, slot(this, 'title', [ this.title ]))\n ].concat(child))\n ]\n\n return h('li', {\n staticClass: 'q-timeline__entry',\n class: this.classes,\n on: { ...this.qListeners }\n }, this.reverse === true ? content.reverse() : content)\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QToolbar',\n\n mixins: [ ListenersMixin ],\n\n props: {\n inset: Boolean\n },\n\n render (h) {\n return h('div', {\n staticClass: 'q-toolbar row no-wrap items-center',\n class: this.inset ? 'q-toolbar--inset' : null,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { slot } from '../../utils/slot.js'\n\nexport default Vue.extend({\n name: 'QToolbarTitle',\n\n mixins: [ ListenersMixin ],\n\n props: {\n shrink: Boolean\n },\n\n computed: {\n classes () {\n return 'q-toolbar__title ellipsis' +\n (this.shrink === true ? ' col-shrink' : '')\n }\n },\n\n render (h) {\n return h('div', {\n class: this.classes,\n on: { ...this.qListeners }\n }, slot(this, 'default'))\n }\n})\n","import Vue from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QCheckbox from '../checkbox/QCheckbox.js'\nimport QSlideTransition from '../slide-transition/QSlideTransition.js'\nimport QSpinner from '../spinner/QSpinner.js'\nimport DarkMixin from '../../mixins/dark.js'\n\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { shouldIgnoreKey } from '../../utils/key-composition.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QTree',\n\n mixins: [ DarkMixin ],\n\n props: {\n nodes: {\n type: Array,\n required: true\n },\n nodeKey: {\n type: String,\n required: true\n },\n labelKey: {\n type: String,\n default: 'label'\n },\n childrenKey: {\n type: String,\n default: 'children'\n },\n\n color: String,\n controlColor: String,\n textColor: String,\n selectedColor: String,\n\n icon: String,\n\n tickStrategy: {\n type: String,\n default: 'none',\n validator: v => ['none', 'strict', 'leaf', 'leaf-filtered'].includes(v)\n },\n ticked: Array, // sync\n expanded: Array, // sync\n selected: {}, // sync\n\n defaultExpandAll: Boolean,\n accordion: Boolean,\n\n filter: String,\n filterMethod: {\n type: Function,\n default (node, filter) {\n const filt = filter.toLowerCase()\n return node[this.labelKey] &&\n node[this.labelKey].toLowerCase().indexOf(filt) > -1\n }\n },\n\n duration: Number,\n noConnectors: Boolean,\n\n noNodesLabel: String,\n noResultsLabel: String\n },\n\n computed: {\n classes () {\n return `q-tree` +\n (this.noConnectors === true ? ` q-tree--no-connectors` : '') +\n (this.isDark === true ? ` q-tree--dark` : '') +\n (this.color !== void 0 ? ` text-${this.color}` : '')\n },\n\n hasSelection () {\n return this.selected !== void 0\n },\n\n computedIcon () {\n return this.icon || this.$q.iconSet.tree.icon\n },\n\n computedControlColor () {\n return this.controlColor || this.color\n },\n\n textColorClass () {\n if (this.textColor !== void 0) {\n return `text-${this.textColor}`\n }\n },\n\n selectedColorClass () {\n const color = this.selectedColor || this.color\n if (color) {\n return `text-${color}`\n }\n },\n\n meta () {\n const meta = {}\n\n const travel = (node, parent) => {\n const tickStrategy = node.tickStrategy || (parent ? parent.tickStrategy : this.tickStrategy)\n const\n key = node[this.nodeKey],\n isParent = node[this.childrenKey] && node[this.childrenKey].length > 0,\n isLeaf = isParent !== true,\n selectable = node.disabled !== true && this.hasSelection === true && node.selectable !== false,\n expandable = node.disabled !== true && node.expandable !== false,\n hasTicking = tickStrategy !== 'none',\n strictTicking = tickStrategy === 'strict',\n leafFilteredTicking = tickStrategy === 'leaf-filtered',\n leafTicking = tickStrategy === 'leaf' || tickStrategy === 'leaf-filtered'\n\n let tickable = node.disabled !== true && node.tickable !== false\n if (leafTicking === true && tickable === true && parent && parent.tickable !== true) {\n tickable = false\n }\n\n let lazy = node.lazy\n if (lazy && this.lazy[key]) {\n lazy = this.lazy[key]\n }\n\n const m = {\n key,\n parent,\n isParent,\n isLeaf,\n lazy,\n disabled: node.disabled,\n link: node.disabled !== true && (selectable === true || (expandable === true && (isParent === true || lazy === true))),\n children: [],\n matchesFilter: this.filter ? this.filterMethod(node, this.filter) : true,\n\n selected: key === this.selected && selectable === true,\n selectable,\n expanded: isParent === true ? this.innerExpanded.includes(key) : false,\n expandable,\n noTick: node.noTick === true || (strictTicking !== true && lazy && lazy !== 'loaded'),\n tickable,\n tickStrategy,\n hasTicking,\n strictTicking,\n leafFilteredTicking,\n leafTicking,\n ticked: strictTicking === true\n ? this.innerTicked.includes(key)\n : (isLeaf === true ? this.innerTicked.includes(key) : false)\n }\n\n meta[key] = m\n\n if (isParent === true) {\n m.children = node[this.childrenKey].map(n => travel(n, m))\n\n if (this.filter) {\n if (m.matchesFilter !== true) {\n m.matchesFilter = m.children.some(n => n.matchesFilter)\n }\n else if (\n m.noTick !== true &&\n m.disabled !== true &&\n m.tickable === true &&\n leafFilteredTicking === true &&\n m.children.every(n => n.matchesFilter !== true || n.noTick === true || n.tickable !== true) === true\n ) {\n m.tickable = false\n }\n }\n\n if (m.matchesFilter === true) {\n if (m.noTick !== true && strictTicking !== true && m.children.every(n => n.noTick) === true) {\n m.noTick = true\n }\n\n if (leafTicking) {\n m.ticked = false\n m.indeterminate = m.children.some(node => node.indeterminate === true)\n m.tickable = m.tickable === true && m.children.some(node => node.tickable)\n\n if (m.indeterminate !== true) {\n const sel = m.children\n .reduce((acc, meta) => meta.ticked === true ? acc + 1 : acc, 0)\n\n if (sel === m.children.length) {\n m.ticked = true\n }\n else if (sel > 0) {\n m.indeterminate = true\n }\n }\n\n if (m.indeterminate === true) {\n m.indeterminateNextState = m.children\n .every(meta => meta.tickable !== true || meta.ticked !== true)\n }\n }\n }\n }\n\n return m\n }\n\n this.nodes.forEach(node => travel(node, null))\n return meta\n }\n },\n\n data () {\n return {\n lazy: {},\n innerTicked: this.ticked || [],\n innerExpanded: this.expanded || []\n }\n },\n\n watch: {\n ticked (val) {\n this.innerTicked = val\n },\n\n expanded (val) {\n this.innerExpanded = val\n }\n },\n\n methods: {\n getNodeByKey (key) {\n const reduce = [].reduce\n\n const find = (result, node) => {\n if (result || !node) {\n return result\n }\n if (Array.isArray(node) === true) {\n return reduce.call(Object(node), find, result)\n }\n if (node[this.nodeKey] === key) {\n return node\n }\n if (node[this.childrenKey]) {\n return find(null, node[this.childrenKey])\n }\n }\n\n return find(null, this.nodes)\n },\n\n getTickedNodes () {\n return this.innerTicked.map(key => this.getNodeByKey(key))\n },\n\n getExpandedNodes () {\n return this.innerExpanded.map(key => this.getNodeByKey(key))\n },\n\n isExpanded (key) {\n return key && this.meta[key]\n ? this.meta[key].expanded\n : false\n },\n\n collapseAll () {\n if (this.expanded !== void 0) {\n this.$emit('update:expanded', [])\n }\n else {\n this.innerExpanded = []\n }\n },\n\n expandAll () {\n const\n expanded = this.innerExpanded,\n travel = node => {\n if (node[this.childrenKey] && node[this.childrenKey].length > 0) {\n if (node.expandable !== false && node.disabled !== true) {\n expanded.push(node[this.nodeKey])\n node[this.childrenKey].forEach(travel)\n }\n }\n }\n\n this.nodes.forEach(travel)\n\n if (this.expanded !== void 0) {\n this.$emit('update:expanded', expanded)\n }\n else {\n this.innerExpanded = expanded\n }\n },\n\n setExpanded (key, state, node = this.getNodeByKey(key), meta = this.meta[key]) {\n if (meta.lazy && meta.lazy !== 'loaded') {\n if (meta.lazy === 'loading') {\n return\n }\n\n this.$set(this.lazy, key, 'loading')\n this.$emit('lazy-load', {\n node,\n key,\n done: children => {\n this.lazy[key] = 'loaded'\n if (children) {\n this.$set(node, this.childrenKey, children)\n }\n this.$nextTick(() => {\n const m = this.meta[key]\n if (m && m.isParent === true) {\n this.__setExpanded(key, true)\n }\n })\n },\n fail: () => {\n this.$delete(this.lazy, key)\n }\n })\n }\n else if (meta.isParent === true && meta.expandable === true) {\n this.__setExpanded(key, state)\n }\n },\n\n __setExpanded (key, state) {\n let target = this.innerExpanded\n const emit = this.expanded !== void 0\n\n if (emit === true) {\n target = target.slice()\n }\n\n if (state) {\n if (this.accordion) {\n if (this.meta[key]) {\n const collapse = []\n if (this.meta[key].parent) {\n this.meta[key].parent.children.forEach(m => {\n if (m.key !== key && m.expandable === true) {\n collapse.push(m.key)\n }\n })\n }\n else {\n this.nodes.forEach(node => {\n const k = node[this.nodeKey]\n if (k !== key) {\n collapse.push(k)\n }\n })\n }\n if (collapse.length > 0) {\n target = target.filter(k => collapse.includes(k) === false)\n }\n }\n }\n\n target = target.concat([ key ])\n .filter((key, index, self) => self.indexOf(key) === index)\n }\n else {\n target = target.filter(k => k !== key)\n }\n\n if (emit === true) {\n this.$emit(`update:expanded`, target)\n }\n else {\n this.innerExpanded = target\n }\n },\n\n isTicked (key) {\n return key && this.meta[key]\n ? this.meta[key].ticked\n : false\n },\n\n setTicked (keys, state) {\n let target = this.innerTicked\n const emit = this.ticked !== void 0\n\n if (emit === true) {\n target = target.slice()\n }\n\n if (state) {\n target = target.concat(keys)\n .filter((key, index, self) => self.indexOf(key) === index)\n }\n else {\n target = target.filter(k => keys.includes(k) === false)\n }\n\n if (emit === true) {\n this.$emit(`update:ticked`, target)\n }\n },\n\n __getSlotScope (node, meta, key) {\n const scope = { tree: this, node, key, color: this.color, dark: this.isDark }\n\n Object.defineProperty(scope, 'expanded', {\n get: () => { return meta.expanded },\n set: val => { val !== meta.expanded && this.setExpanded(key, val) },\n configurable: true,\n enumerable: true\n })\n Object.defineProperty(scope, 'ticked', {\n get: () => { return meta.ticked },\n set: val => { val !== meta.ticked && this.setTicked([ key ], val) },\n configurable: true,\n enumerable: true\n })\n\n return scope\n },\n\n __getChildren (h, nodes) {\n return (\n this.filter\n ? nodes.filter(n => this.meta[n[this.nodeKey]].matchesFilter)\n : nodes\n ).map(child => this.__getNode(h, child))\n },\n\n __getNodeMedia (h, node) {\n if (node.icon !== void 0) {\n return h(QIcon, {\n staticClass: `q-tree__icon q-mr-sm`,\n props: { name: node.icon, color: node.iconColor }\n })\n }\n const src = node.img || node.avatar\n if (src) {\n return h('img', {\n staticClass: `q-tree__${node.img ? 'img' : 'avatar'} q-mr-sm`,\n attrs: { src }\n })\n }\n },\n\n __getNode (h, node) {\n const\n key = node[this.nodeKey],\n meta = this.meta[key],\n header = node.header\n ? this.$scopedSlots[`header-${node.header}`] || this.$scopedSlots['default-header']\n : this.$scopedSlots['default-header']\n\n const children = meta.isParent === true\n ? this.__getChildren(h, node[this.childrenKey])\n : []\n\n const isParent = children.length > 0 || (meta.lazy && meta.lazy !== 'loaded')\n\n let body = node.body\n ? this.$scopedSlots[`body-${node.body}`] || this.$scopedSlots['default-body']\n : this.$scopedSlots['default-body']\n const slotScope = header !== void 0 || body !== void 0\n ? this.__getSlotScope(node, meta, key)\n : null\n\n if (body !== void 0) {\n body = h('div', { staticClass: 'q-tree__node-body relative-position' }, [\n h('div', { class: this.textColorClass }, [\n body(slotScope)\n ])\n ])\n }\n\n return h('div', {\n key,\n staticClass: 'q-tree__node relative-position',\n class: { 'q-tree__node--parent': isParent, 'q-tree__node--child': !isParent }\n }, [\n h('div', {\n staticClass: 'q-tree__node-header relative-position row no-wrap items-center',\n class: {\n 'q-tree__node--link q-hoverable q-focusable': meta.link,\n 'q-tree__node--selected': meta.selected,\n 'q-tree__node--disabled': meta.disabled\n },\n attrs: { tabindex: meta.link ? 0 : -1 },\n on: {\n click: (e) => {\n this.__onClick(node, meta, e)\n },\n keypress: e => {\n if (shouldIgnoreKey(e) !== true) {\n if (e.keyCode === 13) { this.__onClick(node, meta, e, true) }\n else if (e.keyCode === 32) { this.__onExpandClick(node, meta, e, true) }\n }\n }\n }\n }, [\n h('div', { staticClass: 'q-focus-helper', attrs: { tabindex: -1 }, ref: `blurTarget_${meta.key}` }),\n\n meta.lazy === 'loading'\n ? h(QSpinner, {\n staticClass: 'q-tree__spinner q-mr-xs',\n props: { color: this.computedControlColor }\n })\n : (\n isParent === true\n ? h(QIcon, {\n staticClass: 'q-tree__arrow q-mr-xs',\n class: { 'q-tree__arrow--rotate': meta.expanded },\n props: { name: this.computedIcon },\n on: {\n click: e => {\n this.__onExpandClick(node, meta, e)\n }\n }\n })\n : null\n ),\n\n meta.hasTicking === true && meta.noTick !== true\n ? h(QCheckbox, {\n staticClass: 'q-mr-xs',\n props: {\n value: meta.indeterminate === true ? null : meta.ticked,\n color: this.computedControlColor,\n dark: this.isDark,\n dense: true,\n keepColor: true,\n disable: meta.tickable !== true\n },\n on: {\n keydown: stopAndPrevent,\n input: v => {\n this.__onTickedClick(meta, v)\n }\n }\n })\n : null,\n\n h('div', {\n 'staticClass': 'q-tree__node-header-content col row no-wrap items-center',\n class: meta.selected ? this.selectedColorClass : this.textColorClass\n }, [\n header\n ? header(slotScope)\n : [\n this.__getNodeMedia(h, node),\n h('div', node[this.labelKey])\n ]\n ])\n ]),\n\n isParent === true\n ? h(QSlideTransition, {\n props: { duration: this.duration },\n on: cache(this, 'slide', {\n show: () => { this.$emit('after-show') },\n hide: () => { this.$emit('after-hide') }\n })\n }, [\n h('div', {\n staticClass: 'q-tree__node-collapsible',\n class: this.textColorClass,\n directives: [{ name: 'show', value: meta.expanded }]\n }, [\n body,\n\n h('div', {\n staticClass: 'q-tree__children',\n class: { 'q-tree__node--disabled': meta.disabled }\n }, children)\n ])\n ])\n : body\n ])\n },\n\n __blur (key) {\n const blurTarget = this.$refs[`blurTarget_${key}`]\n blurTarget !== void 0 && blurTarget.focus()\n },\n\n __onClick (node, meta, e, keyboard) {\n keyboard !== true && this.__blur(meta.key)\n\n if (this.hasSelection) {\n if (meta.selectable) {\n this.$emit('update:selected', meta.key !== this.selected ? meta.key : null)\n }\n }\n else {\n this.__onExpandClick(node, meta, e, keyboard)\n }\n\n if (typeof node.handler === 'function') {\n node.handler(node)\n }\n },\n\n __onExpandClick (node, meta, e, keyboard) {\n if (e !== void 0) {\n stopAndPrevent(e)\n }\n keyboard !== true && this.__blur(meta.key)\n this.setExpanded(meta.key, !meta.expanded, node, meta)\n },\n\n __onTickedClick (meta, state) {\n if (meta.indeterminate === true) {\n state = meta.indeterminateNextState\n }\n if (meta.strictTicking) {\n this.setTicked([ meta.key ], state)\n }\n else if (meta.leafTicking) {\n const keys = []\n const travel = meta => {\n if (meta.isParent) {\n if (state !== true && meta.noTick !== true && meta.tickable === true) {\n keys.push(meta.key)\n }\n if (meta.leafTicking === true) {\n meta.children.forEach(travel)\n }\n }\n else if (\n meta.noTick !== true &&\n meta.tickable === true &&\n (meta.leafFilteredTicking !== true || meta.matchesFilter === true)\n ) {\n keys.push(meta.key)\n }\n }\n travel(meta)\n this.setTicked(keys, state)\n }\n }\n },\n\n render (h) {\n const children = this.__getChildren(h, this.nodes)\n\n return h(\n 'div', {\n class: this.classes\n },\n children.length === 0\n ? (\n this.filter\n ? this.noResultsLabel || this.$q.lang.tree.noResults\n : this.noNodesLabel || this.$q.lang.tree.noNodes\n )\n : children\n )\n },\n\n created () {\n this.defaultExpandAll === true && this.expandAll()\n }\n})\n","import Vue from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport QIcon from '../icon/QIcon.js'\nimport QSpinner from '../spinner/QSpinner.js'\nimport QCircularProgress from '../circular-progress/QCircularProgress.js'\n\nimport FileMixin from '../../mixins/file.js'\nimport DarkMixin from '../../mixins/dark.js'\n\nimport { stop } from '../../utils/event.js'\nimport { humanStorageSize } from '../../utils/format.js'\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'QUploaderBase',\n\n mixins: [ DarkMixin, FileMixin ],\n\n props: {\n label: String,\n\n color: String,\n textColor: String,\n\n square: Boolean,\n flat: Boolean,\n bordered: Boolean,\n\n noThumbnails: Boolean,\n autoUpload: Boolean,\n hideUploadBtn: Boolean,\n\n disable: Boolean,\n readonly: Boolean\n },\n\n provide () {\n return {\n __qUploaderGetInput: this.__getInputControl\n }\n },\n\n data () {\n return {\n files: [],\n queuedFiles: [],\n uploadedFiles: [],\n dnd: false,\n expanded: false,\n\n uploadSize: 0,\n uploadedSize: 0\n }\n },\n\n watch: {\n isUploading (newVal, oldVal) {\n if (oldVal === false && newVal === true) {\n this.$emit('start')\n }\n else if (oldVal === true && newVal === false) {\n this.$emit('finish')\n }\n }\n },\n\n computed: {\n /*\n * When extending:\n * Required : isUploading\n * Optional: isBusy\n */\n\n canUpload () {\n return this.editable === true &&\n this.isBusy !== true &&\n this.isUploading !== true &&\n this.queuedFiles.length > 0\n },\n\n canAddFiles () {\n return (\n this.editable === true &&\n this.isUploading !== true &&\n // if single selection and no files are queued:\n (this.multiple === true || this.queuedFiles.length === 0) &&\n // if max-files is set and current number of files does not exceeds it:\n (this.maxFiles === void 0 || this.files.length < this.maxFilesNumber) &&\n // if max-total-size is set and current upload size does not exceeds it:\n (this.maxTotalSize === void 0 || this.uploadSize < this.maxTotalSizeNumber)\n )\n },\n\n uploadProgress () {\n return this.uploadSize === 0\n ? 0\n : this.uploadedSize / this.uploadSize\n },\n\n uploadProgressLabel () {\n return this.__getProgressLabel(this.uploadProgress)\n },\n\n uploadedSizeLabel () {\n return humanStorageSize(this.uploadedSize)\n },\n\n uploadSizeLabel () {\n return humanStorageSize(this.uploadSize)\n },\n\n colorClass () {\n const cls = []\n this.color !== void 0 && cls.push(`bg-${this.color}`)\n this.textColor !== void 0 && cls.push(`text-${this.textColor}`)\n return cls.join(' ')\n },\n\n editable () {\n return this.disable !== true && this.readonly !== true\n }\n },\n\n methods: {\n reset () {\n if (!this.disable) {\n this.abort()\n this.uploadedSize = 0\n this.uploadSize = 0\n this.__revokeImgURLs()\n this.files = []\n this.queuedFiles = []\n this.uploadedFiles = []\n }\n },\n\n removeUploadedFiles () {\n if (!this.disable) {\n this.files = this.files.filter(f => {\n if (f.__status !== 'uploaded') {\n return true\n }\n\n f._img !== void 0 && window.URL.revokeObjectURL(f._img.src)\n\n return false\n })\n this.uploadedFiles = []\n }\n },\n\n removeQueuedFiles () {\n if (!this.disable) {\n const removedFiles = []\n\n const files = this.files.filter(f => {\n if (f.__status !== 'idle' && f.__status !== 'failed') {\n return true\n }\n\n this.uploadSize -= f.size\n removedFiles.push(f)\n\n f._img !== void 0 && window.URL.revokeObjectURL(f._img.src)\n\n return false\n })\n\n if (removedFiles.length > 0) {\n this.files = files\n this.queuedFiles = []\n this.$emit('removed', removedFiles)\n }\n }\n },\n\n removeFile (file) {\n if (this.disable) { return }\n\n if (file.__status === 'uploaded') {\n this.uploadedFiles = this.uploadedFiles.filter(f => f.name !== file.name)\n }\n else if (file.__status === 'uploading') {\n file.__abort()\n }\n else {\n this.uploadSize -= file.size\n }\n\n this.files = this.files.filter(f => {\n if (f.name !== file.name) {\n return true\n }\n\n f._img !== void 0 && window.URL.revokeObjectURL(f._img.src)\n\n return false\n })\n this.queuedFiles = this.queuedFiles.filter(f => f.name !== file.name)\n this.$emit('removed', [ file ])\n },\n\n __revokeImgURLs () {\n this.files.forEach(f => {\n f._img !== void 0 && window.URL.revokeObjectURL(f._img.src)\n })\n },\n\n __getFileInput () {\n return this.$refs.input ||\n this.$el.getElementsByClassName('q-uploader__input')[0]\n },\n\n __getProgressLabel (p) {\n return (p * 100).toFixed(2) + '%'\n },\n\n __updateFile (file, status, uploadedSize) {\n file.__status = status\n\n if (status === 'idle') {\n file.__uploaded = 0\n file.__progress = 0\n file.__sizeLabel = humanStorageSize(file.size)\n file.__progressLabel = '0.00%'\n return\n }\n if (status === 'failed') {\n this.$forceUpdate()\n return\n }\n\n file.__uploaded = status === 'uploaded'\n ? file.size\n : uploadedSize\n\n file.__progress = status === 'uploaded'\n ? 1\n : Math.min(0.9999, file.__uploaded / file.size)\n\n file.__progressLabel = this.__getProgressLabel(file.__progress)\n this.$forceUpdate()\n },\n\n __addFiles (e, fileList) {\n const processedFiles = this.__processFiles(e, fileList, this.files, true)\n\n if (processedFiles === void 0) { return }\n\n const files = processedFiles\n .filter(file => this.files.findIndex(f => file.name === f.name) === -1)\n\n this.__getFileInput().value = ''\n\n if (files === void 0) { return }\n\n files.forEach(file => {\n this.__updateFile(file, 'idle')\n this.uploadSize += file.size\n\n if (this.noThumbnails !== true && file.type.toUpperCase().startsWith('IMAGE')) {\n const img = new Image()\n img.src = window.URL.createObjectURL(file)\n file.__img = img\n }\n })\n\n this.files = this.files.concat(files)\n this.queuedFiles = this.queuedFiles.concat(files)\n this.$emit('added', files)\n this.autoUpload === true && this.upload()\n },\n\n __getBtn (h, show, icon, fn) {\n if (show === true) {\n return h(QBtn, {\n props: {\n type: 'a',\n icon: this.$q.iconSet.uploader[icon],\n flat: true,\n dense: true\n },\n on: icon === 'add' ? null : { click: fn }\n }, icon === 'add' ? this.__getInputControl(h) : null)\n }\n },\n\n __getInputControl (h) {\n return [\n h('input', {\n ref: 'input',\n staticClass: 'q-uploader__input overflow-hidden absolute-full',\n attrs: {\n tabindex: -1,\n type: 'file',\n title: '', // try to remove default tooltip\n accept: this.accept,\n capture: this.capture,\n ...(this.multiple === true ? { multiple: true } : {})\n },\n on: cache(this, 'input', {\n mousedown: stop, // need to stop refocus from QBtn\n change: this.__addFiles\n })\n })\n ]\n },\n\n __getHeader (h) {\n if (this.$scopedSlots.header !== void 0) {\n return this.$scopedSlots.header(this)\n }\n\n return [\n h('div', {\n staticClass: 'q-uploader__header-content flex flex-center no-wrap q-gutter-xs'\n }, [\n this.__getBtn(h, this.queuedFiles.length > 0, 'removeQueue', this.removeQueuedFiles),\n this.__getBtn(h, this.uploadedFiles.length > 0, 'removeUploaded', this.removeUploadedFiles),\n\n this.isUploading === true\n ? h(QSpinner, { staticClass: 'q-uploader__spinner' })\n : null,\n\n h('div', { staticClass: 'col column justify-center' }, [\n this.label !== void 0\n ? h('div', { staticClass: 'q-uploader__title' }, [ this.label ])\n : null,\n\n h('div', { staticClass: 'q-uploader__subtitle' }, [\n this.uploadSizeLabel + ' / ' + this.uploadProgressLabel\n ])\n ]),\n\n this.__getBtn(h, this.canAddFiles, 'add', this.pickFiles),\n this.__getBtn(h, this.hideUploadBtn === false && this.canUpload === true, 'upload', this.upload),\n this.__getBtn(h, this.isUploading, 'clear', this.abort)\n ])\n ]\n },\n\n __getList (h) {\n if (this.$scopedSlots.list !== void 0) {\n return this.$scopedSlots.list(this)\n }\n\n return this.files.map(file => h('div', {\n key: file.name,\n staticClass: 'q-uploader__file relative-position',\n class: {\n 'q-uploader__file--img': this.noThumbnails !== true && file.__img !== void 0,\n 'q-uploader__file--failed': file.__status === 'failed',\n 'q-uploader__file--uploaded': file.__status === 'uploaded'\n },\n style: this.noThumbnails !== true && file.__img !== void 0 ? {\n backgroundImage: 'url(\"' + file.__img.src + '\")'\n } : null\n }, [\n h('div', {\n staticClass: 'q-uploader__file-header row flex-center no-wrap'\n }, [\n file.__status === 'failed'\n ? h(QIcon, {\n staticClass: 'q-uploader__file-status',\n props: {\n name: this.$q.iconSet.type.negative,\n color: 'negative'\n }\n })\n : null,\n\n h('div', { staticClass: 'q-uploader__file-header-content col' }, [\n h('div', { staticClass: 'q-uploader__title' }, [ file.name ]),\n h('div', {\n staticClass: 'q-uploader__subtitle row items-center no-wrap'\n }, [\n file.__sizeLabel + ' / ' + file.__progressLabel\n ])\n ]),\n\n file.__status === 'uploading'\n ? h(QCircularProgress, {\n props: {\n value: file.__progress,\n min: 0,\n max: 1,\n indeterminate: file.__progress === 0\n }\n })\n : h(QBtn, {\n props: {\n round: true,\n dense: true,\n flat: true,\n icon: this.$q.iconSet.uploader[file.__status === 'uploaded' ? 'done' : 'clear']\n },\n on: {\n click: () => { this.removeFile(file) }\n }\n })\n ])\n ]))\n }\n },\n\n beforeDestroy () {\n this.isUploading === true && this.abort()\n this.files.length > 0 && this.__revokeImgURLs()\n },\n\n render (h) {\n const children = [\n h('div', {\n staticClass: 'q-uploader__header',\n class: this.colorClass\n }, this.__getHeader(h)),\n\n h('div', {\n staticClass: 'q-uploader__list scroll'\n }, this.__getList(h)),\n\n this.__getDnd(h, 'uploader')\n ]\n\n this.isBusy === true && children.push(\n h('div', {\n staticClass: 'q-uploader__overlay absolute-full flex flex-center'\n }, [ h(QSpinner) ])\n )\n\n return h('div', {\n staticClass: 'q-uploader column no-wrap',\n class: {\n 'q-uploader--dark q-dark': this.isDark,\n 'q-uploader--bordered': this.bordered,\n 'q-uploader--square no-border-radius': this.square,\n 'q-uploader--flat no-shadow': this.flat,\n 'disabled q-uploader--disable': this.disable\n },\n on: this.canAddFiles === true\n ? cache(this, 'drag', { dragover: this.__onDragOver })\n : null\n }, children)\n }\n})\n","function getFn (prop) {\n return typeof prop === 'function'\n ? prop\n : () => prop\n}\n\nexport default {\n props: {\n url: [ Function, String ],\n method: {\n type: [ Function, String ],\n default: 'POST'\n },\n fieldName: {\n type: [ Function, String ],\n default: file => file.name\n },\n headers: [ Function, Array ],\n formFields: [ Function, Array ],\n withCredentials: [ Function, Boolean ],\n sendRaw: [ Function, Boolean ],\n\n batch: [ Function, Boolean ],\n factory: Function\n },\n\n data () {\n return {\n xhrs: [],\n promises: [],\n workingThreads: 0\n }\n },\n\n computed: {\n xhrProps () {\n return {\n url: getFn(this.url),\n method: getFn(this.method),\n headers: getFn(this.headers),\n formFields: getFn(this.formFields),\n fieldName: getFn(this.fieldName),\n withCredentials: getFn(this.withCredentials),\n sendRaw: getFn(this.sendRaw),\n batch: getFn(this.batch)\n }\n },\n\n isUploading () {\n return this.workingThreads > 0\n },\n\n isBusy () {\n return this.promises.length > 0\n }\n },\n\n methods: {\n abort () {\n this.xhrs.forEach(x => { x.abort() })\n\n if (this.promises.length > 0) {\n this.abortPromises = true\n }\n },\n\n upload () {\n if (this.canUpload === false) {\n return\n }\n\n const queue = this.queuedFiles.slice(0)\n this.queuedFiles = []\n\n if (this.xhrProps.batch(queue)) {\n this.__runFactory(queue)\n }\n else {\n queue.forEach(file => {\n this.__runFactory([ file ])\n })\n }\n },\n\n __runFactory (files) {\n this.workingThreads++\n\n if (typeof this.factory !== 'function') {\n this.__uploadFiles(files, {})\n return\n }\n\n const res = this.factory(files)\n\n if (!res) {\n this.$emit(\n 'factory-failed',\n new Error('QUploader: factory() does not return properly'),\n files\n )\n this.workingThreads--\n }\n else if (typeof res.catch === 'function' && typeof res.then === 'function') {\n this.promises.push(res)\n\n const failed = err => {\n if (this._isBeingDestroyed !== true && this._isDestroyed !== true) {\n this.promises = this.promises.filter(p => p !== res)\n\n if (this.promises.length === 0) {\n this.abortPromises = false\n }\n\n this.queuedFiles = this.queuedFiles.concat(files)\n files.forEach(f => { this.__updateFile(f, 'failed') })\n\n this.$emit('factory-failed', err, files)\n this.workingThreads--\n }\n }\n\n res.then(factory => {\n if (this.abortPromises === true) {\n failed(new Error('Aborted'))\n }\n else if (this._isBeingDestroyed !== true && this._isDestroyed !== true) {\n this.promises = this.promises.filter(p => p !== res)\n this.__uploadFiles(files, factory)\n }\n }).catch(failed)\n }\n else {\n this.__uploadFiles(files, res || {})\n }\n },\n\n __uploadFiles (files, factory) {\n const\n form = new FormData(),\n xhr = new XMLHttpRequest()\n\n const getProp = (name, arg) => {\n return factory[name] !== void 0\n ? getFn(factory[name])(arg)\n : this.xhrProps[name](arg)\n }\n\n const url = getProp('url', files)\n\n if (!url) {\n console.error('q-uploader: invalid or no URL specified')\n this.workingThreads--\n return\n }\n\n const fields = getProp('formFields', files)\n fields !== void 0 && fields.forEach(field => {\n form.append(field.name, field.value)\n })\n\n let\n uploadIndex = 0,\n uploadIndexSize = 0,\n uploadedSize = 0,\n maxUploadSize = 0,\n aborted\n\n xhr.upload.addEventListener('progress', e => {\n if (aborted === true) { return }\n\n const loaded = Math.min(maxUploadSize, e.loaded)\n\n this.uploadedSize += loaded - uploadedSize\n uploadedSize = loaded\n\n let size = uploadedSize - uploadIndexSize\n for (let i = uploadIndex; size > 0 && i < files.length; i++) {\n const\n file = files[i],\n uploaded = size > file.size\n\n if (uploaded) {\n size -= file.size\n uploadIndex++\n uploadIndexSize += file.size\n this.__updateFile(file, 'uploading', file.size)\n }\n else {\n this.__updateFile(file, 'uploading', size)\n return\n }\n }\n }, false)\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState < 4) {\n return\n }\n\n if (xhr.status && xhr.status < 400) {\n this.uploadedFiles = this.uploadedFiles.concat(files)\n files.forEach(f => { this.__updateFile(f, 'uploaded') })\n this.$emit('uploaded', { files, xhr })\n }\n else {\n aborted = true\n this.uploadedSize -= uploadedSize\n this.queuedFiles = this.queuedFiles.concat(files)\n files.forEach(f => { this.__updateFile(f, 'failed') })\n this.$emit('failed', { files, xhr })\n }\n\n this.workingThreads--\n this.xhrs = this.xhrs.filter(x => x !== xhr)\n }\n\n xhr.open(\n getProp('method', files),\n url\n )\n\n if (getProp('withCredentials', files) === true) {\n xhr.withCredentials = true\n }\n\n const headers = getProp('headers', files)\n headers !== void 0 && headers.forEach(head => {\n xhr.setRequestHeader(head.name, head.value)\n })\n\n const sendRaw = getProp('sendRaw', files)\n\n files.forEach(file => {\n this.__updateFile(file, 'uploading', 0)\n if (sendRaw !== true) {\n form.append(getProp('fieldName', file), file, file.name)\n }\n file.xhr = xhr\n file.__abort = () => { xhr.abort() }\n maxUploadSize += file.size\n })\n\n this.$emit('uploading', { files, xhr })\n this.xhrs.push(xhr)\n\n if (sendRaw === true) {\n xhr.send(new Blob(files))\n }\n else {\n xhr.send(form)\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport QUploaderBase from './QUploaderBase.js'\nimport UploaderXHRMixin from './uploader-xhr-mixin.js'\n\nexport default Vue.extend({\n name: 'QUploader',\n mixins: [ QUploaderBase, UploaderXHRMixin ]\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'QUploaderAddTrigger',\n\n inject: {\n __qUploaderGetInput: {\n default () {\n console.error('QUploaderAddTrigger needs to be child of QUploader')\n }\n }\n },\n\n render (h) {\n return this.__qUploaderGetInput(h)\n }\n})\n","import Vue from 'vue'\n\nimport RatioMixin from '../../mixins/ratio.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nexport default Vue.extend({\n name: 'QVideo',\n\n mixins: [ RatioMixin, ListenersMixin ],\n\n props: {\n src: {\n type: String,\n required: true\n }\n },\n\n computed: {\n iframeData () {\n return {\n attrs: {\n src: this.src,\n frameborder: '0',\n allowfullscreen: true\n }\n }\n },\n\n classes () {\n return 'q-video' +\n (this.ratio !== void 0 ? ' q-video--responsive' : '')\n }\n },\n\n render (h) {\n return h('div', {\n class: this.classes,\n style: this.ratioStyle,\n on: { ...this.qListeners }\n }, [\n h('iframe', this.iframeData)\n ])\n }\n})\n","import { closePortals } from '../mixins/portal.js'\nimport { isKeyCode } from '../utils/key-composition.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\nfunction destroy (el) {\n const ctx = el.__qclosepopup\n if (ctx !== void 0) {\n el.removeEventListener('click', ctx.handler)\n el.removeEventListener('keyup', ctx.handlerKey)\n delete el.__qclosepopup\n }\n}\n\nexport default {\n name: 'close-popup',\n\n bind (el, { value }, vnode) {\n if (el.__qclosepopup !== void 0) {\n destroy(el)\n el.__qclosepopup_destroyed = true\n }\n\n const ctx = {\n depth: getDepth(value),\n\n handler (evt) {\n // allow @click to be emitted\n ctx.depth !== 0 && setTimeout(() => {\n closePortals(vnode.componentInstance || vnode.context, evt, ctx.depth)\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 update (el, { value, oldValue }) {\n if (el.__qclosepopup !== void 0 && value !== oldValue) {\n el.__qclosepopup.depth = getDepth(value)\n }\n },\n\n unbind (el) {\n if (el.__qclosepopup_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qclosepopup_destroyed\n }\n }\n}\n","import { client } from '../plugins/Platform.js'\nimport { isKeyCode } from '../utils/key-composition.js'\n\nfunction destroy (el) {\n const ctx = el.__qgoback\n if (ctx !== void 0) {\n el.removeEventListener('click', ctx.goBack)\n el.removeEventListener('keyup', ctx.goBackKey)\n delete el.__qgoback\n }\n}\n\nexport default {\n name: 'go-back',\n\n bind (el, { value, modifiers }, vnode) {\n if (el.__qgoback !== void 0) {\n destroy(el)\n el.__qgoback_destroyed = true\n }\n\n const ctx = {\n value,\n\n position: window.history.length - 1,\n single: modifiers.single,\n\n goBack () {\n const router = vnode.context.$router\n\n if (ctx.single === true) {\n router.go(-1)\n }\n else if (client.is.nativeMobile === true) {\n router.go(ctx.position - window.history.length)\n }\n else {\n router.replace(ctx.value)\n }\n },\n\n goBackKey (e) {\n // if ENTER key\n isKeyCode(e, 13) === true && ctx.goBack()\n }\n }\n\n el.__qgoback = ctx\n\n el.addEventListener('click', ctx.goBack)\n el.addEventListener('keyup', ctx.goBackKey)\n },\n\n update (el, { value, oldValue }) {\n const ctx = el.__qgoback\n\n if (ctx !== void 0 && value !== oldValue) {\n ctx.value = value\n }\n },\n\n unbind (el) {\n if (el.__qgoback_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qgoback_destroyed\n }\n }\n}\n","let id = 0\nlet offsetBase = void 0\n\nfunction getAbsolutePosition (el, resize) {\n if (offsetBase === void 0) {\n offsetBase = document.createElement('div')\n offsetBase.style.cssText = 'position: absolute; left: 0; top: 0'\n document.body.appendChild(offsetBase)\n }\n\n const boundingRect = el.getBoundingClientRect()\n const baseRect = offsetBase.getBoundingClientRect()\n const { marginLeft, marginRight, marginTop, marginBottom } = window.getComputedStyle(el)\n const marginH = parseInt(marginLeft, 10) + parseInt(marginRight, 10)\n const marginV = parseInt(marginTop, 10) + parseInt(marginBottom, 10)\n\n return {\n left: boundingRect.left - baseRect.left,\n top: boundingRect.top - baseRect.top,\n width: boundingRect.right - boundingRect.left,\n height: boundingRect.bottom - boundingRect.top,\n widthM: boundingRect.right - boundingRect.left + (resize === true ? 0 : marginH),\n heightM: boundingRect.bottom - boundingRect.top + (resize === true ? 0 : marginV),\n marginH: resize === true ? marginH : 0,\n marginV: resize === true ? marginV : 0\n }\n}\n\nfunction getAbsoluteSize (el) {\n return {\n width: el.scrollWidth,\n height: el.scrollHeight\n }\n}\n\n// firefox rulez\nconst styleEdges = [ 'Top', 'Right', 'Bottom', 'Left' ]\nconst styleBorderRadiuses = [ 'borderTopLeftRadius', 'borderTopRightRadius', 'borderBottomRightRadius', 'borderBottomLeftRadius' ]\n\nfunction getComputedStyle (el, props) {\n const style = window.getComputedStyle(el)\n const fixed = {}\n for (let i = 0; i < props.length; i++) {\n const prop = props[i]\n\n if (style[prop] === '') {\n if (prop === 'cssText') {\n const styleLen = style.length\n let val = ''\n\n for (let i = 0; i < styleLen; i++) {\n val += style[i] + ': ' + style[style[i]] + '; '\n }\n\n fixed[prop] = val\n }\n else if ([ 'borderWidth', 'borderStyle', 'borderColor' ].indexOf(prop) > -1) {\n const suffix = prop.replace('border', '')\n let val = ''\n for (let j = 0; j < styleEdges.length; j++) {\n const subProp = 'border' + styleEdges[j] + suffix\n val += style[subProp] + ' '\n }\n fixed[prop] = val\n }\n else if (prop === 'borderRadius') {\n let val1 = ''\n let val2 = ''\n for (let j = 0; j < styleBorderRadiuses.length; j++) {\n const val = style[styleBorderRadiuses[j]].split(' ')\n val1 += val[0] + ' '\n val2 += (val[1] === void 0 ? val[0] : val[1]) + ' '\n }\n fixed[prop] = val1 + '/ ' + val2\n }\n else {\n fixed[prop] = style[prop]\n }\n }\n else {\n fixed[prop] = style[prop]\n }\n }\n\n return fixed\n}\n\nfunction normalizeElements (opts) {\n return {\n from: opts.from,\n to: opts.to !== void 0\n ? opts.to\n : opts.from\n }\n}\n\nfunction normalizeOptions (options) {\n if (typeof options === 'number') {\n options = {\n duration: options\n }\n }\n else if (typeof options === 'function') {\n options = {\n onEnd: options\n }\n }\n\n return {\n ...options,\n\n waitFor: options.waitFor === void 0 ? 0 : options.waitFor,\n\n duration: isNaN(options.duration) === true ? 300 : parseInt(options.duration, 10),\n easing: typeof options.easing === 'string' && options.easing.length > 0 ? options.easing : 'ease-in-out',\n delay: isNaN(options.delay) === true ? 0 : parseInt(options.delay, 10),\n fill: typeof options.fill === 'string' && options.fill.length > 0 ? options.fill : 'none',\n\n resize: options.resize === true,\n useCSS: options.useCSS === true,\n hideFromClone: options.hideFromClone === true,\n keepToClone: options.keepToClone === true,\n\n tween: options.tween === true,\n tweenFromOpacity: isNaN(options.tweenFromOpacity) === true ? 0.6 : parseFloat(options.tweenFromOpacity),\n tweenToOpacity: isNaN(options.tweenToOpacity) === true ? 0.5 : parseFloat(options.tweenToOpacity)\n }\n}\n\nfunction getElement (element) {\n const type = typeof element\n\n return type === 'function'\n ? element()\n : (\n type === 'string'\n ? document.querySelector(element)\n : element\n )\n}\n\nfunction isValidElement (element) {\n return element &&\n element.ownerDocument === document &&\n element.parentNode !== null\n}\n\nexport default function morph (_options) {\n let cancel = () => false\n let cancelStatus = false\n let endElementTo = true\n\n const elements = normalizeElements(_options)\n const options = normalizeOptions(_options)\n\n const elFrom = getElement(elements.from)\n if (isValidElement(elFrom) !== true) {\n // we return a cancel function that return false, meaning the cancel function failed\n return cancel\n }\n // we clean other morphs running on this element\n typeof elFrom.qMorphCancel === 'function' && elFrom.qMorphCancel()\n\n let animationFromClone = void 0\n let animationFromTween = void 0\n let animationToClone = void 0\n let animationTo = void 0\n\n const elFromParent = elFrom.parentNode\n const elFromNext = elFrom.nextElementSibling\n\n // we get the dimensions and characteristics\n // of the parent of the initial element before changes\n const elFromPosition = getAbsolutePosition(elFrom, options.resize)\n const {\n width: elFromParentWidthBefore,\n height: elFromParentHeightBefore\n } = getAbsoluteSize(elFromParent)\n const {\n borderWidth: elFromBorderWidth,\n borderStyle: elFromBorderStyle,\n borderColor: elFromBorderColor,\n borderRadius: elFromBorderRadius,\n backgroundColor: elFromBackground,\n transform: elFromTransform,\n position: elFromPositioningType,\n cssText: elFromCssText\n } = getComputedStyle(elFrom, [ 'borderWidth', 'borderStyle', 'borderColor', 'borderRadius', 'backgroundColor', 'transform', 'position', 'cssText' ])\n const elFromClassSaved = elFrom.classList.toString()\n const elFromStyleSaved = elFrom.style.cssText\n\n // we make a clone of the initial element and\n // use it to display until the final element is ready\n // and to change the occupied space during animation\n const elFromClone = elFrom.cloneNode(true)\n const elFromTween = options.tween === true ? elFrom.cloneNode(true) : void 0\n\n if (elFromTween !== void 0) {\n elFromTween.className = elFromTween.classList.toString().split(' ').filter(c => /^bg-/.test(c) === false).join(' ')\n }\n\n // if the initial element is not going to be removed do not show the placeholder\n options.hideFromClone === true && elFromClone.classList.add('q-morph--internal')\n\n // prevent interaction with placeholder\n elFromClone.setAttribute('aria-hidden', 'true')\n elFromClone.style.transition = 'none'\n elFromClone.style.animation = 'none'\n elFromClone.style.pointerEvents = 'none'\n elFromParent.insertBefore(elFromClone, elFromNext)\n\n // we mark the element with its cleanup function\n elFrom.qMorphCancel = () => {\n cancelStatus = true\n\n // we clean the clone of the initial element\n elFromClone.remove()\n elFromTween !== void 0 && elFromTween.remove()\n\n options.hideFromClone === true && elFromClone.classList.remove('q-morph--internal')\n\n // we remove the cleanup function from the element\n elFrom.qMorphCancel = void 0\n }\n\n // will be called after Vue catches up with the changes done by _options.onToggle() function\n const calculateFinalState = () => {\n const elTo = getElement(elements.to)\n if (cancelStatus === true || isValidElement(elTo) !== true) {\n typeof elFrom.qMorphCancel === 'function' && elFrom.qMorphCancel()\n\n return\n }\n // we clean other morphs running on this element\n elFrom !== elTo && typeof elTo.qMorphCancel === 'function' && elTo.qMorphCancel()\n\n // we hide the final element and the clone of the initial element\n // we don't hide the final element if we want both it and the animated one visible\n options.keepToClone !== true && elTo.classList.add('q-morph--internal')\n elFromClone.classList.add('q-morph--internal')\n\n // we get the dimensions of the parent of the initial element after changes\n // the difference is how much we should animate the clone\n const {\n width: elFromParentWidthAfter,\n height: elFromParentHeightAfter\n } = getAbsoluteSize(elFromParent)\n\n // we get the dimensions of the parent of the final element before changes\n const {\n width: elToParentWidthBefore,\n height: elToParentHeightBefore\n } = getAbsoluteSize(elTo.parentNode)\n\n // then we show the clone of the initial element if we don't want it hidden\n options.hideFromClone !== true && elFromClone.classList.remove('q-morph--internal')\n\n // we mark the element with its cleanup function\n elTo.qMorphCancel = () => {\n cancelStatus = true\n\n // we clean the clone of the initial element\n elFromClone.remove()\n elFromTween !== void 0 && elFromTween.remove()\n\n options.hideFromClone === true && elFromClone.classList.remove('q-morph--internal')\n\n // we show the final element\n options.keepToClone !== true && elTo.classList.remove('q-morph--internal')\n\n // we remove the cleanup function from the elements\n elFrom.qMorphCancel = void 0\n elTo.qMorphCancel = void 0\n }\n\n // will be called after waitFor (give time to render the final element)\n const animate = () => {\n if (cancelStatus === true) {\n typeof elTo.qMorphCancel === 'function' && elTo.qMorphCancel()\n\n return\n }\n\n // now the animation starts, so we only need the clone\n // of the initial element as a spacer\n // we also hide it to calculate the dimensions of the\n // parent of the final element after the changes\n if (options.hideFromClone !== true) {\n elFromClone.classList.add('q-morph--internal')\n elFromClone.innerHTML = ''\n elFromClone.style.left = 0\n elFromClone.style.right = 'unset'\n elFromClone.style.top = 0\n elFromClone.style.bottom = 'unset'\n elFromClone.style.transform = 'none'\n }\n\n // we show the final element\n if (options.keepToClone !== true) {\n elTo.classList.remove('q-morph--internal')\n }\n\n // we get the dimensions of the parent of the final element after changes\n // the difference is how much we should animate the clone\n const elToParent = elTo.parentNode\n const {\n width: elToParentWidthAfter,\n height: elToParentHeightAfter\n } = getAbsoluteSize(elToParent)\n\n const elToClone = elTo.cloneNode(options.keepToClone)\n elToClone.setAttribute('aria-hidden', 'true')\n if (options.keepToClone !== true) {\n elToClone.style.left = 0\n elToClone.style.right = 'unset'\n elToClone.style.top = 0\n elToClone.style.bottom = 'unset'\n elToClone.style.transform = 'none'\n elToClone.style.pointerEvents = 'none'\n }\n elToClone.classList.add('q-morph--internal')\n\n // if elFrom is the same as elTo the next element is elFromClone\n const elToNext = elTo === elFrom && elFromParent === elToParent ? elFromClone : elTo.nextElementSibling\n elToParent.insertBefore(elToClone, elToNext)\n\n const {\n borderWidth: elToBorderWidth,\n borderStyle: elToBorderStyle,\n borderColor: elToBorderColor,\n borderRadius: elToBorderRadius,\n backgroundColor: elToBackground,\n transform: elToTransform,\n position: elToPositioningType,\n cssText: elToCssText\n } = getComputedStyle(elTo, [ 'borderWidth', 'borderStyle', 'borderColor', 'borderRadius', 'backgroundColor', 'transform', 'position', 'cssText' ])\n const elToClassSaved = elTo.classList.toString()\n const elToStyleSaved = elTo.style.cssText\n\n // we set the computed styles on the element (to be able to remove classes)\n elTo.style.cssText = elToCssText\n elTo.style.transform = 'none'\n elTo.style.animation = 'none'\n elTo.style.transition = 'none'\n // we strip the background classes (background color can no longer be animated if !important is used)\n elTo.className = elToClassSaved.split(' ').filter(c => /^bg-/.test(c) === false).join(' ')\n\n const elToPosition = getAbsolutePosition(elTo, options.resize)\n\n const deltaX = elFromPosition.left - elToPosition.left\n const deltaY = elFromPosition.top - elToPosition.top\n const scaleX = elFromPosition.width / (elToPosition.width > 0 ? elToPosition.width : 10)\n const scaleY = elFromPosition.height / (elToPosition.height > 0 ? elToPosition.height : 100)\n\n const elFromParentWidthDiff = elFromParentWidthBefore - elFromParentWidthAfter\n const elFromParentHeightDiff = elFromParentHeightBefore - elFromParentHeightAfter\n const elToParentWidthDiff = elToParentWidthAfter - elToParentWidthBefore\n const elToParentHeightDiff = elToParentHeightAfter - elToParentHeightBefore\n\n const elFromCloneWidth = Math.max(elFromPosition.widthM, elFromParentWidthDiff)\n const elFromCloneHeight = Math.max(elFromPosition.heightM, elFromParentHeightDiff)\n const elToCloneWidth = Math.max(elToPosition.widthM, elToParentWidthDiff)\n const elToCloneHeight = Math.max(elToPosition.heightM, elToParentHeightDiff)\n\n const elSharedSize = elFrom === elTo &&\n [ 'absolute', 'fixed' ].includes(elToPositioningType) === false &&\n [ 'absolute', 'fixed' ].includes(elFromPositioningType) === false\n\n // if the final element has fixed position or if a parent\n // has fixed position we need to animate it as fixed\n let elToNeedsFixedPosition = elToPositioningType === 'fixed'\n let parent = elToParent\n while (elToNeedsFixedPosition !== true && parent !== document) {\n elToNeedsFixedPosition = window.getComputedStyle(parent).position === 'fixed'\n parent = parent.parentNode\n }\n\n // we show the spacer for the initial element\n if (options.hideFromClone !== true) {\n elFromClone.style.display = 'block'\n elFromClone.style.flex = '0 0 auto'\n elFromClone.style.opacity = 0\n elFromClone.style.minWidth = 'unset'\n elFromClone.style.maxWidth = 'unset'\n elFromClone.style.minHeight = 'unset'\n elFromClone.style.maxHeight = 'unset'\n elFromClone.classList.remove('q-morph--internal')\n }\n\n // we show the spacer for the final element\n if (options.keepToClone !== true) {\n elToClone.style.display = 'block'\n elToClone.style.flex = '0 0 auto'\n elToClone.style.opacity = 0\n elToClone.style.minWidth = 'unset'\n elToClone.style.maxWidth = 'unset'\n elToClone.style.minHeight = 'unset'\n elToClone.style.maxHeight = 'unset'\n }\n elToClone.classList.remove('q-morph--internal')\n\n // we apply classes specified by user\n if (typeof options.classes === 'string') {\n elTo.className += ' ' + options.classes\n }\n\n // we apply styles specified by user\n if (typeof options.style === 'string') {\n elTo.style.cssText += ' ' + options.style\n }\n else if (options.style === Object(options.style)) {\n for (const prop in options.style) {\n elTo.style[prop] = options.style[prop]\n }\n }\n\n // we position the morphing element\n // if we use fixed position for the final element we need to adjust for scroll\n const documentScroll = elToNeedsFixedPosition === true\n ? document.documentElement\n : { scrollLeft: 0, scrollTop: 0 }\n elTo.style.position = elToNeedsFixedPosition === true ? 'fixed' : 'absolute'\n elTo.style.left = `${elToPosition.left - documentScroll.scrollLeft}px`\n elTo.style.right = 'unset'\n elTo.style.top = `${elToPosition.top - documentScroll.scrollTop}px`\n elTo.style.margin = 0\n\n if (options.resize === true) {\n elTo.style.minWidth = 'unset'\n elTo.style.maxWidth = 'unset'\n elTo.style.minHeight = 'unset'\n elTo.style.maxHeight = 'unset'\n elTo.style.overflow = 'hidden'\n elTo.style.overflowX = 'hidden'\n elTo.style.overflowY = 'hidden'\n }\n\n document.body.appendChild(elTo)\n\n if (elFromTween !== void 0) {\n elFromTween.style.cssText = elFromCssText\n elFromTween.style.transform = 'none'\n elFromTween.style.animation = 'none'\n elFromTween.style.transition = 'none'\n\n elFromTween.style.position = elTo.style.position\n elFromTween.style.left = `${elFromPosition.left - documentScroll.scrollLeft}px`\n elFromTween.style.right = 'unset'\n elFromTween.style.top = `${elFromPosition.top - documentScroll.scrollTop}px`\n elFromTween.style.margin = 0\n elFromTween.style.pointerEvents = 'none'\n\n if (options.resize === true) {\n elFromTween.style.minWidth = 'unset'\n elFromTween.style.maxWidth = 'unset'\n elFromTween.style.minHeight = 'unset'\n elFromTween.style.maxHeight = 'unset'\n elFromTween.style.overflow = 'hidden'\n elFromTween.style.overflowX = 'hidden'\n elFromTween.style.overflowY = 'hidden'\n }\n\n document.body.appendChild(elFromTween)\n }\n\n const commonCleanup = aborted => {\n // we put the element back in it's place\n // and restore the styles and classes\n if (elFrom === elTo && endElementTo !== true) {\n elTo.style.cssText = elFromStyleSaved\n elTo.className = elFromClassSaved\n }\n else {\n elTo.style.cssText = elToStyleSaved\n elTo.className = elToClassSaved\n }\n elToClone.parentNode === elToParent && elToParent.insertBefore(elTo, elToClone)\n\n // we clean the spacers\n elFromClone.remove()\n elToClone.remove()\n elFromTween !== void 0 && elFromTween.remove()\n\n // cancel will be no longer available\n cancel = () => false\n\n elFrom.qMorphCancel = void 0\n elTo.qMorphCancel = void 0\n\n // we are ready\n if (typeof options.onEnd === 'function') {\n options.onEnd(endElementTo === true ? 'to' : 'from', aborted === true)\n }\n }\n\n if (options.useCSS !== true && typeof elTo.animate === 'function') {\n const resizeFrom = options.resize === true\n ? {\n transform: `translate(${deltaX}px, ${deltaY}px)`,\n width: `${elFromCloneWidth}px`,\n height: `${elFromCloneHeight}px`\n }\n : {\n transform: `translate(${deltaX}px, ${deltaY}px) scale(${scaleX}, ${scaleY})`\n }\n const resizeTo = options.resize === true\n ? {\n width: `${elToCloneWidth}px`,\n height: `${elToCloneHeight}px`\n }\n : {}\n const resizeFromTween = options.resize === true\n ? {\n width: `${elFromCloneWidth}px`,\n height: `${elFromCloneHeight}px`\n }\n : {}\n const resizeToTween = options.resize === true\n ? {\n transform: `translate(${-1 * deltaX}px, ${-1 * deltaY}px)`,\n width: `${elToCloneWidth}px`,\n height: `${elToCloneHeight}px`\n }\n : {\n transform: `translate(${-1 * deltaX}px, ${-1 * deltaY}px) scale(${1 / scaleX}, ${1 / scaleY})`\n }\n const tweenFrom = elFromTween !== void 0\n ? { opacity: options.tweenToOpacity }\n : { backgroundColor: elFromBackground }\n const tweenTo = elFromTween !== void 0\n ? { opacity: 1 }\n : { backgroundColor: elToBackground }\n animationTo = elTo.animate([\n {\n margin: 0,\n borderWidth: elFromBorderWidth,\n borderStyle: elFromBorderStyle,\n borderColor: elFromBorderColor,\n borderRadius: elFromBorderRadius,\n transformOrigin: '0 0',\n ...resizeFrom,\n ...tweenFrom\n },\n {\n margin: 0,\n borderWidth: elToBorderWidth,\n borderStyle: elToBorderStyle,\n borderColor: elToBorderColor,\n borderRadius: elToBorderRadius,\n transformOrigin: '0 0',\n transform: elToTransform,\n ...resizeTo,\n ...tweenTo\n }\n ], {\n duration: options.duration,\n easing: options.easing,\n fill: options.fill,\n delay: options.delay\n })\n\n animationFromTween = elFromTween === void 0 ? void 0 : elFromTween.animate([\n {\n opacity: options.tweenFromOpacity,\n margin: 0,\n borderWidth: elFromBorderWidth,\n borderStyle: elFromBorderStyle,\n borderColor: elFromBorderColor,\n borderRadius: elFromBorderRadius,\n transformOrigin: '0 0',\n transform: elFromTransform,\n ...resizeFromTween\n },\n {\n opacity: 0,\n margin: 0,\n borderWidth: elToBorderWidth,\n borderStyle: elToBorderStyle,\n borderColor: elToBorderColor,\n borderRadius: elToBorderRadius,\n transformOrigin: '0 0',\n ...resizeToTween\n }\n ], {\n duration: options.duration,\n easing: options.easing,\n fill: options.fill,\n delay: options.delay\n })\n\n animationFromClone = options.hideFromClone === true || elSharedSize === true ? void 0 : elFromClone.animate([\n {\n margin: `${elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0}px ${elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0}px`,\n width: `${elFromCloneWidth + elFromPosition.marginH}px`,\n height: `${elFromCloneHeight + elFromPosition.marginV}px`\n },\n {\n margin: 0,\n width: 0,\n height: 0\n }\n ], {\n duration: options.duration,\n easing: options.easing,\n fill: options.fill,\n delay: options.delay\n })\n\n animationToClone = options.keepToClone === true ? void 0 : elToClone.animate([\n elSharedSize === true\n ? {\n margin: `${elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0}px ${elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0}px`,\n width: `${elFromCloneWidth + elFromPosition.marginH}px`,\n height: `${elFromCloneHeight + elFromPosition.marginV}px`\n }\n : {\n margin: 0,\n width: 0,\n height: 0\n },\n {\n margin: `${elToParentHeightDiff < 0 ? elToParentHeightDiff / 2 : 0}px ${elToParentWidthDiff < 0 ? elToParentWidthDiff / 2 : 0}px`,\n width: `${elToCloneWidth + elToPosition.marginH}px`,\n height: `${elToCloneHeight + elToPosition.marginV}px`\n }\n ], {\n duration: options.duration,\n easing: options.easing,\n fill: options.fill,\n delay: options.delay\n })\n\n const cleanup = abort => {\n animationFromClone !== void 0 && animationFromClone.cancel()\n animationFromTween !== void 0 && animationFromTween.cancel()\n animationToClone !== void 0 && animationToClone.cancel()\n animationTo.cancel()\n\n animationTo.removeEventListener('finish', cleanup)\n animationTo.removeEventListener('cancel', cleanup)\n\n commonCleanup(abort)\n\n // we clean the animations\n animationFromClone = void 0\n animationFromTween = void 0\n animationToClone = void 0\n animationTo = void 0\n }\n\n elFrom.qMorphCancel = () => {\n elFrom.qMorphCancel = void 0\n cancelStatus = true\n cleanup()\n }\n elTo.qMorphCancel = () => {\n elTo.qMorphCancel = void 0\n cancelStatus = true\n cleanup()\n }\n\n animationTo.addEventListener('finish', cleanup)\n animationTo.addEventListener('cancel', cleanup)\n\n cancel = abort => {\n // we are not in a morph that we can cancel\n if (cancelStatus === true || animationTo === void 0) {\n return false\n }\n\n if (abort === true) {\n cleanup(true)\n return true\n }\n\n endElementTo = endElementTo !== true\n\n animationFromClone !== void 0 && animationFromClone.reverse()\n animationFromTween !== void 0 && animationFromTween.reverse()\n animationToClone !== void 0 && animationToClone.reverse()\n animationTo.reverse()\n\n return true\n }\n }\n else {\n const qAnimId = `q-morph-anim-${++id}`\n const style = document.createElement('style')\n const resizeFrom = options.resize === true\n ? `\n transform: translate(${deltaX}px, ${deltaY}px);\n width: ${elFromCloneWidth}px;\n height: ${elFromCloneHeight}px;\n `\n : `transform: translate(${deltaX}px, ${deltaY}px) scale(${scaleX}, ${scaleY});`\n const resizeTo = options.resize === true\n ? `\n width: ${elToCloneWidth}px;\n height: ${elToCloneHeight}px;\n `\n : ''\n const resizeFromTween = options.resize === true\n ? `\n width: ${elFromCloneWidth}px;\n height: ${elFromCloneHeight}px;\n `\n : ''\n const resizeToTween = options.resize === true\n ? `\n transform: translate(${-1 * deltaX}px, ${-1 * deltaY}px);\n width: ${elToCloneWidth}px;\n height: ${elToCloneHeight}px;\n `\n : `transform: translate(${-1 * deltaX}px, ${-1 * deltaY}px) scale(${1 / scaleX}, ${1 / scaleY});`\n const tweenFrom = elFromTween !== void 0\n ? `opacity: ${options.tweenToOpacity};`\n : `background-color: ${elFromBackground};`\n const tweenTo = elFromTween !== void 0\n ? 'opacity: 1;'\n : `background-color: ${elToBackground};`\n const keyframesFromTween = elFromTween === void 0\n ? ''\n : `\n @keyframes ${qAnimId}-from-tween {\n 0% {\n opacity: ${options.tweenFromOpacity};\n margin: 0;\n border-width: ${elFromBorderWidth};\n border-style: ${elFromBorderStyle};\n border-color: ${elFromBorderColor};\n border-radius: ${elFromBorderRadius};\n transform-origin: 0 0;\n transform: ${elFromTransform};\n ${resizeFromTween}\n }\n\n 100% {\n opacity: 0;\n margin: 0;\n border-width: ${elToBorderWidth};\n border-style: ${elToBorderStyle};\n border-color: ${elToBorderColor};\n border-radius: ${elToBorderRadius};\n transform-origin: 0 0;\n ${resizeToTween}\n }\n }\n `\n const keyframesFrom = options.hideFromClone === true || elSharedSize === true\n ? ''\n : `\n @keyframes ${qAnimId}-from {\n 0% {\n margin: ${elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0}px ${elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0}px;\n width: ${elFromCloneWidth + elFromPosition.marginH}px;\n height: ${elFromCloneHeight + elFromPosition.marginV}px;\n }\n\n 100% {\n margin: 0;\n width: 0;\n height: 0;\n }\n }\n `\n const keyframeToStart = elSharedSize === true\n ? `\n margin: ${elFromParentHeightDiff < 0 ? elFromParentHeightDiff / 2 : 0}px ${elFromParentWidthDiff < 0 ? elFromParentWidthDiff / 2 : 0}px;\n width: ${elFromCloneWidth + elFromPosition.marginH}px;\n height: ${elFromCloneHeight + elFromPosition.marginV}px;\n `\n : `\n margin: 0;\n width: 0;\n height: 0;\n `\n const keyframesTo = options.keepToClone === true\n ? ''\n : `\n @keyframes ${qAnimId}-to {\n 0% {\n ${keyframeToStart}\n }\n\n 100% {\n margin: ${elToParentHeightDiff < 0 ? elToParentHeightDiff / 2 : 0}px ${elToParentWidthDiff < 0 ? elToParentWidthDiff / 2 : 0}px;\n width: ${elToCloneWidth + elToPosition.marginH}px;\n height: ${elToCloneHeight + elToPosition.marginV}px;\n }\n }\n `\n style.innerHTML = `\n @keyframes ${qAnimId} {\n 0% {\n margin: 0;\n border-width: ${elFromBorderWidth};\n border-style: ${elFromBorderStyle};\n border-color: ${elFromBorderColor};\n border-radius: ${elFromBorderRadius};\n background-color: ${elFromBackground};\n transform-origin: 0 0;\n ${resizeFrom}\n ${tweenFrom}\n }\n\n 100% {\n margin: 0;\n border-width: ${elToBorderWidth};\n border-style: ${elToBorderStyle};\n border-color: ${elToBorderColor};\n border-radius: ${elToBorderRadius};\n background-color: ${elToBackground};\n transform-origin: 0 0;\n transform: ${elToTransform};\n ${resizeTo}\n ${tweenTo}\n }\n }\n\n ${keyframesFrom}\n\n ${keyframesFromTween}\n\n ${keyframesTo}\n `\n document.head.appendChild(style)\n\n let animationDirection = 'normal'\n\n elFromClone.style.animation = `${options.duration}ms ${options.easing} ${options.delay}ms ${animationDirection} ${options.fill} ${qAnimId}-from`\n if (elFromTween !== void 0) {\n elFromTween.style.animation = `${options.duration}ms ${options.easing} ${options.delay}ms ${animationDirection} ${options.fill} ${qAnimId}-from-tween`\n }\n elToClone.style.animation = `${options.duration}ms ${options.easing} ${options.delay}ms ${animationDirection} ${options.fill} ${qAnimId}-to`\n elTo.style.animation = `${options.duration}ms ${options.easing} ${options.delay}ms ${animationDirection} ${options.fill} ${qAnimId}`\n\n const cleanup = ev => {\n if (ev === Object(ev) && ev.animationName !== qAnimId) {\n return\n }\n\n elTo.removeEventListener('animationend', cleanup)\n elTo.removeEventListener('animationcancel', cleanup)\n\n commonCleanup()\n\n // we clean the animations\n style.remove()\n }\n\n elFrom.qMorphCancel = () => {\n elFrom.qMorphCancel = void 0\n cancelStatus = true\n cleanup()\n }\n elTo.qMorphCancel = () => {\n elTo.qMorphCancel = void 0\n cancelStatus = true\n cleanup()\n }\n\n elTo.addEventListener('animationend', cleanup)\n elTo.addEventListener('animationcancel', cleanup)\n\n cancel = abort => {\n // we are not in a morph that we can cancel\n if (cancelStatus === true || !elTo || !elFromClone || !elToClone) {\n return false\n }\n\n if (abort === true) {\n cleanup()\n\n return true\n }\n\n endElementTo = endElementTo !== true\n\n animationDirection = animationDirection === 'normal' ? 'reverse' : 'normal'\n\n elFromClone.style.animationDirection = animationDirection\n elFromTween.style.animationDirection = animationDirection\n elToClone.style.animationDirection = animationDirection\n elTo.style.animationDirection = animationDirection\n\n return true\n }\n }\n }\n\n if (\n options.waitFor > 0 ||\n options.waitFor === 'transitionend' ||\n (options.waitFor === Object(options.waitFor) && typeof options.waitFor.then === 'function')\n ) {\n const delayPromise = options.waitFor > 0\n ? new Promise(resolve => setTimeout(resolve, options.waitFor))\n : (\n options.waitFor === 'transitionend'\n ? new Promise(resolve => {\n const timer = setTimeout(() => {\n endFn()\n }, 400)\n\n const endFn = ev => {\n clearTimeout(timer)\n\n if (elTo) {\n elTo.removeEventListener('transitionend', endFn)\n elTo.removeEventListener('transitioncancel', endFn)\n }\n\n resolve()\n }\n\n elTo.addEventListener('transitionend', endFn)\n elTo.addEventListener('transitioncancel', endFn)\n })\n : options.waitFor\n )\n\n delayPromise\n .then(animate)\n .catch(() => {\n typeof elTo.qMorphCancel === 'function' && elTo.qMorphCancel()\n })\n }\n else {\n animate()\n }\n }\n\n typeof _options.onToggle === 'function' && _options.onToggle()\n requestAnimationFrame(calculateFinalState)\n\n // we return the cancel function\n // returns:\n // false if the cancel cannot be performed (the morph ended already or has not started)\n // true else\n return abort => cancel(abort)\n}\n","import morph from '../utils/morph.js'\n\nconst morphGroups = {}\nconst props = [\n 'duration', 'delay', 'easing', 'fill',\n 'classes', 'style', 'duration', 'resize',\n 'useCSS', 'hideFromClone', 'keepToClone', 'tween',\n 'tweenFromOpacity', 'tweenToOpacity',\n 'waitFor', 'onEnd'\n]\nconst mods = [\n 'resize', 'useCSS', 'hideFromClone', 'keepToClone', 'tween'\n]\n\nfunction changeClass (ctx, action) {\n if (ctx.clsAction !== action) {\n ctx.clsAction = action\n ctx.el.classList[action]('q-morph--invisible')\n }\n}\n\nfunction trigger (group) {\n if (group.animating === true || group.queue.length < 2) {\n return\n }\n\n const [ from, to ] = group.queue\n\n group.animating = true\n from.animating = true\n to.animating = true\n\n changeClass(from, 'remove')\n changeClass(to, 'remove')\n\n const cancelFn = morph({\n from: from.el,\n to: to.el,\n onToggle () {\n changeClass(from, 'add')\n changeClass(to, 'remove')\n },\n ...to.opts,\n onEnd (dir, aborted) {\n to.opts.onEnd !== void 0 && to.opts.onEnd(dir, aborted)\n\n if (aborted === true) {\n return\n }\n\n from.animating = false\n to.animating = false\n\n group.animating = false\n group.cancel = void 0\n group.queue.shift()\n\n trigger(group)\n }\n })\n\n group.cancel = () => {\n cancelFn(true) // abort\n group.cancel = void 0\n }\n}\n\nfunction updateModifiers (mod, ctx) {\n const opts = ctx.opts\n\n mods.forEach(name => {\n opts[name] = mod[name] === true\n })\n}\n\nfunction insertArgs (arg, ctx) {\n const opts = typeof arg === 'string' && arg.length > 0\n ? arg.split(':') : []\n\n ctx.name = opts[0]\n ctx.group = opts[1]\n\n Object.assign(ctx.opts, {\n duration: isNaN(opts[2]) === true\n ? 300\n : parseFloat(opts[2]),\n waitFor: opts[3]\n })\n}\n\nfunction updateArgs (arg, ctx) {\n if (arg.group !== void 0) {\n ctx.group = arg.group\n }\n if (arg.name !== void 0) {\n ctx.name = arg.name\n }\n\n const opts = ctx.opts\n\n props.forEach(name => {\n if (arg[name] !== void 0) {\n opts[name] = arg[name]\n }\n })\n}\n\nfunction updateModel (name, ctx) {\n if (ctx.name === name) {\n const group = morphGroups[ctx.group]\n\n // if group is not registered\n if (group === void 0) {\n morphGroups[ctx.group] = {\n name: ctx.group,\n model: name,\n queue: [ ctx ],\n animating: false\n }\n\n changeClass(ctx, 'remove')\n }\n // if model changed\n else if (group.model !== name) {\n group.model = name\n group.queue.push(ctx)\n\n if (group.animating === false && group.queue.length === 2) {\n trigger(group)\n }\n }\n\n return\n }\n\n if (ctx.animating === false) {\n changeClass(ctx, 'add')\n }\n}\n\nfunction updateValue (ctx, value) {\n let model\n\n if (Object(value) === value) {\n model = '' + value.model\n updateArgs(value, ctx)\n updateModifiers(value, ctx)\n }\n else {\n model = '' + value\n }\n\n if (model !== ctx.model) {\n ctx.model = model\n updateModel(model, ctx)\n }\n else if (ctx.animating === false && ctx.clsAction !== void 0) {\n // ensure HMR\n ctx.el.classList[ctx.clsAction]('q-morph--invisible')\n }\n}\n\nfunction destroy (el) {\n const ctx = el.__qmorph\n\n if (ctx !== void 0) {\n const group = morphGroups[ctx.group]\n\n if (group !== void 0) {\n const index = group.queue.indexOf(ctx)\n\n if (index !== -1) {\n group.queue = group.queue.filter(item => item !== ctx)\n\n if (group.queue.length === 0) {\n group.cancel !== void 0 && group.cancel()\n delete morphGroups[ctx.group]\n }\n }\n }\n\n if (ctx.clsAction === 'add') {\n el.classList.remove('q-morph--invisible')\n }\n\n delete el.__qmorph\n }\n}\n\nexport default {\n name: 'morph',\n\n inserted (el, binding) {\n if (el.__qmorph !== void 0) {\n destroy(el)\n el.__qmorph_destroyed = true\n }\n\n const ctx = {\n el,\n animating: false,\n opts: {}\n }\n\n updateModifiers(binding.modifiers, ctx)\n insertArgs(binding.arg, ctx)\n updateValue(ctx, binding.value)\n\n el.__qmorph = ctx\n },\n\n update (el, binding) {\n const ctx = el.__qmorph\n ctx !== void 0 && updateValue(ctx, binding.value)\n },\n\n unbind (el) {\n if (el.__qmorph_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qmorph_destroyed\n }\n }\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","const defaultCfg = {\n childList: true,\n subtree: true,\n attributes: true,\n characterData: true,\n attributeOldValue: true,\n characterDataOldValue: true\n}\n\nfunction update (el, ctx, value) {\n ctx.handler = value\n ctx.observer !== void 0 && ctx.observer.disconnect()\n\n ctx.observer = new MutationObserver(list => {\n if (typeof ctx.handler === 'function') {\n const res = ctx.handler(list)\n if (res === false || ctx.once === true) {\n destroy(el)\n }\n }\n })\n\n ctx.observer.observe(el, ctx.opts)\n}\n\nfunction destroy (el) {\n const ctx = el.__qmutation\n\n if (ctx !== void 0) {\n ctx.observer !== void 0 && ctx.observer.disconnect()\n delete el.__qmutation\n }\n}\n\nexport default {\n name: 'mutation',\n\n inserted (el, { modifiers: { once, ...mod }, value }) {\n if (el.__qmutation !== void 0) {\n destroy(el)\n el.__qmutation_destroyed = true\n }\n\n const ctx = {\n once,\n opts: Object.keys(mod).length === 0\n ? defaultCfg\n : mod\n }\n\n update(el, ctx, value)\n\n el.__qmutation = ctx\n },\n\n update (el, { oldValue, value }) {\n const ctx = el.__qmutation\n if (ctx !== void 0 && oldValue !== value) {\n update(el, ctx, value)\n }\n },\n\n unbind (el) {\n if (el.__qmutation_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qmutation_destroyed\n }\n }\n}\n","import debounce from '../utils/debounce.js'\nimport { height, offset } from '../utils/dom.js'\nimport { getScrollTarget } from '../utils/scroll.js'\nimport { listenOpts } from '../utils/event.js'\n\nfunction update (ctx, { value, oldValue }) {\n if (typeof value !== 'function') {\n ctx.scrollTarget.removeEventListener('scroll', ctx.scroll)\n return\n }\n\n ctx.handler = value\n if (typeof oldValue !== 'function') {\n ctx.scrollTarget.addEventListener('scroll', ctx.scroll, listenOpts.passive)\n ctx.scroll()\n }\n}\n\nfunction destroy (el) {\n const ctx = el.__qscrollfire\n if (ctx !== void 0) {\n ctx.scrollTarget.removeEventListener('scroll', ctx.scroll, listenOpts.passive)\n delete el.__qscrollfire\n }\n}\n\nexport default {\n name: 'scroll-fire',\n\n inserted (el, binding) {\n if (el.__qscrollfire !== void 0) {\n destroy(el)\n el.__qscrollfire_destroyed = true\n }\n\n const ctx = {\n scrollTarget: getScrollTarget(el),\n scroll: debounce(() => {\n let containerBottom, elBottom\n\n if (ctx.scrollTarget === window) {\n elBottom = el.getBoundingClientRect().bottom\n containerBottom = window.innerHeight\n }\n else {\n elBottom = offset(el).top + height(el)\n containerBottom = offset(ctx.scrollTarget).top + height(ctx.scrollTarget)\n }\n\n if (elBottom > 0 && elBottom < containerBottom) {\n ctx.scrollTarget.removeEventListener('scroll', ctx.scroll, listenOpts.passive)\n ctx.handler(el)\n }\n }, 25)\n }\n\n update(ctx, binding)\n\n el.__qscrollfire = ctx\n },\n\n update (el, binding) {\n if (el.__qscrollfire !== void 0 && binding.value !== binding.oldValue) {\n update(el.__qscrollfire, binding)\n }\n },\n\n unbind (el) {\n if (el.__qscrollfire_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qscrollfire_destroyed\n }\n }\n}\n","import { getScrollPosition, getScrollTarget, getHorizontalScrollPosition } from '../utils/scroll.js'\nimport { listenOpts } from '../utils/event.js'\n\nfunction update (ctx, { value, oldValue }) {\n if (typeof value !== 'function') {\n ctx.scrollTarget.removeEventListener('scroll', ctx.scroll, listenOpts.passive)\n return\n }\n\n ctx.handler = value\n if (typeof oldValue !== 'function') {\n ctx.scrollTarget.addEventListener('scroll', ctx.scroll, listenOpts.passive)\n }\n}\n\nfunction destroy (el) {\n const ctx = el.__qscroll\n if (ctx !== void 0) {\n ctx.scrollTarget.removeEventListener('scroll', ctx.scroll, listenOpts.passive)\n delete el.__qscroll\n }\n}\n\nexport default {\n name: 'scroll',\n\n inserted (el, binding) {\n if (el.__qscroll !== void 0) {\n destroy(el)\n el.__qscroll_destroyed = true\n }\n\n const ctx = {\n scrollTarget: getScrollTarget(el),\n scroll () {\n ctx.handler(\n getScrollPosition(ctx.scrollTarget),\n getHorizontalScrollPosition(ctx.scrollTarget)\n )\n }\n }\n\n update(ctx, binding)\n\n el.__qscroll = ctx\n },\n\n update (el, binding) {\n if (el.__qscroll !== void 0 && binding.oldValue !== binding.value) {\n update(el.__qscroll, binding)\n }\n },\n\n unbind (el) {\n if (el.__qscroll_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qscroll_destroyed\n }\n }\n}\n","import { client } from '../plugins/Platform.js'\nimport { getTouchTarget } from '../utils/touch.js'\nimport { addEvt, cleanEvt, position, leftClick, stopAndPrevent, noop } from '../utils/event.js'\nimport { clearSelection } from '../utils/selection.js'\n\nfunction destroy (el) {\n const ctx = el.__qtouchhold\n if (ctx !== void 0) {\n cleanEvt(ctx, 'main')\n cleanEvt(ctx, 'temp')\n\n clearTimeout(ctx.timer)\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n delete el.__qtouchhold\n }\n}\n\nexport default {\n name: 'touch-hold',\n\n bind (el, binding) {\n if (el.__qtouchhold !== void 0) {\n destroy(el)\n el.__qtouchhold_destroyed = true\n }\n\n const { modifiers } = binding\n\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 ctx = {\n handler: binding.value,\n noop,\n\n mouseStart (evt) {\n if (typeof ctx.handler === 'function' && leftClick(evt) === true) {\n addEvt(ctx, 'temp', [\n [ document, 'mousemove', 'move', 'passiveCapture' ],\n [ document, 'click', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt, true)\n }\n },\n\n touchStart (evt) {\n if (evt.target !== void 0 && typeof ctx.handler === 'function') {\n const target = getTouchTarget(evt.target)\n addEvt(ctx, 'temp', [\n [ target, 'touchmove', 'move', 'passiveCapture' ],\n [ target, 'touchcancel', 'end', 'notPassiveCapture' ],\n [ target, 'touchend', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt)\n }\n },\n\n start (evt, mouseEvent) {\n ctx.origin = position(evt)\n\n const startTime = Date.now()\n\n if (client.is.mobile === true) {\n document.body.classList.add('non-selectable')\n clearSelection()\n\n ctx.styleCleanup = withDelay => {\n ctx.styleCleanup = void 0\n\n const remove = () => {\n document.body.classList.remove('non-selectable')\n }\n\n if (withDelay === true) {\n clearSelection()\n setTimeout(remove, 10)\n }\n else { remove() }\n }\n }\n\n ctx.triggered = false\n ctx.sensitivity = mouseEvent === true\n ? ctx.mouseSensitivity\n : ctx.touchSensitivity\n\n ctx.timer = setTimeout(() => {\n clearSelection()\n ctx.triggered = true\n\n ctx.handler({\n evt,\n touch: mouseEvent !== true,\n mouse: mouseEvent === true,\n position: ctx.origin,\n duration: Date.now() - startTime\n })\n }, ctx.duration)\n },\n\n move (evt) {\n const { top, left } = position(evt)\n if (\n Math.abs(left - ctx.origin.left) >= ctx.sensitivity ||\n Math.abs(top - ctx.origin.top) >= ctx.sensitivity\n ) {\n clearTimeout(ctx.timer)\n }\n },\n\n end (evt) {\n cleanEvt(ctx, 'temp')\n\n // delay needed otherwise selection still occurs\n ctx.styleCleanup !== void 0 && ctx.styleCleanup(ctx.triggered)\n\n if (ctx.triggered === true) {\n evt !== void 0 && stopAndPrevent(evt)\n }\n else {\n clearTimeout(ctx.timer)\n }\n }\n }\n\n // duration in ms, touch in pixels, mouse in pixels\n const data = [600, 5, 7]\n\n if (typeof binding.arg === 'string' && binding.arg.length > 0) {\n binding.arg.split(':').forEach((val, index) => {\n const v = parseInt(val, 10)\n v && (data[index] = v)\n })\n }\n\n [ ctx.duration, ctx.touchSensitivity, ctx.mouseSensitivity ] = data\n\n el.__qtouchhold = ctx\n\n modifiers.mouse === true && addEvt(ctx, 'main', [\n [ el, 'mousedown', 'mouseStart', `passive${modifiers.mouseCapture === true ? 'Capture' : ''}` ]\n ])\n\n client.has.touch === true && addEvt(ctx, 'main', [\n [ el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}` ],\n [ el, 'touchend', 'noop', 'notPassiveCapture' ]\n ])\n },\n\n update (el, binding) {\n const ctx = el.__qtouchhold\n if (ctx !== void 0 && binding.oldValue !== binding.value) {\n typeof binding.value !== 'function' && ctx.end()\n ctx.handler = binding.value\n }\n },\n\n unbind (el) {\n if (el.__qtouchhold_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qtouchhold_destroyed\n }\n }\n}\n","import { client } from '../plugins/Platform.js'\nimport { getTouchTarget } from '../utils/touch.js'\nimport { addEvt, cleanEvt, position, leftClick, stopAndPrevent, noop } from '../utils/event.js'\nimport { clearSelection } from '../utils/selection.js'\nimport { isKeyCode } from '../utils/key-composition.js'\n\nconst\n keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n },\n keyRegex = new RegExp(`^([\\\\d+]+|${Object.keys(keyCodes).join('|')})$`, 'i')\n\nfunction shouldEnd (evt, origin) {\n const { top, left } = position(evt)\n\n return Math.abs(left - origin.left) >= 7 ||\n Math.abs(top - origin.top) >= 7\n}\n\nfunction destroy (el) {\n const ctx = el.__qtouchrepeat\n if (ctx !== void 0) {\n clearTimeout(ctx.timer)\n\n cleanEvt(ctx, 'main')\n cleanEvt(ctx, 'temp')\n\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n delete el.__qtouchrepeat\n }\n}\n\nexport default {\n name: 'touch-repeat',\n\n bind (el, { modifiers, value, arg }) {\n if (el.__qtouchrepeat !== void 0) {\n destroy(el)\n el.__qtouchrepeat_destroyed = true\n }\n\n const keyboard = Object.keys(modifiers).reduce((acc, key) => {\n if (keyRegex.test(key) === true) {\n const keyCode = isNaN(parseInt(key, 10)) ? keyCodes[key.toLowerCase()] : parseInt(key, 10)\n keyCode >= 0 && acc.push(keyCode)\n }\n return acc\n }, [])\n\n // early return, we don't need to do anything\n if (\n modifiers.mouse !== true &&\n client.has.touch !== true &&\n keyboard.length === 0\n ) {\n return\n }\n\n const durations = typeof arg === 'string' && arg.length > 0\n ? arg.split(':').map(val => parseInt(val, 10))\n : [0, 600, 300]\n\n const durationsLast = durations.length - 1\n\n const ctx = {\n keyboard,\n handler: value,\n\n noop,\n\n mouseStart (evt) {\n if (ctx.event === void 0 && typeof ctx.handler === 'function' && leftClick(evt) === true) {\n addEvt(ctx, 'temp', [\n [ document, 'mousemove', 'move', 'passiveCapture' ],\n [ document, 'click', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt, true)\n }\n },\n\n keyboardStart (evt) {\n if (typeof ctx.handler === 'function' && isKeyCode(evt, keyboard) === true) {\n if (durations[0] === 0 || ctx.event !== void 0) {\n stopAndPrevent(evt)\n el.focus()\n if (ctx.event !== void 0) {\n return\n }\n }\n\n addEvt(ctx, 'temp', [\n [ document, 'keyup', 'end', 'notPassiveCapture' ],\n [ document, 'click', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt, false, true)\n }\n },\n\n touchStart (evt) {\n if (evt.target !== void 0 && typeof ctx.handler === 'function') {\n const target = getTouchTarget(evt.target)\n addEvt(ctx, 'temp', [\n [ target, 'touchmove', 'move', 'passiveCapture' ],\n [ target, 'touchcancel', 'end', 'notPassiveCapture' ],\n [ target, 'touchend', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt)\n }\n },\n\n start (evt, mouseEvent, keyboardEvent) {\n if (keyboardEvent !== true) {\n ctx.origin = position(evt)\n }\n\n function styleCleanup (withDelay) {\n ctx.styleCleanup = void 0\n\n document.documentElement.style.cursor = ''\n\n const remove = () => {\n document.body.classList.remove('non-selectable')\n }\n\n if (withDelay === true) {\n clearSelection()\n setTimeout(remove, 10)\n }\n else { remove() }\n }\n\n if (client.is.mobile === true) {\n document.body.classList.add('non-selectable')\n clearSelection()\n ctx.styleCleanup = styleCleanup\n }\n\n ctx.event = {\n touch: mouseEvent !== true && keyboardEvent !== true,\n mouse: mouseEvent === true,\n keyboard: keyboardEvent === true,\n startTime: Date.now(),\n repeatCount: 0\n }\n\n const fn = () => {\n if (ctx.event === void 0) {\n return\n }\n\n if (ctx.event.repeatCount === 0) {\n ctx.event.evt = evt\n\n if (keyboardEvent === true) {\n ctx.event.keyCode = evt.keyCode\n }\n else {\n ctx.event.position = position(evt)\n }\n\n if (client.is.mobile !== true) {\n document.documentElement.style.cursor = 'pointer'\n document.body.classList.add('non-selectable')\n clearSelection()\n ctx.styleCleanup = styleCleanup\n }\n }\n\n ctx.event.duration = Date.now() - ctx.event.startTime\n ctx.event.repeatCount += 1\n\n ctx.handler(ctx.event)\n\n const index = durationsLast < ctx.event.repeatCount\n ? durationsLast\n : ctx.event.repeatCount\n\n ctx.timer = setTimeout(fn, durations[index])\n }\n\n if (durations[0] === 0) {\n fn()\n }\n else {\n ctx.timer = setTimeout(fn, durations[0])\n }\n },\n\n move (evt) {\n if (ctx.event !== void 0 && shouldEnd(evt, ctx.origin) === true) {\n clearTimeout(ctx.timer)\n }\n },\n\n end (evt) {\n if (ctx.event === void 0) {\n return\n }\n\n ctx.styleCleanup !== void 0 && ctx.styleCleanup(true)\n evt !== void 0 && ctx.event.repeatCount > 0 && stopAndPrevent(evt)\n\n cleanEvt(ctx, 'temp')\n clearTimeout(ctx.timer)\n\n ctx.event = void 0\n }\n }\n\n el.__qtouchrepeat = ctx\n\n modifiers.mouse === true && addEvt(ctx, 'main', [\n [ el, 'mousedown', 'mouseStart', `passive${modifiers.mouseCapture === true ? 'Capture' : ''}` ]\n ])\n\n client.has.touch === true && addEvt(ctx, 'main', [\n [ el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}` ],\n [ el, 'touchend', 'noop', 'notPassiveCapture' ]\n ])\n\n keyboard.length > 0 && addEvt(ctx, 'main', [\n [ el, 'keydown', 'keyboardStart', `notPassive${modifiers.keyCapture === true ? 'Capture' : ''}` ]\n ])\n },\n\n update (el, { oldValue, value }) {\n const ctx = el.__qtouchrepeat\n if (ctx !== void 0 && oldValue !== value) {\n typeof value !== 'function' && ctx.end()\n ctx.handler = value\n }\n },\n\n unbind (el) {\n if (el.__qtouchrepeat_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qtouchrepeat_destroyed\n }\n }\n}\n","import Platform, { isSSR } from './Platform.js'\nimport { noop } from '../utils/event.js'\nimport { getBrand } from '../utils/colors.js'\n\nlet metaValue\n\nfunction getProp () {\n if (Platform.is.winphone) {\n return 'msapplication-navbutton-color'\n }\n if (Platform.is.safari) {\n return 'apple-mobile-web-app-status-bar-style'\n }\n // Chrome, Firefox OS, Opera, Vivaldi\n return 'theme-color'\n}\n\nfunction getMetaTag (v) {\n const els = document.getElementsByTagName('META')\n for (const i in els) {\n if (els[i].name === v) {\n return els[i]\n }\n }\n}\n\nfunction setColor (hexColor) {\n if (metaValue === void 0) {\n // cache it\n metaValue = getProp()\n }\n\n let metaTag = getMetaTag(metaValue)\n const newTag = metaTag === void 0\n\n if (newTag) {\n metaTag = document.createElement('meta')\n metaTag.setAttribute('name', metaValue)\n }\n\n metaTag.setAttribute('content', hexColor)\n\n if (newTag) {\n document.head.appendChild(metaTag)\n }\n}\n\nexport default {\n install ({ $q, cfg }) {\n this.set = isSSR === false && Platform.is.mobile === true && (\n Platform.is.nativeMobile === true ||\n Platform.is.winphone === true || Platform.is.safari === true ||\n Platform.is.webkit === true || Platform.is.vivaldi === true\n )\n ? hexColor => {\n const val = hexColor || getBrand('primary')\n\n if (Platform.is.nativeMobile === true && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(val)\n }\n else {\n setColor(val)\n }\n }\n : noop\n\n $q.addressbarColor = this\n\n cfg.addressbarColor && this.set(cfg.addressbarColor)\n }\n}\n","import Vue from 'vue'\n\nimport { isSSR } from './Platform.js'\n\nconst prefixes = {}\n\n// needed for consistency across browsers,\n// including IE11 which does not return anything\nfunction promisify (target, fn) {\n try {\n const res = target[fn]()\n return res === void 0\n ? Promise.resolve()\n : res\n }\n catch (err) {\n return Promise.reject(err)\n }\n}\n\nexport default {\n isCapable: false,\n isActive: false,\n activeEl: null,\n\n request (target) {\n if (this.isCapable === true && this.isActive === false) {\n const el = target || document.documentElement\n return promisify(el, prefixes.request).then(() => {\n this.activeEl = el\n })\n }\n\n return this.__getErr()\n },\n\n exit () {\n return this.isCapable === true && this.isActive === true\n ? promisify(document, prefixes.exit).then(() => {\n this.activeEl = null\n })\n : this.__getErr()\n },\n\n toggle (target) {\n return this.isActive === true\n ? this.exit()\n : this.request(target)\n },\n\n install ({ $q }) {\n $q.fullscreen = this\n\n if (isSSR === true) { return }\n\n prefixes.request = [\n 'requestFullscreen',\n 'msRequestFullscreen', 'mozRequestFullScreen', 'webkitRequestFullscreen'\n ].find(request => document.documentElement[request] !== void 0)\n\n this.isCapable = prefixes.request !== void 0\n\n if (this.isCapable === false) {\n // it means the browser does NOT support it\n this.__getErr = () => Promise.reject('Not capable')\n return\n }\n\n this.__getErr = () => Promise.resolve()\n\n prefixes.exit = [\n 'exitFullscreen',\n 'msExitFullscreen', 'mozCancelFullScreen', 'webkitExitFullscreen'\n ].find(exit => document[exit])\n\n this.isActive = !!(document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement)\n\n ;[\n 'onfullscreenchange',\n 'onmsfullscreenchange', 'onwebkitfullscreenchange'\n ].forEach(evt => {\n document[evt] = () => {\n this.isActive = this.isActive === false\n }\n })\n\n Vue.util.defineReactive(this, 'isActive', this.isActive)\n Vue.util.defineReactive(this, 'activeEl', this.activeEl)\n }\n}\n","import Vue from 'vue'\n\nimport { isSSR } from './Platform.js'\n\nexport default {\n appVisible: false,\n\n install ({ $q }) {\n if (isSSR === true) {\n this.appVisible = $q.appVisible = true\n return\n }\n\n let prop, evt\n\n if (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support\n prop = 'hidden'\n evt = 'visibilitychange'\n }\n else if (typeof document.msHidden !== 'undefined') {\n prop = 'msHidden'\n evt = 'msvisibilitychange'\n }\n else if (typeof document.webkitHidden !== 'undefined') {\n prop = 'webkitHidden'\n evt = 'webkitvisibilitychange'\n }\n\n const update = () => {\n this.appVisible = $q.appVisible = !document[prop]\n }\n\n update()\n\n if (evt && typeof document[prop] !== 'undefined') {\n Vue.util.defineReactive($q, 'appVisible', this.appVisible)\n document.addEventListener(evt, update, false)\n }\n }\n}\n","import Vue from 'vue'\n\nimport QDialog from '../dialog/QDialog.js'\n\nimport QIcon from '../icon/QIcon.js'\nimport QSeparator from '../separator/QSeparator.js'\n\nimport QCard from '../card/QCard.js'\nimport QCardSection from '../card/QCardSection.js'\n\nimport QItem from '../item/QItem.js'\nimport QItemSection from '../item/QItemSection.js'\n\nimport DarkMixin from '../../mixins/dark.js'\nimport AttrsMixin from '../../mixins/attrs.js'\n\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'BottomSheetPlugin',\n\n mixins: [ DarkMixin, AttrsMixin ],\n\n inheritAttrs: false,\n\n props: {\n title: String,\n message: String,\n actions: Array,\n\n grid: Boolean,\n\n cardClass: [String, Array, Object],\n cardStyle: [String, Array, Object]\n },\n\n computed: {\n dialogProps () {\n return {\n ...this.qAttrs,\n position: 'bottom'\n }\n }\n },\n\n methods: {\n show () {\n this.$refs.dialog.show()\n },\n\n hide () {\n this.$refs.dialog.hide()\n },\n\n onOk (action) {\n this.$emit('ok', action)\n this.hide()\n },\n\n __getGrid (h) {\n return this.actions.map(action => {\n const img = action.avatar || action.img\n\n return action.label === void 0\n ? h(QSeparator, {\n staticClass: 'col-all',\n props: { dark: this.isDark }\n })\n : h('div', {\n staticClass: 'q-bottom-sheet__item q-hoverable q-focusable cursor-pointer relative-position',\n class: action.classes,\n attrs: { tabindex: 0 },\n on: {\n click: () => this.onOk(action),\n keyup: e => {\n e.keyCode === 13 && this.onOk(action)\n }\n }\n }, [\n h('div', { staticClass: 'q-focus-helper' }),\n\n action.icon\n ? h(QIcon, { props: { name: action.icon, color: action.color } })\n : (\n img\n ? h('img', {\n attrs: { src: img },\n staticClass: action.avatar ? 'q-bottom-sheet__avatar' : null\n })\n : h('div', { staticClass: 'q-bottom-sheet__empty-icon' })\n ),\n\n h('div', [ action.label ])\n ])\n })\n },\n\n __getList (h) {\n return this.actions.map(action => {\n const img = action.avatar || action.img\n\n return action.label === void 0\n ? h(QSeparator, { props: { spaced: true, dark: this.isDark } })\n : h(QItem, {\n staticClass: 'q-bottom-sheet__item',\n class: action.classes,\n props: {\n tabindex: 0,\n clickable: true,\n dark: this.isDark\n },\n on: {\n click: () => this.onOk(action),\n keyup: e => {\n e.keyCode === 13 && this.onOk(action)\n }\n }\n }, [\n h(QItemSection, { props: { avatar: true } }, [\n action.icon\n ? h(QIcon, { props: { name: action.icon, color: action.color } })\n : (\n img\n ? h('img', {\n attrs: { src: img },\n staticClass: action.avatar ? 'q-bottom-sheet__avatar' : null\n })\n : null\n )\n ]),\n h(QItemSection, [ action.label ])\n ])\n })\n }\n },\n\n render (h) {\n const child = []\n\n this.title && child.push(\n h(QCardSection, {\n staticClass: 'q-dialog__title'\n }, [ this.title ])\n )\n\n this.message && child.push(\n h(QCardSection, {\n staticClass: 'q-dialog__message'\n }, [ this.message ])\n )\n\n child.push(\n this.grid === true\n ? h('div', {\n staticClass: 'row items-stretch justify-start'\n }, this.__getGrid(h))\n : h('div', this.__getList(h))\n )\n\n return h(QDialog, {\n ref: 'dialog',\n props: this.dialogProps,\n on: cache(this, 'hide', {\n hide: () => {\n this.$emit('hide')\n }\n })\n }, [\n h(QCard, {\n staticClass: `q-bottom-sheet q-bottom-sheet--${this.grid === true ? 'grid' : 'list'}` +\n (this.isDark === true ? ' q-bottom-sheet--dark q-dark' : ''),\n style: this.cardStyle,\n class: this.cardClass\n }, child)\n ])\n }\n})\n","import Vue from 'vue'\n\nimport { isSSR } from '../plugins/Platform.js'\n\nconst ssrAPI = {\n onOk: () => ssrAPI,\n okCancel: () => ssrAPI,\n hide: () => ssrAPI\n}\n\nexport default function (DefaultComponent) {\n return ({ className, class: klass, style, component, root, parent, ...props }) => {\n if (isSSR === true) { return ssrAPI }\n\n klass !== void 0 && (props.cardClass = klass)\n style !== void 0 && (props.cardStyle = style)\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 vm.$refs.dialog.hide()\n return API\n }\n }\n\n const node = document.createElement('div')\n document.body.appendChild(node)\n\n let emittedOK = false\n\n const on = {\n ok: data => {\n emittedOK = true\n okFns.forEach(fn => { fn(data) })\n },\n\n hide: () => {\n vm.$destroy()\n vm.$el.remove()\n vm = null\n\n if (emittedOK !== true) {\n cancelFns.forEach(fn => { fn() })\n }\n }\n }\n\n Vue.observable(props)\n\n const DialogComponent = component !== void 0\n ? component\n : DefaultComponent\n\n const attrs = component === void 0\n ? props\n : void 0\n\n let vm = new Vue({\n name: 'QGlobalDialog',\n\n el: node,\n parent: parent === void 0 ? root : parent,\n\n render (h) {\n return h(DialogComponent, {\n ref: 'dialog',\n props,\n attrs,\n on\n })\n },\n\n mounted () {\n this.$refs.dialog.show()\n }\n })\n\n return API\n }\n}\n","import BottomSheet from '../components/dialog-bottom-sheet/BottomSheet.js'\nimport globalDialog from '../utils/global-dialog.js'\n\nexport default {\n install ({ $q }) {\n this.create = $q.bottomSheet = globalDialog(BottomSheet)\n }\n}\n","import { isSSR } from './Platform.js'\n\nfunction encode (string) {\n return encodeURIComponent(string)\n}\n\nfunction decode (string) {\n return decodeURIComponent(string)\n}\n\nfunction stringifyCookieValue (value) {\n return encode(value === Object(value) ? JSON.stringify(value) : '' + value)\n}\n\nfunction read (string) {\n if (string === '') {\n return string\n }\n\n if (string.indexOf('\"') === 0) {\n // This is a quoted cookie as according to RFC2068, unescape...\n string = string.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\')\n }\n\n // Replace server-side written pluses with spaces.\n // If we can't decode the cookie, ignore it, it's unusable.\n // If we can't parse the cookie, ignore it, it's unusable.\n string = decode(string.replace(/\\+/g, ' '))\n\n try {\n string = JSON.parse(string)\n }\n catch (e) {}\n\n return string\n}\n\nfunction getString (msOffset) {\n const time = new Date()\n time.setMilliseconds(time.getMilliseconds() + msOffset)\n return time.toUTCString()\n}\n\nfunction parseExpireString (str) {\n let timestamp = 0\n\n const days = str.match(/(\\d+)d/)\n const hours = str.match(/(\\d+)h/)\n const minutes = str.match(/(\\d+)m/)\n const seconds = str.match(/(\\d+)s/)\n\n if (days) { timestamp += days[1] * 864e+5 }\n if (hours) { timestamp += hours[1] * 36e+5 }\n if (minutes) { timestamp += minutes[1] * 6e+4 }\n if (seconds) { timestamp += seconds[1] * 1000 }\n\n return timestamp === 0\n ? str\n : getString(timestamp)\n}\n\nfunction set (key, val, opts = {}, ssr) {\n let expire, expireValue\n\n if (opts.expires !== void 0) {\n // if it's a Date Object\n if (Object.prototype.toString.call(opts.expires) === '[object Date]') {\n expire = opts.expires.toUTCString()\n }\n // if it's a String (eg. \"15m\", \"1h\", \"13d\", \"1d 15m\", \"31s\")\n // possible units: d (days), h (hours), m (minutes), s (seconds)\n else if (typeof opts.expires === 'string') {\n expire = parseExpireString(opts.expires)\n }\n // otherwise it must be a Number (defined in days)\n else {\n expireValue = parseFloat(opts.expires)\n expire = isNaN(expireValue) === false\n ? getString(expireValue * 864e+5)\n : opts.expires\n }\n }\n\n const keyValue = `${encode(key)}=${stringifyCookieValue(val)}`\n\n const cookie = [\n keyValue,\n expire !== void 0 ? '; Expires=' + expire : '', // use expires attribute, max-age is not supported by IE\n opts.path ? '; Path=' + opts.path : '',\n opts.domain ? '; Domain=' + opts.domain : '',\n opts.sameSite ? '; SameSite=' + opts.sameSite : '',\n opts.httpOnly ? '; HttpOnly' : '',\n opts.secure ? '; Secure' : '',\n opts.other ? '; ' + opts.other : ''\n ].join('')\n\n if (ssr) {\n if (ssr.req.qCookies) {\n ssr.req.qCookies.push(cookie)\n }\n else {\n ssr.req.qCookies = [ cookie ]\n }\n\n ssr.res.setHeader('Set-Cookie', ssr.req.qCookies)\n\n // make temporary update so future get()\n // within same SSR timeframe would return the set value\n\n let all = ssr.req.headers.cookie || ''\n\n if (expire !== void 0 && expireValue < 0) {\n const val = get(key, ssr)\n if (val !== undefined) {\n all = all\n .replace(`${key}=${val}; `, '')\n .replace(`; ${key}=${val}`, '')\n .replace(`${key}=${val}`, '')\n }\n }\n else {\n all = all\n ? `${keyValue}; ${all}`\n : cookie\n }\n\n ssr.req.headers.cookie = all\n }\n else {\n document.cookie = cookie\n }\n}\n\nfunction get (key, ssr) {\n const\n cookieSource = ssr ? ssr.req.headers : document,\n cookies = cookieSource.cookie ? cookieSource.cookie.split('; ') : [],\n l = cookies.length\n let\n result = key ? null : {},\n i = 0,\n parts,\n name,\n cookie\n\n for (; i < l; i++) {\n parts = cookies[i].split('=')\n name = decode(parts.shift())\n cookie = parts.join('=')\n\n if (!key) {\n result[name] = cookie\n }\n else if (key === name) {\n result = read(cookie)\n break\n }\n }\n\n return result\n}\n\nfunction remove (key, options, ssr) {\n set(\n key,\n '',\n { expires: -1, ...options },\n ssr\n )\n}\n\nfunction has (key, ssr) {\n return get(key, ssr) !== null\n}\n\nexport function getObject (ssr) {\n return {\n get: key => get(key, ssr),\n set: (key, val, opts) => set(key, val, opts, ssr),\n has: key => has(key, ssr),\n remove: (key, options) => remove(key, options, ssr),\n getAll: () => get(null, ssr)\n }\n}\n\nexport default {\n parseSSR (ssrContext) {\n return ssrContext !== void 0\n ? getObject(ssrContext)\n : this\n },\n\n install ({ $q, queues }) {\n if (isSSR === true) {\n queues.server.push((q, ctx) => {\n q.cookies = getObject(ctx.ssr)\n })\n }\n else {\n Object.assign(this, getObject())\n $q.cookies = this\n }\n }\n}\n","import Vue from 'vue'\n\nimport QDialog from '../dialog/QDialog.js'\nimport QBtn from '../btn/QBtn.js'\n\nimport clone from '../../utils/clone.js'\nimport { isKeyCode } from '../../utils/key-composition.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 DarkMixin from '../../mixins/dark.js'\nimport AttrsMixin from '../../mixins/attrs.js'\n\nimport cache from '../../utils/cache.js'\n\nexport default Vue.extend({\n name: 'DialogPlugin',\n\n mixins: [ DarkMixin, AttrsMixin ],\n\n inheritAttrs: false,\n\n props: {\n title: String,\n message: String,\n prompt: Object,\n options: 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 computed: {\n hasForm () {\n return this.prompt !== void 0 || this.options !== void 0\n },\n\n okLabel () {\n return Object(this.ok) === this.ok\n ? this.$q.lang.label.ok\n : (\n this.ok === true\n ? this.$q.lang.label.ok\n : this.ok\n )\n },\n\n cancelLabel () {\n return Object(this.cancel) === this.cancel\n ? this.$q.lang.label.cancel\n : (\n this.cancel === true\n ? this.$q.lang.label.cancel\n : this.cancel\n )\n },\n\n vmColor () {\n return this.color || (this.isDark === true ? 'amber' : 'primary')\n },\n\n okDisabled () {\n if (this.prompt !== void 0) {\n return this.prompt.isValid !== void 0 &&\n this.prompt.isValid(this.prompt.model) !== true\n }\n if (this.options !== void 0) {\n return this.options.isValid !== void 0 &&\n this.options.isValid(this.options.model) !== true\n }\n },\n\n okProps () {\n return {\n color: this.vmColor,\n label: this.okLabel,\n ripple: false,\n ...(Object(this.ok) === this.ok ? this.ok : { flat: true }),\n disable: this.okDisabled\n }\n },\n\n cancelProps () {\n return {\n color: this.vmColor,\n label: this.cancelLabel,\n ripple: false,\n ...(Object(this.cancel) === this.cancel ? this.cancel : { flat: true })\n }\n }\n },\n\n methods: {\n show () {\n this.$refs.dialog.show()\n },\n\n hide () {\n this.$refs.dialog.hide()\n },\n\n getPrompt (h) {\n return [\n h(QInput, {\n props: {\n value: this.prompt.model,\n type: this.prompt.type,\n\n label: this.prompt.label,\n stackLabel: this.prompt.stackLabel,\n\n outlined: this.prompt.outlined,\n filled: this.prompt.filled,\n standout: this.prompt.standout,\n rounded: this.prompt.rounded,\n square: this.prompt.square,\n\n counter: this.prompt.counter,\n maxlength: this.prompt.maxlength,\n prefix: this.prompt.prefix,\n suffix: this.prompt.suffix,\n\n color: this.vmColor,\n dense: true,\n autofocus: true,\n dark: this.isDark\n },\n attrs: this.prompt.attrs,\n on: cache(this, 'prompt', {\n input: v => { this.prompt.model = v },\n keyup: evt => {\n // if ENTER key\n if (\n this.okDisabled !== true &&\n this.prompt.type !== 'textarea' &&\n isKeyCode(evt, 13) === true\n ) {\n this.onOk()\n }\n }\n })\n })\n ]\n },\n\n getOptions (h) {\n return [\n h(QOptionGroup, {\n props: {\n value: this.options.model,\n type: this.options.type,\n color: this.vmColor,\n inline: this.options.inline,\n options: this.options.items,\n dark: this.isDark\n },\n on: cache(this, 'opts', {\n input: v => { this.options.model = v }\n })\n })\n ]\n },\n\n getButtons (h) {\n const child = []\n\n this.cancel && child.push(h(QBtn, {\n props: this.cancelProps,\n attrs: { 'data-autofocus': this.focus === 'cancel' && this.hasForm !== true },\n on: cache(this, 'cancel', { click: this.onCancel })\n }))\n\n this.ok && child.push(h(QBtn, {\n props: this.okProps,\n attrs: { 'data-autofocus': this.focus === 'ok' && this.hasForm !== true },\n on: cache(this, 'ok', { click: this.onOk })\n }))\n\n if (child.length > 0) {\n return h(QCardActions, {\n staticClass: this.stackButtons === true ? 'items-end' : null,\n props: {\n vertical: this.stackButtons,\n align: 'right'\n }\n }, child)\n }\n },\n\n onOk () {\n this.$emit('ok', clone(this.getData()))\n this.hide()\n },\n\n onCancel () {\n this.hide()\n },\n\n getData () {\n return this.prompt !== void 0\n ? this.prompt.model\n : (this.options !== void 0 ? this.options.model : void 0)\n },\n\n getSection (h, staticClass, text) {\n return this.html === true\n ? h(QCardSection, {\n staticClass,\n domProps: { innerHTML: text }\n })\n : h(QCardSection, { staticClass }, [ text ])\n }\n },\n\n render (h) {\n const child = []\n\n this.title && child.push(\n this.getSection(h, 'q-dialog__title', this.title)\n )\n\n this.message && child.push(\n this.getSection(h, 'q-dialog__message', this.message)\n )\n\n if (this.prompt !== void 0) {\n child.push(\n h(\n QCardSection,\n { staticClass: 'scroll q-dialog-plugin__form' },\n this.getPrompt(h)\n )\n )\n }\n else if (this.options !== void 0) {\n child.push(\n h(QSeparator, { props: { dark: this.isDark } }),\n h(\n QCardSection,\n { staticClass: 'scroll q-dialog-plugin__form' },\n this.getOptions(h)\n ),\n h(QSeparator, { props: { dark: this.isDark } })\n )\n }\n\n if (this.ok || this.cancel) {\n child.push(this.getButtons(h))\n }\n\n return h(QDialog, {\n ref: 'dialog',\n\n props: {\n ...this.qAttrs,\n value: this.value\n },\n\n on: cache(this, 'hide', {\n hide: () => {\n this.$emit('hide')\n }\n })\n }, [\n h(QCard, {\n staticClass: 'q-dialog-plugin' +\n (this.isDark === true ? ' q-dialog-plugin--dark q-dark' : ''),\n style: this.cardStyle,\n class: this.cardClass,\n props: { dark: this.isDark }\n }, child)\n ])\n }\n})\n","import DialogPlugin from '../components/dialog-plugin/DialogPlugin.js'\nimport globalDialog from '../utils/global-dialog.js'\n\nexport default {\n install ({ $q }) {\n this.create = $q.dialog = globalDialog(DialogPlugin)\n }\n}\n","import Vue from 'vue'\n\nimport { isSSR } from './Platform.js'\nimport { noop } from '../utils/event.js'\nimport QAjaxBar from '../components/ajax-bar/QAjaxBar.js'\n\nexport default {\n isActive: false,\n start: noop,\n stop: noop,\n increment: noop,\n setDefaults: noop,\n\n install ({ $q, cfg }) {\n if (isSSR === true) {\n $q.loadingBar = this\n return\n }\n\n const props = cfg.loadingBar !== void 0\n ? { ...cfg.loadingBar }\n : {}\n\n const bar = $q.loadingBar = new Vue({\n name: 'LoadingBar',\n render: h => h(QAjaxBar, {\n ref: 'bar',\n props\n })\n }).$mount().$refs.bar\n\n Object.assign(this, {\n start: speed => {\n bar.start(speed)\n this.isActive = bar.isActive = bar.calls > 0\n },\n stop: () => {\n bar.stop()\n this.isActive = bar.isActive = bar.calls > 0\n },\n increment: bar.increment,\n setDefaults: opts => {\n opts === Object(opts) && Object.assign(props, opts)\n bar.$parent.$forceUpdate()\n }\n })\n\n Vue.util.defineReactive(this, 'isActive', this.isActive)\n Vue.util.defineReactive(bar, 'isActive', this.isActive)\n bar.setDefaults = this.setDefaults\n\n document.body.appendChild(bar.$parent.$el)\n }\n}\n","import Vue from 'vue'\n\nimport QSpinner from '../components/spinner/QSpinner.js'\nimport { isSSR } from './Platform.js'\nimport cache from '../utils/cache.js'\nimport { preventScroll } from '../mixins/prevent-scroll.js'\n\nlet\n vm,\n uid = 0,\n timeout,\n props = {}\nconst\n originalDefaults = {\n delay: 0,\n message: false,\n spinnerSize: 80,\n spinnerColor: 'white',\n messageColor: 'white',\n backgroundColor: 'black',\n spinner: QSpinner,\n customClass: ''\n },\n defaults = { ...originalDefaults }\n\nconst Loading = {\n isActive: false,\n\n show (opts) {\n if (isSSR === true) { return }\n\n props = opts === Object(opts) && opts.ignoreDefaults === true\n ? { ...originalDefaults, ...opts }\n : { ...defaults, ...opts }\n\n props.customClass += ` text-${props.backgroundColor}`\n props.uid = `l_${uid++}`\n\n this.isActive = true\n\n if (vm !== void 0) {\n vm.$forceUpdate()\n return\n }\n\n clearTimeout(timeout)\n timeout = setTimeout(() => {\n timeout = void 0\n\n const node = document.createElement('div')\n document.body.appendChild(node)\n\n vm = new Vue({\n name: 'QLoading',\n\n el: node,\n\n mounted () {\n preventScroll(true)\n },\n\n render: (h) => {\n return h('transition', {\n props: {\n name: 'q-transition--fade',\n appear: true\n },\n on: cache(this, 'tr', {\n 'after-leave': () => {\n // might be called to finalize\n // previous leave, even if it was cancelled\n if (this.isActive !== true && vm !== void 0) {\n preventScroll(false)\n vm.$destroy()\n vm.$el.remove()\n vm = void 0\n }\n }\n })\n }, [\n this.isActive === true ? h('div', {\n staticClass: 'q-loading fullscreen column flex-center z-max',\n key: props.uid,\n class: props.customClass.trim()\n }, [\n h(props.spinner, {\n props: {\n color: props.spinnerColor,\n size: props.spinnerSize\n }\n }),\n (props.message && h('div', {\n class: `text-${props.messageColor}`,\n domProps: {\n [props.sanitize === true ? 'textContent' : 'innerHTML']: props.message\n }\n })) || void 0\n ]) : null\n ])\n }\n })\n }, props.delay)\n },\n\n hide () {\n if (this.isActive === true) {\n if (timeout !== void 0) {\n clearTimeout(timeout)\n timeout = void 0\n }\n\n this.isActive = false\n }\n },\n\n setDefaults (opts) {\n opts === Object(opts) && Object.assign(defaults, opts)\n },\n\n install ({ $q, cfg: { loading } }) {\n this.setDefaults(loading)\n $q.loading = this\n }\n}\n\nif (isSSR === false) {\n Vue.util.defineReactive(Loading, 'isActive', Loading.isActive)\n}\n\nexport default Loading\n","import Vue from 'vue'\n\nimport { isSSR, fromSSR } from './Platform.js'\nimport extend from '../utils/extend.js'\n\nlet updateId, ssrTakeover\n\nfunction normalize (meta) {\n if (meta.title) {\n meta.title = meta.titleTemplate\n ? meta.titleTemplate(meta.title)\n : meta.title\n delete meta.titleTemplate\n }\n\n ;[['meta', 'content'], ['link', 'href']].forEach(type => {\n const\n metaType = meta[type[0]],\n metaProp = type[1]\n\n for (const name in metaType) {\n const metaLink = metaType[name]\n\n if (metaLink.template) {\n if (Object.keys(metaLink).length === 1) {\n delete metaType[name]\n }\n else {\n metaLink[metaProp] = metaLink.template(metaLink[metaProp] || '')\n delete metaLink.template\n }\n }\n }\n })\n}\n\nfunction changed (old, def) {\n if (Object.keys(old).length !== Object.keys(def).length) {\n return true\n }\n for (const key in old) {\n if (old[key] !== def[key]) {\n return true\n }\n }\n}\n\nfunction bodyFilter (name) {\n return ['class', 'style'].includes(name) === false\n}\n\nfunction htmlFilter (name) {\n return ['lang', 'dir'].includes(name) === false\n}\n\nfunction diff (meta, other) {\n const add = {}, remove = {}\n\n if (meta === void 0) {\n return { add: other, remove }\n }\n\n if (meta.title !== other.title) {\n add.title = other.title\n }\n\n ;['meta', 'link', 'script', 'htmlAttr', 'bodyAttr'].forEach(type => {\n const old = meta[type], cur = other[type]\n remove[type] = []\n\n if (old === void 0 || old === null) {\n add[type] = cur\n return\n }\n\n add[type] = {}\n\n for (const key in old) {\n if (cur.hasOwnProperty(key) === false) {\n remove[type].push(key)\n }\n }\n for (const key in cur) {\n if (old.hasOwnProperty(key) === false) {\n add[type][key] = cur[key]\n }\n else if (changed(old[key], cur[key]) === true) {\n remove[type].push(key)\n add[type][key] = cur[key]\n }\n }\n })\n\n return { add, remove }\n}\n\nfunction apply ({ add, remove }) {\n if (add.title) {\n document.title = add.title\n }\n\n if (Object.keys(remove).length > 0) {\n ['meta', 'link', 'script'].forEach(type => {\n remove[type].forEach(name => {\n document.head.querySelector(`${type}[data-qmeta=\"${name}\"]`).remove()\n })\n })\n remove.htmlAttr.filter(htmlFilter).forEach(name => {\n document.documentElement.removeAttribute(name)\n })\n remove.bodyAttr.filter(bodyFilter).forEach(name => {\n document.body.removeAttribute(name)\n })\n }\n\n ;['meta', 'link', 'script'].forEach(type => {\n const metaType = add[type]\n\n for (const name in metaType) {\n const tag = document.createElement(type)\n for (const att in metaType[name]) {\n if (att !== 'innerHTML') {\n tag.setAttribute(att, metaType[name][att])\n }\n }\n tag.setAttribute('data-qmeta', name)\n if (type === 'script') {\n tag.innerHTML = metaType[name].innerHTML || ''\n }\n document.head.appendChild(tag)\n }\n })\n Object.keys(add.htmlAttr).filter(htmlFilter).forEach(name => {\n document.documentElement.setAttribute(name, add.htmlAttr[name] || '')\n })\n Object.keys(add.bodyAttr).filter(bodyFilter).forEach(name => {\n document.body.setAttribute(name, add.bodyAttr[name] || '')\n })\n}\n\nfunction parseMeta (component, meta) {\n if (component._inactive === true) { return }\n\n // if it has meta\n if (hasMeta(component) === true) {\n extend(true, meta, component.__qMeta)\n\n if (component.$options.meta.stopPropagation === true) {\n return\n }\n }\n\n component.$children.forEach(child => {\n parseMeta(child, meta)\n })\n}\n\nfunction updateClient () {\n if (ssrTakeover === true) {\n ssrTakeover = false\n this.$root.__currentMeta = window.__Q_META__\n }\n\n const meta = {\n title: '',\n titleTemplate: null,\n meta: {},\n link: {},\n script: {},\n htmlAttr: {},\n bodyAttr: {}\n }\n parseMeta(this.$root, meta)\n normalize(meta)\n\n apply(diff(this.$root.__currentMeta, meta))\n this.$root.__currentMeta = meta\n}\n\nfunction getAttr (seed) {\n return att => {\n const val = seed[att]\n return att + (val !== void 0 ? `=\"${val}\"` : '')\n }\n}\n\nfunction getHead (meta) {\n let output = ''\n if (meta.title) {\n output += `