{"version":3,"file":"quasar.js","mappings":"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","sources":["webpack://launchpadadmin/./node_modules/@quasar/extras/fontawesome-v5/fontawesome-v5.css","webpack://launchpadadmin/./node_modules/@quasar/extras/material-icons/material-icons.css","webpack://launchpadadmin/./node_modules/@quasar/extras/roboto-font/roboto-font.css","webpack://launchpadadmin/./node_modules/quasar/dist/quasar.css","webpack://launchpadadmin/./node_modules/quasar/src/components/avatar/QAvatar.js","webpack://launchpadadmin/./node_modules/quasar/src/components/badge/QBadge.js","webpack://launchpadadmin/./node_modules/quasar/src/components/btn/QBtn.js","webpack://launchpadadmin/./node_modules/quasar/src/components/btn/use-btn.js","webpack://launchpadadmin/./node_modules/quasar/src/components/card/QCard.js","webpack://launchpadadmin/./node_modules/quasar/src/components/card/QCardActions.js","webpack://launchpadadmin/./node_modules/quasar/src/components/card/QCardSection.js","webpack://launchpadadmin/./node_modules/quasar/src/components/carousel/QCarousel.js","webpack://launchpadadmin/./node_modules/quasar/src/components/carousel/QCarouselSlide.js","webpack://launchpadadmin/./node_modules/quasar/src/components/checkbox/QCheckbox.js","webpack://launchpadadmin/./node_modules/quasar/src/components/checkbox/use-checkbox.js","webpack://launchpadadmin/./node_modules/quasar/src/components/chip/QChip.js","webpack://launchpadadmin/./node_modules/quasar/src/components/date/QDate.js","webpack://launchpadadmin/./node_modules/quasar/src/components/date/use-datetime.js","webpack://launchpadadmin/./node_modules/quasar/src/components/dialog/QDialog.js","webpack://launchpadadmin/./node_modules/quasar/src/components/drawer/QDrawer.js","webpack://launchpadadmin/./node_modules/quasar/src/components/editor/editor-caret.js","webpack://launchpadadmin/./node_modules/quasar/src/components/btn-group/QBtnGroup.js","webpack://launchpadadmin/./node_modules/quasar/src/components/btn-dropdown/QBtnDropdown.js","webpack://launchpadadmin/./node_modules/quasar/src/components/editor/editor-utils.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/extend.js","webpack://launchpadadmin/./node_modules/quasar/src/components/editor/QEditor.js","webpack://launchpadadmin/./node_modules/quasar/src/components/field/QField.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-file.js","webpack://launchpadadmin/./node_modules/quasar/src/components/file/QFile.js","webpack://launchpadadmin/./node_modules/quasar/src/components/footer/QFooter.js","webpack://launchpadadmin/./node_modules/quasar/src/components/header/QHeader.js","webpack://launchpadadmin/./node_modules/quasar/src/components/icon/QIcon.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-ratio.js","webpack://launchpadadmin/./node_modules/quasar/src/components/img/QImg.js","webpack://launchpadadmin/./node_modules/quasar/src/components/infinite-scroll/QInfiniteScroll.js","webpack://launchpadadmin/./node_modules/quasar/src/components/input/use-mask.js","webpack://launchpadadmin/./node_modules/quasar/src/components/input/QInput.js","webpack://launchpadadmin/./node_modules/quasar/src/components/intersection/QIntersection.js","webpack://launchpadadmin/./node_modules/quasar/src/components/item/QItem.js","webpack://launchpadadmin/./node_modules/quasar/src/components/item/QItemLabel.js","webpack://launchpadadmin/./node_modules/quasar/src/components/item/QItemSection.js","webpack://launchpadadmin/./node_modules/quasar/src/components/item/QList.js","webpack://launchpadadmin/./node_modules/quasar/src/components/layout/QLayout.js","webpack://launchpadadmin/./node_modules/quasar/src/components/linear-progress/QLinearProgress.js","webpack://launchpadadmin/./node_modules/quasar/src/components/menu/QMenu.js","webpack://launchpadadmin/./node_modules/quasar/src/components/page-sticky/use-page-sticky.js","webpack://launchpadadmin/./node_modules/quasar/src/components/page-sticky/QPageSticky.js","webpack://launchpadadmin/./node_modules/quasar/src/components/page/QPageContainer.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/clone.js","webpack://launchpadadmin/./node_modules/quasar/src/components/popup-edit/QPopupEdit.js","webpack://launchpadadmin/./node_modules/quasar/src/components/popup-proxy/QPopupProxy.js","webpack://launchpadadmin/./node_modules/quasar/src/components/radio/QRadio.js","webpack://launchpadadmin/./node_modules/quasar/src/components/rating/QRating.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-can-render.js","webpack://launchpadadmin/./node_modules/quasar/src/components/resize-observer/QResizeObserver.js","webpack://launchpadadmin/./node_modules/quasar/src/components/scroll-area/QScrollArea.js","webpack://launchpadadmin/./node_modules/quasar/src/components/scroll-observer/QScrollObserver.js","webpack://launchpadadmin/./node_modules/quasar/src/components/select/QSelect.js","webpack://launchpadadmin/./node_modules/quasar/src/components/separator/QSeparator.js","webpack://launchpadadmin/./node_modules/quasar/src/components/space/QSpace.js","webpack://launchpadadmin/./node_modules/quasar/src/components/spinner/QSpinner.js","webpack://launchpadadmin/./node_modules/quasar/src/components/spinner/QSpinnerDots.js","webpack://launchpadadmin/./node_modules/quasar/src/components/spinner/QSpinnerIos.js","webpack://launchpadadmin/./node_modules/quasar/src/components/spinner/use-spinner.js","webpack://launchpadadmin/./node_modules/quasar/src/components/slide-transition/QSlideTransition.js","webpack://launchpadadmin/./node_modules/quasar/src/components/stepper/QStep.js","webpack://launchpadadmin/./node_modules/quasar/src/components/stepper/QStepper.js","webpack://launchpadadmin/./node_modules/quasar/src/components/stepper/QStepperNavigation.js","webpack://launchpadadmin/./node_modules/quasar/src/components/stepper/StepHeader.js","webpack://launchpadadmin/./node_modules/quasar/src/components/tab-panels/QTabPanel.js","webpack://launchpadadmin/./node_modules/quasar/src/components/tab-panels/QTabPanels.js","webpack://launchpadadmin/./node_modules/quasar/src/components/table/QTh.js","webpack://launchpadadmin/./node_modules/quasar/src/components/markup-table/QMarkupTable.js","webpack://launchpadadmin/./node_modules/quasar/src/components/table/get-table-middle.js","webpack://launchpadadmin/./node_modules/quasar/src/components/virtual-scroll/QVirtualScroll.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/sort.js","webpack://launchpadadmin/./node_modules/quasar/src/components/table/table-sort.js","webpack://launchpadadmin/./node_modules/quasar/src/components/table/table-filter.js","webpack://launchpadadmin/./node_modules/quasar/src/components/table/table-pagination.js","webpack://launchpadadmin/./node_modules/quasar/src/components/table/table-row-selection.js","webpack://launchpadadmin/./node_modules/quasar/src/components/table/table-row-expand.js","webpack://launchpadadmin/./node_modules/quasar/src/components/table/table-column-selection.js","webpack://launchpadadmin/./node_modules/quasar/src/components/table/QTable.js","webpack://launchpadadmin/./node_modules/quasar/src/components/tabs/use-tab.js","webpack://launchpadadmin/./node_modules/quasar/src/components/tabs/QTab.js","webpack://launchpadadmin/./node_modules/quasar/src/components/tabs/QTabs.js","webpack://launchpadadmin/./node_modules/quasar/src/components/time/QTime.js","webpack://launchpadadmin/./node_modules/quasar/src/components/timeline/QTimeline.js","webpack://launchpadadmin/./node_modules/quasar/src/components/timeline/QTimelineEntry.js","webpack://launchpadadmin/./node_modules/quasar/src/components/toggle/QToggle.js","webpack://launchpadadmin/./node_modules/quasar/src/components/toolbar/QToolbar.js","webpack://launchpadadmin/./node_modules/quasar/src/components/toolbar/QToolbarTitle.js","webpack://launchpadadmin/./node_modules/quasar/src/components/tooltip/QTooltip.js","webpack://launchpadadmin/./node_modules/quasar/src/components/virtual-scroll/use-virtual-scroll.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-align.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-anchor.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-cache.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-dark.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/patterns.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-validate.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-field.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-file-dom-props.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-form.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-fullscreen.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-history.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-key-composition.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-model-toggle.js","webpack://launchpadadmin/./node_modules/quasar/src/directives/TouchSwipe.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-panel.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-portal.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-prevent-scroll.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-refocus-target.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-router-link.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-scroll-target.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-size.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-split-attrs.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-tick.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-timeout.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/private/use-transition.js","webpack://launchpadadmin/./node_modules/quasar/src/composables/use-form-child.js","webpack://launchpadadmin/./node_modules/quasar/src/directives/ClosePopup.js","webpack://launchpadadmin/./node_modules/quasar/src/directives/Intersection.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/throttle.js","webpack://launchpadadmin/./node_modules/quasar/src/directives/Ripple.js","webpack://launchpadadmin/./node_modules/quasar/src/directives/TouchPan.js","webpack://launchpadadmin/./node_modules/quasar/src/history.js","webpack://launchpadadmin/./node_modules/quasar/icon-set/material-icons.mjs","webpack://launchpadadmin/./node_modules/quasar/src/icon-set.js","webpack://launchpadadmin/./node_modules/quasar/src/plugins/Screen.js","webpack://launchpadadmin/./node_modules/quasar/src/plugins/Dark.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/set-css-var.js","webpack://launchpadadmin/./node_modules/quasar/src/body.js","webpack://launchpadadmin/./node_modules/quasar/src/install-quasar.js","webpack://launchpadadmin/./node_modules/quasar/lang/en-US.mjs","webpack://launchpadadmin/./node_modules/quasar/src/lang.js","webpack://launchpadadmin/./node_modules/quasar/src/components/option-group/QOptionGroup.js","webpack://launchpadadmin/./node_modules/quasar/src/components/dialog-plugin/DialogPlugin.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/global-dialog.js","webpack://launchpadadmin/./node_modules/quasar/src/plugins/Dialog.js","webpack://launchpadadmin/./node_modules/quasar/src/plugins/Loading.js","webpack://launchpadadmin/./node_modules/quasar/src/plugins/Notify.js","webpack://launchpadadmin/./node_modules/quasar/src/plugins/Platform.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/date.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/debounce.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/dom.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/event.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/format.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/is.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/prevent-scroll.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/click-outside.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/create.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/date-persian.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/define-reactive-plugin.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/escape-key.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/focus-manager.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/focusout.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/global-config.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/global-nodes.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/inject-obj-prop.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/key-composition.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/option-sizes.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/portal.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/position-engine.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/render.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/rtl.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/selection.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/symbols.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/touch.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/private/vm.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/scroll.js","webpack://launchpadadmin/./node_modules/quasar/src/utils/uid.js","webpack://launchpadadmin/./node_modules/quasar/src/vue-plugin.js","webpack://launchpadadmin/./node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js","webpack://launchpadadmin/./node_modules/@quasar/extras/fontawesome-v5/fontawesome-v5.css?fd28","webpack://launchpadadmin/./node_modules/@quasar/extras/material-icons/material-icons.css?8a80","webpack://launchpadadmin/./node_modules/@quasar/extras/roboto-font/roboto-font.css?6328","webpack://launchpadadmin/./node_modules/quasar/dist/quasar.css?315c"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"fa-brands-400.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"fa-brands-400.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"fa-regular-400.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"fa-regular-400.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"fa-solid-900.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"fa-solid-900.woff\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s linear infinite}.fa-pulse{animation:fa-spin 1s steps(8) infinite}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:\"\\\\f26e\"}.fa-accessible-icon:before{content:\"\\\\f368\"}.fa-accusoft:before{content:\"\\\\f369\"}.fa-acquisitions-incorporated:before{content:\"\\\\f6af\"}.fa-ad:before{content:\"\\\\f641\"}.fa-address-book:before{content:\"\\\\f2b9\"}.fa-address-card:before{content:\"\\\\f2bb\"}.fa-adjust:before{content:\"\\\\f042\"}.fa-adn:before{content:\"\\\\f170\"}.fa-adversal:before{content:\"\\\\f36a\"}.fa-affiliatetheme:before{content:\"\\\\f36b\"}.fa-air-freshener:before{content:\"\\\\f5d0\"}.fa-airbnb:before{content:\"\\\\f834\"}.fa-algolia:before{content:\"\\\\f36c\"}.fa-align-center:before{content:\"\\\\f037\"}.fa-align-justify:before{content:\"\\\\f039\"}.fa-align-left:before{content:\"\\\\f036\"}.fa-align-right:before{content:\"\\\\f038\"}.fa-alipay:before{content:\"\\\\f642\"}.fa-allergies:before{content:\"\\\\f461\"}.fa-amazon:before{content:\"\\\\f270\"}.fa-amazon-pay:before{content:\"\\\\f42c\"}.fa-ambulance:before{content:\"\\\\f0f9\"}.fa-american-sign-language-interpreting:before{content:\"\\\\f2a3\"}.fa-amilia:before{content:\"\\\\f36d\"}.fa-anchor:before{content:\"\\\\f13d\"}.fa-android:before{content:\"\\\\f17b\"}.fa-angellist:before{content:\"\\\\f209\"}.fa-angle-double-down:before{content:\"\\\\f103\"}.fa-angle-double-left:before{content:\"\\\\f100\"}.fa-angle-double-right:before{content:\"\\\\f101\"}.fa-angle-double-up:before{content:\"\\\\f102\"}.fa-angle-down:before{content:\"\\\\f107\"}.fa-angle-left:before{content:\"\\\\f104\"}.fa-angle-right:before{content:\"\\\\f105\"}.fa-angle-up:before{content:\"\\\\f106\"}.fa-angry:before{content:\"\\\\f556\"}.fa-angrycreative:before{content:\"\\\\f36e\"}.fa-angular:before{content:\"\\\\f420\"}.fa-ankh:before{content:\"\\\\f644\"}.fa-app-store:before{content:\"\\\\f36f\"}.fa-app-store-ios:before{content:\"\\\\f370\"}.fa-apper:before{content:\"\\\\f371\"}.fa-apple:before{content:\"\\\\f179\"}.fa-apple-alt:before{content:\"\\\\f5d1\"}.fa-apple-pay:before{content:\"\\\\f415\"}.fa-archive:before{content:\"\\\\f187\"}.fa-archway:before{content:\"\\\\f557\"}.fa-arrow-alt-circle-down:before{content:\"\\\\f358\"}.fa-arrow-alt-circle-left:before{content:\"\\\\f359\"}.fa-arrow-alt-circle-right:before{content:\"\\\\f35a\"}.fa-arrow-alt-circle-up:before{content:\"\\\\f35b\"}.fa-arrow-circle-down:before{content:\"\\\\f0ab\"}.fa-arrow-circle-left:before{content:\"\\\\f0a8\"}.fa-arrow-circle-right:before{content:\"\\\\f0a9\"}.fa-arrow-circle-up:before{content:\"\\\\f0aa\"}.fa-arrow-down:before{content:\"\\\\f063\"}.fa-arrow-left:before{content:\"\\\\f060\"}.fa-arrow-right:before{content:\"\\\\f061\"}.fa-arrow-up:before{content:\"\\\\f062\"}.fa-arrows-alt:before{content:\"\\\\f0b2\"}.fa-arrows-alt-h:before{content:\"\\\\f337\"}.fa-arrows-alt-v:before{content:\"\\\\f338\"}.fa-artstation:before{content:\"\\\\f77a\"}.fa-assistive-listening-systems:before{content:\"\\\\f2a2\"}.fa-asterisk:before{content:\"\\\\f069\"}.fa-asymmetrik:before{content:\"\\\\f372\"}.fa-at:before{content:\"\\\\f1fa\"}.fa-atlas:before{content:\"\\\\f558\"}.fa-atlassian:before{content:\"\\\\f77b\"}.fa-atom:before{content:\"\\\\f5d2\"}.fa-audible:before{content:\"\\\\f373\"}.fa-audio-description:before{content:\"\\\\f29e\"}.fa-autoprefixer:before{content:\"\\\\f41c\"}.fa-avianex:before{content:\"\\\\f374\"}.fa-aviato:before{content:\"\\\\f421\"}.fa-award:before{content:\"\\\\f559\"}.fa-aws:before{content:\"\\\\f375\"}.fa-baby:before{content:\"\\\\f77c\"}.fa-baby-carriage:before{content:\"\\\\f77d\"}.fa-backspace:before{content:\"\\\\f55a\"}.fa-backward:before{content:\"\\\\f04a\"}.fa-bacon:before{content:\"\\\\f7e5\"}.fa-bacteria:before{content:\"\\\\e059\"}.fa-bacterium:before{content:\"\\\\e05a\"}.fa-bahai:before{content:\"\\\\f666\"}.fa-balance-scale:before{content:\"\\\\f24e\"}.fa-balance-scale-left:before{content:\"\\\\f515\"}.fa-balance-scale-right:before{content:\"\\\\f516\"}.fa-ban:before{content:\"\\\\f05e\"}.fa-band-aid:before{content:\"\\\\f462\"}.fa-bandcamp:before{content:\"\\\\f2d5\"}.fa-barcode:before{content:\"\\\\f02a\"}.fa-bars:before{content:\"\\\\f0c9\"}.fa-baseball-ball:before{content:\"\\\\f433\"}.fa-basketball-ball:before{content:\"\\\\f434\"}.fa-bath:before{content:\"\\\\f2cd\"}.fa-battery-empty:before{content:\"\\\\f244\"}.fa-battery-full:before{content:\"\\\\f240\"}.fa-battery-half:before{content:\"\\\\f242\"}.fa-battery-quarter:before{content:\"\\\\f243\"}.fa-battery-three-quarters:before{content:\"\\\\f241\"}.fa-battle-net:before{content:\"\\\\f835\"}.fa-bed:before{content:\"\\\\f236\"}.fa-beer:before{content:\"\\\\f0fc\"}.fa-behance:before{content:\"\\\\f1b4\"}.fa-behance-square:before{content:\"\\\\f1b5\"}.fa-bell:before{content:\"\\\\f0f3\"}.fa-bell-slash:before{content:\"\\\\f1f6\"}.fa-bezier-curve:before{content:\"\\\\f55b\"}.fa-bible:before{content:\"\\\\f647\"}.fa-bicycle:before{content:\"\\\\f206\"}.fa-biking:before{content:\"\\\\f84a\"}.fa-bimobject:before{content:\"\\\\f378\"}.fa-binoculars:before{content:\"\\\\f1e5\"}.fa-biohazard:before{content:\"\\\\f780\"}.fa-birthday-cake:before{content:\"\\\\f1fd\"}.fa-bitbucket:before{content:\"\\\\f171\"}.fa-bitcoin:before{content:\"\\\\f379\"}.fa-bity:before{content:\"\\\\f37a\"}.fa-black-tie:before{content:\"\\\\f27e\"}.fa-blackberry:before{content:\"\\\\f37b\"}.fa-blender:before{content:\"\\\\f517\"}.fa-blender-phone:before{content:\"\\\\f6b6\"}.fa-blind:before{content:\"\\\\f29d\"}.fa-blog:before{content:\"\\\\f781\"}.fa-blogger:before{content:\"\\\\f37c\"}.fa-blogger-b:before{content:\"\\\\f37d\"}.fa-bluetooth:before{content:\"\\\\f293\"}.fa-bluetooth-b:before{content:\"\\\\f294\"}.fa-bold:before{content:\"\\\\f032\"}.fa-bolt:before{content:\"\\\\f0e7\"}.fa-bomb:before{content:\"\\\\f1e2\"}.fa-bone:before{content:\"\\\\f5d7\"}.fa-bong:before{content:\"\\\\f55c\"}.fa-book:before{content:\"\\\\f02d\"}.fa-book-dead:before{content:\"\\\\f6b7\"}.fa-book-medical:before{content:\"\\\\f7e6\"}.fa-book-open:before{content:\"\\\\f518\"}.fa-book-reader:before{content:\"\\\\f5da\"}.fa-bookmark:before{content:\"\\\\f02e\"}.fa-bootstrap:before{content:\"\\\\f836\"}.fa-border-all:before{content:\"\\\\f84c\"}.fa-border-none:before{content:\"\\\\f850\"}.fa-border-style:before{content:\"\\\\f853\"}.fa-bowling-ball:before{content:\"\\\\f436\"}.fa-box:before{content:\"\\\\f466\"}.fa-box-open:before{content:\"\\\\f49e\"}.fa-box-tissue:before{content:\"\\\\e05b\"}.fa-boxes:before{content:\"\\\\f468\"}.fa-braille:before{content:\"\\\\f2a1\"}.fa-brain:before{content:\"\\\\f5dc\"}.fa-bread-slice:before{content:\"\\\\f7ec\"}.fa-briefcase:before{content:\"\\\\f0b1\"}.fa-briefcase-medical:before{content:\"\\\\f469\"}.fa-broadcast-tower:before{content:\"\\\\f519\"}.fa-broom:before{content:\"\\\\f51a\"}.fa-brush:before{content:\"\\\\f55d\"}.fa-btc:before{content:\"\\\\f15a\"}.fa-buffer:before{content:\"\\\\f837\"}.fa-bug:before{content:\"\\\\f188\"}.fa-building:before{content:\"\\\\f1ad\"}.fa-bullhorn:before{content:\"\\\\f0a1\"}.fa-bullseye:before{content:\"\\\\f140\"}.fa-burn:before{content:\"\\\\f46a\"}.fa-buromobelexperte:before{content:\"\\\\f37f\"}.fa-bus:before{content:\"\\\\f207\"}.fa-bus-alt:before{content:\"\\\\f55e\"}.fa-business-time:before{content:\"\\\\f64a\"}.fa-buy-n-large:before{content:\"\\\\f8a6\"}.fa-buysellads:before{content:\"\\\\f20d\"}.fa-calculator:before{content:\"\\\\f1ec\"}.fa-calendar:before{content:\"\\\\f133\"}.fa-calendar-alt:before{content:\"\\\\f073\"}.fa-calendar-check:before{content:\"\\\\f274\"}.fa-calendar-day:before{content:\"\\\\f783\"}.fa-calendar-minus:before{content:\"\\\\f272\"}.fa-calendar-plus:before{content:\"\\\\f271\"}.fa-calendar-times:before{content:\"\\\\f273\"}.fa-calendar-week:before{content:\"\\\\f784\"}.fa-camera:before{content:\"\\\\f030\"}.fa-camera-retro:before{content:\"\\\\f083\"}.fa-campground:before{content:\"\\\\f6bb\"}.fa-canadian-maple-leaf:before{content:\"\\\\f785\"}.fa-candy-cane:before{content:\"\\\\f786\"}.fa-cannabis:before{content:\"\\\\f55f\"}.fa-capsules:before{content:\"\\\\f46b\"}.fa-car:before{content:\"\\\\f1b9\"}.fa-car-alt:before{content:\"\\\\f5de\"}.fa-car-battery:before{content:\"\\\\f5df\"}.fa-car-crash:before{content:\"\\\\f5e1\"}.fa-car-side:before{content:\"\\\\f5e4\"}.fa-caravan:before{content:\"\\\\f8ff\"}.fa-caret-down:before{content:\"\\\\f0d7\"}.fa-caret-left:before{content:\"\\\\f0d9\"}.fa-caret-right:before{content:\"\\\\f0da\"}.fa-caret-square-down:before{content:\"\\\\f150\"}.fa-caret-square-left:before{content:\"\\\\f191\"}.fa-caret-square-right:before{content:\"\\\\f152\"}.fa-caret-square-up:before{content:\"\\\\f151\"}.fa-caret-up:before{content:\"\\\\f0d8\"}.fa-carrot:before{content:\"\\\\f787\"}.fa-cart-arrow-down:before{content:\"\\\\f218\"}.fa-cart-plus:before{content:\"\\\\f217\"}.fa-cash-register:before{content:\"\\\\f788\"}.fa-cat:before{content:\"\\\\f6be\"}.fa-cc-amazon-pay:before{content:\"\\\\f42d\"}.fa-cc-amex:before{content:\"\\\\f1f3\"}.fa-cc-apple-pay:before{content:\"\\\\f416\"}.fa-cc-diners-club:before{content:\"\\\\f24c\"}.fa-cc-discover:before{content:\"\\\\f1f2\"}.fa-cc-jcb:before{content:\"\\\\f24b\"}.fa-cc-mastercard:before{content:\"\\\\f1f1\"}.fa-cc-paypal:before{content:\"\\\\f1f4\"}.fa-cc-stripe:before{content:\"\\\\f1f5\"}.fa-cc-visa:before{content:\"\\\\f1f0\"}.fa-centercode:before{content:\"\\\\f380\"}.fa-centos:before{content:\"\\\\f789\"}.fa-certificate:before{content:\"\\\\f0a3\"}.fa-chair:before{content:\"\\\\f6c0\"}.fa-chalkboard:before{content:\"\\\\f51b\"}.fa-chalkboard-teacher:before{content:\"\\\\f51c\"}.fa-charging-station:before{content:\"\\\\f5e7\"}.fa-chart-area:before{content:\"\\\\f1fe\"}.fa-chart-bar:before{content:\"\\\\f080\"}.fa-chart-line:before{content:\"\\\\f201\"}.fa-chart-pie:before{content:\"\\\\f200\"}.fa-check:before{content:\"\\\\f00c\"}.fa-check-circle:before{content:\"\\\\f058\"}.fa-check-double:before{content:\"\\\\f560\"}.fa-check-square:before{content:\"\\\\f14a\"}.fa-cheese:before{content:\"\\\\f7ef\"}.fa-chess:before{content:\"\\\\f439\"}.fa-chess-bishop:before{content:\"\\\\f43a\"}.fa-chess-board:before{content:\"\\\\f43c\"}.fa-chess-king:before{content:\"\\\\f43f\"}.fa-chess-knight:before{content:\"\\\\f441\"}.fa-chess-pawn:before{content:\"\\\\f443\"}.fa-chess-queen:before{content:\"\\\\f445\"}.fa-chess-rook:before{content:\"\\\\f447\"}.fa-chevron-circle-down:before{content:\"\\\\f13a\"}.fa-chevron-circle-left:before{content:\"\\\\f137\"}.fa-chevron-circle-right:before{content:\"\\\\f138\"}.fa-chevron-circle-up:before{content:\"\\\\f139\"}.fa-chevron-down:before{content:\"\\\\f078\"}.fa-chevron-left:before{content:\"\\\\f053\"}.fa-chevron-right:before{content:\"\\\\f054\"}.fa-chevron-up:before{content:\"\\\\f077\"}.fa-child:before{content:\"\\\\f1ae\"}.fa-chrome:before{content:\"\\\\f268\"}.fa-chromecast:before{content:\"\\\\f838\"}.fa-church:before{content:\"\\\\f51d\"}.fa-circle:before{content:\"\\\\f111\"}.fa-circle-notch:before{content:\"\\\\f1ce\"}.fa-city:before{content:\"\\\\f64f\"}.fa-clinic-medical:before{content:\"\\\\f7f2\"}.fa-clipboard:before{content:\"\\\\f328\"}.fa-clipboard-check:before{content:\"\\\\f46c\"}.fa-clipboard-list:before{content:\"\\\\f46d\"}.fa-clock:before{content:\"\\\\f017\"}.fa-clone:before{content:\"\\\\f24d\"}.fa-closed-captioning:before{content:\"\\\\f20a\"}.fa-cloud:before{content:\"\\\\f0c2\"}.fa-cloud-download-alt:before{content:\"\\\\f381\"}.fa-cloud-meatball:before{content:\"\\\\f73b\"}.fa-cloud-moon:before{content:\"\\\\f6c3\"}.fa-cloud-moon-rain:before{content:\"\\\\f73c\"}.fa-cloud-rain:before{content:\"\\\\f73d\"}.fa-cloud-showers-heavy:before{content:\"\\\\f740\"}.fa-cloud-sun:before{content:\"\\\\f6c4\"}.fa-cloud-sun-rain:before{content:\"\\\\f743\"}.fa-cloud-upload-alt:before{content:\"\\\\f382\"}.fa-cloudflare:before{content:\"\\\\e07d\"}.fa-cloudscale:before{content:\"\\\\f383\"}.fa-cloudsmith:before{content:\"\\\\f384\"}.fa-cloudversify:before{content:\"\\\\f385\"}.fa-cocktail:before{content:\"\\\\f561\"}.fa-code:before{content:\"\\\\f121\"}.fa-code-branch:before{content:\"\\\\f126\"}.fa-codepen:before{content:\"\\\\f1cb\"}.fa-codiepie:before{content:\"\\\\f284\"}.fa-coffee:before{content:\"\\\\f0f4\"}.fa-cog:before{content:\"\\\\f013\"}.fa-cogs:before{content:\"\\\\f085\"}.fa-coins:before{content:\"\\\\f51e\"}.fa-columns:before{content:\"\\\\f0db\"}.fa-comment:before{content:\"\\\\f075\"}.fa-comment-alt:before{content:\"\\\\f27a\"}.fa-comment-dollar:before{content:\"\\\\f651\"}.fa-comment-dots:before{content:\"\\\\f4ad\"}.fa-comment-medical:before{content:\"\\\\f7f5\"}.fa-comment-slash:before{content:\"\\\\f4b3\"}.fa-comments:before{content:\"\\\\f086\"}.fa-comments-dollar:before{content:\"\\\\f653\"}.fa-compact-disc:before{content:\"\\\\f51f\"}.fa-compass:before{content:\"\\\\f14e\"}.fa-compress:before{content:\"\\\\f066\"}.fa-compress-alt:before{content:\"\\\\f422\"}.fa-compress-arrows-alt:before{content:\"\\\\f78c\"}.fa-concierge-bell:before{content:\"\\\\f562\"}.fa-confluence:before{content:\"\\\\f78d\"}.fa-connectdevelop:before{content:\"\\\\f20e\"}.fa-contao:before{content:\"\\\\f26d\"}.fa-cookie:before{content:\"\\\\f563\"}.fa-cookie-bite:before{content:\"\\\\f564\"}.fa-copy:before{content:\"\\\\f0c5\"}.fa-copyright:before{content:\"\\\\f1f9\"}.fa-cotton-bureau:before{content:\"\\\\f89e\"}.fa-couch:before{content:\"\\\\f4b8\"}.fa-cpanel:before{content:\"\\\\f388\"}.fa-creative-commons:before{content:\"\\\\f25e\"}.fa-creative-commons-by:before{content:\"\\\\f4e7\"}.fa-creative-commons-nc:before{content:\"\\\\f4e8\"}.fa-creative-commons-nc-eu:before{content:\"\\\\f4e9\"}.fa-creative-commons-nc-jp:before{content:\"\\\\f4ea\"}.fa-creative-commons-nd:before{content:\"\\\\f4eb\"}.fa-creative-commons-pd:before{content:\"\\\\f4ec\"}.fa-creative-commons-pd-alt:before{content:\"\\\\f4ed\"}.fa-creative-commons-remix:before{content:\"\\\\f4ee\"}.fa-creative-commons-sa:before{content:\"\\\\f4ef\"}.fa-creative-commons-sampling:before{content:\"\\\\f4f0\"}.fa-creative-commons-sampling-plus:before{content:\"\\\\f4f1\"}.fa-creative-commons-share:before{content:\"\\\\f4f2\"}.fa-creative-commons-zero:before{content:\"\\\\f4f3\"}.fa-credit-card:before{content:\"\\\\f09d\"}.fa-critical-role:before{content:\"\\\\f6c9\"}.fa-crop:before{content:\"\\\\f125\"}.fa-crop-alt:before{content:\"\\\\f565\"}.fa-cross:before{content:\"\\\\f654\"}.fa-crosshairs:before{content:\"\\\\f05b\"}.fa-crow:before{content:\"\\\\f520\"}.fa-crown:before{content:\"\\\\f521\"}.fa-crutch:before{content:\"\\\\f7f7\"}.fa-css3:before{content:\"\\\\f13c\"}.fa-css3-alt:before{content:\"\\\\f38b\"}.fa-cube:before{content:\"\\\\f1b2\"}.fa-cubes:before{content:\"\\\\f1b3\"}.fa-cut:before{content:\"\\\\f0c4\"}.fa-cuttlefish:before{content:\"\\\\f38c\"}.fa-d-and-d:before{content:\"\\\\f38d\"}.fa-d-and-d-beyond:before{content:\"\\\\f6ca\"}.fa-dailymotion:before{content:\"\\\\e052\"}.fa-dashcube:before{content:\"\\\\f210\"}.fa-database:before{content:\"\\\\f1c0\"}.fa-deaf:before{content:\"\\\\f2a4\"}.fa-deezer:before{content:\"\\\\e077\"}.fa-delicious:before{content:\"\\\\f1a5\"}.fa-democrat:before{content:\"\\\\f747\"}.fa-deploydog:before{content:\"\\\\f38e\"}.fa-deskpro:before{content:\"\\\\f38f\"}.fa-desktop:before{content:\"\\\\f108\"}.fa-dev:before{content:\"\\\\f6cc\"}.fa-deviantart:before{content:\"\\\\f1bd\"}.fa-dharmachakra:before{content:\"\\\\f655\"}.fa-dhl:before{content:\"\\\\f790\"}.fa-diagnoses:before{content:\"\\\\f470\"}.fa-diaspora:before{content:\"\\\\f791\"}.fa-dice:before{content:\"\\\\f522\"}.fa-dice-d20:before{content:\"\\\\f6cf\"}.fa-dice-d6:before{content:\"\\\\f6d1\"}.fa-dice-five:before{content:\"\\\\f523\"}.fa-dice-four:before{content:\"\\\\f524\"}.fa-dice-one:before{content:\"\\\\f525\"}.fa-dice-six:before{content:\"\\\\f526\"}.fa-dice-three:before{content:\"\\\\f527\"}.fa-dice-two:before{content:\"\\\\f528\"}.fa-digg:before{content:\"\\\\f1a6\"}.fa-digital-ocean:before{content:\"\\\\f391\"}.fa-digital-tachograph:before{content:\"\\\\f566\"}.fa-directions:before{content:\"\\\\f5eb\"}.fa-discord:before{content:\"\\\\f392\"}.fa-discourse:before{content:\"\\\\f393\"}.fa-disease:before{content:\"\\\\f7fa\"}.fa-divide:before{content:\"\\\\f529\"}.fa-dizzy:before{content:\"\\\\f567\"}.fa-dna:before{content:\"\\\\f471\"}.fa-dochub:before{content:\"\\\\f394\"}.fa-docker:before{content:\"\\\\f395\"}.fa-dog:before{content:\"\\\\f6d3\"}.fa-dollar-sign:before{content:\"\\\\f155\"}.fa-dolly:before{content:\"\\\\f472\"}.fa-dolly-flatbed:before{content:\"\\\\f474\"}.fa-donate:before{content:\"\\\\f4b9\"}.fa-door-closed:before{content:\"\\\\f52a\"}.fa-door-open:before{content:\"\\\\f52b\"}.fa-dot-circle:before{content:\"\\\\f192\"}.fa-dove:before{content:\"\\\\f4ba\"}.fa-download:before{content:\"\\\\f019\"}.fa-draft2digital:before{content:\"\\\\f396\"}.fa-drafting-compass:before{content:\"\\\\f568\"}.fa-dragon:before{content:\"\\\\f6d5\"}.fa-draw-polygon:before{content:\"\\\\f5ee\"}.fa-dribbble:before{content:\"\\\\f17d\"}.fa-dribbble-square:before{content:\"\\\\f397\"}.fa-dropbox:before{content:\"\\\\f16b\"}.fa-drum:before{content:\"\\\\f569\"}.fa-drum-steelpan:before{content:\"\\\\f56a\"}.fa-drumstick-bite:before{content:\"\\\\f6d7\"}.fa-drupal:before{content:\"\\\\f1a9\"}.fa-dumbbell:before{content:\"\\\\f44b\"}.fa-dumpster:before{content:\"\\\\f793\"}.fa-dumpster-fire:before{content:\"\\\\f794\"}.fa-dungeon:before{content:\"\\\\f6d9\"}.fa-dyalog:before{content:\"\\\\f399\"}.fa-earlybirds:before{content:\"\\\\f39a\"}.fa-ebay:before{content:\"\\\\f4f4\"}.fa-edge:before{content:\"\\\\f282\"}.fa-edge-legacy:before{content:\"\\\\e078\"}.fa-edit:before{content:\"\\\\f044\"}.fa-egg:before{content:\"\\\\f7fb\"}.fa-eject:before{content:\"\\\\f052\"}.fa-elementor:before{content:\"\\\\f430\"}.fa-ellipsis-h:before{content:\"\\\\f141\"}.fa-ellipsis-v:before{content:\"\\\\f142\"}.fa-ello:before{content:\"\\\\f5f1\"}.fa-ember:before{content:\"\\\\f423\"}.fa-empire:before{content:\"\\\\f1d1\"}.fa-envelope:before{content:\"\\\\f0e0\"}.fa-envelope-open:before{content:\"\\\\f2b6\"}.fa-envelope-open-text:before{content:\"\\\\f658\"}.fa-envelope-square:before{content:\"\\\\f199\"}.fa-envira:before{content:\"\\\\f299\"}.fa-equals:before{content:\"\\\\f52c\"}.fa-eraser:before{content:\"\\\\f12d\"}.fa-erlang:before{content:\"\\\\f39d\"}.fa-ethereum:before{content:\"\\\\f42e\"}.fa-ethernet:before{content:\"\\\\f796\"}.fa-etsy:before{content:\"\\\\f2d7\"}.fa-euro-sign:before{content:\"\\\\f153\"}.fa-evernote:before{content:\"\\\\f839\"}.fa-exchange-alt:before{content:\"\\\\f362\"}.fa-exclamation:before{content:\"\\\\f12a\"}.fa-exclamation-circle:before{content:\"\\\\f06a\"}.fa-exclamation-triangle:before{content:\"\\\\f071\"}.fa-expand:before{content:\"\\\\f065\"}.fa-expand-alt:before{content:\"\\\\f424\"}.fa-expand-arrows-alt:before{content:\"\\\\f31e\"}.fa-expeditedssl:before{content:\"\\\\f23e\"}.fa-external-link-alt:before{content:\"\\\\f35d\"}.fa-external-link-square-alt:before{content:\"\\\\f360\"}.fa-eye:before{content:\"\\\\f06e\"}.fa-eye-dropper:before{content:\"\\\\f1fb\"}.fa-eye-slash:before{content:\"\\\\f070\"}.fa-facebook:before{content:\"\\\\f09a\"}.fa-facebook-f:before{content:\"\\\\f39e\"}.fa-facebook-messenger:before{content:\"\\\\f39f\"}.fa-facebook-square:before{content:\"\\\\f082\"}.fa-fan:before{content:\"\\\\f863\"}.fa-fantasy-flight-games:before{content:\"\\\\f6dc\"}.fa-fast-backward:before{content:\"\\\\f049\"}.fa-fast-forward:before{content:\"\\\\f050\"}.fa-faucet:before{content:\"\\\\e005\"}.fa-fax:before{content:\"\\\\f1ac\"}.fa-feather:before{content:\"\\\\f52d\"}.fa-feather-alt:before{content:\"\\\\f56b\"}.fa-fedex:before{content:\"\\\\f797\"}.fa-fedora:before{content:\"\\\\f798\"}.fa-female:before{content:\"\\\\f182\"}.fa-fighter-jet:before{content:\"\\\\f0fb\"}.fa-figma:before{content:\"\\\\f799\"}.fa-file:before{content:\"\\\\f15b\"}.fa-file-alt:before{content:\"\\\\f15c\"}.fa-file-archive:before{content:\"\\\\f1c6\"}.fa-file-audio:before{content:\"\\\\f1c7\"}.fa-file-code:before{content:\"\\\\f1c9\"}.fa-file-contract:before{content:\"\\\\f56c\"}.fa-file-csv:before{content:\"\\\\f6dd\"}.fa-file-download:before{content:\"\\\\f56d\"}.fa-file-excel:before{content:\"\\\\f1c3\"}.fa-file-export:before{content:\"\\\\f56e\"}.fa-file-image:before{content:\"\\\\f1c5\"}.fa-file-import:before{content:\"\\\\f56f\"}.fa-file-invoice:before{content:\"\\\\f570\"}.fa-file-invoice-dollar:before{content:\"\\\\f571\"}.fa-file-medical:before{content:\"\\\\f477\"}.fa-file-medical-alt:before{content:\"\\\\f478\"}.fa-file-pdf:before{content:\"\\\\f1c1\"}.fa-file-powerpoint:before{content:\"\\\\f1c4\"}.fa-file-prescription:before{content:\"\\\\f572\"}.fa-file-signature:before{content:\"\\\\f573\"}.fa-file-upload:before{content:\"\\\\f574\"}.fa-file-video:before{content:\"\\\\f1c8\"}.fa-file-word:before{content:\"\\\\f1c2\"}.fa-fill:before{content:\"\\\\f575\"}.fa-fill-drip:before{content:\"\\\\f576\"}.fa-film:before{content:\"\\\\f008\"}.fa-filter:before{content:\"\\\\f0b0\"}.fa-fingerprint:before{content:\"\\\\f577\"}.fa-fire:before{content:\"\\\\f06d\"}.fa-fire-alt:before{content:\"\\\\f7e4\"}.fa-fire-extinguisher:before{content:\"\\\\f134\"}.fa-firefox:before{content:\"\\\\f269\"}.fa-firefox-browser:before{content:\"\\\\e007\"}.fa-first-aid:before{content:\"\\\\f479\"}.fa-first-order:before{content:\"\\\\f2b0\"}.fa-first-order-alt:before{content:\"\\\\f50a\"}.fa-firstdraft:before{content:\"\\\\f3a1\"}.fa-fish:before{content:\"\\\\f578\"}.fa-fist-raised:before{content:\"\\\\f6de\"}.fa-flag:before{content:\"\\\\f024\"}.fa-flag-checkered:before{content:\"\\\\f11e\"}.fa-flag-usa:before{content:\"\\\\f74d\"}.fa-flask:before{content:\"\\\\f0c3\"}.fa-flickr:before{content:\"\\\\f16e\"}.fa-flipboard:before{content:\"\\\\f44d\"}.fa-flushed:before{content:\"\\\\f579\"}.fa-fly:before{content:\"\\\\f417\"}.fa-folder:before{content:\"\\\\f07b\"}.fa-folder-minus:before{content:\"\\\\f65d\"}.fa-folder-open:before{content:\"\\\\f07c\"}.fa-folder-plus:before{content:\"\\\\f65e\"}.fa-font:before{content:\"\\\\f031\"}.fa-font-awesome:before{content:\"\\\\f2b4\"}.fa-font-awesome-alt:before{content:\"\\\\f35c\"}.fa-font-awesome-flag:before{content:\"\\\\f425\"}.fa-font-awesome-logo-full:before{content:\"\\\\f4e6\"}.fa-fonticons:before{content:\"\\\\f280\"}.fa-fonticons-fi:before{content:\"\\\\f3a2\"}.fa-football-ball:before{content:\"\\\\f44e\"}.fa-fort-awesome:before{content:\"\\\\f286\"}.fa-fort-awesome-alt:before{content:\"\\\\f3a3\"}.fa-forumbee:before{content:\"\\\\f211\"}.fa-forward:before{content:\"\\\\f04e\"}.fa-foursquare:before{content:\"\\\\f180\"}.fa-free-code-camp:before{content:\"\\\\f2c5\"}.fa-freebsd:before{content:\"\\\\f3a4\"}.fa-frog:before{content:\"\\\\f52e\"}.fa-frown:before{content:\"\\\\f119\"}.fa-frown-open:before{content:\"\\\\f57a\"}.fa-fulcrum:before{content:\"\\\\f50b\"}.fa-funnel-dollar:before{content:\"\\\\f662\"}.fa-futbol:before{content:\"\\\\f1e3\"}.fa-galactic-republic:before{content:\"\\\\f50c\"}.fa-galactic-senate:before{content:\"\\\\f50d\"}.fa-gamepad:before{content:\"\\\\f11b\"}.fa-gas-pump:before{content:\"\\\\f52f\"}.fa-gavel:before{content:\"\\\\f0e3\"}.fa-gem:before{content:\"\\\\f3a5\"}.fa-genderless:before{content:\"\\\\f22d\"}.fa-get-pocket:before{content:\"\\\\f265\"}.fa-gg:before{content:\"\\\\f260\"}.fa-gg-circle:before{content:\"\\\\f261\"}.fa-ghost:before{content:\"\\\\f6e2\"}.fa-gift:before{content:\"\\\\f06b\"}.fa-gifts:before{content:\"\\\\f79c\"}.fa-git:before{content:\"\\\\f1d3\"}.fa-git-alt:before{content:\"\\\\f841\"}.fa-git-square:before{content:\"\\\\f1d2\"}.fa-github:before{content:\"\\\\f09b\"}.fa-github-alt:before{content:\"\\\\f113\"}.fa-github-square:before{content:\"\\\\f092\"}.fa-gitkraken:before{content:\"\\\\f3a6\"}.fa-gitlab:before{content:\"\\\\f296\"}.fa-gitter:before{content:\"\\\\f426\"}.fa-glass-cheers:before{content:\"\\\\f79f\"}.fa-glass-martini:before{content:\"\\\\f000\"}.fa-glass-martini-alt:before{content:\"\\\\f57b\"}.fa-glass-whiskey:before{content:\"\\\\f7a0\"}.fa-glasses:before{content:\"\\\\f530\"}.fa-glide:before{content:\"\\\\f2a5\"}.fa-glide-g:before{content:\"\\\\f2a6\"}.fa-globe:before{content:\"\\\\f0ac\"}.fa-globe-africa:before{content:\"\\\\f57c\"}.fa-globe-americas:before{content:\"\\\\f57d\"}.fa-globe-asia:before{content:\"\\\\f57e\"}.fa-globe-europe:before{content:\"\\\\f7a2\"}.fa-gofore:before{content:\"\\\\f3a7\"}.fa-golf-ball:before{content:\"\\\\f450\"}.fa-goodreads:before{content:\"\\\\f3a8\"}.fa-goodreads-g:before{content:\"\\\\f3a9\"}.fa-google:before{content:\"\\\\f1a0\"}.fa-google-drive:before{content:\"\\\\f3aa\"}.fa-google-pay:before{content:\"\\\\e079\"}.fa-google-play:before{content:\"\\\\f3ab\"}.fa-google-plus:before{content:\"\\\\f2b3\"}.fa-google-plus-g:before{content:\"\\\\f0d5\"}.fa-google-plus-square:before{content:\"\\\\f0d4\"}.fa-google-wallet:before{content:\"\\\\f1ee\"}.fa-gopuram:before{content:\"\\\\f664\"}.fa-graduation-cap:before{content:\"\\\\f19d\"}.fa-gratipay:before{content:\"\\\\f184\"}.fa-grav:before{content:\"\\\\f2d6\"}.fa-greater-than:before{content:\"\\\\f531\"}.fa-greater-than-equal:before{content:\"\\\\f532\"}.fa-grimace:before{content:\"\\\\f57f\"}.fa-grin:before{content:\"\\\\f580\"}.fa-grin-alt:before{content:\"\\\\f581\"}.fa-grin-beam:before{content:\"\\\\f582\"}.fa-grin-beam-sweat:before{content:\"\\\\f583\"}.fa-grin-hearts:before{content:\"\\\\f584\"}.fa-grin-squint:before{content:\"\\\\f585\"}.fa-grin-squint-tears:before{content:\"\\\\f586\"}.fa-grin-stars:before{content:\"\\\\f587\"}.fa-grin-tears:before{content:\"\\\\f588\"}.fa-grin-tongue:before{content:\"\\\\f589\"}.fa-grin-tongue-squint:before{content:\"\\\\f58a\"}.fa-grin-tongue-wink:before{content:\"\\\\f58b\"}.fa-grin-wink:before{content:\"\\\\f58c\"}.fa-grip-horizontal:before{content:\"\\\\f58d\"}.fa-grip-lines:before{content:\"\\\\f7a4\"}.fa-grip-lines-vertical:before{content:\"\\\\f7a5\"}.fa-grip-vertical:before{content:\"\\\\f58e\"}.fa-gripfire:before{content:\"\\\\f3ac\"}.fa-grunt:before{content:\"\\\\f3ad\"}.fa-guilded:before{content:\"\\\\e07e\"}.fa-guitar:before{content:\"\\\\f7a6\"}.fa-gulp:before{content:\"\\\\f3ae\"}.fa-h-square:before{content:\"\\\\f0fd\"}.fa-hacker-news:before{content:\"\\\\f1d4\"}.fa-hacker-news-square:before{content:\"\\\\f3af\"}.fa-hackerrank:before{content:\"\\\\f5f7\"}.fa-hamburger:before{content:\"\\\\f805\"}.fa-hammer:before{content:\"\\\\f6e3\"}.fa-hamsa:before{content:\"\\\\f665\"}.fa-hand-holding:before{content:\"\\\\f4bd\"}.fa-hand-holding-heart:before{content:\"\\\\f4be\"}.fa-hand-holding-medical:before{content:\"\\\\e05c\"}.fa-hand-holding-usd:before{content:\"\\\\f4c0\"}.fa-hand-holding-water:before{content:\"\\\\f4c1\"}.fa-hand-lizard:before{content:\"\\\\f258\"}.fa-hand-middle-finger:before{content:\"\\\\f806\"}.fa-hand-paper:before{content:\"\\\\f256\"}.fa-hand-peace:before{content:\"\\\\f25b\"}.fa-hand-point-down:before{content:\"\\\\f0a7\"}.fa-hand-point-left:before{content:\"\\\\f0a5\"}.fa-hand-point-right:before{content:\"\\\\f0a4\"}.fa-hand-point-up:before{content:\"\\\\f0a6\"}.fa-hand-pointer:before{content:\"\\\\f25a\"}.fa-hand-rock:before{content:\"\\\\f255\"}.fa-hand-scissors:before{content:\"\\\\f257\"}.fa-hand-sparkles:before{content:\"\\\\e05d\"}.fa-hand-spock:before{content:\"\\\\f259\"}.fa-hands:before{content:\"\\\\f4c2\"}.fa-hands-helping:before{content:\"\\\\f4c4\"}.fa-hands-wash:before{content:\"\\\\e05e\"}.fa-handshake:before{content:\"\\\\f2b5\"}.fa-handshake-alt-slash:before{content:\"\\\\e05f\"}.fa-handshake-slash:before{content:\"\\\\e060\"}.fa-hanukiah:before{content:\"\\\\f6e6\"}.fa-hard-hat:before{content:\"\\\\f807\"}.fa-hashtag:before{content:\"\\\\f292\"}.fa-hat-cowboy:before{content:\"\\\\f8c0\"}.fa-hat-cowboy-side:before{content:\"\\\\f8c1\"}.fa-hat-wizard:before{content:\"\\\\f6e8\"}.fa-hdd:before{content:\"\\\\f0a0\"}.fa-head-side-cough:before{content:\"\\\\e061\"}.fa-head-side-cough-slash:before{content:\"\\\\e062\"}.fa-head-side-mask:before{content:\"\\\\e063\"}.fa-head-side-virus:before{content:\"\\\\e064\"}.fa-heading:before{content:\"\\\\f1dc\"}.fa-headphones:before{content:\"\\\\f025\"}.fa-headphones-alt:before{content:\"\\\\f58f\"}.fa-headset:before{content:\"\\\\f590\"}.fa-heart:before{content:\"\\\\f004\"}.fa-heart-broken:before{content:\"\\\\f7a9\"}.fa-heartbeat:before{content:\"\\\\f21e\"}.fa-helicopter:before{content:\"\\\\f533\"}.fa-highlighter:before{content:\"\\\\f591\"}.fa-hiking:before{content:\"\\\\f6ec\"}.fa-hippo:before{content:\"\\\\f6ed\"}.fa-hips:before{content:\"\\\\f452\"}.fa-hire-a-helper:before{content:\"\\\\f3b0\"}.fa-history:before{content:\"\\\\f1da\"}.fa-hive:before{content:\"\\\\e07f\"}.fa-hockey-puck:before{content:\"\\\\f453\"}.fa-holly-berry:before{content:\"\\\\f7aa\"}.fa-home:before{content:\"\\\\f015\"}.fa-hooli:before{content:\"\\\\f427\"}.fa-hornbill:before{content:\"\\\\f592\"}.fa-horse:before{content:\"\\\\f6f0\"}.fa-horse-head:before{content:\"\\\\f7ab\"}.fa-hospital:before{content:\"\\\\f0f8\"}.fa-hospital-alt:before{content:\"\\\\f47d\"}.fa-hospital-symbol:before{content:\"\\\\f47e\"}.fa-hospital-user:before{content:\"\\\\f80d\"}.fa-hot-tub:before{content:\"\\\\f593\"}.fa-hotdog:before{content:\"\\\\f80f\"}.fa-hotel:before{content:\"\\\\f594\"}.fa-hotjar:before{content:\"\\\\f3b1\"}.fa-hourglass:before{content:\"\\\\f254\"}.fa-hourglass-end:before{content:\"\\\\f253\"}.fa-hourglass-half:before{content:\"\\\\f252\"}.fa-hourglass-start:before{content:\"\\\\f251\"}.fa-house-damage:before{content:\"\\\\f6f1\"}.fa-house-user:before{content:\"\\\\e065\"}.fa-houzz:before{content:\"\\\\f27c\"}.fa-hryvnia:before{content:\"\\\\f6f2\"}.fa-html5:before{content:\"\\\\f13b\"}.fa-hubspot:before{content:\"\\\\f3b2\"}.fa-i-cursor:before{content:\"\\\\f246\"}.fa-ice-cream:before{content:\"\\\\f810\"}.fa-icicles:before{content:\"\\\\f7ad\"}.fa-icons:before{content:\"\\\\f86d\"}.fa-id-badge:before{content:\"\\\\f2c1\"}.fa-id-card:before{content:\"\\\\f2c2\"}.fa-id-card-alt:before{content:\"\\\\f47f\"}.fa-ideal:before{content:\"\\\\e013\"}.fa-igloo:before{content:\"\\\\f7ae\"}.fa-image:before{content:\"\\\\f03e\"}.fa-images:before{content:\"\\\\f302\"}.fa-imdb:before{content:\"\\\\f2d8\"}.fa-inbox:before{content:\"\\\\f01c\"}.fa-indent:before{content:\"\\\\f03c\"}.fa-industry:before{content:\"\\\\f275\"}.fa-infinity:before{content:\"\\\\f534\"}.fa-info:before{content:\"\\\\f129\"}.fa-info-circle:before{content:\"\\\\f05a\"}.fa-innosoft:before{content:\"\\\\e080\"}.fa-instagram:before{content:\"\\\\f16d\"}.fa-instagram-square:before{content:\"\\\\e055\"}.fa-instalod:before{content:\"\\\\e081\"}.fa-intercom:before{content:\"\\\\f7af\"}.fa-internet-explorer:before{content:\"\\\\f26b\"}.fa-invision:before{content:\"\\\\f7b0\"}.fa-ioxhost:before{content:\"\\\\f208\"}.fa-italic:before{content:\"\\\\f033\"}.fa-itch-io:before{content:\"\\\\f83a\"}.fa-itunes:before{content:\"\\\\f3b4\"}.fa-itunes-note:before{content:\"\\\\f3b5\"}.fa-java:before{content:\"\\\\f4e4\"}.fa-jedi:before{content:\"\\\\f669\"}.fa-jedi-order:before{content:\"\\\\f50e\"}.fa-jenkins:before{content:\"\\\\f3b6\"}.fa-jira:before{content:\"\\\\f7b1\"}.fa-joget:before{content:\"\\\\f3b7\"}.fa-joint:before{content:\"\\\\f595\"}.fa-joomla:before{content:\"\\\\f1aa\"}.fa-journal-whills:before{content:\"\\\\f66a\"}.fa-js:before{content:\"\\\\f3b8\"}.fa-js-square:before{content:\"\\\\f3b9\"}.fa-jsfiddle:before{content:\"\\\\f1cc\"}.fa-kaaba:before{content:\"\\\\f66b\"}.fa-kaggle:before{content:\"\\\\f5fa\"}.fa-key:before{content:\"\\\\f084\"}.fa-keybase:before{content:\"\\\\f4f5\"}.fa-keyboard:before{content:\"\\\\f11c\"}.fa-keycdn:before{content:\"\\\\f3ba\"}.fa-khanda:before{content:\"\\\\f66d\"}.fa-kickstarter:before{content:\"\\\\f3bb\"}.fa-kickstarter-k:before{content:\"\\\\f3bc\"}.fa-kiss:before{content:\"\\\\f596\"}.fa-kiss-beam:before{content:\"\\\\f597\"}.fa-kiss-wink-heart:before{content:\"\\\\f598\"}.fa-kiwi-bird:before{content:\"\\\\f535\"}.fa-korvue:before{content:\"\\\\f42f\"}.fa-landmark:before{content:\"\\\\f66f\"}.fa-language:before{content:\"\\\\f1ab\"}.fa-laptop:before{content:\"\\\\f109\"}.fa-laptop-code:before{content:\"\\\\f5fc\"}.fa-laptop-house:before{content:\"\\\\e066\"}.fa-laptop-medical:before{content:\"\\\\f812\"}.fa-laravel:before{content:\"\\\\f3bd\"}.fa-lastfm:before{content:\"\\\\f202\"}.fa-lastfm-square:before{content:\"\\\\f203\"}.fa-laugh:before{content:\"\\\\f599\"}.fa-laugh-beam:before{content:\"\\\\f59a\"}.fa-laugh-squint:before{content:\"\\\\f59b\"}.fa-laugh-wink:before{content:\"\\\\f59c\"}.fa-layer-group:before{content:\"\\\\f5fd\"}.fa-leaf:before{content:\"\\\\f06c\"}.fa-leanpub:before{content:\"\\\\f212\"}.fa-lemon:before{content:\"\\\\f094\"}.fa-less:before{content:\"\\\\f41d\"}.fa-less-than:before{content:\"\\\\f536\"}.fa-less-than-equal:before{content:\"\\\\f537\"}.fa-level-down-alt:before{content:\"\\\\f3be\"}.fa-level-up-alt:before{content:\"\\\\f3bf\"}.fa-life-ring:before{content:\"\\\\f1cd\"}.fa-lightbulb:before{content:\"\\\\f0eb\"}.fa-line:before{content:\"\\\\f3c0\"}.fa-link:before{content:\"\\\\f0c1\"}.fa-linkedin:before{content:\"\\\\f08c\"}.fa-linkedin-in:before{content:\"\\\\f0e1\"}.fa-linode:before{content:\"\\\\f2b8\"}.fa-linux:before{content:\"\\\\f17c\"}.fa-lira-sign:before{content:\"\\\\f195\"}.fa-list:before{content:\"\\\\f03a\"}.fa-list-alt:before{content:\"\\\\f022\"}.fa-list-ol:before{content:\"\\\\f0cb\"}.fa-list-ul:before{content:\"\\\\f0ca\"}.fa-location-arrow:before{content:\"\\\\f124\"}.fa-lock:before{content:\"\\\\f023\"}.fa-lock-open:before{content:\"\\\\f3c1\"}.fa-long-arrow-alt-down:before{content:\"\\\\f309\"}.fa-long-arrow-alt-left:before{content:\"\\\\f30a\"}.fa-long-arrow-alt-right:before{content:\"\\\\f30b\"}.fa-long-arrow-alt-up:before{content:\"\\\\f30c\"}.fa-low-vision:before{content:\"\\\\f2a8\"}.fa-luggage-cart:before{content:\"\\\\f59d\"}.fa-lungs:before{content:\"\\\\f604\"}.fa-lungs-virus:before{content:\"\\\\e067\"}.fa-lyft:before{content:\"\\\\f3c3\"}.fa-magento:before{content:\"\\\\f3c4\"}.fa-magic:before{content:\"\\\\f0d0\"}.fa-magnet:before{content:\"\\\\f076\"}.fa-mail-bulk:before{content:\"\\\\f674\"}.fa-mailchimp:before{content:\"\\\\f59e\"}.fa-male:before{content:\"\\\\f183\"}.fa-mandalorian:before{content:\"\\\\f50f\"}.fa-map:before{content:\"\\\\f279\"}.fa-map-marked:before{content:\"\\\\f59f\"}.fa-map-marked-alt:before{content:\"\\\\f5a0\"}.fa-map-marker:before{content:\"\\\\f041\"}.fa-map-marker-alt:before{content:\"\\\\f3c5\"}.fa-map-pin:before{content:\"\\\\f276\"}.fa-map-signs:before{content:\"\\\\f277\"}.fa-markdown:before{content:\"\\\\f60f\"}.fa-marker:before{content:\"\\\\f5a1\"}.fa-mars:before{content:\"\\\\f222\"}.fa-mars-double:before{content:\"\\\\f227\"}.fa-mars-stroke:before{content:\"\\\\f229\"}.fa-mars-stroke-h:before{content:\"\\\\f22b\"}.fa-mars-stroke-v:before{content:\"\\\\f22a\"}.fa-mask:before{content:\"\\\\f6fa\"}.fa-mastodon:before{content:\"\\\\f4f6\"}.fa-maxcdn:before{content:\"\\\\f136\"}.fa-mdb:before{content:\"\\\\f8ca\"}.fa-medal:before{content:\"\\\\f5a2\"}.fa-medapps:before{content:\"\\\\f3c6\"}.fa-medium:before{content:\"\\\\f23a\"}.fa-medium-m:before{content:\"\\\\f3c7\"}.fa-medkit:before{content:\"\\\\f0fa\"}.fa-medrt:before{content:\"\\\\f3c8\"}.fa-meetup:before{content:\"\\\\f2e0\"}.fa-megaport:before{content:\"\\\\f5a3\"}.fa-meh:before{content:\"\\\\f11a\"}.fa-meh-blank:before{content:\"\\\\f5a4\"}.fa-meh-rolling-eyes:before{content:\"\\\\f5a5\"}.fa-memory:before{content:\"\\\\f538\"}.fa-mendeley:before{content:\"\\\\f7b3\"}.fa-menorah:before{content:\"\\\\f676\"}.fa-mercury:before{content:\"\\\\f223\"}.fa-meteor:before{content:\"\\\\f753\"}.fa-microblog:before{content:\"\\\\e01a\"}.fa-microchip:before{content:\"\\\\f2db\"}.fa-microphone:before{content:\"\\\\f130\"}.fa-microphone-alt:before{content:\"\\\\f3c9\"}.fa-microphone-alt-slash:before{content:\"\\\\f539\"}.fa-microphone-slash:before{content:\"\\\\f131\"}.fa-microscope:before{content:\"\\\\f610\"}.fa-microsoft:before{content:\"\\\\f3ca\"}.fa-minus:before{content:\"\\\\f068\"}.fa-minus-circle:before{content:\"\\\\f056\"}.fa-minus-square:before{content:\"\\\\f146\"}.fa-mitten:before{content:\"\\\\f7b5\"}.fa-mix:before{content:\"\\\\f3cb\"}.fa-mixcloud:before{content:\"\\\\f289\"}.fa-mixer:before{content:\"\\\\e056\"}.fa-mizuni:before{content:\"\\\\f3cc\"}.fa-mobile:before{content:\"\\\\f10b\"}.fa-mobile-alt:before{content:\"\\\\f3cd\"}.fa-modx:before{content:\"\\\\f285\"}.fa-monero:before{content:\"\\\\f3d0\"}.fa-money-bill:before{content:\"\\\\f0d6\"}.fa-money-bill-alt:before{content:\"\\\\f3d1\"}.fa-money-bill-wave:before{content:\"\\\\f53a\"}.fa-money-bill-wave-alt:before{content:\"\\\\f53b\"}.fa-money-check:before{content:\"\\\\f53c\"}.fa-money-check-alt:before{content:\"\\\\f53d\"}.fa-monument:before{content:\"\\\\f5a6\"}.fa-moon:before{content:\"\\\\f186\"}.fa-mortar-pestle:before{content:\"\\\\f5a7\"}.fa-mosque:before{content:\"\\\\f678\"}.fa-motorcycle:before{content:\"\\\\f21c\"}.fa-mountain:before{content:\"\\\\f6fc\"}.fa-mouse:before{content:\"\\\\f8cc\"}.fa-mouse-pointer:before{content:\"\\\\f245\"}.fa-mug-hot:before{content:\"\\\\f7b6\"}.fa-music:before{content:\"\\\\f001\"}.fa-napster:before{content:\"\\\\f3d2\"}.fa-neos:before{content:\"\\\\f612\"}.fa-network-wired:before{content:\"\\\\f6ff\"}.fa-neuter:before{content:\"\\\\f22c\"}.fa-newspaper:before{content:\"\\\\f1ea\"}.fa-nimblr:before{content:\"\\\\f5a8\"}.fa-node:before{content:\"\\\\f419\"}.fa-node-js:before{content:\"\\\\f3d3\"}.fa-not-equal:before{content:\"\\\\f53e\"}.fa-notes-medical:before{content:\"\\\\f481\"}.fa-npm:before{content:\"\\\\f3d4\"}.fa-ns8:before{content:\"\\\\f3d5\"}.fa-nutritionix:before{content:\"\\\\f3d6\"}.fa-object-group:before{content:\"\\\\f247\"}.fa-object-ungroup:before{content:\"\\\\f248\"}.fa-octopus-deploy:before{content:\"\\\\e082\"}.fa-odnoklassniki:before{content:\"\\\\f263\"}.fa-odnoklassniki-square:before{content:\"\\\\f264\"}.fa-oil-can:before{content:\"\\\\f613\"}.fa-old-republic:before{content:\"\\\\f510\"}.fa-om:before{content:\"\\\\f679\"}.fa-opencart:before{content:\"\\\\f23d\"}.fa-openid:before{content:\"\\\\f19b\"}.fa-opera:before{content:\"\\\\f26a\"}.fa-optin-monster:before{content:\"\\\\f23c\"}.fa-orcid:before{content:\"\\\\f8d2\"}.fa-osi:before{content:\"\\\\f41a\"}.fa-otter:before{content:\"\\\\f700\"}.fa-outdent:before{content:\"\\\\f03b\"}.fa-page4:before{content:\"\\\\f3d7\"}.fa-pagelines:before{content:\"\\\\f18c\"}.fa-pager:before{content:\"\\\\f815\"}.fa-paint-brush:before{content:\"\\\\f1fc\"}.fa-paint-roller:before{content:\"\\\\f5aa\"}.fa-palette:before{content:\"\\\\f53f\"}.fa-palfed:before{content:\"\\\\f3d8\"}.fa-pallet:before{content:\"\\\\f482\"}.fa-paper-plane:before{content:\"\\\\f1d8\"}.fa-paperclip:before{content:\"\\\\f0c6\"}.fa-parachute-box:before{content:\"\\\\f4cd\"}.fa-paragraph:before{content:\"\\\\f1dd\"}.fa-parking:before{content:\"\\\\f540\"}.fa-passport:before{content:\"\\\\f5ab\"}.fa-pastafarianism:before{content:\"\\\\f67b\"}.fa-paste:before{content:\"\\\\f0ea\"}.fa-patreon:before{content:\"\\\\f3d9\"}.fa-pause:before{content:\"\\\\f04c\"}.fa-pause-circle:before{content:\"\\\\f28b\"}.fa-paw:before{content:\"\\\\f1b0\"}.fa-paypal:before{content:\"\\\\f1ed\"}.fa-peace:before{content:\"\\\\f67c\"}.fa-pen:before{content:\"\\\\f304\"}.fa-pen-alt:before{content:\"\\\\f305\"}.fa-pen-fancy:before{content:\"\\\\f5ac\"}.fa-pen-nib:before{content:\"\\\\f5ad\"}.fa-pen-square:before{content:\"\\\\f14b\"}.fa-pencil-alt:before{content:\"\\\\f303\"}.fa-pencil-ruler:before{content:\"\\\\f5ae\"}.fa-penny-arcade:before{content:\"\\\\f704\"}.fa-people-arrows:before{content:\"\\\\e068\"}.fa-people-carry:before{content:\"\\\\f4ce\"}.fa-pepper-hot:before{content:\"\\\\f816\"}.fa-perbyte:before{content:\"\\\\e083\"}.fa-percent:before{content:\"\\\\f295\"}.fa-percentage:before{content:\"\\\\f541\"}.fa-periscope:before{content:\"\\\\f3da\"}.fa-person-booth:before{content:\"\\\\f756\"}.fa-phabricator:before{content:\"\\\\f3db\"}.fa-phoenix-framework:before{content:\"\\\\f3dc\"}.fa-phoenix-squadron:before{content:\"\\\\f511\"}.fa-phone:before{content:\"\\\\f095\"}.fa-phone-alt:before{content:\"\\\\f879\"}.fa-phone-slash:before{content:\"\\\\f3dd\"}.fa-phone-square:before{content:\"\\\\f098\"}.fa-phone-square-alt:before{content:\"\\\\f87b\"}.fa-phone-volume:before{content:\"\\\\f2a0\"}.fa-photo-video:before{content:\"\\\\f87c\"}.fa-php:before{content:\"\\\\f457\"}.fa-pied-piper:before{content:\"\\\\f2ae\"}.fa-pied-piper-alt:before{content:\"\\\\f1a8\"}.fa-pied-piper-hat:before{content:\"\\\\f4e5\"}.fa-pied-piper-pp:before{content:\"\\\\f1a7\"}.fa-pied-piper-square:before{content:\"\\\\e01e\"}.fa-piggy-bank:before{content:\"\\\\f4d3\"}.fa-pills:before{content:\"\\\\f484\"}.fa-pinterest:before{content:\"\\\\f0d2\"}.fa-pinterest-p:before{content:\"\\\\f231\"}.fa-pinterest-square:before{content:\"\\\\f0d3\"}.fa-pizza-slice:before{content:\"\\\\f818\"}.fa-place-of-worship:before{content:\"\\\\f67f\"}.fa-plane:before{content:\"\\\\f072\"}.fa-plane-arrival:before{content:\"\\\\f5af\"}.fa-plane-departure:before{content:\"\\\\f5b0\"}.fa-plane-slash:before{content:\"\\\\e069\"}.fa-play:before{content:\"\\\\f04b\"}.fa-play-circle:before{content:\"\\\\f144\"}.fa-playstation:before{content:\"\\\\f3df\"}.fa-plug:before{content:\"\\\\f1e6\"}.fa-plus:before{content:\"\\\\f067\"}.fa-plus-circle:before{content:\"\\\\f055\"}.fa-plus-square:before{content:\"\\\\f0fe\"}.fa-podcast:before{content:\"\\\\f2ce\"}.fa-poll:before{content:\"\\\\f681\"}.fa-poll-h:before{content:\"\\\\f682\"}.fa-poo:before{content:\"\\\\f2fe\"}.fa-poo-storm:before{content:\"\\\\f75a\"}.fa-poop:before{content:\"\\\\f619\"}.fa-portrait:before{content:\"\\\\f3e0\"}.fa-pound-sign:before{content:\"\\\\f154\"}.fa-power-off:before{content:\"\\\\f011\"}.fa-pray:before{content:\"\\\\f683\"}.fa-praying-hands:before{content:\"\\\\f684\"}.fa-prescription:before{content:\"\\\\f5b1\"}.fa-prescription-bottle:before{content:\"\\\\f485\"}.fa-prescription-bottle-alt:before{content:\"\\\\f486\"}.fa-print:before{content:\"\\\\f02f\"}.fa-procedures:before{content:\"\\\\f487\"}.fa-product-hunt:before{content:\"\\\\f288\"}.fa-project-diagram:before{content:\"\\\\f542\"}.fa-pump-medical:before{content:\"\\\\e06a\"}.fa-pump-soap:before{content:\"\\\\e06b\"}.fa-pushed:before{content:\"\\\\f3e1\"}.fa-puzzle-piece:before{content:\"\\\\f12e\"}.fa-python:before{content:\"\\\\f3e2\"}.fa-qq:before{content:\"\\\\f1d6\"}.fa-qrcode:before{content:\"\\\\f029\"}.fa-question:before{content:\"\\\\f128\"}.fa-question-circle:before{content:\"\\\\f059\"}.fa-quidditch:before{content:\"\\\\f458\"}.fa-quinscape:before{content:\"\\\\f459\"}.fa-quora:before{content:\"\\\\f2c4\"}.fa-quote-left:before{content:\"\\\\f10d\"}.fa-quote-right:before{content:\"\\\\f10e\"}.fa-quran:before{content:\"\\\\f687\"}.fa-r-project:before{content:\"\\\\f4f7\"}.fa-radiation:before{content:\"\\\\f7b9\"}.fa-radiation-alt:before{content:\"\\\\f7ba\"}.fa-rainbow:before{content:\"\\\\f75b\"}.fa-random:before{content:\"\\\\f074\"}.fa-raspberry-pi:before{content:\"\\\\f7bb\"}.fa-ravelry:before{content:\"\\\\f2d9\"}.fa-react:before{content:\"\\\\f41b\"}.fa-reacteurope:before{content:\"\\\\f75d\"}.fa-readme:before{content:\"\\\\f4d5\"}.fa-rebel:before{content:\"\\\\f1d0\"}.fa-receipt:before{content:\"\\\\f543\"}.fa-record-vinyl:before{content:\"\\\\f8d9\"}.fa-recycle:before{content:\"\\\\f1b8\"}.fa-red-river:before{content:\"\\\\f3e3\"}.fa-reddit:before{content:\"\\\\f1a1\"}.fa-reddit-alien:before{content:\"\\\\f281\"}.fa-reddit-square:before{content:\"\\\\f1a2\"}.fa-redhat:before{content:\"\\\\f7bc\"}.fa-redo:before{content:\"\\\\f01e\"}.fa-redo-alt:before{content:\"\\\\f2f9\"}.fa-registered:before{content:\"\\\\f25d\"}.fa-remove-format:before{content:\"\\\\f87d\"}.fa-renren:before{content:\"\\\\f18b\"}.fa-reply:before{content:\"\\\\f3e5\"}.fa-reply-all:before{content:\"\\\\f122\"}.fa-replyd:before{content:\"\\\\f3e6\"}.fa-republican:before{content:\"\\\\f75e\"}.fa-researchgate:before{content:\"\\\\f4f8\"}.fa-resolving:before{content:\"\\\\f3e7\"}.fa-restroom:before{content:\"\\\\f7bd\"}.fa-retweet:before{content:\"\\\\f079\"}.fa-rev:before{content:\"\\\\f5b2\"}.fa-ribbon:before{content:\"\\\\f4d6\"}.fa-ring:before{content:\"\\\\f70b\"}.fa-road:before{content:\"\\\\f018\"}.fa-robot:before{content:\"\\\\f544\"}.fa-rocket:before{content:\"\\\\f135\"}.fa-rocketchat:before{content:\"\\\\f3e8\"}.fa-rockrms:before{content:\"\\\\f3e9\"}.fa-route:before{content:\"\\\\f4d7\"}.fa-rss:before{content:\"\\\\f09e\"}.fa-rss-square:before{content:\"\\\\f143\"}.fa-ruble-sign:before{content:\"\\\\f158\"}.fa-ruler:before{content:\"\\\\f545\"}.fa-ruler-combined:before{content:\"\\\\f546\"}.fa-ruler-horizontal:before{content:\"\\\\f547\"}.fa-ruler-vertical:before{content:\"\\\\f548\"}.fa-running:before{content:\"\\\\f70c\"}.fa-rupee-sign:before{content:\"\\\\f156\"}.fa-rust:before{content:\"\\\\e07a\"}.fa-sad-cry:before{content:\"\\\\f5b3\"}.fa-sad-tear:before{content:\"\\\\f5b4\"}.fa-safari:before{content:\"\\\\f267\"}.fa-salesforce:before{content:\"\\\\f83b\"}.fa-sass:before{content:\"\\\\f41e\"}.fa-satellite:before{content:\"\\\\f7bf\"}.fa-satellite-dish:before{content:\"\\\\f7c0\"}.fa-save:before{content:\"\\\\f0c7\"}.fa-schlix:before{content:\"\\\\f3ea\"}.fa-school:before{content:\"\\\\f549\"}.fa-screwdriver:before{content:\"\\\\f54a\"}.fa-scribd:before{content:\"\\\\f28a\"}.fa-scroll:before{content:\"\\\\f70e\"}.fa-sd-card:before{content:\"\\\\f7c2\"}.fa-search:before{content:\"\\\\f002\"}.fa-search-dollar:before{content:\"\\\\f688\"}.fa-search-location:before{content:\"\\\\f689\"}.fa-search-minus:before{content:\"\\\\f010\"}.fa-search-plus:before{content:\"\\\\f00e\"}.fa-searchengin:before{content:\"\\\\f3eb\"}.fa-seedling:before{content:\"\\\\f4d8\"}.fa-sellcast:before{content:\"\\\\f2da\"}.fa-sellsy:before{content:\"\\\\f213\"}.fa-server:before{content:\"\\\\f233\"}.fa-servicestack:before{content:\"\\\\f3ec\"}.fa-shapes:before{content:\"\\\\f61f\"}.fa-share:before{content:\"\\\\f064\"}.fa-share-alt:before{content:\"\\\\f1e0\"}.fa-share-alt-square:before{content:\"\\\\f1e1\"}.fa-share-square:before{content:\"\\\\f14d\"}.fa-shekel-sign:before{content:\"\\\\f20b\"}.fa-shield-alt:before{content:\"\\\\f3ed\"}.fa-shield-virus:before{content:\"\\\\e06c\"}.fa-ship:before{content:\"\\\\f21a\"}.fa-shipping-fast:before{content:\"\\\\f48b\"}.fa-shirtsinbulk:before{content:\"\\\\f214\"}.fa-shoe-prints:before{content:\"\\\\f54b\"}.fa-shopify:before{content:\"\\\\e057\"}.fa-shopping-bag:before{content:\"\\\\f290\"}.fa-shopping-basket:before{content:\"\\\\f291\"}.fa-shopping-cart:before{content:\"\\\\f07a\"}.fa-shopware:before{content:\"\\\\f5b5\"}.fa-shower:before{content:\"\\\\f2cc\"}.fa-shuttle-van:before{content:\"\\\\f5b6\"}.fa-sign:before{content:\"\\\\f4d9\"}.fa-sign-in-alt:before{content:\"\\\\f2f6\"}.fa-sign-language:before{content:\"\\\\f2a7\"}.fa-sign-out-alt:before{content:\"\\\\f2f5\"}.fa-signal:before{content:\"\\\\f012\"}.fa-signature:before{content:\"\\\\f5b7\"}.fa-sim-card:before{content:\"\\\\f7c4\"}.fa-simplybuilt:before{content:\"\\\\f215\"}.fa-sink:before{content:\"\\\\e06d\"}.fa-sistrix:before{content:\"\\\\f3ee\"}.fa-sitemap:before{content:\"\\\\f0e8\"}.fa-sith:before{content:\"\\\\f512\"}.fa-skating:before{content:\"\\\\f7c5\"}.fa-sketch:before{content:\"\\\\f7c6\"}.fa-skiing:before{content:\"\\\\f7c9\"}.fa-skiing-nordic:before{content:\"\\\\f7ca\"}.fa-skull:before{content:\"\\\\f54c\"}.fa-skull-crossbones:before{content:\"\\\\f714\"}.fa-skyatlas:before{content:\"\\\\f216\"}.fa-skype:before{content:\"\\\\f17e\"}.fa-slack:before{content:\"\\\\f198\"}.fa-slack-hash:before{content:\"\\\\f3ef\"}.fa-slash:before{content:\"\\\\f715\"}.fa-sleigh:before{content:\"\\\\f7cc\"}.fa-sliders-h:before{content:\"\\\\f1de\"}.fa-slideshare:before{content:\"\\\\f1e7\"}.fa-smile:before{content:\"\\\\f118\"}.fa-smile-beam:before{content:\"\\\\f5b8\"}.fa-smile-wink:before{content:\"\\\\f4da\"}.fa-smog:before{content:\"\\\\f75f\"}.fa-smoking:before{content:\"\\\\f48d\"}.fa-smoking-ban:before{content:\"\\\\f54d\"}.fa-sms:before{content:\"\\\\f7cd\"}.fa-snapchat:before{content:\"\\\\f2ab\"}.fa-snapchat-ghost:before{content:\"\\\\f2ac\"}.fa-snapchat-square:before{content:\"\\\\f2ad\"}.fa-snowboarding:before{content:\"\\\\f7ce\"}.fa-snowflake:before{content:\"\\\\f2dc\"}.fa-snowman:before{content:\"\\\\f7d0\"}.fa-snowplow:before{content:\"\\\\f7d2\"}.fa-soap:before{content:\"\\\\e06e\"}.fa-socks:before{content:\"\\\\f696\"}.fa-solar-panel:before{content:\"\\\\f5ba\"}.fa-sort:before{content:\"\\\\f0dc\"}.fa-sort-alpha-down:before{content:\"\\\\f15d\"}.fa-sort-alpha-down-alt:before{content:\"\\\\f881\"}.fa-sort-alpha-up:before{content:\"\\\\f15e\"}.fa-sort-alpha-up-alt:before{content:\"\\\\f882\"}.fa-sort-amount-down:before{content:\"\\\\f160\"}.fa-sort-amount-down-alt:before{content:\"\\\\f884\"}.fa-sort-amount-up:before{content:\"\\\\f161\"}.fa-sort-amount-up-alt:before{content:\"\\\\f885\"}.fa-sort-down:before{content:\"\\\\f0dd\"}.fa-sort-numeric-down:before{content:\"\\\\f162\"}.fa-sort-numeric-down-alt:before{content:\"\\\\f886\"}.fa-sort-numeric-up:before{content:\"\\\\f163\"}.fa-sort-numeric-up-alt:before{content:\"\\\\f887\"}.fa-sort-up:before{content:\"\\\\f0de\"}.fa-soundcloud:before{content:\"\\\\f1be\"}.fa-sourcetree:before{content:\"\\\\f7d3\"}.fa-spa:before{content:\"\\\\f5bb\"}.fa-space-shuttle:before{content:\"\\\\f197\"}.fa-speakap:before{content:\"\\\\f3f3\"}.fa-speaker-deck:before{content:\"\\\\f83c\"}.fa-spell-check:before{content:\"\\\\f891\"}.fa-spider:before{content:\"\\\\f717\"}.fa-spinner:before{content:\"\\\\f110\"}.fa-splotch:before{content:\"\\\\f5bc\"}.fa-spotify:before{content:\"\\\\f1bc\"}.fa-spray-can:before{content:\"\\\\f5bd\"}.fa-square:before{content:\"\\\\f0c8\"}.fa-square-full:before{content:\"\\\\f45c\"}.fa-square-root-alt:before{content:\"\\\\f698\"}.fa-squarespace:before{content:\"\\\\f5be\"}.fa-stack-exchange:before{content:\"\\\\f18d\"}.fa-stack-overflow:before{content:\"\\\\f16c\"}.fa-stackpath:before{content:\"\\\\f842\"}.fa-stamp:before{content:\"\\\\f5bf\"}.fa-star:before{content:\"\\\\f005\"}.fa-star-and-crescent:before{content:\"\\\\f699\"}.fa-star-half:before{content:\"\\\\f089\"}.fa-star-half-alt:before{content:\"\\\\f5c0\"}.fa-star-of-david:before{content:\"\\\\f69a\"}.fa-star-of-life:before{content:\"\\\\f621\"}.fa-staylinked:before{content:\"\\\\f3f5\"}.fa-steam:before{content:\"\\\\f1b6\"}.fa-steam-square:before{content:\"\\\\f1b7\"}.fa-steam-symbol:before{content:\"\\\\f3f6\"}.fa-step-backward:before{content:\"\\\\f048\"}.fa-step-forward:before{content:\"\\\\f051\"}.fa-stethoscope:before{content:\"\\\\f0f1\"}.fa-sticker-mule:before{content:\"\\\\f3f7\"}.fa-sticky-note:before{content:\"\\\\f249\"}.fa-stop:before{content:\"\\\\f04d\"}.fa-stop-circle:before{content:\"\\\\f28d\"}.fa-stopwatch:before{content:\"\\\\f2f2\"}.fa-stopwatch-20:before{content:\"\\\\e06f\"}.fa-store:before{content:\"\\\\f54e\"}.fa-store-alt:before{content:\"\\\\f54f\"}.fa-store-alt-slash:before{content:\"\\\\e070\"}.fa-store-slash:before{content:\"\\\\e071\"}.fa-strava:before{content:\"\\\\f428\"}.fa-stream:before{content:\"\\\\f550\"}.fa-street-view:before{content:\"\\\\f21d\"}.fa-strikethrough:before{content:\"\\\\f0cc\"}.fa-stripe:before{content:\"\\\\f429\"}.fa-stripe-s:before{content:\"\\\\f42a\"}.fa-stroopwafel:before{content:\"\\\\f551\"}.fa-studiovinari:before{content:\"\\\\f3f8\"}.fa-stumbleupon:before{content:\"\\\\f1a4\"}.fa-stumbleupon-circle:before{content:\"\\\\f1a3\"}.fa-subscript:before{content:\"\\\\f12c\"}.fa-subway:before{content:\"\\\\f239\"}.fa-suitcase:before{content:\"\\\\f0f2\"}.fa-suitcase-rolling:before{content:\"\\\\f5c1\"}.fa-sun:before{content:\"\\\\f185\"}.fa-superpowers:before{content:\"\\\\f2dd\"}.fa-superscript:before{content:\"\\\\f12b\"}.fa-supple:before{content:\"\\\\f3f9\"}.fa-surprise:before{content:\"\\\\f5c2\"}.fa-suse:before{content:\"\\\\f7d6\"}.fa-swatchbook:before{content:\"\\\\f5c3\"}.fa-swift:before{content:\"\\\\f8e1\"}.fa-swimmer:before{content:\"\\\\f5c4\"}.fa-swimming-pool:before{content:\"\\\\f5c5\"}.fa-symfony:before{content:\"\\\\f83d\"}.fa-synagogue:before{content:\"\\\\f69b\"}.fa-sync:before{content:\"\\\\f021\"}.fa-sync-alt:before{content:\"\\\\f2f1\"}.fa-syringe:before{content:\"\\\\f48e\"}.fa-table:before{content:\"\\\\f0ce\"}.fa-table-tennis:before{content:\"\\\\f45d\"}.fa-tablet:before{content:\"\\\\f10a\"}.fa-tablet-alt:before{content:\"\\\\f3fa\"}.fa-tablets:before{content:\"\\\\f490\"}.fa-tachometer-alt:before{content:\"\\\\f3fd\"}.fa-tag:before{content:\"\\\\f02b\"}.fa-tags:before{content:\"\\\\f02c\"}.fa-tape:before{content:\"\\\\f4db\"}.fa-tasks:before{content:\"\\\\f0ae\"}.fa-taxi:before{content:\"\\\\f1ba\"}.fa-teamspeak:before{content:\"\\\\f4f9\"}.fa-teeth:before{content:\"\\\\f62e\"}.fa-teeth-open:before{content:\"\\\\f62f\"}.fa-telegram:before{content:\"\\\\f2c6\"}.fa-telegram-plane:before{content:\"\\\\f3fe\"}.fa-temperature-high:before{content:\"\\\\f769\"}.fa-temperature-low:before{content:\"\\\\f76b\"}.fa-tencent-weibo:before{content:\"\\\\f1d5\"}.fa-tenge:before{content:\"\\\\f7d7\"}.fa-terminal:before{content:\"\\\\f120\"}.fa-text-height:before{content:\"\\\\f034\"}.fa-text-width:before{content:\"\\\\f035\"}.fa-th:before{content:\"\\\\f00a\"}.fa-th-large:before{content:\"\\\\f009\"}.fa-th-list:before{content:\"\\\\f00b\"}.fa-the-red-yeti:before{content:\"\\\\f69d\"}.fa-theater-masks:before{content:\"\\\\f630\"}.fa-themeco:before{content:\"\\\\f5c6\"}.fa-themeisle:before{content:\"\\\\f2b2\"}.fa-thermometer:before{content:\"\\\\f491\"}.fa-thermometer-empty:before{content:\"\\\\f2cb\"}.fa-thermometer-full:before{content:\"\\\\f2c7\"}.fa-thermometer-half:before{content:\"\\\\f2c9\"}.fa-thermometer-quarter:before{content:\"\\\\f2ca\"}.fa-thermometer-three-quarters:before{content:\"\\\\f2c8\"}.fa-think-peaks:before{content:\"\\\\f731\"}.fa-thumbs-down:before{content:\"\\\\f165\"}.fa-thumbs-up:before{content:\"\\\\f164\"}.fa-thumbtack:before{content:\"\\\\f08d\"}.fa-ticket-alt:before{content:\"\\\\f3ff\"}.fa-tiktok:before{content:\"\\\\e07b\"}.fa-times:before{content:\"\\\\f00d\"}.fa-times-circle:before{content:\"\\\\f057\"}.fa-tint:before{content:\"\\\\f043\"}.fa-tint-slash:before{content:\"\\\\f5c7\"}.fa-tired:before{content:\"\\\\f5c8\"}.fa-toggle-off:before{content:\"\\\\f204\"}.fa-toggle-on:before{content:\"\\\\f205\"}.fa-toilet:before{content:\"\\\\f7d8\"}.fa-toilet-paper:before{content:\"\\\\f71e\"}.fa-toilet-paper-slash:before{content:\"\\\\e072\"}.fa-toolbox:before{content:\"\\\\f552\"}.fa-tools:before{content:\"\\\\f7d9\"}.fa-tooth:before{content:\"\\\\f5c9\"}.fa-torah:before{content:\"\\\\f6a0\"}.fa-torii-gate:before{content:\"\\\\f6a1\"}.fa-tractor:before{content:\"\\\\f722\"}.fa-trade-federation:before{content:\"\\\\f513\"}.fa-trademark:before{content:\"\\\\f25c\"}.fa-traffic-light:before{content:\"\\\\f637\"}.fa-trailer:before{content:\"\\\\e041\"}.fa-train:before{content:\"\\\\f238\"}.fa-tram:before{content:\"\\\\f7da\"}.fa-transgender:before{content:\"\\\\f224\"}.fa-transgender-alt:before{content:\"\\\\f225\"}.fa-trash:before{content:\"\\\\f1f8\"}.fa-trash-alt:before{content:\"\\\\f2ed\"}.fa-trash-restore:before{content:\"\\\\f829\"}.fa-trash-restore-alt:before{content:\"\\\\f82a\"}.fa-tree:before{content:\"\\\\f1bb\"}.fa-trello:before{content:\"\\\\f181\"}.fa-trophy:before{content:\"\\\\f091\"}.fa-truck:before{content:\"\\\\f0d1\"}.fa-truck-loading:before{content:\"\\\\f4de\"}.fa-truck-monster:before{content:\"\\\\f63b\"}.fa-truck-moving:before{content:\"\\\\f4df\"}.fa-truck-pickup:before{content:\"\\\\f63c\"}.fa-tshirt:before{content:\"\\\\f553\"}.fa-tty:before{content:\"\\\\f1e4\"}.fa-tumblr:before{content:\"\\\\f173\"}.fa-tumblr-square:before{content:\"\\\\f174\"}.fa-tv:before{content:\"\\\\f26c\"}.fa-twitch:before{content:\"\\\\f1e8\"}.fa-twitter:before{content:\"\\\\f099\"}.fa-twitter-square:before{content:\"\\\\f081\"}.fa-typo3:before{content:\"\\\\f42b\"}.fa-uber:before{content:\"\\\\f402\"}.fa-ubuntu:before{content:\"\\\\f7df\"}.fa-uikit:before{content:\"\\\\f403\"}.fa-umbraco:before{content:\"\\\\f8e8\"}.fa-umbrella:before{content:\"\\\\f0e9\"}.fa-umbrella-beach:before{content:\"\\\\f5ca\"}.fa-uncharted:before{content:\"\\\\e084\"}.fa-underline:before{content:\"\\\\f0cd\"}.fa-undo:before{content:\"\\\\f0e2\"}.fa-undo-alt:before{content:\"\\\\f2ea\"}.fa-uniregistry:before{content:\"\\\\f404\"}.fa-unity:before{content:\"\\\\e049\"}.fa-universal-access:before{content:\"\\\\f29a\"}.fa-university:before{content:\"\\\\f19c\"}.fa-unlink:before{content:\"\\\\f127\"}.fa-unlock:before{content:\"\\\\f09c\"}.fa-unlock-alt:before{content:\"\\\\f13e\"}.fa-unsplash:before{content:\"\\\\e07c\"}.fa-untappd:before{content:\"\\\\f405\"}.fa-upload:before{content:\"\\\\f093\"}.fa-ups:before{content:\"\\\\f7e0\"}.fa-usb:before{content:\"\\\\f287\"}.fa-user:before{content:\"\\\\f007\"}.fa-user-alt:before{content:\"\\\\f406\"}.fa-user-alt-slash:before{content:\"\\\\f4fa\"}.fa-user-astronaut:before{content:\"\\\\f4fb\"}.fa-user-check:before{content:\"\\\\f4fc\"}.fa-user-circle:before{content:\"\\\\f2bd\"}.fa-user-clock:before{content:\"\\\\f4fd\"}.fa-user-cog:before{content:\"\\\\f4fe\"}.fa-user-edit:before{content:\"\\\\f4ff\"}.fa-user-friends:before{content:\"\\\\f500\"}.fa-user-graduate:before{content:\"\\\\f501\"}.fa-user-injured:before{content:\"\\\\f728\"}.fa-user-lock:before{content:\"\\\\f502\"}.fa-user-md:before{content:\"\\\\f0f0\"}.fa-user-minus:before{content:\"\\\\f503\"}.fa-user-ninja:before{content:\"\\\\f504\"}.fa-user-nurse:before{content:\"\\\\f82f\"}.fa-user-plus:before{content:\"\\\\f234\"}.fa-user-secret:before{content:\"\\\\f21b\"}.fa-user-shield:before{content:\"\\\\f505\"}.fa-user-slash:before{content:\"\\\\f506\"}.fa-user-tag:before{content:\"\\\\f507\"}.fa-user-tie:before{content:\"\\\\f508\"}.fa-user-times:before{content:\"\\\\f235\"}.fa-users:before{content:\"\\\\f0c0\"}.fa-users-cog:before{content:\"\\\\f509\"}.fa-users-slash:before{content:\"\\\\e073\"}.fa-usps:before{content:\"\\\\f7e1\"}.fa-ussunnah:before{content:\"\\\\f407\"}.fa-utensil-spoon:before{content:\"\\\\f2e5\"}.fa-utensils:before{content:\"\\\\f2e7\"}.fa-vaadin:before{content:\"\\\\f408\"}.fa-vector-square:before{content:\"\\\\f5cb\"}.fa-venus:before{content:\"\\\\f221\"}.fa-venus-double:before{content:\"\\\\f226\"}.fa-venus-mars:before{content:\"\\\\f228\"}.fa-vest:before{content:\"\\\\e085\"}.fa-vest-patches:before{content:\"\\\\e086\"}.fa-viacoin:before{content:\"\\\\f237\"}.fa-viadeo:before{content:\"\\\\f2a9\"}.fa-viadeo-square:before{content:\"\\\\f2aa\"}.fa-vial:before{content:\"\\\\f492\"}.fa-vials:before{content:\"\\\\f493\"}.fa-viber:before{content:\"\\\\f409\"}.fa-video:before{content:\"\\\\f03d\"}.fa-video-slash:before{content:\"\\\\f4e2\"}.fa-vihara:before{content:\"\\\\f6a7\"}.fa-vimeo:before{content:\"\\\\f40a\"}.fa-vimeo-square:before{content:\"\\\\f194\"}.fa-vimeo-v:before{content:\"\\\\f27d\"}.fa-vine:before{content:\"\\\\f1ca\"}.fa-virus:before{content:\"\\\\e074\"}.fa-virus-slash:before{content:\"\\\\e075\"}.fa-viruses:before{content:\"\\\\e076\"}.fa-vk:before{content:\"\\\\f189\"}.fa-vnv:before{content:\"\\\\f40b\"}.fa-voicemail:before{content:\"\\\\f897\"}.fa-volleyball-ball:before{content:\"\\\\f45f\"}.fa-volume-down:before{content:\"\\\\f027\"}.fa-volume-mute:before{content:\"\\\\f6a9\"}.fa-volume-off:before{content:\"\\\\f026\"}.fa-volume-up:before{content:\"\\\\f028\"}.fa-vote-yea:before{content:\"\\\\f772\"}.fa-vr-cardboard:before{content:\"\\\\f729\"}.fa-vuejs:before{content:\"\\\\f41f\"}.fa-walking:before{content:\"\\\\f554\"}.fa-wallet:before{content:\"\\\\f555\"}.fa-warehouse:before{content:\"\\\\f494\"}.fa-watchman-monitoring:before{content:\"\\\\e087\"}.fa-water:before{content:\"\\\\f773\"}.fa-wave-square:before{content:\"\\\\f83e\"}.fa-waze:before{content:\"\\\\f83f\"}.fa-weebly:before{content:\"\\\\f5cc\"}.fa-weibo:before{content:\"\\\\f18a\"}.fa-weight:before{content:\"\\\\f496\"}.fa-weight-hanging:before{content:\"\\\\f5cd\"}.fa-weixin:before{content:\"\\\\f1d7\"}.fa-whatsapp:before{content:\"\\\\f232\"}.fa-whatsapp-square:before{content:\"\\\\f40c\"}.fa-wheelchair:before{content:\"\\\\f193\"}.fa-whmcs:before{content:\"\\\\f40d\"}.fa-wifi:before{content:\"\\\\f1eb\"}.fa-wikipedia-w:before{content:\"\\\\f266\"}.fa-wind:before{content:\"\\\\f72e\"}.fa-window-close:before{content:\"\\\\f410\"}.fa-window-maximize:before{content:\"\\\\f2d0\"}.fa-window-minimize:before{content:\"\\\\f2d1\"}.fa-window-restore:before{content:\"\\\\f2d2\"}.fa-windows:before{content:\"\\\\f17a\"}.fa-wine-bottle:before{content:\"\\\\f72f\"}.fa-wine-glass:before{content:\"\\\\f4e3\"}.fa-wine-glass-alt:before{content:\"\\\\f5ce\"}.fa-wix:before{content:\"\\\\f5cf\"}.fa-wizards-of-the-coast:before{content:\"\\\\f730\"}.fa-wodu:before{content:\"\\\\e088\"}.fa-wolf-pack-battalion:before{content:\"\\\\f514\"}.fa-won-sign:before{content:\"\\\\f159\"}.fa-wordpress:before{content:\"\\\\f19a\"}.fa-wordpress-simple:before{content:\"\\\\f411\"}.fa-wpbeginner:before{content:\"\\\\f297\"}.fa-wpexplorer:before{content:\"\\\\f2de\"}.fa-wpforms:before{content:\"\\\\f298\"}.fa-wpressr:before{content:\"\\\\f3e4\"}.fa-wrench:before{content:\"\\\\f0ad\"}.fa-x-ray:before{content:\"\\\\f497\"}.fa-xbox:before{content:\"\\\\f412\"}.fa-xing:before{content:\"\\\\f168\"}.fa-xing-square:before{content:\"\\\\f169\"}.fa-y-combinator:before{content:\"\\\\f23b\"}.fa-yahoo:before{content:\"\\\\f19e\"}.fa-yammer:before{content:\"\\\\f840\"}.fa-yandex:before{content:\"\\\\f413\"}.fa-yandex-international:before{content:\"\\\\f414\"}.fa-yarn:before{content:\"\\\\f7e3\"}.fa-yelp:before{content:\"\\\\f1e9\"}.fa-yen-sign:before{content:\"\\\\f157\"}.fa-yin-yang:before{content:\"\\\\f6ad\"}.fa-yoast:before{content:\"\\\\f2b1\"}.fa-youtube:before{content:\"\\\\f167\"}.fa-youtube-square:before{content:\"\\\\f431\"}.fa-zhihu:before{content:\"\\\\f63f\"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\\\\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format(\"woff\")}.fab{font-family:Font Awesome\\\\ 5 Brands}@font-face{font-family:Font Awesome\\\\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(${___CSS_LOADER_URL_REPLACEMENT_2___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_3___}) format(\"woff\")}.far{font-weight:400}@font-face{font-family:Font Awesome\\\\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(${___CSS_LOADER_URL_REPLACEMENT_4___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_5___}) format(\"woff\")}.fa,.far,.fas{font-family:Font Awesome\\\\ 5 Free}.fa,.fas{font-weight:900}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"web-font/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"web-font/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@font-face{font-family:Material Icons;font-style:normal;font-weight:400;font-display:block;src:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format(\"woff2\"),url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format(\"woff\")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"web-font/KFOkCnqEu92Fr1MmgVxIIzQ.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"web-font/KFOlCnqEu92Fr1MmSU5fBBc-.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"web-font/KFOmCnqEu92Fr1Mu4mxM.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"web-font/KFOlCnqEu92Fr1MmEU9fBBc-.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"web-font/KFOlCnqEu92Fr1MmWUlfBBc-.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"web-font/KFOlCnqEu92Fr1MmYUtfBBc-.woff\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@font-face{font-family:Roboto;font-style:normal;font-weight:100;src:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format(\"woff\")}@font-face{font-family:Roboto;font-style:normal;font-weight:300;src:url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format(\"woff\")}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(${___CSS_LOADER_URL_REPLACEMENT_2___}) format(\"woff\")}@font-face{font-family:Roboto;font-style:normal;font-weight:500;src:url(${___CSS_LOADER_URL_REPLACEMENT_3___}) format(\"woff\")}@font-face{font-family:Roboto;font-style:normal;font-weight:700;src:url(${___CSS_LOADER_URL_REPLACEMENT_4___}) format(\"woff\")}@font-face{font-family:Roboto;font-style:normal;font-weight:900;src:url(${___CSS_LOADER_URL_REPLACEMENT_5___}) format(\"woff\")}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAH0lEQVQoU2NkYGAwZkAFZ5G5jPRRgOYEVDeB3EBjBQBOZwTVugIGyAAAAABJRU5ErkJggg==\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*,:after,:before{box-sizing:inherit;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent}#q-app,body,html{width:100%;direction:ltr}body.platform-ios.within-iframe,body.platform-ios.within-iframe #q-app{width:100px;min-width:100%}body,html{margin:0;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;font-family:inherit;margin:0}optgroup{font-weight:700}button,input,select{overflow:visible;text-transform:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button:-moz-focusring,input:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.q-icon{line-height:1;width:1em;height:1em;flex-shrink:0;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;text-align:center;position:relative;box-sizing:content-box;fill:currentColor}.q-icon:after,.q-icon:before{width:100%;height:100%;display:flex!important;align-items:center;justify-content:center}.q-icon>img,.q-icon>svg{width:100%;height:100%}.material-icons,.material-icons-outlined,.material-icons-round,.material-icons-sharp,.material-symbols-outlined,.material-symbols-rounded,.material-symbols-sharp,.q-icon{-webkit-user-select:none;user-select:none;cursor:inherit;font-size:inherit;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.q-panel,.q-panel>div{height:100%;width:100%}.q-panel-parent{overflow:hidden;position:relative}.q-loading-bar{position:fixed;z-index:9998;transition:transform .5s cubic-bezier(0,0,.2,1),opacity .5s;background:#f44336}.q-loading-bar--top{left:0;right:0;top:0;width:100%}.q-loading-bar--bottom{left:0;right:0;bottom:0;width:100%}.q-loading-bar--right{top:0;bottom:0;right:0;height:100%}.q-loading-bar--left{top:0;bottom:0;left:0;height:100%}.q-avatar{position:relative;vertical-align:middle;display:inline-block;border-radius:50%;font-size:48px;height:1em;width:1em}.q-avatar__content{font-size:.5em;line-height:.5em}.q-avatar img:not(.q-icon):not(.q-img__image),.q-avatar__content{border-radius:inherit;height:inherit;width:inherit}.q-avatar--square{border-radius:0}.q-badge{background-color:var(--q-primary);color:#fff;padding:2px 6px;border-radius:4px;font-size:12px;line-height:12px;min-height:12px;font-weight:400;vertical-align:baseline}.q-badge--single-line{white-space:nowrap}.q-badge--multi-line{word-break:break-all;word-wrap:break-word}.q-badge--floating{position:absolute;top:-4px;right:-3px;cursor:inherit}.q-badge--transparent{opacity:.8}.q-badge--outline{background-color:transparent;border:1px solid currentColor}.q-badge--rounded{border-radius:1em}.q-banner{min-height:54px;padding:8px 16px;background:#fff}.q-banner--top-padding{padding-top:14px}.q-banner__avatar{min-width:1px!important}.q-banner__avatar>.q-avatar{font-size:46px}.q-banner__avatar>.q-icon{font-size:40px}.q-banner__actions.col-auto,.q-banner__avatar:not(:empty)+.q-banner__content{padding-left:16px}.q-banner__actions.col-all .q-btn-item{margin:4px 0 0 4px}.q-banner--dense{min-height:32px;padding:8px}.q-banner--dense.q-banner--top-padding{padding-top:12px}.q-banner--dense .q-banner__avatar>.q-avatar,.q-banner--dense .q-banner__avatar>.q-icon{font-size:28px}.q-banner--dense .q-banner__actions.col-auto,.q-banner--dense .q-banner__avatar:not(:empty)+.q-banner__content{padding-left:8px}.q-bar{background:rgba(0,0,0,.2)}.q-bar>.q-icon{margin-left:2px}.q-bar>div,.q-bar>div+.q-icon{margin-left:8px}.q-bar>.q-btn{margin-left:2px}.q-bar>.q-btn:first-child,.q-bar>.q-icon:first-child,.q-bar>div:first-child{margin-left:0}.q-bar--standard{padding:0 12px;height:32px;font-size:18px}.q-bar--standard>div{font-size:16px}.q-bar--standard .q-btn{font-size:11px}.q-bar--dense{padding:0 8px;height:24px;font-size:14px}.q-bar--dense .q-btn{font-size:8px}.q-bar--dark{background:hsla(0,0%,100%,.15)}.q-breadcrumbs__el{color:inherit}.q-breadcrumbs__el-icon{font-size:125%}.q-breadcrumbs__el-icon--with-label{margin-right:8px}[dir=rtl] .q-breadcrumbs__separator .q-icon{transform:scaleX(-1)}.q-btn{display:inline-flex;flex-direction:column;align-items:stretch;position:relative;outline:0;border:0;vertical-align:middle;font-size:14px;line-height:1.715em;text-decoration:none;color:inherit;background:transparent;font-weight:500;text-transform:uppercase;text-align:center;width:auto;height:auto;cursor:default;padding:4px 16px;min-height:2.572em}.q-btn .q-icon,.q-btn .q-spinner{font-size:1.715em}.q-btn.disabled{opacity:.7!important}.q-btn:before{content:\"\";display:block;position:absolute;left:0;right:0;top:0;bottom:0;border-radius:inherit;box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.q-btn--actionable{cursor:pointer}.q-btn--actionable.q-btn--standard:before{transition:box-shadow .3s cubic-bezier(.25,.8,.5,1)}.q-btn--actionable.q-btn--standard.q-btn--active:before,.q-btn--actionable.q-btn--standard:active:before{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px rgba(0,0,0,.14),0 1px 14px rgba(0,0,0,.12)}.q-btn--no-uppercase{text-transform:none}.q-btn--rectangle{border-radius:3px}.q-btn--outline{background:transparent!important}.q-btn--outline:before{border:1px solid currentColor}.q-btn--push{border-radius:7px}.q-btn--push:before{border-bottom:3px solid rgba(0,0,0,.15)}.q-btn--push.q-btn--actionable{transition:transform .3s cubic-bezier(.25,.8,.5,1)}.q-btn--push.q-btn--actionable:before{transition:border-width .3s cubic-bezier(.25,.8,.5,1)}.q-btn--push.q-btn--actionable.q-btn--active,.q-btn--push.q-btn--actionable:active{transform:translateY(2px)}.q-btn--push.q-btn--actionable.q-btn--active:before,.q-btn--push.q-btn--actionable:active:before{border-bottom-width:0}.q-btn--rounded{border-radius:28px}.q-btn--round{border-radius:50%;padding:0;min-width:3em;min-height:3em}.q-btn--square{border-radius:0}.q-btn--flat:before,.q-btn--outline:before,.q-btn--unelevated:before{box-shadow:none}.q-btn--dense{padding:.285em;min-height:2em}.q-btn--dense.q-btn--round{padding:0;min-height:2.4em;min-width:2.4em}.q-btn--dense .on-left{margin-right:6px}.q-btn--dense .on-right{margin-left:6px}.q-btn--fab .q-icon,.q-btn--fab-mini .q-icon{font-size:24px}.q-btn--fab{padding:16px;min-height:56px;min-width:56px}.q-btn--fab .q-icon{margin:auto}.q-btn--fab-mini{padding:8px;min-height:40px;min-width:40px}.q-btn__content{transition:opacity .3s;z-index:0}.q-btn__content--hidden{opacity:0;pointer-events:none}.q-btn__progress{border-radius:inherit;z-index:0}.q-btn__progress-indicator{z-index:-1;transform:translateX(-100%);background:hsla(0,0%,100%,.25)}.q-btn__progress--dark .q-btn__progress-indicator{background:rgba(0,0,0,.2)}.q-btn--flat .q-btn__progress-indicator,.q-btn--outline .q-btn__progress-indicator{opacity:.2;background:currentColor}.q-btn-dropdown--split .q-btn-dropdown__arrow-container{padding:0 4px}.q-btn-dropdown--split .q-btn-dropdown__arrow-container.q-btn--outline{border-left:1px solid currentColor}.q-btn-dropdown--split .q-btn-dropdown__arrow-container:not(.q-btn--outline){border-left:1px solid hsla(0,0%,100%,.3)}.q-btn-dropdown--simple *+.q-btn-dropdown__arrow{margin-left:8px}.q-btn-dropdown__arrow{transition:transform .28s}.q-btn-dropdown--current{flex-grow:1}.q-btn-group{border-radius:3px;box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12);vertical-align:middle}.q-btn-group>.q-btn-item{border-radius:inherit;align-self:stretch}.q-btn-group>.q-btn-item:before{box-shadow:none}.q-btn-group>.q-btn-item .q-badge--floating{right:0}.q-btn-group>.q-btn-group{box-shadow:none}.q-btn-group>.q-btn-group:first-child>.q-btn:first-child{border-top-left-radius:inherit;border-bottom-left-radius:inherit}.q-btn-group>.q-btn-group:last-child>.q-btn:last-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}.q-btn-group>.q-btn-group:not(:first-child)>.q-btn:first-child:before{border-left:0}.q-btn-group>.q-btn-group:not(:last-child)>.q-btn:last-child:before{border-right:0}.q-btn-group>.q-btn-item:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.q-btn-group>.q-btn-item:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.q-btn-group>.q-btn-item.q-btn--standard:before{z-index:-1}.q-btn-group--push{border-radius:7px}.q-btn-group--push>.q-btn--push.q-btn--actionable{transform:none}.q-btn-group--push>.q-btn--push.q-btn--actionable .q-btn__content{transition:margin-top .3s cubic-bezier(.25,.8,.5,1),margin-bottom .3s cubic-bezier(.25,.8,.5,1)}.q-btn-group--push>.q-btn--push.q-btn--actionable.q-btn--active .q-btn__content,.q-btn-group--push>.q-btn--push.q-btn--actionable:active .q-btn__content{margin-top:2px;margin-bottom:-2px}.q-btn-group--rounded{border-radius:28px}.q-btn-group--square{border-radius:0}.q-btn-group--flat,.q-btn-group--outline,.q-btn-group--unelevated{box-shadow:none}.q-btn-group--outline>.q-separator{display:none}.q-btn-group--outline>.q-btn-item+.q-btn-item:before{border-left:0}.q-btn-group--outline>.q-btn-item:not(:last-child):before{border-right:0}.q-btn-group--stretch{align-self:stretch;border-radius:0}.q-btn-group--glossy>.q-btn-item{background-image:linear-gradient(180deg,hsla(0,0%,100%,.3),hsla(0,0%,100%,0) 50%,rgba(0,0,0,.12) 51%,rgba(0,0,0,.04))!important}.q-btn-group--spread>.q-btn-group{display:flex!important}.q-btn-group--spread>.q-btn-group>.q-btn-item:not(.q-btn-dropdown__arrow-container),.q-btn-group--spread>.q-btn-item{width:auto;min-width:0;max-width:100%;flex:10000 1 0%}.q-btn-toggle,.q-card{position:relative}.q-card{box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12);border-radius:4px;vertical-align:top;background:#fff}.q-card>div:first-child,.q-card>img:first-child{border-top:0;border-top-left-radius:inherit;border-top-right-radius:inherit}.q-card>div:last-child,.q-card>img:last-child{border-bottom:0;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.q-card>div:not(:first-child),.q-card>img:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.q-card>div:not(:last-child),.q-card>img:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0}.q-card>div{border-left:0;border-right:0;box-shadow:none}.q-card--bordered{border:1px solid rgba(0,0,0,.12)}.q-card--dark{border-color:hsla(0,0%,100%,.28);box-shadow:0 1px 5px hsla(0,0%,100%,.2),0 2px 2px hsla(0,0%,100%,.14),0 3px 1px -2px hsla(0,0%,100%,.12)}.q-card__section{position:relative}.q-card__section--vert{padding:16px}.q-card__section--horiz>div:first-child,.q-card__section--horiz>img:first-child{border-top-left-radius:inherit;border-bottom-left-radius:inherit}.q-card__section--horiz>div:last-child,.q-card__section--horiz>img:last-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}.q-card__section--horiz>div:not(:first-child),.q-card__section--horiz>img:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.q-card__section--horiz>div:not(:last-child),.q-card__section--horiz>img:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.q-card__section--horiz>div{border-top:0;border-bottom:0;box-shadow:none}.q-card__actions{padding:8px;align-items:center}.q-card__actions .q-btn--rectangle{padding:0 8px}.q-card__actions--horiz>.q-btn-group+.q-btn-item,.q-card__actions--horiz>.q-btn-item+.q-btn-group,.q-card__actions--horiz>.q-btn-item+.q-btn-item{margin-left:8px}.q-card__actions--vert>.q-btn-item.q-btn--round{align-self:center}.q-card__actions--vert>.q-btn-group+.q-btn-item,.q-card__actions--vert>.q-btn-item+.q-btn-group,.q-card__actions--vert>.q-btn-item+.q-btn-item{margin-top:4px}.q-card__actions--vert>.q-btn-group>.q-btn-item{flex-grow:1}.q-card>img{display:block;width:100%;max-width:100%;border:0}.q-carousel{background-color:#fff;height:400px}.q-carousel__slide{min-height:100%;background-size:cover;background-position:50%}.q-carousel .q-carousel--padding,.q-carousel__slide{padding:16px}.q-carousel__slides-container{height:100%}.q-carousel__control{color:#fff}.q-carousel__arrow{pointer-events:none}.q-carousel__arrow .q-icon{font-size:28px}.q-carousel__arrow .q-btn{pointer-events:all}.q-carousel__next-arrow--horizontal,.q-carousel__prev-arrow--horizontal{top:16px;bottom:16px}.q-carousel__prev-arrow--horizontal{left:16px}.q-carousel__next-arrow--horizontal{right:16px}.q-carousel__next-arrow--vertical,.q-carousel__prev-arrow--vertical{left:16px;right:16px}.q-carousel__prev-arrow--vertical{top:16px}.q-carousel__next-arrow--vertical{bottom:16px}.q-carousel__navigation--bottom,.q-carousel__navigation--top{left:16px;right:16px;overflow-x:auto;overflow-y:hidden}.q-carousel__navigation--top{top:16px}.q-carousel__navigation--bottom{bottom:16px}.q-carousel__navigation--left,.q-carousel__navigation--right{top:16px;bottom:16px;overflow-x:hidden;overflow-y:auto}.q-carousel__navigation--left>.q-carousel__navigation-inner,.q-carousel__navigation--right>.q-carousel__navigation-inner{flex-direction:column}.q-carousel__navigation--left{left:16px}.q-carousel__navigation--right{right:16px}.q-carousel__navigation-inner{flex:1 1 auto}.q-carousel__navigation .q-btn{margin:6px 4px;padding:5px}.q-carousel__navigation-icon--inactive{opacity:.7}.q-carousel .q-carousel__thumbnail{margin:2px;height:50px;width:auto;display:inline-block;cursor:pointer;border:1px solid transparent;border-radius:4px;vertical-align:middle;opacity:.7;transition:opacity .3s}.q-carousel .q-carousel__thumbnail--active,.q-carousel .q-carousel__thumbnail:hover{opacity:1}.q-carousel .q-carousel__thumbnail--active{border-color:currentColor;cursor:default}.q-carousel--arrows-vertical .q-carousel--padding,.q-carousel--arrows-vertical.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-top .q-carousel--padding,.q-carousel--navigation-top.q-carousel--with-padding .q-carousel__slide{padding-top:60px}.q-carousel--arrows-vertical .q-carousel--padding,.q-carousel--arrows-vertical.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-bottom .q-carousel--padding,.q-carousel--navigation-bottom.q-carousel--with-padding .q-carousel__slide{padding-bottom:60px}.q-carousel--arrows-horizontal .q-carousel--padding,.q-carousel--arrows-horizontal.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-left .q-carousel--padding,.q-carousel--navigation-left.q-carousel--with-padding .q-carousel__slide{padding-left:60px}.q-carousel--arrows-horizontal .q-carousel--padding,.q-carousel--arrows-horizontal.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-right .q-carousel--padding,.q-carousel--navigation-right.q-carousel--with-padding .q-carousel__slide{padding-right:60px}.q-carousel.fullscreen{height:100%}.q-message-label,.q-message-name,.q-message-stamp{font-size:small}.q-message-label{margin:24px 0;text-align:center}.q-message-stamp{color:inherit;margin-top:4px;opacity:.6;display:none}.q-message-avatar{border-radius:50%;width:48px;height:48px;min-width:48px}.q-message{margin-bottom:8px}.q-message:first-child .q-message-label{margin-top:0}.q-message-avatar--received{margin-right:8px}.q-message-text--received{color:#81c784;border-radius:4px 4px 4px 0}.q-message-text--received:last-child:before{right:100%;border-right:0 solid transparent;border-left:8px solid transparent;border-bottom:8px solid currentColor}.q-message-text-content--received{color:#000}.q-message-name--sent{text-align:right}.q-message-avatar--sent{margin-left:8px}.q-message-container--sent{flex-direction:row-reverse}.q-message-text--sent{color:#e0e0e0;border-radius:4px 4px 0 4px}.q-message-text--sent:last-child:before{left:100%;border-left:0 solid transparent;border-right:8px solid transparent;border-bottom:8px solid currentColor}.q-message-text-content--sent{color:#000}.q-message-text{background:currentColor;padding:8px;line-height:1.2;word-break:break-word;position:relative}.q-message-text+.q-message-text{margin-top:3px}.q-message-text:last-child{min-height:48px}.q-message-text:last-child .q-message-stamp{display:block}.q-message-text:last-child:before{content:\"\";position:absolute;bottom:0;width:0;height:0}.q-checkbox{vertical-align:middle}.q-checkbox__native{width:1px;height:1px}.q-checkbox__bg,.q-checkbox__icon-container{-webkit-user-select:none;user-select:none}.q-checkbox__bg{top:25%;left:25%;width:50%;height:50%;border:2px solid currentColor;border-radius:2px;transition:background .22s cubic-bezier(0,0,.2,1) 0ms;-webkit-print-color-adjust:exact}.q-checkbox__icon{color:currentColor;font-size:.5em}.q-checkbox__svg{color:#fff}.q-checkbox__truthy{stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.78334;stroke-dasharray:29.78334}.q-checkbox__indet{fill:currentColor;transform-origin:50% 50%;transform:rotate(-280deg) scale(0)}.q-checkbox__inner{font-size:40px;width:1em;min-width:1em;height:1em;outline:0;border-radius:50%;color:rgba(0,0,0,.54)}.q-checkbox__inner--indet,.q-checkbox__inner--truthy{color:var(--q-primary)}.q-checkbox__inner--indet .q-checkbox__bg,.q-checkbox__inner--truthy .q-checkbox__bg{background:currentColor}.q-checkbox__inner--truthy path{stroke-dashoffset:0;transition:stroke-dashoffset .18s cubic-bezier(.4,0,.6,1) 0ms}.q-checkbox__inner--indet .q-checkbox__indet{transform:rotate(0) scale(1);transition:transform .22s cubic-bezier(0,0,.2,1) 0ms}.q-checkbox.disabled{opacity:.75!important}.q-checkbox--dark .q-checkbox__inner{color:hsla(0,0%,100%,.7)}.q-checkbox--dark .q-checkbox__inner:before{opacity:.32!important}.q-checkbox--dark .q-checkbox__inner--indet,.q-checkbox--dark .q-checkbox__inner--truthy{color:var(--q-primary)}.q-checkbox--dense .q-checkbox__inner{width:.5em;min-width:.5em;height:.5em}.q-checkbox--dense .q-checkbox__bg{left:5%;top:5%;width:90%;height:90%}.q-checkbox--dense .q-checkbox__label{padding-left:.5em}.q-checkbox--dense.reverse .q-checkbox__label{padding-left:0;padding-right:.5em}body.desktop .q-checkbox:not(.disabled) .q-checkbox__inner:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:currentColor;opacity:.12;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1)}body.desktop .q-checkbox:not(.disabled):focus .q-checkbox__inner:before,body.desktop .q-checkbox:not(.disabled):hover .q-checkbox__inner:before{transform:scaleX(1)}body.desktop .q-checkbox--dense:not(.disabled):focus .q-checkbox__inner:before,body.desktop .q-checkbox--dense:not(.disabled):hover .q-checkbox__inner:before{transform:scale3d(1.4,1.4,1)}.q-chip{vertical-align:middle;border-radius:16px;outline:0;position:relative;height:2em;max-width:100%;margin:4px;background:#e0e0e0;color:rgba(0,0,0,.87);font-size:14px;padding:.5em .9em}.q-chip--colored .q-chip__icon,.q-chip--dark .q-chip__icon{color:inherit}.q-chip--outline{background:transparent!important;border:1px solid currentColor}.q-chip .q-avatar{font-size:2em;margin-left:-.45em;margin-right:.2em;border-radius:16px}.q-chip--selected .q-avatar{display:none}.q-chip__icon{color:rgba(0,0,0,.54);font-size:1.5em;margin:-.2em}.q-chip__icon--left{margin-right:.2em}.q-chip__icon--right{margin-left:.2em}.q-chip__icon--remove{margin-left:.1em;margin-right:-.5em;opacity:.6;outline:0}.q-chip__icon--remove:focus,.q-chip__icon--remove:hover{opacity:1}.q-chip__content{white-space:nowrap}.q-chip--dense{border-radius:12px;padding:0 .4em;height:1.5em}.q-chip--dense .q-avatar{font-size:1.5em;margin-left:-.27em;margin-right:.1em;border-radius:12px}.q-chip--dense .q-chip__icon{font-size:1.25em}.q-chip--dense .q-chip__icon--left{margin-right:.195em}.q-chip--dense .q-chip__icon--remove{margin-right:-.25em}.q-chip--square{border-radius:4px}.q-chip--square .q-avatar{border-radius:3px 0 0 3px}body.desktop .q-chip--clickable:focus{box-shadow:0 1px 3px rgba(0,0,0,.2),0 1px 1px rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}body.desktop.body--dark .q-chip--clickable:focus{box-shadow:0 1px 3px hsla(0,0%,100%,.2),0 1px 1px hsla(0,0%,100%,.14),0 2px 1px -1px hsla(0,0%,100%,.12)}.q-circular-progress{display:inline-block;position:relative;vertical-align:middle;width:1em;height:1em;line-height:1}.q-circular-progress.q-focusable{border-radius:50%}.q-circular-progress__svg{width:100%;height:100%}.q-circular-progress__text{font-size:.25em}.q-circular-progress--indeterminate .q-circular-progress__svg{transform-origin:50% 50%;animation:q-spin 2s linear infinite}.q-circular-progress--indeterminate .q-circular-progress__circle{stroke-dasharray:1 400;stroke-dashoffset:0;animation:q-circular-progress-circle 1.5s ease-in-out infinite}@keyframes q-circular-progress-circle{0%{stroke-dasharray:1,400;stroke-dashoffset:0}50%{stroke-dasharray:400,400;stroke-dashoffset:-100}to{stroke-dasharray:400,400;stroke-dashoffset:-300}}.q-color-picker{overflow:hidden;background:#fff;max-width:350px;vertical-align:top;min-width:180px;border-radius:4px;box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.q-color-picker .q-tab{padding:0!important}.q-color-picker--bordered{border:1px solid rgba(0,0,0,.12)}.q-color-picker__header-tabs{height:32px}.q-color-picker__header input{line-height:24px;border:0}.q-color-picker__header .q-tab{min-height:32px!important;height:32px!important}.q-color-picker__header .q-tab--inactive{background:linear-gradient(0deg,rgba(0,0,0,.3) 0,rgba(0,0,0,.15) 25%,rgba(0,0,0,.1))}.q-color-picker__error-icon{bottom:2px;right:2px;font-size:24px;opacity:0;transition:opacity .3s ease-in}.q-color-picker__header-content{position:relative;background:#fff}.q-color-picker__header-content--light{color:#000}.q-color-picker__header-content--dark{color:#fff}.q-color-picker__header-content--dark .q-tab--inactive:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;background:hsla(0,0%,100%,.2)}.q-color-picker__header-banner{height:36px}.q-color-picker__header-bg{background:#fff;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})!important}.q-color-picker__footer{height:36px}.q-color-picker__footer .q-tab{min-height:36px!important;height:36px!important}.q-color-picker__footer .q-tab--inactive{background:linear-gradient(180deg,rgba(0,0,0,.3) 0,rgba(0,0,0,.15) 25%,rgba(0,0,0,.1))}.q-color-picker__spectrum{width:100%;height:100%}.q-color-picker__spectrum-tab{padding:0!important}.q-color-picker__spectrum-white{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.q-color-picker__spectrum-black{background:linear-gradient(0deg,#000,transparent)}.q-color-picker__spectrum-circle{width:10px;height:10px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;transform:translate(-5px,-5px)}.q-color-picker__hue .q-slider__track{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)!important;opacity:1}.q-color-picker__alpha .q-slider__track-container{padding-top:0}.q-color-picker__alpha .q-slider__track:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(90deg,hsla(0,0%,100%,0),#757575)}.q-color-picker__sliders{padding:0 16px}.q-color-picker__sliders .q-slider__thumb{color:#424242}.q-color-picker__sliders .q-slider__thumb path{stroke-width:2px;fill:transparent}.q-color-picker__sliders .q-slider--active path{stroke-width:3px}.q-color-picker__tune-tab .q-slider{margin-left:18px;margin-right:18px}.q-color-picker__tune-tab input{font-size:11px;border:1px solid #e0e0e0;border-radius:4px;width:3.5em}.q-color-picker__palette-tab{padding:0!important}.q-color-picker__palette-rows--editable .q-color-picker__cube{cursor:pointer}.q-color-picker__cube{padding-bottom:10%;width:10%!important}.q-color-picker input{color:inherit;background:transparent;outline:0;text-align:center}.q-color-picker .q-tabs{overflow:hidden}.q-color-picker .q-tab--active{box-shadow:0 0 14px 3px rgba(0,0,0,.2)}.q-color-picker .q-tab--active .q-focus-helper,.q-color-picker .q-tab__indicator{display:none}.q-color-picker .q-tab-panels{background:inherit}.q-color-picker--dark{box-shadow:0 1px 5px hsla(0,0%,100%,.2),0 2px 2px hsla(0,0%,100%,.14),0 3px 1px -2px hsla(0,0%,100%,.12)}.q-color-picker--dark .q-color-picker__tune-tab input{border:1px solid hsla(0,0%,100%,.3)}.q-color-picker--dark .q-slider__thumb{color:#fafafa}.q-date{display:inline-flex;box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12);border-radius:4px;background:#fff;width:290px;min-width:290px;max-width:100%}.q-date--bordered{border:1px solid rgba(0,0,0,.12)}.q-date__header{border-top-left-radius:inherit;color:#fff;background-color:var(--q-primary);padding:16px}.q-date__actions{padding:0 16px 16px}.q-date__content,.q-date__main{outline:0}.q-date__content .q-btn{font-weight:400}.q-date__header-link{opacity:.64;outline:0;transition:opacity .3s ease-out}.q-date__header-link--active,.q-date__header-link:focus,.q-date__header-link:hover{opacity:1}.q-date__header-subtitle{font-size:14px;line-height:1.75;letter-spacing:.00938em}.q-date__header-title-label{font-size:24px;line-height:1.2;letter-spacing:.00735em}.q-date__view{height:100%;width:100%;min-height:290px;padding:16px}.q-date__navigation{height:12.5%}.q-date__navigation>div:first-child{width:8%;min-width:24px;justify-content:flex-end}.q-date__navigation>div:last-child{width:8%;min-width:24px;justify-content:flex-start}.q-date__calendar-weekdays{height:12.5%}.q-date__calendar-weekdays>div{opacity:.38;font-size:12px}.q-date__calendar-item{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:14.285%!important;height:12.5%!important;position:relative;padding:1px}.q-date__calendar-item:after{content:\"\";position:absolute;pointer-events:none;top:1px;right:0;bottom:1px;left:0;border-style:dashed;border-color:transparent;border-width:1px}.q-date__calendar-item button,.q-date__calendar-item>div{width:30px;height:30px;border-radius:50%}.q-date__calendar-item>div{line-height:30px;text-align:center}.q-date__calendar-item>button{line-height:22px}.q-date__calendar-item--out{opacity:.18}.q-date__calendar-item--fill{visibility:hidden}.q-date__range-from:before,.q-date__range-to:before,.q-date__range:before{content:\"\";background-color:currentColor;position:absolute;top:1px;bottom:1px;left:0;right:0;opacity:.3}.q-date__range-from:nth-child(7n-6):before,.q-date__range-to:nth-child(7n-6):before,.q-date__range:nth-child(7n-6):before{border-top-left-radius:0;border-bottom-left-radius:0}.q-date__range-from:nth-child(7n):before,.q-date__range-to:nth-child(7n):before,.q-date__range:nth-child(7n):before{border-top-right-radius:0;border-bottom-right-radius:0}.q-date__range-from:before{left:50%}.q-date__range-to:before{right:50%}.q-date__edit-range:after{border-color:currentColor transparent}.q-date__edit-range:nth-child(7n-6):after{border-top-left-radius:0;border-bottom-left-radius:0}.q-date__edit-range:nth-child(7n):after{border-top-right-radius:0;border-bottom-right-radius:0}.q-date__edit-range-from-to:after,.q-date__edit-range-from:after{left:4px;border-left-color:currentColor;border-top-color:currentColor;border-bottom-color:currentColor;border-top-left-radius:28px;border-bottom-left-radius:28px}.q-date__edit-range-from-to:after,.q-date__edit-range-to:after{right:4px;border-right-color:currentColor;border-top-color:currentColor;border-bottom-color:currentColor;border-top-right-radius:28px;border-bottom-right-radius:28px}.q-date__calendar-days-container{height:75%;min-height:192px}.q-date__calendar-days>div{height:16.66%!important}.q-date__event{position:absolute;bottom:2px;left:50%;height:5px;width:8px;border-radius:5px;background-color:var(--q-secondary);transform:translate3d(-50%,0,0)}.q-date__today{box-shadow:0 0 1px 0 currentColor}.q-date__years-content{padding:0 8px}.q-date__months-item,.q-date__years-item{flex:0 0 33.3333%}.q-date--readonly .q-date__content,.q-date--readonly .q-date__header,.q-date.disabled .q-date__content,.q-date.disabled .q-date__header{pointer-events:none}.q-date--readonly .q-date__navigation{display:none}.q-date--portrait{flex-direction:column}.q-date--portrait-standard .q-date__content{height:calc(100% - 86px)}.q-date--portrait-standard .q-date__header{border-top-right-radius:inherit;height:86px}.q-date--portrait-standard .q-date__header-title{align-items:center;height:30px}.q-date--portrait-minimal .q-date__content{height:100%}.q-date--landscape{flex-direction:row;align-items:stretch;min-width:420px}.q-date--landscape>div{display:flex;flex-direction:column}.q-date--landscape .q-date__content{height:100%}.q-date--landscape-standard{min-width:420px}.q-date--landscape-standard .q-date__header{border-bottom-left-radius:inherit;min-width:110px;width:110px}.q-date--landscape-standard .q-date__header-title{flex-direction:column}.q-date--landscape-standard .q-date__header-today{margin-top:12px;margin-left:-8px}.q-date--landscape-minimal{width:310px}.q-date--dark{box-shadow:0 1px 5px hsla(0,0%,100%,.2),0 2px 2px hsla(0,0%,100%,.14),0 3px 1px -2px hsla(0,0%,100%,.12);border-color:hsla(0,0%,100%,.28)}.q-dialog__title{font-size:1.25rem;font-weight:500;line-height:2rem;letter-spacing:.0125em}.q-dialog__progress{font-size:4rem}.q-dialog__inner{outline:0}.q-dialog__inner>div{pointer-events:all;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position;border-radius:4px}.q-dialog__inner--square>div{border-radius:0!important}.q-dialog__inner>.q-card>.q-card__actions .q-btn--rectangle{min-width:64px}.q-dialog__inner--minimized{padding:24px}.q-dialog__inner--minimized>div{max-height:calc(100vh - 48px)}.q-dialog__inner--maximized>div{height:100%;width:100%;max-height:100vh;max-width:100vw;border-radius:0!important;top:0!important;left:0!important}.q-dialog__inner--bottom,.q-dialog__inner--top{padding-top:0!important;padding-bottom:0!important}.q-dialog__inner--left,.q-dialog__inner--right{padding-right:0!important;padding-left:0!important}.q-dialog__inner--left:not(.q-dialog__inner--animating)>div,.q-dialog__inner--top:not(.q-dialog__inner--animating)>div{border-top-left-radius:0}.q-dialog__inner--right:not(.q-dialog__inner--animating)>div,.q-dialog__inner--top:not(.q-dialog__inner--animating)>div{border-top-right-radius:0}.q-dialog__inner--bottom:not(.q-dialog__inner--animating)>div,.q-dialog__inner--left:not(.q-dialog__inner--animating)>div{border-bottom-left-radius:0}.q-dialog__inner--bottom:not(.q-dialog__inner--animating)>div,.q-dialog__inner--right:not(.q-dialog__inner--animating)>div{border-bottom-right-radius:0}.q-dialog__inner--fullwidth>div{width:100%!important;max-width:100%!important}.q-dialog__inner--fullheight>div{height:100%!important;max-height:100%!important}.q-dialog__backdrop{z-index:-1;pointer-events:all;outline:0;background:rgba(0,0,0,.4)}body.platform-android:not(.native-mobile) .q-dialog__inner--minimized>div,body.platform-ios .q-dialog__inner--minimized>div{max-height:calc(100vh - 108px)}body.q-ios-padding .q-dialog__inner{padding-top:20px!important;padding-top:env(safe-area-inset-top)!important;padding-bottom:env(safe-area-inset-bottom)!important}body.q-ios-padding .q-dialog__inner>div{max-height:calc(100vh - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important}@media (max-width:599.98px){.q-dialog__inner--bottom,.q-dialog__inner--top{padding-left:0;padding-right:0}.q-dialog__inner--bottom>div,.q-dialog__inner--top>div{width:100%!important}}@media (min-width:600px){.q-dialog__inner--minimized>div{max-width:560px}}.q-body--dialog{overflow:hidden}.q-bottom-sheet{padding-bottom:8px}.q-bottom-sheet__avatar{border-radius:50%}.q-bottom-sheet--list{width:400px}.q-bottom-sheet--list .q-icon,.q-bottom-sheet--list img{font-size:24px;width:24px;height:24px}.q-bottom-sheet--grid{width:700px}.q-bottom-sheet--grid .q-bottom-sheet__item{padding:8px;text-align:center;min-width:100px}.q-bottom-sheet--grid .q-bottom-sheet__empty-icon,.q-bottom-sheet--grid .q-icon,.q-bottom-sheet--grid img{font-size:48px;width:48px;height:48px;margin-bottom:8px}.q-bottom-sheet--grid .q-separator{margin:12px 0}.q-bottom-sheet__item{flex:0 0 33.3333%}@media (min-width:600px){.q-bottom-sheet__item{flex:0 0 25%}}.q-dialog-plugin{width:400px}.q-dialog-plugin__form{max-height:50vh}.q-dialog-plugin .q-card__section+.q-card__section{padding-top:0}.q-dialog-plugin--progress{text-align:center}.q-editor{border:1px solid rgba(0,0,0,.12);border-radius:4px;background-color:#fff}.q-editor.disabled{border-style:dashed}.q-editor>div:first-child,.q-editor__toolbars-container,.q-editor__toolbars-container>div:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-editor__content{outline:0;padding:10px;min-height:10em;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;overflow:auto;max-width:100%}.q-editor__content pre{white-space:pre-wrap}.q-editor__content hr{border:0;outline:0;margin:1px;height:1px;background:rgba(0,0,0,.12)}.q-editor__content:empty:not(:focus):before{content:attr(placeholder);opacity:.7}.q-editor__toolbar{border-bottom:1px solid rgba(0,0,0,.12);min-height:32px}.q-editor__toolbars-container{max-width:100%}.q-editor .q-btn{margin:4px}.q-editor__toolbar-group{position:relative;margin:0 4px}.q-editor__toolbar-group+.q-editor__toolbar-group:before{content:\"\";position:absolute;left:-4px;top:4px;bottom:4px;width:1px;background:rgba(0,0,0,.12)}.q-editor__link-input{color:inherit;text-decoration:none;text-transform:none;border:none;border-radius:0;background:none;outline:0}.q-editor--flat,.q-editor--flat .q-editor__toolbar{border:0}.q-editor--dense .q-editor__toolbar-group{display:flex;align-items:center;flex-wrap:nowrap}.q-editor--dark{border-color:hsla(0,0%,100%,.28)}.q-editor--dark .q-editor__content hr{background:hsla(0,0%,100%,.28)}.q-editor--dark .q-editor__toolbar{border-color:hsla(0,0%,100%,.28)}.q-editor--dark .q-editor__toolbar-group+.q-editor__toolbar-group:before{background:hsla(0,0%,100%,.28)}.q-expansion-item__border{opacity:0}.q-expansion-item__toggle-icon{position:relative;transition:transform .3s}.q-expansion-item__toggle-icon--rotated{transform:rotate(180deg)}.q-expansion-item__toggle-focus{width:1em!important;height:1em!important;position:relative!important}.q-expansion-item__toggle-focus+.q-expansion-item__toggle-icon{margin-top:-1em}.q-expansion-item--standard.q-expansion-item--expanded>div>.q-expansion-item__border{opacity:1}.q-expansion-item--popup{transition:padding .5s}.q-expansion-item--popup>.q-expansion-item__container{border:1px solid rgba(0,0,0,.12)}.q-expansion-item--popup>.q-expansion-item__container>.q-separator{display:none}.q-expansion-item--popup.q-expansion-item--collapsed{padding:0 15px}.q-expansion-item--popup.q-expansion-item--expanded{padding:15px 0}.q-expansion-item--popup.q-expansion-item--expanded+.q-expansion-item--popup.q-expansion-item--expanded{padding-top:0}.q-expansion-item--popup.q-expansion-item--collapsed:not(:first-child)>.q-expansion-item__container{border-top-width:0}.q-expansion-item--popup.q-expansion-item--expanded+.q-expansion-item--popup.q-expansion-item--collapsed>.q-expansion-item__container{border-top-width:1px}.q-expansion-item__content>.q-card{box-shadow:none;border-radius:0}.q-expansion-item--expanded+.q-expansion-item--expanded>div>.q-expansion-item__border--top,.q-expansion-item:first-child>div>.q-expansion-item__border--top,.q-expansion-item:last-child>div>.q-expansion-item__border--bottom{opacity:0}.q-expansion-item--expanded .q-textarea--autogrow textarea{animation:q-expansion-done 0s}@keyframes q-expansion-done{0%{--q-exp-done:1}}.z-fab{z-index:990}.q-fab{position:relative;vertical-align:middle}.q-fab>.q-btn{width:100%}.q-fab--form-rounded{border-radius:28px}.q-fab--form-square{border-radius:4px}.q-fab__active-icon,.q-fab__icon{transition:opacity .4s,transform .4s}.q-fab__icon{opacity:1;transform:rotate(0deg)}.q-fab__active-icon{opacity:0;transform:rotate(-180deg)}.q-fab__label--external{position:absolute;padding:0 8px;transition:opacity .18s cubic-bezier(.65,.815,.735,.395)}.q-fab__label--external-hidden{opacity:0;pointer-events:none}.q-fab__label--external-left{top:50%;left:-12px;transform:translate(-100%,-50%)}.q-fab__label--external-right{top:50%;right:-12px;transform:translate(100%,-50%)}.q-fab__label--external-bottom{bottom:-12px;left:50%;transform:translate(-50%,100%)}.q-fab__label--external-top{top:-12px;left:50%;transform:translate(-50%,-100%)}.q-fab__label--internal{padding:0;transition:font-size .12s cubic-bezier(.65,.815,.735,.395),max-height .12s cubic-bezier(.65,.815,.735,.395),opacity .07s cubic-bezier(.65,.815,.735,.395);max-height:30px}.q-fab__label--internal-hidden{font-size:0;opacity:0}.q-fab__label--internal-top{padding-bottom:.12em}.q-fab__label--internal-bottom{padding-top:.12em}.q-fab__label--internal-bottom.q-fab__label--internal-hidden,.q-fab__label--internal-top.q-fab__label--internal-hidden{max-height:0}.q-fab__label--internal-left{padding-left:.285em;padding-right:.571em}.q-fab__label--internal-right{padding-right:.285em;padding-left:.571em}.q-fab__icon-holder{min-width:24px;min-height:24px;position:relative}.q-fab__icon-holder--opened .q-fab__icon{transform:rotate(180deg);opacity:0}.q-fab__icon-holder--opened .q-fab__active-icon{transform:rotate(0deg);opacity:1}.q-fab__actions{position:absolute;opacity:0;transition:transform .18s ease-in,opacity .18s ease-in;pointer-events:none;align-items:center;justify-content:center;align-self:center;padding:3px}.q-fab__actions .q-btn{margin:5px}.q-fab__actions--right{transform-origin:0 50%;transform:scale(.4) translateX(-62px);height:56px;left:100%;margin-left:9px}.q-fab__actions--left{transform-origin:100% 50%;transform:scale(.4) translateX(62px);height:56px;right:100%;margin-right:9px;flex-direction:row-reverse}.q-fab__actions--up{transform-origin:50% 100%;transform:scale(.4) translateY(62px);width:56px;bottom:100%;margin-bottom:9px;flex-direction:column-reverse}.q-fab__actions--down{transform-origin:50% 0;transform:scale(.4) translateY(-62px);width:56px;top:100%;margin-top:9px;flex-direction:column}.q-fab__actions--down,.q-fab__actions--up{left:50%;margin-left:-28px}.q-fab__actions--opened{opacity:1;transform:scale(1) translate(.1px);pointer-events:all}.q-fab--align-left>.q-fab__actions--down,.q-fab--align-left>.q-fab__actions--up{align-items:flex-start;left:28px}.q-fab--align-right>.q-fab__actions--down,.q-fab--align-right>.q-fab__actions--up{align-items:flex-end;left:auto;right:0}.q-field{font-size:14px}.q-field ::-ms-clear,.q-field ::-ms-reveal{display:none}.q-field--with-bottom{padding-bottom:20px}.q-field__marginal{height:56px;color:rgba(0,0,0,.54);font-size:24px}.q-field__marginal>*+*{margin-left:2px}.q-field__marginal .q-avatar{font-size:32px}.q-field__before,.q-field__prepend{padding-right:12px}.q-field__after,.q-field__append{padding-left:12px}.q-field__after:empty,.q-field__append:empty{display:none}.q-field__append+.q-field__append{padding-left:2px}.q-field__inner{text-align:left}.q-field__bottom{font-size:12px;min-height:20px;line-height:1;color:rgba(0,0,0,.54);padding:8px 12px 0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.q-field__bottom--animated{transform:translateY(100%);position:absolute;left:0;right:0;bottom:0}.q-field__messages{line-height:1}.q-field__messages>div{word-break:break-word;word-wrap:break-word;overflow-wrap:break-word}.q-field__messages>div+div{margin-top:4px}.q-field__counter{padding-left:8px;line-height:1}.q-field--item-aligned{padding:8px 16px}.q-field--item-aligned .q-field__before{min-width:56px}.q-field__control-container{height:inherit}.q-field__control{color:var(--q-primary);height:56px;max-width:100%;outline:none}.q-field__control:after,.q-field__control:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.q-field__control:before{border-radius:inherit}.q-field__shadow{top:8px;opacity:0;overflow:hidden;white-space:pre-wrap;transition:opacity .36s cubic-bezier(.4,0,.2,1)}.q-field__shadow+.q-field__native::placeholder{transition:opacity .36s cubic-bezier(.4,0,.2,1)}.q-field__shadow+.q-field__native:focus::placeholder{opacity:0}.q-field__input,.q-field__native,.q-field__prefix,.q-field__suffix{font-weight:400;line-height:28px;letter-spacing:.00937em;text-decoration:inherit;text-transform:inherit;border:none;border-radius:0;background:none;color:rgba(0,0,0,.87);outline:0;padding:6px 0}.q-field__input,.q-field__native{width:100%;min-width:0;outline:0!important;-webkit-user-select:auto;user-select:auto}.q-field__input:-webkit-autofill,.q-field__native:-webkit-autofill{-webkit-animation-name:q-autofill;-webkit-animation-fill-mode:both}.q-field__input:-webkit-autofill+.q-field__label,.q-field__native:-webkit-autofill+.q-field__label{transform:translateY(-40%) scale(.75)}.q-field__input[type=color]+.q-field__label,.q-field__input[type=date]+.q-field__label,.q-field__input[type=datetime-local]+.q-field__label,.q-field__input[type=month]+.q-field__label,.q-field__input[type=time]+.q-field__label,.q-field__input[type=week]+.q-field__label,.q-field__native[type=color]+.q-field__label,.q-field__native[type=date]+.q-field__label,.q-field__native[type=datetime-local]+.q-field__label,.q-field__native[type=month]+.q-field__label,.q-field__native[type=time]+.q-field__label,.q-field__native[type=week]+.q-field__label{transform:translateY(-40%) scale(.75)}.q-field__input:invalid,.q-field__native:invalid{box-shadow:none}.q-field__native[type=file]{line-height:1em}.q-field__input{padding:0;height:0;min-height:24px;line-height:24px}.q-field__prefix,.q-field__suffix{transition:opacity .36s cubic-bezier(.4,0,.2,1);white-space:nowrap}.q-field__prefix{padding-right:4px}.q-field__suffix{padding-left:4px}.q-field--disabled .q-placeholder,.q-field--readonly .q-placeholder{opacity:1!important}.q-field--readonly.q-field--labeled .q-field__input,.q-field--readonly.q-field--labeled .q-field__native{cursor:default}.q-field--readonly.q-field--float .q-field__input,.q-field--readonly.q-field--float .q-field__native{cursor:text}.q-field--disabled .q-field__inner{cursor:not-allowed}.q-field--disabled .q-field__control{pointer-events:none}.q-field--disabled .q-field__control>div{opacity:.6!important}.q-field--disabled .q-field__control>div,.q-field--disabled .q-field__control>div *{outline:0!important}.q-field__label{left:0;top:18px;max-width:100%;color:rgba(0,0,0,.6);font-size:16px;line-height:20px;font-weight:400;letter-spacing:.00937em;text-decoration:inherit;text-transform:inherit;transform-origin:left top;transition:transform .36s cubic-bezier(.4,0,.2,1),max-width .324s cubic-bezier(.4,0,.2,1);-webkit-backface-visibility:hidden;backface-visibility:hidden}.q-field--float .q-field__label{max-width:133%;transform:translateY(-40%) scale(.75);transition:transform .36s cubic-bezier(.4,0,.2,1),max-width .396s cubic-bezier(.4,0,.2,1)}.q-field--highlighted .q-field__label{color:currentColor}.q-field--highlighted .q-field__shadow{opacity:.5}.q-field--filled .q-field__control{padding:0 12px;background:rgba(0,0,0,.05);border-radius:4px 4px 0 0}.q-field--filled .q-field__control:before{background:rgba(0,0,0,.05);border-bottom:1px solid rgba(0,0,0,.42);opacity:0;transition:opacity .36s cubic-bezier(.4,0,.2,1),background .36s cubic-bezier(.4,0,.2,1)}.q-field--filled .q-field__control:hover:before{opacity:1}.q-field--filled .q-field__control:after{height:2px;top:auto;transform-origin:center bottom;transform:scaleX(0);background:currentColor;transition:transform .36s cubic-bezier(.4,0,.2,1)}.q-field--filled.q-field--rounded .q-field__control{border-radius:28px 28px 0 0}.q-field--filled.q-field--highlighted .q-field__control:before{opacity:1;background:rgba(0,0,0,.12)}.q-field--filled.q-field--highlighted .q-field__control:after{transform:scaleX(1)}.q-field--filled.q-field--dark .q-field__control,.q-field--filled.q-field--dark .q-field__control:before{background:hsla(0,0%,100%,.07)}.q-field--filled.q-field--dark.q-field--highlighted .q-field__control:before{background:hsla(0,0%,100%,.1)}.q-field--filled.q-field--readonly .q-field__control:before{opacity:1;background:transparent;border-bottom-style:dashed}.q-field--outlined .q-field__control{border-radius:4px;padding:0 12px}.q-field--outlined .q-field__control:before{border:1px solid rgba(0,0,0,.24);transition:border-color .36s cubic-bezier(.4,0,.2,1)}.q-field--outlined .q-field__control:hover:before{border-color:#000}.q-field--outlined .q-field__control:after{height:inherit;border-radius:inherit;border:2px solid transparent;transition:border-color .36s cubic-bezier(.4,0,.2,1)}.q-field--outlined .q-field__input:-webkit-autofill,.q-field--outlined .q-field__native:-webkit-autofill{margin-top:1px;margin-bottom:1px}.q-field--outlined.q-field--rounded .q-field__control{border-radius:28px}.q-field--outlined.q-field--highlighted .q-field__control:hover:before{border-color:transparent}.q-field--outlined.q-field--highlighted .q-field__control:after{border-color:currentColor;border-width:2px;transform:scaleX(1)}.q-field--outlined.q-field--readonly .q-field__control:before{border-style:dashed}.q-field--standard .q-field__control:before{border-bottom:1px solid rgba(0,0,0,.24);transition:border-color .36s cubic-bezier(.4,0,.2,1)}.q-field--standard .q-field__control:hover:before{border-color:#000}.q-field--standard .q-field__control:after{height:2px;top:auto;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;transform-origin:center bottom;transform:scaleX(0);background:currentColor;transition:transform .36s cubic-bezier(.4,0,.2,1)}.q-field--standard.q-field--highlighted .q-field__control:after{transform:scaleX(1)}.q-field--standard.q-field--readonly .q-field__control:before{border-bottom-style:dashed}.q-field--dark .q-field__control:before{border-color:hsla(0,0%,100%,.6)}.q-field--dark .q-field__control:hover:before{border-color:#fff}.q-field--dark .q-field__input,.q-field--dark .q-field__native,.q-field--dark .q-field__prefix,.q-field--dark .q-field__suffix{color:#fff}.q-field--dark .q-field__bottom,.q-field--dark .q-field__marginal,.q-field--dark:not(.q-field--highlighted) .q-field__label{color:hsla(0,0%,100%,.7)}.q-field--standout .q-field__control{padding:0 12px;background:rgba(0,0,0,.05);border-radius:4px;transition:box-shadow .36s cubic-bezier(.4,0,.2,1),background-color .36s cubic-bezier(.4,0,.2,1)}.q-field--standout .q-field__control:before{background:rgba(0,0,0,.07);opacity:0;transition:opacity .36s cubic-bezier(.4,0,.2,1),background .36s cubic-bezier(.4,0,.2,1)}.q-field--standout .q-field__control:hover:before{opacity:1}.q-field--standout.q-field--rounded .q-field__control{border-radius:28px}.q-field--standout.q-field--highlighted .q-field__control{box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12);background:#000}.q-field--standout.q-field--highlighted .q-field__append,.q-field--standout.q-field--highlighted .q-field__input,.q-field--standout.q-field--highlighted .q-field__native,.q-field--standout.q-field--highlighted .q-field__prefix,.q-field--standout.q-field--highlighted .q-field__prepend,.q-field--standout.q-field--highlighted .q-field__suffix{color:#fff}.q-field--standout.q-field--readonly .q-field__control:before{opacity:1;background:transparent;border:1px dashed rgba(0,0,0,.24)}.q-field--standout.q-field--dark .q-field__control,.q-field--standout.q-field--dark .q-field__control:before{background:hsla(0,0%,100%,.07)}.q-field--standout.q-field--dark.q-field--highlighted .q-field__control{background:#fff}.q-field--standout.q-field--dark.q-field--highlighted .q-field__append,.q-field--standout.q-field--dark.q-field--highlighted .q-field__input,.q-field--standout.q-field--dark.q-field--highlighted .q-field__native,.q-field--standout.q-field--dark.q-field--highlighted .q-field__prefix,.q-field--standout.q-field--dark.q-field--highlighted .q-field__prepend,.q-field--standout.q-field--dark.q-field--highlighted .q-field__suffix{color:#000}.q-field--standout.q-field--dark.q-field--readonly .q-field__control:before{border-color:hsla(0,0%,100%,.24)}.q-field--labeled .q-field__native,.q-field--labeled .q-field__prefix,.q-field--labeled .q-field__suffix{line-height:24px;padding-top:24px;padding-bottom:8px}.q-field--labeled .q-field__shadow{top:0}.q-field--labeled:not(.q-field--float) .q-field__prefix,.q-field--labeled:not(.q-field--float) .q-field__suffix{opacity:0}.q-field--labeled:not(.q-field--float) .q-field__input::placeholder,.q-field--labeled:not(.q-field--float) .q-field__native::placeholder{color:transparent}.q-field--labeled.q-field--dense .q-field__native,.q-field--labeled.q-field--dense .q-field__prefix,.q-field--labeled.q-field--dense .q-field__suffix{padding-top:14px;padding-bottom:2px}.q-field--dense .q-field__shadow{top:0}.q-field--dense .q-field__control,.q-field--dense .q-field__marginal{height:40px}.q-field--dense .q-field__bottom{font-size:11px}.q-field--dense .q-field__label{font-size:14px;top:10px}.q-field--dense .q-field__before,.q-field--dense .q-field__prepend{padding-right:6px}.q-field--dense .q-field__after,.q-field--dense .q-field__append{padding-left:6px}.q-field--dense .q-field__append+.q-field__append{padding-left:2px}.q-field--dense .q-field__marginal .q-avatar{font-size:24px}.q-field--dense.q-field--float .q-field__label{transform:translateY(-30%) scale(.75)}.q-field--dense .q-field__input:-webkit-autofill+.q-field__label,.q-field--dense .q-field__native:-webkit-autofill+.q-field__label{transform:translateY(-30%) scale(.75)}.q-field--dense .q-field__input[type=color]+.q-field__label,.q-field--dense .q-field__input[type=date]+.q-field__label,.q-field--dense .q-field__input[type=datetime-local]+.q-field__label,.q-field--dense .q-field__input[type=month]+.q-field__label,.q-field--dense .q-field__input[type=time]+.q-field__label,.q-field--dense .q-field__input[type=week]+.q-field__label,.q-field--dense .q-field__native[type=color]+.q-field__label,.q-field--dense .q-field__native[type=date]+.q-field__label,.q-field--dense .q-field__native[type=datetime-local]+.q-field__label,.q-field--dense .q-field__native[type=month]+.q-field__label,.q-field--dense .q-field__native[type=time]+.q-field__label,.q-field--dense .q-field__native[type=week]+.q-field__label{transform:translateY(-30%) scale(.75)}.q-field--borderless .q-field__bottom,.q-field--borderless.q-field--dense .q-field__control,.q-field--standard .q-field__bottom,.q-field--standard.q-field--dense .q-field__control{padding-left:0;padding-right:0}.q-field--error .q-field__label{animation:q-field-label .36s}.q-field--error .q-field__bottom{color:var(--q-negative)}.q-field__focusable-action{opacity:.6;cursor:pointer;outline:0!important;border:0;color:inherit;background:transparent;padding:0}.q-field__focusable-action:focus,.q-field__focusable-action:hover{opacity:1}.q-field--auto-height .q-field__control{height:auto}.q-field--auto-height .q-field__control,.q-field--auto-height .q-field__native{min-height:56px}.q-field--auto-height .q-field__native{align-items:center}.q-field--auto-height .q-field__control-container{padding-top:0}.q-field--auto-height .q-field__native,.q-field--auto-height .q-field__prefix,.q-field--auto-height .q-field__suffix{line-height:18px}.q-field--auto-height.q-field--labeled .q-field__control-container{padding-top:24px}.q-field--auto-height.q-field--labeled .q-field__shadow{top:24px}.q-field--auto-height.q-field--labeled .q-field__native,.q-field--auto-height.q-field--labeled .q-field__prefix,.q-field--auto-height.q-field--labeled .q-field__suffix{padding-top:0}.q-field--auto-height.q-field--labeled .q-field__native{min-height:24px}.q-field--auto-height.q-field--dense .q-field__control,.q-field--auto-height.q-field--dense .q-field__native{min-height:40px}.q-field--auto-height.q-field--dense.q-field--labeled .q-field__control-container{padding-top:14px}.q-field--auto-height.q-field--dense.q-field--labeled .q-field__shadow{top:14px}.q-field--auto-height.q-field--dense.q-field--labeled .q-field__native{min-height:24px}.q-field--square .q-field__control{border-radius:0!important}.q-transition--field-message-enter-active,.q-transition--field-message-leave-active{transition:transform .6s cubic-bezier(.86,0,.07,1),opacity .6s cubic-bezier(.86,0,.07,1)}.q-transition--field-message-enter-from,.q-transition--field-message-leave-to{opacity:0;transform:translateY(-10px)}.q-transition--field-message-leave-active,.q-transition--field-message-leave-from{position:absolute}@keyframes q-field-label{40%{margin-left:2px}60%,80%{margin-left:-2px}70%,90%{margin-left:2px}}@keyframes q-autofill{to{background:transparent;color:inherit}}.q-file .q-field__native{word-break:break-all;overflow:hidden}.q-file .q-field__input{opacity:0!important}.q-file .q-field__input::-webkit-file-upload-button{cursor:pointer}.q-file__filler{visibility:hidden;width:100%;border:none;padding:0}.q-file__dnd{outline:1px dashed currentColor;outline-offset:-4px}.q-form,.q-img{position:relative}.q-img{width:100%;display:inline-block;vertical-align:middle;overflow:hidden}.q-img__loading .q-spinner{font-size:50px}.q-img__container{border-radius:inherit;font-size:0}.q-img__image{border-radius:inherit;width:100%;height:100%;opacity:0}.q-img__image--with-transition{transition:opacity .28s ease-in}.q-img__image--loaded{opacity:1}.q-img__content{border-radius:inherit;pointer-events:none}.q-img__content>div{pointer-events:all;position:absolute;padding:16px;color:#fff;background:rgba(0,0,0,.47)}.q-img--no-menu .q-img__image,.q-img--no-menu .q-img__placeholder{pointer-events:none}.q-inner-loading{background:hsla(0,0%,100%,.6)}.q-inner-loading--dark{background:rgba(0,0,0,.4)}.q-inner-loading__label{margin-top:8px}.q-textarea .q-field__control{min-height:56px;height:auto}.q-textarea .q-field__control-container{padding-top:2px;padding-bottom:2px}.q-textarea .q-field__shadow{top:2px;bottom:2px}.q-textarea .q-field__native,.q-textarea .q-field__prefix,.q-textarea .q-field__suffix{line-height:18px}.q-textarea .q-field__native{resize:vertical;padding-top:17px;min-height:52px}.q-textarea.q-field--labeled .q-field__control-container{padding-top:26px}.q-textarea.q-field--labeled .q-field__shadow{top:26px}.q-textarea.q-field--labeled .q-field__native,.q-textarea.q-field--labeled .q-field__prefix,.q-textarea.q-field--labeled .q-field__suffix{padding-top:0}.q-textarea.q-field--labeled .q-field__native{min-height:26px;padding-top:1px}.q-textarea--autogrow .q-field__native{resize:none}.q-textarea.q-field--dense .q-field__control,.q-textarea.q-field--dense .q-field__native{min-height:36px}.q-textarea.q-field--dense .q-field__native{padding-top:9px}.q-textarea.q-field--dense.q-field--labeled .q-field__control-container{padding-top:14px}.q-textarea.q-field--dense.q-field--labeled .q-field__shadow{top:14px}.q-textarea.q-field--dense.q-field--labeled .q-field__native{min-height:24px;padding-top:3px}.q-textarea.q-field--dense.q-field--labeled .q-field__prefix,.q-textarea.q-field--dense.q-field--labeled .q-field__suffix{padding-top:2px}.q-textarea.disabled .q-field__native,body.mobile .q-textarea .q-field__native{resize:none}.q-intersection{position:relative}.q-item{min-height:48px;padding:8px 16px;color:inherit;transition:color .3s,background-color .3s}.q-item__section--side{color:#757575;align-items:flex-start;padding-right:16px;width:auto;min-width:0;max-width:100%}.q-item__section--side>.q-icon{font-size:24px}.q-item__section--side>.q-avatar{font-size:40px}.q-item__section--avatar{color:inherit;min-width:56px}.q-item__section--thumbnail img{width:100px;height:56px}.q-item__section--nowrap{white-space:nowrap}.q-item>.q-focus-helper+.q-item__section--thumbnail,.q-item>.q-item__section--thumbnail:first-child{margin-left:-16px}.q-item>.q-item__section--thumbnail:last-of-type{margin-right:-16px}.q-item__label{line-height:1.2em!important;max-width:100%}.q-item__label--overline{color:rgba(0,0,0,.7)}.q-item__label--caption{color:rgba(0,0,0,.54)}.q-item__label--header{color:#757575;padding:16px;font-size:.875rem;line-height:1.25rem;letter-spacing:.01786em}.q-list--padding .q-item__label--header,.q-separator--spaced+.q-item__label--header{padding-top:8px}.q-item__label+.q-item__label{margin-top:4px}.q-item__section--main{width:auto;min-width:0;max-width:100%;flex:10000 1 0%}.q-item__section--main+.q-item__section--main{margin-left:8px}.q-item__section--main~.q-item__section--side{align-items:flex-end;padding-right:0;padding-left:16px}.q-item__section--main.q-item__section--thumbnail{margin-left:0;margin-right:-16px}.q-list--bordered{border:1px solid rgba(0,0,0,.12)}.q-list--separator>.q-item-type+.q-item-type,.q-list--separator>.q-virtual-scroll__content>.q-item-type+.q-item-type{border-top:1px solid rgba(0,0,0,.12)}.q-list--padding{padding:8px 0}.q-item--dense,.q-list--dense>.q-item{min-height:32px;padding:2px 16px}.q-list--dark.q-list--separator>.q-item-type+.q-item-type,.q-list--dark.q-list--separator>.q-virtual-scroll__content>.q-item-type+.q-item-type{border-top-color:hsla(0,0%,100%,.28)}.q-item--dark,.q-list--dark{color:#fff;border-color:hsla(0,0%,100%,.28)}.q-item--dark .q-item__section--side:not(.q-item__section--avatar),.q-list--dark .q-item__section--side:not(.q-item__section--avatar){color:hsla(0,0%,100%,.7)}.q-item--dark .q-item__label--header,.q-list--dark .q-item__label--header{color:hsla(0,0%,100%,.64)}.q-item--dark .q-item__label--caption,.q-item--dark .q-item__label--overline,.q-list--dark .q-item__label--caption,.q-list--dark .q-item__label--overline{color:hsla(0,0%,100%,.8)}.q-item{position:relative}.q-item--active,.q-item.q-router-link--active{color:var(--q-primary)}.q-knob{font-size:48px}.q-knob--editable{cursor:pointer;outline:0}.q-knob--editable:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;box-shadow:none;transition:box-shadow .24s ease-in-out}.q-knob--editable:focus:before{box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}body.body--dark .q-knob--editable:focus:before{box-shadow:0 1px 5px hsla(0,0%,100%,.2),0 2px 2px hsla(0,0%,100%,.14),0 3px 1px -2px hsla(0,0%,100%,.12)}.q-layout{width:100%;outline:0}.q-layout-container{position:relative;width:100%;height:100%}.q-layout-container .q-layout{min-height:100%}.q-layout-container>div{transform:translateZ(0)}.q-layout-container>div>div{min-height:0;max-height:100%}.q-layout__shadow{width:100%}.q-layout__shadow:after{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:0 0 10px 2px rgba(0,0,0,.2),0 0 10px rgba(0,0,0,.24)}.q-layout__section--marginal{background-color:var(--q-primary);color:#fff}.q-header--hidden{transform:translateY(-110%)}.q-header--bordered{border-bottom:1px solid rgba(0,0,0,.12)}.q-header .q-layout__shadow{bottom:-10px}.q-header .q-layout__shadow:after{bottom:10px}.q-footer--hidden{transform:translateY(110%)}.q-footer--bordered{border-top:1px solid rgba(0,0,0,.12)}.q-footer .q-layout__shadow{top:-10px}.q-footer .q-layout__shadow:after{top:10px}.q-footer,.q-header{z-index:2000}.q-drawer{position:absolute;top:0;bottom:0;background:#fff;z-index:1000}.q-drawer--on-top{z-index:3000}.q-drawer--left{left:0;transform:translateX(-100%)}.q-drawer--left.q-drawer--bordered{border-right:1px solid rgba(0,0,0,.12)}.q-drawer--left .q-layout__shadow{left:10px;right:-10px}.q-drawer--left .q-layout__shadow:after{right:10px}.q-drawer--right{right:0;transform:translateX(100%)}.q-drawer--right.q-drawer--bordered{border-left:1px solid rgba(0,0,0,.12)}.q-drawer--right .q-layout__shadow{left:-10px}.q-drawer--right .q-layout__shadow:after{left:10px}.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini{padding:0!important}.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__section{text-align:center;justify-content:center;padding-left:0;padding-right:0;min-width:0}.q-drawer--mini .q-expansion-item__content,.q-drawer--mini .q-mini-drawer-hide,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__label,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__section--main,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__section--side~.q-item__section--side{display:none}.q-drawer--mini-animate .q-drawer__content{overflow-x:hidden!important;white-space:nowrap}.q-drawer--mobile .q-mini-drawer-hide,.q-drawer--mobile .q-mini-drawer-only,.q-drawer--standard .q-mini-drawer-only{display:none}.q-drawer__backdrop{z-index:2999!important;will-change:background-color}.q-drawer__opener{z-index:2001;height:100%;width:15px;-webkit-user-select:none;user-select:none}.q-footer,.q-header,.q-layout,.q-page{position:relative}.q-page-sticky--shrink{pointer-events:none}.q-page-sticky--shrink>div{display:inline-block;pointer-events:auto}body.q-ios-padding .q-layout--standard .q-drawer--top-padding .q-drawer__content,body.q-ios-padding .q-layout--standard .q-header>.q-tabs:first-child .q-tabs-head,body.q-ios-padding .q-layout--standard .q-header>.q-toolbar:first-child{padding-top:20px;min-height:70px;padding-top:env(safe-area-inset-top);min-height:calc(env(safe-area-inset-top) + 50px)}body.q-ios-padding .q-layout--standard .q-drawer--top-padding .q-drawer__content,body.q-ios-padding .q-layout--standard .q-footer>.q-tabs:last-child .q-tabs-head,body.q-ios-padding .q-layout--standard .q-footer>.q-toolbar:last-child{padding-bottom:env(safe-area-inset-bottom);min-height:calc(env(safe-area-inset-bottom) + 50px)}.q-body--layout-animate .q-drawer__backdrop{transition:background-color .12s!important}.q-body--layout-animate .q-drawer{transition:transform .12s,width .12s,top .12s,bottom .12s!important}.q-body--layout-animate .q-layout__section--marginal{transition:transform .12s,left .12s,right .12s!important}.q-body--layout-animate .q-page-container{transition:padding-top .12s,padding-right .12s,padding-bottom .12s,padding-left .12s!important}.q-body--layout-animate .q-page-sticky{transition:transform .12s,left .12s,right .12s,top .12s,bottom .12s!important}body:not(.q-body--layout-animate) .q-layout--prevent-focus{visibility:hidden}.q-body--drawer-toggle{overflow-x:hidden!important}@media (max-width:599.98px){.q-layout-padding{padding:8px}}@media (min-width:600px) and (max-width:1439.98px){.q-layout-padding{padding:16px}}@media (min-width:1440px){.q-layout-padding{padding:24px}}body.body--dark .q-drawer,body.body--dark .q-footer,body.body--dark .q-header{border-color:hsla(0,0%,100%,.28)}body.body--dark .q-layout__shadow:after{box-shadow:0 0 10px 2px hsla(0,0%,100%,.2),0 0 10px hsla(0,0%,100%,.24)}body.platform-ios .q-layout--containerized{position:unset!important}.q-linear-progress{--q-linear-progress-speed:.3s;position:relative;width:100%;overflow:hidden;font-size:4px;height:1em;color:var(--q-primary);transform:scaleX(1)}.q-linear-progress__model,.q-linear-progress__track{transform-origin:0 0}.q-linear-progress__model--with-transition,.q-linear-progress__track--with-transition{transition:transform var(--q-linear-progress-speed)}.q-linear-progress--reverse .q-linear-progress__model,.q-linear-progress--reverse .q-linear-progress__track{transform-origin:0 100%}.q-linear-progress__model--determinate{background:currentColor}.q-linear-progress__model--indeterminate,.q-linear-progress__model--query{transition:none}.q-linear-progress__model--indeterminate:after,.q-linear-progress__model--indeterminate:before,.q-linear-progress__model--query:after,.q-linear-progress__model--query:before{background:currentColor;content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:0 0}.q-linear-progress__model--indeterminate:before,.q-linear-progress__model--query:before{animation:q-linear-progress--indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.q-linear-progress__model--indeterminate:after,.q-linear-progress__model--query:after{transform:translate3d(-101%,0,0) scaleX(1);animation:q-linear-progress--indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}.q-linear-progress__track{opacity:.4}.q-linear-progress__track--light{background:rgba(0,0,0,.26)}.q-linear-progress__track--dark{background:hsla(0,0%,100%,.6)}.q-linear-progress__stripe{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,0) 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,0))!important;background-size:40px 40px!important}.q-linear-progress__stripe--with-transition{transition:width var(--q-linear-progress-speed)}@keyframes q-linear-progress--indeterminate{0%{transform:translate3d(-35%,0,0) scaleX(.35)}60%{transform:translate3d(100%,0,0) scaleX(.9)}to{transform:translate3d(100%,0,0) scaleX(.9)}}@keyframes q-linear-progress--indeterminate-short{0%{transform:translate3d(-101%,0,0) scaleX(1)}60%{transform:translate3d(107%,0,0) scaleX(.01)}to{transform:translate3d(107%,0,0) scaleX(.01)}}.q-menu{position:fixed!important;display:inline-block;max-width:95vw;box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12);background:#fff;border-radius:4px;overflow-y:auto;overflow-x:hidden;outline:0;max-height:65vh;z-index:6000}.q-menu--square{border-radius:0}.q-menu--dark{box-shadow:0 1px 5px hsla(0,0%,100%,.2),0 2px 2px hsla(0,0%,100%,.14),0 3px 1px -2px hsla(0,0%,100%,.12)}.q-option-group--inline>div{display:inline-block}.q-pagination input{text-align:center;-moz-appearance:textfield}.q-pagination input::-webkit-inner-spin-button,.q-pagination input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.q-pagination__content{--q-pagination-gutter-parent:-2px;--q-pagination-gutter-child:2px;margin-top:var(--q-pagination-gutter-parent);margin-left:var(--q-pagination-gutter-parent)}.q-pagination__content>.q-btn,.q-pagination__content>.q-input,.q-pagination__middle>.q-btn{margin-top:var(--q-pagination-gutter-child);margin-left:var(--q-pagination-gutter-child)}.q-parallax{position:relative;width:100%;overflow:hidden;border-radius:inherit}.q-parallax__media>img,.q-parallax__media>video{position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;will-change:transform;display:none}.q-popup-edit{padding:8px 16px}.q-popup-edit__buttons{margin-top:8px}.q-popup-edit__buttons .q-btn+.q-btn{margin-left:8px}.q-pull-to-refresh{position:relative}.q-pull-to-refresh__puller{border-radius:50%;width:40px;height:40px;color:var(--q-primary);background:#fff;box-shadow:0 0 4px 0 rgba(0,0,0,.3)}.q-pull-to-refresh__puller--animating{transition:transform .3s,opacity .3s}.q-radio{vertical-align:middle}.q-radio__native{width:1px;height:1px}.q-radio__bg,.q-radio__icon-container{-webkit-user-select:none;user-select:none}.q-radio__bg{top:25%;left:25%;width:50%;height:50%;-webkit-print-color-adjust:exact}.q-radio__bg path{fill:currentColor}.q-radio__icon{color:currentColor;font-size:.5em}.q-radio__check{transform-origin:50% 50%;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1) 0ms}.q-radio__inner{font-size:40px;width:1em;min-width:1em;height:1em;outline:0;border-radius:50%;color:rgba(0,0,0,.54)}.q-radio__inner--truthy{color:var(--q-primary)}.q-radio__inner--truthy .q-radio__check{transform:scaleX(1)}.q-radio.disabled{opacity:.75!important}.q-radio--dark .q-radio__inner{color:hsla(0,0%,100%,.7)}.q-radio--dark .q-radio__inner:before{opacity:.32!important}.q-radio--dark .q-radio__inner--truthy{color:var(--q-primary)}.q-radio--dense .q-radio__inner{width:.5em;min-width:.5em;height:.5em}.q-radio--dense .q-radio__bg{left:0;top:0;width:100%;height:100%}.q-radio--dense .q-radio__label{padding-left:.5em}.q-radio--dense.reverse .q-radio__label{padding-left:0;padding-right:.5em}body.desktop .q-radio:not(.disabled) .q-radio__inner:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:currentColor;opacity:.12;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1) 0ms}body.desktop .q-radio:not(.disabled):focus .q-radio__inner:before,body.desktop .q-radio:not(.disabled):hover .q-radio__inner:before{transform:scaleX(1)}body.desktop .q-radio--dense:not(.disabled):focus .q-radio__inner:before,body.desktop .q-radio--dense:not(.disabled):hover .q-radio__inner:before{transform:scale3d(1.5,1.5,1)}.q-rating{color:#ffeb3b;vertical-align:middle}.q-rating__icon-container{height:1em;outline:0}.q-rating__icon-container+.q-rating__icon-container{margin-left:2px}.q-rating__icon{color:currentColor;text-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);position:relative;opacity:.4;transition:transform .2s ease-in,opacity .2s ease-in}.q-rating__icon--hovered{transform:scale(1.3)}.q-rating__icon--active{opacity:1}.q-rating__icon--exselected{opacity:.7}.q-rating--no-dimming .q-rating__icon{opacity:1}.q-rating--editable .q-rating__icon-container{cursor:pointer}.q-responsive{position:relative;max-width:100%;max-height:100%}.q-responsive__filler{width:inherit;max-width:inherit;height:inherit;max-height:inherit}.q-responsive__content{border-radius:inherit}.q-responsive__content>*{width:100%!important;height:100%!important;max-height:100%!important;max-width:100%!important}.q-scrollarea{position:relative;contain:strict}.q-scrollarea__bar,.q-scrollarea__thumb{opacity:.2;transition:opacity .3s;will-change:opacity;cursor:grab}.q-scrollarea__bar--v,.q-scrollarea__thumb--v{right:0;width:10px}.q-scrollarea__bar--h,.q-scrollarea__thumb--h{bottom:0;height:10px}.q-scrollarea__bar--invisible,.q-scrollarea__thumb--invisible{opacity:0!important;pointer-events:none}.q-scrollarea__thumb{background:#000;border-radius:3px}.q-scrollarea__thumb:hover{opacity:.3}.q-scrollarea__thumb:active{opacity:.5}.q-scrollarea__content{min-height:100%;min-width:100%}.q-scrollarea--dark .q-scrollarea__thumb{background:#fff}.q-select--without-input .q-field__control{cursor:pointer}.q-select--with-input .q-field__control{cursor:text}.q-select .q-field__input{min-width:50px!important;cursor:text}.q-select .q-field__input--padding{padding-left:4px}.q-select__autocomplete-input,.q-select__focus-target{position:absolute;outline:0!important;width:1px;height:1px;padding:0;border:0;opacity:0}.q-select__dropdown-icon{cursor:pointer;transition:transform .28s}.q-select.q-field--readonly .q-field__control,.q-select.q-field--readonly .q-select__dropdown-icon{cursor:default}.q-select__dialog{width:90vw!important;max-width:90vw!important;max-height:calc(100vh - 70px)!important;background:#fff;display:flex;flex-direction:column}.q-select__dialog>.scroll{position:relative;background:inherit}body.mobile:not(.native-mobile) .q-select__dialog{max-height:calc(100vh - 108px)!important}body.platform-android.native-mobile .q-dialog__inner--top .q-select__dialog{max-height:calc(100vh - 24px)!important}body.platform-android:not(.native-mobile) .q-dialog__inner--top .q-select__dialog{max-height:calc(100vh - 80px)!important}body.platform-ios.native-mobile .q-dialog__inner--top>div{border-radius:4px}body.platform-ios.native-mobile .q-dialog__inner--top .q-select__dialog--focused{max-height:47vh!important}body.platform-ios:not(.native-mobile) .q-dialog__inner--top .q-select__dialog--focused{max-height:50vh!important}.q-separator{border:0;background:rgba(0,0,0,.12);margin:0;transition:background .3s,opacity .3s;flex-shrink:0}.q-separator--dark{background:hsla(0,0%,100%,.28)}.q-separator--horizontal{display:block;height:1px}.q-separator--horizontal-inset{margin-left:16px;margin-right:16px}.q-separator--horizontal-item-inset{margin-left:72px;margin-right:0}.q-separator--horizontal-item-thumbnail-inset{margin-left:116px;margin-right:0}.q-separator--vertical{width:1px;height:auto;align-self:stretch}.q-separator--vertical-inset{margin-top:8px;margin-bottom:8px}.q-skeleton{--q-skeleton-speed:1500ms;background:rgba(0,0,0,.12);border-radius:4px;box-sizing:border-box}.q-skeleton--anim{cursor:wait}.q-skeleton:before{content:\" \"}.q-skeleton--type-text{transform:scaleY(.5)}.q-skeleton--type-QAvatar,.q-skeleton--type-circle{height:48px;width:48px;border-radius:50%}.q-skeleton--type-QBtn{width:90px;height:36px}.q-skeleton--type-QBadge{width:70px;height:16px}.q-skeleton--type-QChip{width:90px;height:28px;border-radius:16px}.q-skeleton--type-QToolbar{height:50px}.q-skeleton--type-QCheckbox,.q-skeleton--type-QRadio{width:40px;height:40px;border-radius:50%}.q-skeleton--type-QToggle{width:56px;height:40px;border-radius:7px}.q-skeleton--type-QRange,.q-skeleton--type-QSlider{height:40px}.q-skeleton--type-QInput{height:56px}.q-skeleton--bordered{border:1px solid rgba(0,0,0,.05)}.q-skeleton--square{border-radius:0}.q-skeleton--anim-fade{animation:q-skeleton--fade var(--q-skeleton-speed) linear .5s infinite}.q-skeleton--anim-pulse{animation:q-skeleton--pulse var(--q-skeleton-speed) ease-in-out .5s infinite}.q-skeleton--anim-pulse-x{animation:q-skeleton--pulse-x var(--q-skeleton-speed) ease-in-out .5s infinite}.q-skeleton--anim-pulse-y{animation:q-skeleton--pulse-y var(--q-skeleton-speed) ease-in-out .5s infinite}.q-skeleton--anim-blink,.q-skeleton--anim-pop,.q-skeleton--anim-wave{position:relative;overflow:hidden;z-index:1}.q-skeleton--anim-blink:after,.q-skeleton--anim-pop:after,.q-skeleton--anim-wave:after{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.q-skeleton--anim-blink:after{background:hsla(0,0%,100%,.7);animation:q-skeleton--fade var(--q-skeleton-speed) linear .5s infinite}.q-skeleton--anim-wave:after{background:linear-gradient(90deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.5),hsla(0,0%,100%,0));animation:q-skeleton--wave var(--q-skeleton-speed) linear .5s infinite}.q-skeleton--dark{background:hsla(0,0%,100%,.05)}.q-skeleton--dark.q-skeleton--bordered{border:1px solid hsla(0,0%,100%,.25)}.q-skeleton--dark.q-skeleton--anim-wave:after{background:linear-gradient(90deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.1),hsla(0,0%,100%,0))}.q-skeleton--dark.q-skeleton--anim-blink:after{background:hsla(0,0%,100%,.2)}@keyframes q-skeleton--fade{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes q-skeleton--pulse{0%{transform:scale(1)}50%{transform:scale(.85)}to{transform:scale(1)}}@keyframes q-skeleton--pulse-x{0%{transform:scaleX(1)}50%{transform:scaleX(.75)}to{transform:scaleX(1)}}@keyframes q-skeleton--pulse-y{0%{transform:scaleY(1)}50%{transform:scaleY(.75)}to{transform:scaleY(1)}}@keyframes q-skeleton--wave{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.q-slide-item{position:relative;background:#fff}.q-slide-item__bottom,.q-slide-item__left,.q-slide-item__right,.q-slide-item__top{visibility:hidden;font-size:14px;color:#fff}.q-slide-item__bottom .q-icon,.q-slide-item__left .q-icon,.q-slide-item__right .q-icon,.q-slide-item__top .q-icon{font-size:1.714em}.q-slide-item__left{background:#4caf50;padding:8px 16px}.q-slide-item__left>div{transform-origin:left center}.q-slide-item__right{background:#ff9800;padding:8px 16px}.q-slide-item__right>div{transform-origin:right center}.q-slide-item__top{background:#2196f3;padding:16px 8px}.q-slide-item__top>div{transform-origin:top center}.q-slide-item__bottom{background:#9c27b0;padding:16px 8px}.q-slide-item__bottom>div{transform-origin:bottom center}.q-slide-item__content{background:inherit;transition:transform .2s ease-in;-webkit-user-select:none;user-select:none;cursor:pointer}.q-slider{position:relative}.q-slider--h{width:100%}.q-slider--v{height:200px}.q-slider--editable .q-slider__track-container{cursor:grab}.q-slider__track-container{outline:0}.q-slider__track-container--h{width:100%;padding:12px 0}.q-slider__track-container--h .q-slider__selection{will-change:width,left}.q-slider__track-container--v{height:100%;padding:0 12px}.q-slider__track-container--v .q-slider__selection{will-change:height,top}.q-slider__track{color:var(--q-primary);background:rgba(0,0,0,.1);border-radius:4px;width:inherit;height:inherit}.q-slider__inner{background:rgba(0,0,0,.1)}.q-slider__inner,.q-slider__selection{border-radius:inherit;width:100%;height:100%}.q-slider__selection{background:currentColor}.q-slider__markers{color:rgba(0,0,0,.3);border-radius:inherit;width:100%;height:100%}.q-slider__markers:after{content:\"\";position:absolute;background:currentColor}.q-slider__markers--h{background-image:repeating-linear-gradient(90deg,currentColor,currentColor 2px,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,0))}.q-slider__markers--h:after{height:100%;width:2px;top:0;right:0}.q-slider__markers--v{background-image:repeating-linear-gradient(180deg,currentColor,currentColor 2px,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,0))}.q-slider__markers--v:after{width:100%;height:2px;left:0;bottom:0}.q-slider__marker-labels-container{position:relative;width:100%;height:100%;min-height:24px;min-width:24px}.q-slider__marker-labels{position:absolute}.q-slider__marker-labels--h-standard{top:0}.q-slider__marker-labels--h-switched{bottom:0}.q-slider__marker-labels--h-ltr{transform:translateX(-50%)}.q-slider__marker-labels--h-rtl{transform:translateX(50%)}.q-slider__marker-labels--v-standard{left:4px}.q-slider__marker-labels--v-switched{right:4px}.q-slider__marker-labels--v-ltr{transform:translateY(-50%)}.q-slider__marker-labels--v-rtl{transform:translateY(50%)}.q-slider__thumb{z-index:1;outline:0;color:var(--q-primary);transition:transform .18s ease-out,fill .18s ease-out,stroke .18s ease-out}.q-slider__thumb.q-slider--focus{opacity:1!important}.q-slider__thumb--h{top:50%;will-change:left}.q-slider__thumb--h-ltr{transform:scale(1) translate(-50%,-50%)}.q-slider__thumb--h-rtl{transform:scale(1) translate(50%,-50%)}.q-slider__thumb--v{left:50%;will-change:top}.q-slider__thumb--v-ltr{transform:scale(1) translate(-50%,-50%)}.q-slider__thumb--v-rtl{transform:scale(1) translate(-50%,50%)}.q-slider__thumb-shape{top:0;left:0;stroke-width:3.5;stroke:currentColor;transition:transform .28s}.q-slider__thumb-shape path{stroke:currentColor;fill:currentColor}.q-slider__focus-ring{border-radius:50%;opacity:0;transition:transform .26667s ease-out,opacity .26667s ease-out,background-color .26667s ease-out;transition-delay:.14s}.q-slider__pin{opacity:0;white-space:nowrap;transition:opacity .28s ease-out;transition-delay:.14s}.q-slider__pin:before{content:\"\";width:0;height:0;position:absolute}.q-slider__pin--h:before{border-left:6px solid transparent;border-right:6px solid transparent;left:50%;transform:translateX(-50%)}.q-slider__pin--h-standard{bottom:100%}.q-slider__pin--h-standard:before{bottom:2px;border-top:6px solid currentColor}.q-slider__pin--h-switched{top:100%}.q-slider__pin--h-switched:before{top:2px;border-bottom:6px solid currentColor}.q-slider__pin--v{top:0}.q-slider__pin--v:before{top:50%;transform:translateY(-50%);border-top:6px solid transparent;border-bottom:6px solid transparent}.q-slider__pin--v-standard{left:100%}.q-slider__pin--v-standard:before{left:2px;border-right:6px solid currentColor}.q-slider__pin--v-switched{right:100%}.q-slider__pin--v-switched:before{right:2px;border-left:6px solid currentColor}.q-slider__label{z-index:1;white-space:nowrap;position:absolute}.q-slider__label--h{left:50%;transform:translateX(-50%)}.q-slider__label--h-standard{bottom:7px}.q-slider__label--h-switched{top:7px}.q-slider__label--v{top:50%;transform:translateY(-50%)}.q-slider__label--v-standard{left:7px}.q-slider__label--v-switched{right:7px}.q-slider__text-container{min-height:25px;padding:2px 8px;border-radius:4px;background:currentColor;position:relative;text-align:center}.q-slider__text{color:#fff;font-size:12px}.q-slider--no-value .q-slider__inner,.q-slider--no-value .q-slider__selection,.q-slider--no-value .q-slider__thumb{opacity:0}.q-slider--focus .q-slider__focus-ring,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__focus-ring{background:currentColor;transform:scale3d(1.55,1.55,1);opacity:.25}.q-slider--focus .q-slider__inner,.q-slider--focus .q-slider__selection,.q-slider--focus .q-slider__thumb,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__inner,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__selection,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__thumb{opacity:1}.q-slider--inactive .q-slider__thumb--h{transition:left .28s,right .28s}.q-slider--inactive .q-slider__thumb--v{transition:top .28s,bottom .28s}.q-slider--inactive .q-slider__selection{transition:width .28s,left .28s,right .28s,height .28s,top .28s,bottom .28s}.q-slider--inactive .q-slider__text-container{transition:transform .28s}.q-slider--active{cursor:grabbing}.q-slider--active .q-slider__thumb-shape{transform:scale(1.5)}.q-slider--active .q-slider__focus-ring,.q-slider--active.q-slider--label .q-slider__thumb-shape{transform:scale(0)!important}.q-slider--label .q-slider--focus .q-slider__pin,.q-slider--label.q-slider--active .q-slider__pin,.q-slider--label.q-slider--label-always .q-slider__pin,body.desktop .q-slider.q-slider--enabled .q-slider__track-container:hover .q-slider__pin{opacity:1}.q-slider--dark .q-slider__inner,.q-slider--dark .q-slider__track{background:hsla(0,0%,100%,.1)}.q-slider--dark .q-slider__markers{color:hsla(0,0%,100%,.3)}.q-slider--dense .q-slider__track-container--h{padding:6px 0}.q-slider--dense .q-slider__track-container--v{padding:0 6px}.q-space{flex-grow:1!important}.q-spinner{vertical-align:middle}.q-spinner-mat{animation:q-spin 2s linear infinite;transform-origin:center center}.q-spinner-mat .path{stroke-dasharray:1,200;stroke-dashoffset:0;animation:q-mat-dash 1.5s ease-in-out infinite}@keyframes q-spin{0%{transform:rotate(0deg)}25%{transform:rotate(90deg)}50%{transform:rotate(180deg)}75%{transform:rotate(270deg)}to{transform:rotate(359deg)}}@keyframes q-mat-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.q-splitter__panel{position:relative;z-index:0}.q-splitter__panel>.q-splitter{width:100%;height:100%}.q-splitter__separator{background-color:rgba(0,0,0,.12);-webkit-user-select:none;user-select:none;position:relative;z-index:1}.q-splitter__separator-area>*{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.q-splitter--dark .q-splitter__separator{background-color:hsla(0,0%,100%,.28)}.q-splitter--vertical>.q-splitter__panel{height:100%}.q-splitter--vertical.q-splitter--active{cursor:col-resize}.q-splitter--vertical>.q-splitter__separator{width:1px}.q-splitter--vertical>.q-splitter__separator>div{left:-6px;right:-6px}.q-splitter--vertical.q-splitter--workable>.q-splitter__separator{cursor:col-resize}.q-splitter--horizontal>.q-splitter__panel{width:100%}.q-splitter--horizontal.q-splitter--active{cursor:row-resize}.q-splitter--horizontal>.q-splitter__separator{height:1px}.q-splitter--horizontal>.q-splitter__separator>div{top:-6px;bottom:-6px}.q-splitter--horizontal.q-splitter--workable>.q-splitter__separator{cursor:row-resize}.q-splitter__after,.q-splitter__before{overflow:auto}.q-stepper{box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12);border-radius:4px;background:#fff}.q-stepper__title{font-size:14px;line-height:18px;letter-spacing:.1px}.q-stepper__caption{font-size:12px;line-height:14px}.q-stepper__dot{contain:layout;margin-right:8px;font-size:14px;width:24px;min-width:24px;height:24px;border-radius:50%;background:currentColor}.q-stepper__dot span{color:#fff}.q-stepper__tab{padding:8px 24px;font-size:14px;color:#9e9e9e;flex-direction:row}.q-stepper--dark{box-shadow:0 1px 5px hsla(0,0%,100%,.2),0 2px 2px hsla(0,0%,100%,.14),0 3px 1px -2px hsla(0,0%,100%,.12)}.q-stepper--dark .q-stepper__dot span{color:#000}.q-stepper__tab--navigation{-webkit-user-select:none;user-select:none;cursor:pointer}.q-stepper__tab--active,.q-stepper__tab--done{color:var(--q-primary)}.q-stepper__tab--active .q-stepper__dot,.q-stepper__tab--active .q-stepper__label,.q-stepper__tab--done .q-stepper__dot,.q-stepper__tab--done .q-stepper__label{text-shadow:0 0 0 currentColor}.q-stepper__tab--disabled .q-stepper__dot{background:rgba(0,0,0,.22)}.q-stepper__tab--disabled .q-stepper__label{color:rgba(0,0,0,.32)}.q-stepper__tab--error{color:var(--q-negative)}.q-stepper__tab--error-with-icon .q-stepper__dot{background:transparent!important}.q-stepper__tab--error-with-icon .q-stepper__dot span{color:currentColor;font-size:24px}.q-stepper__header{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-stepper__header--border{border-bottom:1px solid rgba(0,0,0,.12)}.q-stepper__header--standard-labels .q-stepper__tab{min-height:72px;justify-content:center}.q-stepper__header--standard-labels .q-stepper__tab:first-child{justify-content:flex-start}.q-stepper__header--standard-labels .q-stepper__tab:last-child{justify-content:flex-end}.q-stepper__header--standard-labels .q-stepper__tab:only-child{justify-content:center}.q-stepper__header--standard-labels .q-stepper__dot:after{display:none}.q-stepper__header--alternative-labels .q-stepper__tab{min-height:104px;padding:24px 32px;flex-direction:column;justify-content:flex-start}.q-stepper__header--alternative-labels .q-stepper__dot{margin-right:0}.q-stepper__header--alternative-labels .q-stepper__label{margin-top:8px;text-align:center}.q-stepper__header--alternative-labels .q-stepper__label:after,.q-stepper__header--alternative-labels .q-stepper__label:before{display:none}.q-stepper__header--contracted,.q-stepper__header--contracted.q-stepper__header--alternative-labels .q-stepper__tab{min-height:72px}.q-stepper__header--contracted.q-stepper__header--alternative-labels .q-stepper__tab:first-child{align-items:flex-start}.q-stepper__header--contracted.q-stepper__header--alternative-labels .q-stepper__tab:last-child{align-items:flex-end}.q-stepper__header--contracted .q-stepper__tab{padding:24px 0}.q-stepper__header--contracted .q-stepper__tab:first-child .q-stepper__dot{transform:translateX(24px)}.q-stepper__header--contracted .q-stepper__tab:last-child .q-stepper__dot{transform:translateX(-24px)}.q-stepper__header--contracted .q-stepper__tab:not(:last-child) .q-stepper__dot:after{display:block!important}.q-stepper__header--contracted .q-stepper__dot{margin:0}.q-stepper__header--contracted .q-stepper__label{display:none}.q-stepper__nav{padding-top:24px}.q-stepper--flat{box-shadow:none}.q-stepper--bordered{border:1px solid rgba(0,0,0,.12)}.q-stepper--horizontal .q-stepper__step-inner{padding:24px}.q-stepper--horizontal .q-stepper__tab:first-child{border-top-left-radius:inherit}.q-stepper--horizontal .q-stepper__tab:last-child{border-top-right-radius:inherit}.q-stepper--horizontal .q-stepper__tab:first-child .q-stepper__dot:before,.q-stepper--horizontal .q-stepper__tab:last-child .q-stepper__dot:after,.q-stepper--horizontal .q-stepper__tab:last-child .q-stepper__label:after{display:none}.q-stepper--horizontal .q-stepper__tab{overflow:hidden}.q-stepper--horizontal .q-stepper__line{contain:layout}.q-stepper--horizontal .q-stepper__line:after,.q-stepper--horizontal .q-stepper__line:before{position:absolute;top:50%;height:1px;width:100vw;background:rgba(0,0,0,.12)}.q-stepper--horizontal .q-stepper__dot:after,.q-stepper--horizontal .q-stepper__label:after{content:\"\";left:100%;margin-left:8px}.q-stepper--horizontal .q-stepper__dot:before{content:\"\";right:100%;margin-right:8px}.q-stepper--horizontal>.q-stepper__nav{padding:0 24px 24px}.q-stepper--vertical{padding:16px 0}.q-stepper--vertical .q-stepper__tab{padding:12px 24px}.q-stepper--vertical .q-stepper__title{line-height:18px}.q-stepper--vertical .q-stepper__step-inner{padding:0 24px 32px 60px}.q-stepper--vertical>.q-stepper__nav{padding:24px 24px 0}.q-stepper--vertical .q-stepper__step{overflow:hidden}.q-stepper--vertical .q-stepper__dot{margin-right:12px}.q-stepper--vertical .q-stepper__dot:after,.q-stepper--vertical .q-stepper__dot:before{content:\"\";position:absolute;left:50%;width:1px;height:99999px;background:rgba(0,0,0,.12)}.q-stepper--vertical .q-stepper__dot:before{bottom:100%;margin-bottom:8px}.q-stepper--vertical .q-stepper__dot:after{top:100%;margin-top:8px}.q-stepper--vertical .q-stepper__step:first-child .q-stepper__dot:before,.q-stepper--vertical .q-stepper__step:last-child .q-stepper__dot:after{display:none}.q-stepper--vertical .q-stepper__step:last-child .q-stepper__step-inner{padding-bottom:8px}.q-stepper--dark .q-stepper__header--border,.q-stepper--dark.q-stepper--bordered{border-color:hsla(0,0%,100%,.28)}.q-stepper--dark.q-stepper--horizontal .q-stepper__line:after,.q-stepper--dark.q-stepper--horizontal .q-stepper__line:before,.q-stepper--dark.q-stepper--vertical .q-stepper__dot:after,.q-stepper--dark.q-stepper--vertical .q-stepper__dot:before{background:hsla(0,0%,100%,.28)}.q-stepper--dark .q-stepper__tab--disabled{color:hsla(0,0%,100%,.28)}.q-stepper--dark .q-stepper__tab--disabled .q-stepper__dot{background:hsla(0,0%,100%,.28)}.q-stepper--dark .q-stepper__tab--disabled .q-stepper__label{color:hsla(0,0%,100%,.54)}.q-tab-panels{background:#fff}.q-tab-panel{padding:16px}.q-markup-table{overflow:auto;background:#fff}.q-table{width:100%;max-width:100%;border-collapse:separate;border-spacing:0}.q-table tbody td,.q-table thead tr{height:48px}.q-table th{font-weight:500;font-size:12px;-webkit-user-select:none;user-select:none}.q-table th.sortable{cursor:pointer}.q-table th.sortable:hover .q-table__sort-icon{opacity:.64}.q-table th.sorted .q-table__sort-icon{opacity:.86!important}.q-table th.sort-desc .q-table__sort-icon{transform:rotate(180deg)}.q-table td,.q-table th{padding:7px 16px;background-color:inherit}.q-table td,.q-table th,.q-table thead{border-style:solid;border-width:0}.q-table tbody td{font-size:13px}.q-table__card{color:#000;background-color:#fff;border-radius:4px;box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.q-table__card .q-table__middle{flex:1 1 auto}.q-table__card .q-table__bottom,.q-table__card .q-table__top{flex:0 0 auto}.q-table__container{position:relative}.q-table__container>div:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-table__container>div:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.q-table__container>.q-inner-loading{border-radius:inherit!important}.q-table__top{padding:12px 16px}.q-table__top .q-table__control{flex-wrap:wrap}.q-table__title{font-size:20px;letter-spacing:.005em;font-weight:400}.q-table__separator{min-width:8px!important}.q-table__progress{height:0!important}.q-table__progress th{padding:0!important;border:0!important}.q-table__progress .q-linear-progress{position:absolute;bottom:0}.q-table__middle{max-width:100%}.q-table__bottom{min-height:50px;padding:4px 14px 4px 16px;font-size:12px}.q-table__bottom .q-table__control{min-height:24px}.q-table__bottom-nodata-icon{font-size:200%;margin-right:8px}.q-table__bottom-item{margin-right:16px}.q-table__control{display:flex;align-items:center}.q-table__sort-icon{transition:transform .3s cubic-bezier(.25,.8,.5,1);opacity:0;font-size:120%}.q-table__sort-icon--center,.q-table__sort-icon--left{margin-left:4px}.q-table__sort-icon--right{margin-right:4px}.q-table--col-auto-width{width:1px}.q-table--dark,.q-table__card--dark{box-shadow:0 1px 5px hsla(0,0%,100%,.2),0 2px 2px hsla(0,0%,100%,.14),0 3px 1px -2px hsla(0,0%,100%,.12)}.q-table--flat{box-shadow:none}.q-table--bordered{border:1px solid rgba(0,0,0,.12)}.q-table--square{border-radius:0}.q-table__linear-progress{height:2px}.q-table--no-wrap td,.q-table--no-wrap th{white-space:nowrap}.q-table--grid{box-shadow:none;border-radius:4px}.q-table--grid .q-table__top{padding-bottom:4px}.q-table--grid .q-table__middle{min-height:2px;margin-bottom:4px}.q-table--grid .q-table__middle thead,.q-table--grid .q-table__middle thead th{border:0!important}.q-table--grid .q-table__linear-progress{bottom:0}.q-table--grid .q-table__bottom{border-top:0}.q-table--grid .q-table__grid-content{flex:1 1 auto}.q-table--grid.fullscreen{background:inherit}.q-table__grid-item-card{vertical-align:top;padding:12px}.q-table__grid-item-card .q-separator{margin:12px 0}.q-table__grid-item-row+.q-table__grid-item-row{margin-top:8px}.q-table__grid-item-title{opacity:.54;font-weight:500;font-size:12px}.q-table__grid-item-value{font-size:13px}.q-table__grid-item{padding:4px;transition:transform .3s cubic-bezier(.25,.8,.5,1)}.q-table__grid-item--selected{transform:scale(.95)}.q-table--cell-separator tbody tr:not(:last-child)>td,.q-table--cell-separator thead th,.q-table--horizontal-separator tbody tr:not(:last-child)>td,.q-table--horizontal-separator thead th{border-bottom-width:1px}.q-table--cell-separator td,.q-table--cell-separator th,.q-table--vertical-separator td,.q-table--vertical-separator th{border-left-width:1px}.q-table--cell-separator thead tr:last-child th,.q-table--cell-separator.q-table--loading tr:nth-last-child(2) th,.q-table--vertical-separator thead tr:last-child th,.q-table--vertical-separator.q-table--loading tr:nth-last-child(2) th{border-bottom-width:1px}.q-table--cell-separator td:first-child,.q-table--cell-separator th:first-child,.q-table--vertical-separator td:first-child,.q-table--vertical-separator th:first-child{border-left:0}.q-table--cell-separator .q-table__top,.q-table--vertical-separator .q-table__top{border-bottom:1px solid rgba(0,0,0,.12)}.q-table--dense .q-table__top{padding:6px 16px}.q-table--dense .q-table__bottom{min-height:33px}.q-table--dense .q-table__sort-icon{font-size:110%}.q-table--dense .q-table td,.q-table--dense .q-table th{padding:4px 8px}.q-table--dense .q-table tbody td,.q-table--dense .q-table tbody tr,.q-table--dense .q-table thead tr{height:28px}.q-table--dense .q-table td:first-child,.q-table--dense .q-table th:first-child{padding-left:16px}.q-table--dense .q-table td:last-child,.q-table--dense .q-table th:last-child{padding-right:16px}.q-table--dense .q-table__bottom-item{margin-right:8px}.q-table--dense .q-table__select .q-field__control,.q-table--dense .q-table__select .q-field__native{min-height:24px;padding:0}.q-table--dense .q-table__select .q-field__marginal{height:24px}.q-table__bottom{border-top:1px solid rgba(0,0,0,.12)}.q-table td,.q-table th,.q-table thead,.q-table tr{border-color:rgba(0,0,0,.12)}.q-table tbody td{position:relative}.q-table tbody td:after,.q-table tbody td:before{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.q-table tbody td:before{background:rgba(0,0,0,.03)}.q-table tbody td:after{background:rgba(0,0,0,.06)}.q-table tbody tr.selected td:after,body.desktop .q-table>tbody>tr:not(.q-tr--no-hover):hover>td:not(.q-td--no-hover):before{content:\"\"}.q-table--dark,.q-table--dark .q-table__bottom,.q-table--dark td,.q-table--dark th,.q-table--dark thead,.q-table--dark tr,.q-table__card--dark{border-color:hsla(0,0%,100%,.28)}.q-table--dark tbody td:before{background:hsla(0,0%,100%,.07)}.q-table--dark tbody td:after{background:hsla(0,0%,100%,.1)}.q-table--dark.q-table--cell-separator .q-table__top,.q-table--dark.q-table--vertical-separator .q-table__top{border-color:hsla(0,0%,100%,.28)}.q-tab{padding:0 16px;min-height:48px;transition:color .3s,background-color .3s;text-transform:uppercase;white-space:nowrap;color:inherit;text-decoration:none}.q-tab--full{min-height:72px}.q-tab--no-caps{text-transform:none}.q-tab__content{height:inherit;padding:4px 0;min-width:40px}.q-tab__content--inline .q-tab__icon+.q-tab__label{padding-left:8px}.q-tab__content .q-chip--floating{top:0;right:-16px}.q-tab__icon{width:24px;height:24px;font-size:24px}.q-tab__label{font-size:14px;line-height:1.715em;font-weight:500}.q-tab .q-badge{top:3px;right:-12px}.q-tab__alert,.q-tab__alert-icon{position:absolute}.q-tab__alert{top:7px;right:-9px;height:10px;width:10px;border-radius:50%;background:currentColor}.q-tab__alert-icon{top:2px;right:-12px;font-size:18px}.q-tab__indicator{opacity:0;height:2px;background:currentColor}.q-tab--active .q-tab__indicator{opacity:1;transform-origin:left}.q-tab--inactive{opacity:.85}.q-tabs{position:relative;transition:color .3s,background-color .3s}.q-tabs--scrollable.q-tabs__arrows--outside.q-tabs--horizontal{padding-left:36px;padding-right:36px}.q-tabs--scrollable.q-tabs__arrows--outside.q-tabs--vertical{padding-top:36px;padding-bottom:36px}.q-tabs--scrollable.q-tabs__arrows--outside .q-tabs__arrow--faded{opacity:.3;pointer-events:none}.q-tabs--scrollable.q-tabs__arrows--inside .q-tabs__arrow--faded{display:none}.q-tabs--not-scrollable.q-tabs__arrows--outside,body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows.q-tabs__arrows--outside{padding-left:0;padding-right:0}.q-tabs--not-scrollable .q-tabs__arrow,body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows .q-tabs__arrow{display:none}.q-tabs--not-scrollable .q-tabs__content,body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows .q-tabs__content{border-radius:inherit}.q-tabs__arrow{cursor:pointer;font-size:32px;min-width:36px;text-shadow:0 0 3px #fff,0 0 1px #fff,0 0 1px #000;transition:opacity .3s}.q-tabs__content{overflow:hidden;flex:1 1 auto}.q-tabs__content--align-center{justify-content:center}.q-tabs__content--align-right{justify-content:flex-end}.q-tabs__content--align-justify .q-tab{flex:1 1 auto}.q-tabs__offset{display:none}.q-tabs--horizontal .q-tabs__arrow{height:100%}.q-tabs--horizontal .q-tabs__arrow--left{top:0;left:0;bottom:0}.q-tabs--horizontal .q-tabs__arrow--right{top:0;right:0;bottom:0}.q-tabs--vertical,.q-tabs--vertical .q-tabs__content{display:block!important;height:100%}.q-tabs--vertical .q-tabs__arrow{width:100%;height:36px;text-align:center}.q-tabs--vertical .q-tabs__arrow--left{top:0;left:0;right:0}.q-tabs--vertical .q-tabs__arrow--right{left:0;right:0;bottom:0}.q-tabs--vertical .q-tab{padding:0 8px}.q-tabs--vertical .q-tab__indicator{height:unset;width:2px}.q-tabs--vertical.q-tabs--not-scrollable .q-tabs__content{height:100%}.q-tabs--vertical.q-tabs--dense .q-tab__content{min-width:24px}.q-tabs--dense .q-tab{min-height:36px}.q-tabs--dense .q-tab--full{min-height:52px}.q-time{box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12);border-radius:4px;background:#fff;outline:0;width:290px;min-width:290px;max-width:100%}.q-time--bordered{border:1px solid rgba(0,0,0,.12)}.q-time__header{border-top-left-radius:inherit;color:#fff;background-color:var(--q-primary);padding:16px;font-weight:300}.q-time__actions{padding:0 16px 16px}.q-time__header-label{font-size:28px;line-height:1;letter-spacing:-.00833em}.q-time__header-label>div+div{margin-left:4px}.q-time__link{opacity:.56;outline:0;transition:opacity .3s ease-out}.q-time__link--active,.q-time__link:focus,.q-time__link:hover{opacity:1}.q-time__header-ampm{font-size:16px;letter-spacing:.1em}.q-time__content{padding:16px}.q-time__content:before{content:\"\";display:block;padding-bottom:100%}.q-time__container-parent{padding:16px}.q-time__container-child{border-radius:50%;background:rgba(0,0,0,.12)}.q-time__clock{padding:24px;width:100%;height:100%;max-width:100%;max-height:100%;font-size:14px}.q-time__clock-circle{position:relative}.q-time__clock-center{height:6px;width:6px;margin:auto;border-radius:50%;min-height:0;background:currentColor}.q-time__clock-pointer{width:2px;height:50%;transform-origin:0 0;min-height:0;position:absolute;left:50%;right:0;bottom:0;color:var(--q-primary);background:currentColor;transform:translateX(-50%)}.q-time__clock-pointer:after,.q-time__clock-pointer:before{content:\"\";position:absolute;left:50%;border-radius:50%;background:currentColor;transform:translateX(-50%)}.q-time__clock-pointer:before{bottom:-4px;width:8px;height:8px}.q-time__clock-pointer:after{top:-3px;height:6px;width:6px}.q-time__clock-position{position:absolute;min-height:32px;width:32px;height:32px;font-size:12px;line-height:32px;margin:0;padding:0;transform:translate(-50%,-50%);border-radius:50%}.q-time__clock-position--disable{opacity:.4}.q-time__clock-position--active{background-color:var(--q-primary);color:#fff}.q-time__clock-pos-0{top:0;left:50%}.q-time__clock-pos-1{top:6.7%;left:75%}.q-time__clock-pos-2{top:25%;left:93.3%}.q-time__clock-pos-3{top:50%;left:100%}.q-time__clock-pos-4{top:75%;left:93.3%}.q-time__clock-pos-5{top:93.3%;left:75%}.q-time__clock-pos-6{top:100%;left:50%}.q-time__clock-pos-7{top:93.3%;left:25%}.q-time__clock-pos-8{top:75%;left:6.7%}.q-time__clock-pos-9{top:50%;left:0}.q-time__clock-pos-10{top:25%;left:6.7%}.q-time__clock-pos-11{top:6.7%;left:25%}.q-time__clock-pos-12{top:15%;left:50%}.q-time__clock-pos-13{top:19.69%;left:67.5%}.q-time__clock-pos-14{top:32.5%;left:80.31%}.q-time__clock-pos-15{top:50%;left:85%}.q-time__clock-pos-16{top:67.5%;left:80.31%}.q-time__clock-pos-17{top:80.31%;left:67.5%}.q-time__clock-pos-18{top:85%;left:50%}.q-time__clock-pos-19{top:80.31%;left:32.5%}.q-time__clock-pos-20{top:67.5%;left:19.69%}.q-time__clock-pos-21{top:50%;left:15%}.q-time__clock-pos-22{top:32.5%;left:19.69%}.q-time__clock-pos-23{top:19.69%;left:32.5%}.q-time__now-button{background-color:var(--q-primary);color:#fff;top:12px;right:12px}.q-time--readonly .q-time__content,.q-time--readonly .q-time__header-ampm,.q-time.disabled .q-time__content,.q-time.disabled .q-time__header-ampm{pointer-events:none}.q-time--portrait{display:inline-flex;flex-direction:column}.q-time--portrait .q-time__header{border-top-right-radius:inherit;min-height:86px}.q-time--portrait .q-time__header-ampm{margin-left:12px}.q-time--portrait.q-time--bordered .q-time__content{margin:1px 0}.q-time--landscape{display:inline-flex;align-items:stretch;min-width:420px}.q-time--landscape>div{display:flex;flex-direction:column;justify-content:center}.q-time--landscape .q-time__header{border-bottom-left-radius:inherit;min-width:156px}.q-time--landscape .q-time__header-ampm{margin-top:12px}.q-time--dark{border-color:hsla(0,0%,100%,.28);box-shadow:0 1px 5px hsla(0,0%,100%,.2),0 2px 2px hsla(0,0%,100%,.14),0 3px 1px -2px hsla(0,0%,100%,.12)}.q-timeline{padding:0;width:100%;list-style:none}.q-timeline h6{line-height:inherit}.q-timeline--dark{color:#fff}.q-timeline--dark .q-timeline__subtitle{opacity:.7}.q-timeline__content{padding-bottom:24px}.q-timeline__title{margin-top:0;margin-bottom:16px}.q-timeline__subtitle{font-size:12px;margin-bottom:8px;opacity:.6;text-transform:uppercase;letter-spacing:1px;font-weight:700}.q-timeline__dot{position:absolute;top:0;bottom:0;width:15px}.q-timeline__dot:after,.q-timeline__dot:before{content:\"\";background:currentColor;display:block;position:absolute}.q-timeline__dot:before{border:3px solid transparent;border-radius:100%;height:15px;width:15px;top:4px;left:0;transition:background .3s ease-in-out,border .3s ease-in-out}.q-timeline__dot:after{width:3px;opacity:.4;top:24px;bottom:0;left:6px}.q-timeline__dot .q-icon{position:absolute;top:0;left:0;right:0;font-size:16px;height:38px;line-height:38px;width:100%;color:#fff}.q-timeline__dot .q-icon>img,.q-timeline__dot .q-icon>svg{width:1em;height:1em}.q-timeline__dot-img{position:absolute;top:4px;left:0;right:0;height:31px;width:31px;background:currentColor;border-radius:50%}.q-timeline__heading{position:relative}.q-timeline__heading:first-child .q-timeline__heading-title{padding-top:0}.q-timeline__heading:last-child .q-timeline__heading-title{padding-bottom:0}.q-timeline__heading-title{padding:32px 0;margin:0}.q-timeline__entry{position:relative;line-height:22px}.q-timeline__entry:last-child{padding-bottom:0!important}.q-timeline__entry:last-child .q-timeline__dot:after{content:none}.q-timeline__entry--icon .q-timeline__dot{width:31px}.q-timeline__entry--icon .q-timeline__dot:before{height:31px;width:31px}.q-timeline__entry--icon .q-timeline__dot:after{top:41px;left:14px}.q-timeline__entry--icon .q-timeline__subtitle{padding-top:8px}.q-timeline--dense--right .q-timeline__entry{padding-left:40px}.q-timeline--dense--right .q-timeline__entry--icon .q-timeline__dot{left:-8px}.q-timeline--dense--right .q-timeline__dot{left:0}.q-timeline--dense--left .q-timeline__heading{text-align:right}.q-timeline--dense--left .q-timeline__entry{padding-right:40px}.q-timeline--dense--left .q-timeline__entry--icon .q-timeline__dot{right:-8px}.q-timeline--dense--left .q-timeline__content,.q-timeline--dense--left .q-timeline__subtitle,.q-timeline--dense--left .q-timeline__title{text-align:right}.q-timeline--dense--left .q-timeline__dot{right:0}.q-timeline--comfortable{display:table}.q-timeline--comfortable .q-timeline__heading{display:table-row;font-size:200%}.q-timeline--comfortable .q-timeline__heading>div{display:table-cell}.q-timeline--comfortable .q-timeline__entry{display:table-row;padding:0}.q-timeline--comfortable .q-timeline__entry--icon .q-timeline__content{padding-top:8px}.q-timeline--comfortable .q-timeline__content,.q-timeline--comfortable .q-timeline__dot,.q-timeline--comfortable .q-timeline__subtitle{display:table-cell;vertical-align:top}.q-timeline--comfortable .q-timeline__subtitle{width:35%}.q-timeline--comfortable .q-timeline__dot{position:relative;min-width:31px}.q-timeline--comfortable--right .q-timeline__heading .q-timeline__heading-title{margin-left:-50px}.q-timeline--comfortable--right .q-timeline__subtitle{text-align:right;padding-right:30px}.q-timeline--comfortable--right .q-timeline__content{padding-left:30px}.q-timeline--comfortable--right .q-timeline__entry--icon .q-timeline__dot{left:-8px}.q-timeline--comfortable--left .q-timeline__heading{text-align:right}.q-timeline--comfortable--left .q-timeline__heading .q-timeline__heading-title{margin-right:-50px}.q-timeline--comfortable--left .q-timeline__subtitle{padding-left:30px}.q-timeline--comfortable--left .q-timeline__content{padding-right:30px}.q-timeline--comfortable--left .q-timeline__content,.q-timeline--comfortable--left .q-timeline__title{text-align:right}.q-timeline--comfortable--left .q-timeline__entry--icon .q-timeline__dot{right:0}.q-timeline--comfortable--left .q-timeline__dot{right:-8px}.q-timeline--loose .q-timeline__heading-title{text-align:center;margin-left:0}.q-timeline--loose .q-timeline__content,.q-timeline--loose .q-timeline__dot,.q-timeline--loose .q-timeline__entry,.q-timeline--loose .q-timeline__subtitle{display:block;margin:0;padding:0}.q-timeline--loose .q-timeline__dot{position:absolute;left:50%;margin-left:-7.15px}.q-timeline--loose .q-timeline__entry{padding-bottom:24px;overflow:hidden}.q-timeline--loose .q-timeline__entry--icon .q-timeline__dot{margin-left:-15px}.q-timeline--loose .q-timeline__entry--icon .q-timeline__subtitle{line-height:38px}.q-timeline--loose .q-timeline__entry--icon .q-timeline__content{padding-top:8px}.q-timeline--loose .q-timeline__entry--left .q-timeline__content,.q-timeline--loose .q-timeline__entry--right .q-timeline__subtitle{float:left;padding-right:30px;text-align:right}.q-timeline--loose .q-timeline__entry--left .q-timeline__subtitle,.q-timeline--loose .q-timeline__entry--right .q-timeline__content{float:right;text-align:left;padding-left:30px}.q-timeline--loose .q-timeline__content,.q-timeline--loose .q-timeline__subtitle{width:50%}.q-toggle{vertical-align:middle}.q-toggle__native{width:1px;height:1px}.q-toggle__track{height:.35em;border-radius:.175em;opacity:.38;background:currentColor}.q-toggle__thumb{top:.25em;left:.25em;width:.5em;height:.5em;transition:left .22s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none;z-index:0}.q-toggle__thumb:after{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.q-toggle__thumb .q-icon{font-size:.3em;min-width:1em;color:#000;opacity:.54;z-index:1}.q-toggle__inner{font-size:40px;width:1.4em;min-width:1.4em;height:1em;padding:.325em .3em;-webkit-print-color-adjust:exact}.q-toggle__inner--indet .q-toggle__thumb{left:.45em}.q-toggle__inner--truthy{color:var(--q-primary)}.q-toggle__inner--truthy .q-toggle__track{opacity:.54}.q-toggle__inner--truthy .q-toggle__thumb{left:.65em}.q-toggle__inner--truthy .q-toggle__thumb:after{background-color:currentColor}.q-toggle__inner--truthy .q-toggle__thumb .q-icon{color:#fff;opacity:1}.q-toggle.disabled{opacity:.75!important}.q-toggle--dark .q-toggle__inner{color:#fff}.q-toggle--dark .q-toggle__inner--truthy{color:var(--q-primary)}.q-toggle--dark .q-toggle__thumb:after{box-shadow:none}.q-toggle--dark .q-toggle__thumb:before{opacity:.32!important}.q-toggle--dense .q-toggle__inner{width:.8em;min-width:.8em;height:.5em;padding:.07625em 0}.q-toggle--dense .q-toggle__thumb{top:0;left:0}.q-toggle--dense .q-toggle__inner--indet .q-toggle__thumb{left:.15em}.q-toggle--dense .q-toggle__inner--truthy .q-toggle__thumb{left:.3em}.q-toggle--dense .q-toggle__label{padding-left:.5em}.q-toggle--dense.reverse .q-toggle__label{padding-left:0;padding-right:.5em}body.desktop .q-toggle:not(.disabled) .q-toggle__thumb:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:currentColor;opacity:.12;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1)}body.desktop .q-toggle:not(.disabled):focus .q-toggle__thumb:before,body.desktop .q-toggle:not(.disabled):hover .q-toggle__thumb:before{transform:scale3d(2,2,1)}body.desktop .q-toggle--dense:not(.disabled):focus .q-toggle__thumb:before,body.desktop .q-toggle--dense:not(.disabled):hover .q-toggle__thumb:before{transform:scale3d(1.5,1.5,1)}.q-toolbar{position:relative;padding:0 12px;min-height:50px;width:100%}.q-toolbar--inset{padding-left:58px}.q-toolbar .q-avatar{font-size:38px}.q-toolbar__title{flex:1 1 0%;min-width:1px;max-width:100%;font-size:21px;font-weight:400;letter-spacing:.01em;padding:0 12px}.q-toolbar__title:first-child{padding-left:0}.q-toolbar__title:last-child{padding-right:0}.q-tooltip--style{font-size:10px;color:#fafafa;background:#757575;border-radius:4px;text-transform:none;font-weight:400}.q-tooltip{z-index:9000;position:fixed!important;overflow-y:auto;overflow-x:hidden;padding:6px 10px}@media (max-width:599.98px){.q-tooltip{font-size:14px;padding:8px 16px}}.q-tree{position:relative;color:#9e9e9e}.q-tree__node{padding:0 0 3px 22px}.q-tree__node:after{content:\"\";position:absolute;top:-3px;bottom:0;width:2px;right:auto;left:-13px;border-left:1px solid currentColor}.q-tree__node:last-child:after{display:none}.q-tree__node--disabled{pointer-events:none}.q-tree__node--disabled .disabled{opacity:1!important}.q-tree__node--disabled>.disabled,.q-tree__node--disabled>div,.q-tree__node--disabled>i{opacity:.6!important}.q-tree__node--disabled>.disabled .q-tree__node--disabled>.disabled,.q-tree__node--disabled>.disabled .q-tree__node--disabled>div,.q-tree__node--disabled>.disabled .q-tree__node--disabled>i,.q-tree__node--disabled>div .q-tree__node--disabled>.disabled,.q-tree__node--disabled>div .q-tree__node--disabled>div,.q-tree__node--disabled>div .q-tree__node--disabled>i,.q-tree__node--disabled>i .q-tree__node--disabled>.disabled,.q-tree__node--disabled>i .q-tree__node--disabled>div,.q-tree__node--disabled>i .q-tree__node--disabled>i{opacity:1!important}.q-tree__node-header:before{content:\"\";position:absolute;top:-3px;bottom:50%;width:31px;left:-35px;border-left:1px solid currentColor;border-bottom:1px solid currentColor}.q-tree__children{padding-left:25px}.q-tree__node-body{padding:5px 0 8px 5px}.q-tree__node--parent{padding-left:2px}.q-tree__node--parent>.q-tree__node-header:before{width:15px;left:-15px}.q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body{padding:5px 0 8px 27px}.q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body:after{content:\"\";position:absolute;top:0;width:2px;height:100%;right:auto;left:12px;border-left:1px solid currentColor;bottom:50px}.q-tree__node--link{cursor:pointer}.q-tree__node-header{padding:4px;margin-top:3px;border-radius:4px;outline:0}.q-tree__node-header-content{color:#000;transition:color .3s}.q-tree__node--selected .q-tree__node-header-content{color:#9e9e9e}.q-tree__icon,.q-tree__node-header-content .q-icon{font-size:21px}.q-tree__img{height:42px;border-radius:2px}.q-tree__avatar,.q-tree__node-header-content .q-avatar{font-size:28px;border-radius:50%;width:28px;height:28px}.q-tree__arrow,.q-tree__spinner{font-size:16px;margin-right:4px}.q-tree__arrow{transition:transform .3s}.q-tree__arrow--rotate{transform:rotate(90deg)}.q-tree__tickbox{margin-right:4px}.q-tree>.q-tree__node{padding:0}.q-tree>.q-tree__node:after,.q-tree>.q-tree__node>.q-tree__node-header:before{display:none}.q-tree>.q-tree__node--child>.q-tree__node-header{padding-left:24px}.q-tree--dark .q-tree__node-header-content{color:#fff}.q-tree--no-connectors .q-tree__node-body:after,.q-tree--no-connectors .q-tree__node-header:before,.q-tree--no-connectors .q-tree__node:after{display:none!important}.q-tree--dense>.q-tree__node--child>.q-tree__node-header{padding-left:1px}.q-tree--dense .q-tree__arrow,.q-tree--dense .q-tree__spinner{margin-right:1px}.q-tree--dense .q-tree__img{height:32px}.q-tree--dense .q-tree__tickbox{margin-right:3px}.q-tree--dense .q-tree__node{padding:0}.q-tree--dense .q-tree__node:after{top:0;left:-8px}.q-tree--dense .q-tree__node-header{margin-top:0;padding:1px}.q-tree--dense .q-tree__node-header:before{top:0;left:-8px;width:8px}.q-tree--dense .q-tree__node--child{padding-left:17px}.q-tree--dense .q-tree__node--child>.q-tree__node-header:before{left:-25px;width:21px}.q-tree--dense .q-tree__node-body{padding:0 0 2px}.q-tree--dense .q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body{padding:0 0 2px 20px}.q-tree--dense .q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body:after{left:8px}.q-tree--dense .q-tree__children{padding-left:16px}[dir=rtl] .q-tree__arrow{transform:rotate(180deg)}[dir=rtl] .q-tree__arrow--rotate{transform:rotate(90deg)}.q-uploader{box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12);border-radius:4px;vertical-align:top;background:#fff;position:relative;width:320px;max-height:320px}.q-uploader--bordered{border:1px solid rgba(0,0,0,.12)}.q-uploader__input{opacity:0;width:100%;height:100%;cursor:pointer!important;z-index:1}.q-uploader__input::-webkit-file-upload-button{cursor:pointer}.q-uploader__file:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:currentColor;opacity:.04}.q-uploader__file:before,.q-uploader__header{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-uploader__header{position:relative;background-color:var(--q-primary);color:#fff;width:100%}.q-uploader__spinner{font-size:24px;margin-right:4px}.q-uploader__header-content{padding:8px}.q-uploader__dnd{outline:1px dashed currentColor;outline-offset:-4px;background:hsla(0,0%,100%,.6)}.q-uploader__overlay{font-size:36px;color:#000;background-color:hsla(0,0%,100%,.6)}.q-uploader__list{position:relative;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;padding:8px;min-height:60px;flex:1 1 auto}.q-uploader__file{border-radius:4px 4px 0 0;border:1px solid rgba(0,0,0,.12)}.q-uploader__file .q-circular-progress{font-size:24px}.q-uploader__file--img{color:#fff;height:200px;min-width:200px;background-position:50% 50%;background-size:cover;background-repeat:no-repeat}.q-uploader__file--img:before{content:none}.q-uploader__file--img .q-circular-progress{color:#fff}.q-uploader__file--img .q-uploader__file-header{padding-bottom:24px;background:linear-gradient(180deg,rgba(0,0,0,.7) 20%,hsla(0,0%,100%,0))}.q-uploader__file+.q-uploader__file{margin-top:8px}.q-uploader__file-header{position:relative;padding:4px 8px;border-top-left-radius:inherit;border-top-right-radius:inherit}.q-uploader__file-header-content{padding-right:8px}.q-uploader__file-status{font-size:24px;margin-right:4px}.q-uploader__title{font-size:14px;font-weight:700;line-height:18px;word-break:break-word}.q-uploader__subtitle{font-size:12px;line-height:18px}.q-uploader--disable .q-uploader__header,.q-uploader--disable .q-uploader__list{pointer-events:none}.q-uploader--dark{box-shadow:0 1px 5px hsla(0,0%,100%,.2),0 2px 2px hsla(0,0%,100%,.14),0 3px 1px -2px hsla(0,0%,100%,.12)}.q-uploader--dark,.q-uploader--dark .q-uploader__file{border-color:hsla(0,0%,100%,.28)}.q-uploader--dark .q-uploader__dnd,.q-uploader--dark .q-uploader__overlay{background:hsla(0,0%,100%,.3)}.q-uploader--dark .q-uploader__overlay{color:#fff}.q-video{position:relative;overflow:hidden;border-radius:inherit}.q-video embed,.q-video iframe,.q-video object{width:100%;height:100%}.q-video--responsive{height:0}.q-video--responsive embed,.q-video--responsive iframe,.q-video--responsive object{position:absolute;top:0;left:0}.q-virtual-scroll:focus{outline:0}.q-virtual-scroll__content{outline:none;contain:content}.q-virtual-scroll__content>*{overflow-anchor:none}.q-virtual-scroll__content>[data-q-vs-anchor]{overflow-anchor:auto}.q-virtual-scroll__padding{background:linear-gradient(hsla(0,0%,100%,0),hsla(0,0%,100%,0) 20%,hsla(0,0%,50%,.03) 0,hsla(0,0%,50%,.08) 50%,hsla(0,0%,50%,.03) 80%,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,0));background-size:var(--q-virtual-scroll-item-width,100%) var(--q-virtual-scroll-item-height,50px)}.q-table .q-virtual-scroll__padding tr{height:0!important}.q-table .q-virtual-scroll__padding td{padding:0!important}.q-virtual-scroll--horizontal{align-items:stretch}.q-virtual-scroll--horizontal,.q-virtual-scroll--horizontal .q-virtual-scroll__content{display:flex;flex-direction:row;flex-wrap:nowrap}.q-virtual-scroll--horizontal .q-virtual-scroll__content,.q-virtual-scroll--horizontal .q-virtual-scroll__content>*,.q-virtual-scroll--horizontal .q-virtual-scroll__padding{flex:0 0 auto}.q-virtual-scroll--horizontal .q-virtual-scroll__padding{background:linear-gradient(270deg,hsla(0,0%,100%,0),hsla(0,0%,100%,0) 20%,hsla(0,0%,50%,.03) 0,hsla(0,0%,50%,.08) 50%,hsla(0,0%,50%,.03) 80%,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,0));background-size:var(--q-virtual-scroll-item-width,50px) var(--q-virtual-scroll-item-height,100%)}.q-ripple{width:100%;height:100%;border-radius:inherit;z-index:0;overflow:hidden;contain:strict}.q-ripple,.q-ripple__inner{position:absolute;top:0;left:0;color:inherit;pointer-events:none}.q-ripple__inner{opacity:0;border-radius:50%;background:currentColor;will-change:transform,opacity}.q-ripple__inner--enter{transition:transform .225s cubic-bezier(.4,0,.2,1),opacity .1s cubic-bezier(.4,0,.2,1)}.q-ripple__inner--leave{transition:opacity .25s cubic-bezier(.4,0,.2,1)}.q-morph--internal,.q-morph--invisible{opacity:0!important;pointer-events:none!important;position:fixed!important;right:200vw!important;bottom:200vh!important}.q-loading{color:#000;position:fixed!important}.q-loading__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;opacity:.5;z-index:-1;background-color:#000;transition:background-color .28s}.q-loading__box{border-radius:4px;padding:18px;color:#fff;max-width:450px}.q-loading__message{margin:40px 20px 0;text-align:center}.q-notifications__list{z-index:9500;pointer-events:none;left:0;right:0;margin-bottom:10px;position:relative}.q-notifications__list--center{top:0;bottom:0}.q-notifications__list--top{top:0}.q-notifications__list--bottom{bottom:0}body.q-ios-padding .q-notifications__list--center,body.q-ios-padding .q-notifications__list--top{top:20px;top:env(safe-area-inset-top)}body.q-ios-padding .q-notifications__list--bottom,body.q-ios-padding .q-notifications__list--center{bottom:env(safe-area-inset-bottom)}.q-notification{box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12);border-radius:4px;pointer-events:all;display:inline-flex;margin:10px 10px 0;transition:transform 1s,opacity 1s;z-index:9500;flex-shrink:0;max-width:95vw;background:#323232;color:#fff;font-size:14px}.q-notification__icon{font-size:24px;flex:0 0 1em}.q-notification__icon--additional{margin-right:16px}.q-notification__avatar{font-size:32px}.q-notification__avatar--additional{margin-right:8px}.q-notification__spinner{font-size:32px}.q-notification__spinner--additional{margin-right:8px}.q-notification__message{padding:8px 0}.q-notification__caption{font-size:.9em;opacity:.7}.q-notification__actions{color:var(--q-primary)}.q-notification__badge{animation:q-notif-badge .42s;padding:4px 8px;position:absolute;box-shadow:0 1px 3px rgba(0,0,0,.2),0 1px 1px rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:var(--q-negative);color:#fff;border-radius:4px;font-size:12px;line-height:12px}.q-notification__badge--top-left,.q-notification__badge--top-right{top:-6px}.q-notification__badge--bottom-left,.q-notification__badge--bottom-right{bottom:-6px}.q-notification__badge--bottom-left,.q-notification__badge--top-left{left:-22px}.q-notification__badge--bottom-right,.q-notification__badge--top-right{right:-22px}.q-notification__progress{z-index:-1;position:absolute;height:3px;bottom:0;left:-10px;right:-10px;animation:q-notif-progress linear;background:currentColor;opacity:.3;border-radius:4px 4px 0 0;transform-origin:0 50%;transform:scaleX(0)}.q-notification--standard{padding:0 16px;min-height:48px}.q-notification--standard .q-notification__actions{padding:6px 0 6px 8px;margin-right:-8px}.q-notification--multi-line{min-height:68px;padding:8px 16px}.q-notification--multi-line .q-notification__badge--top-left,.q-notification--multi-line .q-notification__badge--top-right{top:-15px}.q-notification--multi-line .q-notification__badge--bottom-left,.q-notification--multi-line .q-notification__badge--bottom-right{bottom:-15px}.q-notification--multi-line .q-notification__progress{bottom:-8px}.q-notification--multi-line .q-notification__actions{padding:0}.q-notification--multi-line .q-notification__actions--with-media{padding-left:25px}.q-notification--top-enter-from,.q-notification--top-leave-to,.q-notification--top-left-enter-from,.q-notification--top-left-leave-to,.q-notification--top-right-enter-from,.q-notification--top-right-leave-to{opacity:0;transform:translateY(-50px);z-index:9499}.q-notification--center-enter-from,.q-notification--center-leave-to,.q-notification--left-enter-from,.q-notification--left-leave-to,.q-notification--right-enter-from,.q-notification--right-leave-to{opacity:0;transform:rotateX(90deg);z-index:9499}.q-notification--bottom-enter-from,.q-notification--bottom-leave-to,.q-notification--bottom-left-enter-from,.q-notification--bottom-left-leave-to,.q-notification--bottom-right-enter-from,.q-notification--bottom-right-leave-to{opacity:0;transform:translateY(50px);z-index:9499}.q-notification--bottom-leave-active,.q-notification--bottom-left-leave-active,.q-notification--bottom-right-leave-active,.q-notification--center-leave-active,.q-notification--left-leave-active,.q-notification--right-leave-active,.q-notification--top-leave-active,.q-notification--top-left-leave-active,.q-notification--top-right-leave-active{position:absolute;z-index:9499;margin-left:0;margin-right:0}.q-notification--center-leave-active,.q-notification--top-leave-active{top:0}.q-notification--bottom-leave-active,.q-notification--bottom-left-leave-active,.q-notification--bottom-right-leave-active{bottom:0}@media (min-width:600px){.q-notification{max-width:65vw}}@keyframes q-notif-badge{15%{transform:translate3d(-25%,0,0) rotate(-5deg)}30%{transform:translate3d(20%,0,0) rotate(3deg)}45%{transform:translate3d(-15%,0,0) rotate(-3deg)}60%{transform:translate3d(10%,0,0) rotate(2deg)}75%{transform:translate3d(-5%,0,0) rotate(-1deg)}}@keyframes q-notif-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}:root{--animate-duration:0.3s;--animate-delay:0.3s;--animate-repeat:1}.animated{animation-duration:var(--animate-duration);animation-fill-mode:both}.animated.infinite{animation-iteration-count:infinite}.animated.hinge{animation-duration:2s}.animated.repeat-1{animation-iteration-count:var(--animate-repeat)}.animated.repeat-2{animation-iteration-count:calc(var(--animate-repeat)*2)}.animated.repeat-3{animation-iteration-count:calc(var(--animate-repeat)*3)}.animated.delay-1s{animation-delay:var(--animate-delay)}.animated.delay-2s{animation-delay:calc(var(--animate-delay)*2)}.animated.delay-3s{animation-delay:calc(var(--animate-delay)*3)}.animated.delay-4s{animation-delay:calc(var(--animate-delay)*4)}.animated.delay-5s{animation-delay:calc(var(--animate-delay)*5)}.animated.faster{animation-duration:calc(var(--animate-duration)/2)}.animated.fast{animation-duration:calc(var(--animate-duration)*.8)}.animated.slow{animation-duration:calc(var(--animate-duration)*2)}.animated.slower{animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animated{animation-duration:1ms!important;transition-duration:1ms!important;animation-iteration-count:1!important}.animated[class*=Out]{opacity:0}}.q-animate--scale{animation:q-scale .15s;animation-timing-function:cubic-bezier(.25,.8,.25,1)}@keyframes q-scale{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}.q-animate--fade{animation:q-fade .2s}@keyframes q-fade{0%{opacity:0}to{opacity:1}}:root{--q-primary:#1976d2;--q-secondary:#26a69a;--q-accent:#9c27b0;--q-positive:#21ba45;--q-negative:#c10015;--q-info:#31ccec;--q-warning:#f2c037;--q-dark:#1d1d1d;--q-dark-page:#121212}.text-dark{color:var(--q-dark)!important}.bg-dark{background:var(--q-dark)!important}.text-primary{color:var(--q-primary)!important}.bg-primary{background:var(--q-primary)!important}.text-secondary{color:var(--q-secondary)!important}.bg-secondary{background:var(--q-secondary)!important}.text-accent{color:var(--q-accent)!important}.bg-accent{background:var(--q-accent)!important}.text-positive{color:var(--q-positive)!important}.bg-positive{background:var(--q-positive)!important}.text-negative{color:var(--q-negative)!important}.bg-negative{background:var(--q-negative)!important}.text-info{color:var(--q-info)!important}.bg-info{background:var(--q-info)!important}.text-warning{color:var(--q-warning)!important}.bg-warning{background:var(--q-warning)!important}.text-white{color:#fff!important}.bg-white{background:#fff!important}.text-black{color:#000!important}.bg-black{background:#000!important}.text-transparent{color:transparent!important}.bg-transparent{background:transparent!important}.text-separator{color:rgba(0,0,0,.12)!important}.bg-separator{background:rgba(0,0,0,.12)!important}.text-dark-separator{color:hsla(0,0%,100%,.28)!important}.bg-dark-separator{background:hsla(0,0%,100%,.28)!important}.text-red{color:#f44336!important}.text-red-1{color:#ffebee!important}.text-red-2{color:#ffcdd2!important}.text-red-3{color:#ef9a9a!important}.text-red-4{color:#e57373!important}.text-red-5{color:#ef5350!important}.text-red-6{color:#f44336!important}.text-red-7{color:#e53935!important}.text-red-8{color:#d32f2f!important}.text-red-9{color:#c62828!important}.text-red-10{color:#b71c1c!important}.text-red-11{color:#ff8a80!important}.text-red-12{color:#ff5252!important}.text-red-13{color:#ff1744!important}.text-red-14{color:#d50000!important}.text-pink{color:#e91e63!important}.text-pink-1{color:#fce4ec!important}.text-pink-2{color:#f8bbd0!important}.text-pink-3{color:#f48fb1!important}.text-pink-4{color:#f06292!important}.text-pink-5{color:#ec407a!important}.text-pink-6{color:#e91e63!important}.text-pink-7{color:#d81b60!important}.text-pink-8{color:#c2185b!important}.text-pink-9{color:#ad1457!important}.text-pink-10{color:#880e4f!important}.text-pink-11{color:#ff80ab!important}.text-pink-12{color:#ff4081!important}.text-pink-13{color:#f50057!important}.text-pink-14{color:#c51162!important}.text-purple{color:#9c27b0!important}.text-purple-1{color:#f3e5f5!important}.text-purple-2{color:#e1bee7!important}.text-purple-3{color:#ce93d8!important}.text-purple-4{color:#ba68c8!important}.text-purple-5{color:#ab47bc!important}.text-purple-6{color:#9c27b0!important}.text-purple-7{color:#8e24aa!important}.text-purple-8{color:#7b1fa2!important}.text-purple-9{color:#6a1b9a!important}.text-purple-10{color:#4a148c!important}.text-purple-11{color:#ea80fc!important}.text-purple-12{color:#e040fb!important}.text-purple-13{color:#d500f9!important}.text-purple-14{color:#a0f!important}.text-deep-purple{color:#673ab7!important}.text-deep-purple-1{color:#ede7f6!important}.text-deep-purple-2{color:#d1c4e9!important}.text-deep-purple-3{color:#b39ddb!important}.text-deep-purple-4{color:#9575cd!important}.text-deep-purple-5{color:#7e57c2!important}.text-deep-purple-6{color:#673ab7!important}.text-deep-purple-7{color:#5e35b1!important}.text-deep-purple-8{color:#512da8!important}.text-deep-purple-9{color:#4527a0!important}.text-deep-purple-10{color:#311b92!important}.text-deep-purple-11{color:#b388ff!important}.text-deep-purple-12{color:#7c4dff!important}.text-deep-purple-13{color:#651fff!important}.text-deep-purple-14{color:#6200ea!important}.text-indigo{color:#3f51b5!important}.text-indigo-1{color:#e8eaf6!important}.text-indigo-2{color:#c5cae9!important}.text-indigo-3{color:#9fa8da!important}.text-indigo-4{color:#7986cb!important}.text-indigo-5{color:#5c6bc0!important}.text-indigo-6{color:#3f51b5!important}.text-indigo-7{color:#3949ab!important}.text-indigo-8{color:#303f9f!important}.text-indigo-9{color:#283593!important}.text-indigo-10{color:#1a237e!important}.text-indigo-11{color:#8c9eff!important}.text-indigo-12{color:#536dfe!important}.text-indigo-13{color:#3d5afe!important}.text-indigo-14{color:#304ffe!important}.text-blue{color:#2196f3!important}.text-blue-1{color:#e3f2fd!important}.text-blue-2{color:#bbdefb!important}.text-blue-3{color:#90caf9!important}.text-blue-4{color:#64b5f6!important}.text-blue-5{color:#42a5f5!important}.text-blue-6{color:#2196f3!important}.text-blue-7{color:#1e88e5!important}.text-blue-8{color:#1976d2!important}.text-blue-9{color:#1565c0!important}.text-blue-10{color:#0d47a1!important}.text-blue-11{color:#82b1ff!important}.text-blue-12{color:#448aff!important}.text-blue-13{color:#2979ff!important}.text-blue-14{color:#2962ff!important}.text-light-blue{color:#03a9f4!important}.text-light-blue-1{color:#e1f5fe!important}.text-light-blue-2{color:#b3e5fc!important}.text-light-blue-3{color:#81d4fa!important}.text-light-blue-4{color:#4fc3f7!important}.text-light-blue-5{color:#29b6f6!important}.text-light-blue-6{color:#03a9f4!important}.text-light-blue-7{color:#039be5!important}.text-light-blue-8{color:#0288d1!important}.text-light-blue-9{color:#0277bd!important}.text-light-blue-10{color:#01579b!important}.text-light-blue-11{color:#80d8ff!important}.text-light-blue-12{color:#40c4ff!important}.text-light-blue-13{color:#00b0ff!important}.text-light-blue-14{color:#0091ea!important}.text-cyan{color:#00bcd4!important}.text-cyan-1{color:#e0f7fa!important}.text-cyan-2{color:#b2ebf2!important}.text-cyan-3{color:#80deea!important}.text-cyan-4{color:#4dd0e1!important}.text-cyan-5{color:#26c6da!important}.text-cyan-6{color:#00bcd4!important}.text-cyan-7{color:#00acc1!important}.text-cyan-8{color:#0097a7!important}.text-cyan-9{color:#00838f!important}.text-cyan-10{color:#006064!important}.text-cyan-11{color:#84ffff!important}.text-cyan-12{color:#18ffff!important}.text-cyan-13{color:#00e5ff!important}.text-cyan-14{color:#00b8d4!important}.text-teal{color:#009688!important}.text-teal-1{color:#e0f2f1!important}.text-teal-2{color:#b2dfdb!important}.text-teal-3{color:#80cbc4!important}.text-teal-4{color:#4db6ac!important}.text-teal-5{color:#26a69a!important}.text-teal-6{color:#009688!important}.text-teal-7{color:#00897b!important}.text-teal-8{color:#00796b!important}.text-teal-9{color:#00695c!important}.text-teal-10{color:#004d40!important}.text-teal-11{color:#a7ffeb!important}.text-teal-12{color:#64ffda!important}.text-teal-13{color:#1de9b6!important}.text-teal-14{color:#00bfa5!important}.text-green{color:#4caf50!important}.text-green-1{color:#e8f5e9!important}.text-green-2{color:#c8e6c9!important}.text-green-3{color:#a5d6a7!important}.text-green-4{color:#81c784!important}.text-green-5{color:#66bb6a!important}.text-green-6{color:#4caf50!important}.text-green-7{color:#43a047!important}.text-green-8{color:#388e3c!important}.text-green-9{color:#2e7d32!important}.text-green-10{color:#1b5e20!important}.text-green-11{color:#b9f6ca!important}.text-green-12{color:#69f0ae!important}.text-green-13{color:#00e676!important}.text-green-14{color:#00c853!important}.text-light-green{color:#8bc34a!important}.text-light-green-1{color:#f1f8e9!important}.text-light-green-2{color:#dcedc8!important}.text-light-green-3{color:#c5e1a5!important}.text-light-green-4{color:#aed581!important}.text-light-green-5{color:#9ccc65!important}.text-light-green-6{color:#8bc34a!important}.text-light-green-7{color:#7cb342!important}.text-light-green-8{color:#689f38!important}.text-light-green-9{color:#558b2f!important}.text-light-green-10{color:#33691e!important}.text-light-green-11{color:#ccff90!important}.text-light-green-12{color:#b2ff59!important}.text-light-green-13{color:#76ff03!important}.text-light-green-14{color:#64dd17!important}.text-lime{color:#cddc39!important}.text-lime-1{color:#f9fbe7!important}.text-lime-2{color:#f0f4c3!important}.text-lime-3{color:#e6ee9c!important}.text-lime-4{color:#dce775!important}.text-lime-5{color:#d4e157!important}.text-lime-6{color:#cddc39!important}.text-lime-7{color:#c0ca33!important}.text-lime-8{color:#afb42b!important}.text-lime-9{color:#9e9d24!important}.text-lime-10{color:#827717!important}.text-lime-11{color:#f4ff81!important}.text-lime-12{color:#eeff41!important}.text-lime-13{color:#c6ff00!important}.text-lime-14{color:#aeea00!important}.text-yellow{color:#ffeb3b!important}.text-yellow-1{color:#fffde7!important}.text-yellow-2{color:#fff9c4!important}.text-yellow-3{color:#fff59d!important}.text-yellow-4{color:#fff176!important}.text-yellow-5{color:#ffee58!important}.text-yellow-6{color:#ffeb3b!important}.text-yellow-7{color:#fdd835!important}.text-yellow-8{color:#fbc02d!important}.text-yellow-9{color:#f9a825!important}.text-yellow-10{color:#f57f17!important}.text-yellow-11{color:#ffff8d!important}.text-yellow-12{color:#ff0!important}.text-yellow-13{color:#ffea00!important}.text-yellow-14{color:#ffd600!important}.text-amber{color:#ffc107!important}.text-amber-1{color:#fff8e1!important}.text-amber-2{color:#ffecb3!important}.text-amber-3{color:#ffe082!important}.text-amber-4{color:#ffd54f!important}.text-amber-5{color:#ffca28!important}.text-amber-6{color:#ffc107!important}.text-amber-7{color:#ffb300!important}.text-amber-8{color:#ffa000!important}.text-amber-9{color:#ff8f00!important}.text-amber-10{color:#ff6f00!important}.text-amber-11{color:#ffe57f!important}.text-amber-12{color:#ffd740!important}.text-amber-13{color:#ffc400!important}.text-amber-14{color:#ffab00!important}.text-orange{color:#ff9800!important}.text-orange-1{color:#fff3e0!important}.text-orange-2{color:#ffe0b2!important}.text-orange-3{color:#ffcc80!important}.text-orange-4{color:#ffb74d!important}.text-orange-5{color:#ffa726!important}.text-orange-6{color:#ff9800!important}.text-orange-7{color:#fb8c00!important}.text-orange-8{color:#f57c00!important}.text-orange-9{color:#ef6c00!important}.text-orange-10{color:#e65100!important}.text-orange-11{color:#ffd180!important}.text-orange-12{color:#ffab40!important}.text-orange-13{color:#ff9100!important}.text-orange-14{color:#ff6d00!important}.text-deep-orange{color:#ff5722!important}.text-deep-orange-1{color:#fbe9e7!important}.text-deep-orange-2{color:#ffccbc!important}.text-deep-orange-3{color:#ffab91!important}.text-deep-orange-4{color:#ff8a65!important}.text-deep-orange-5{color:#ff7043!important}.text-deep-orange-6{color:#ff5722!important}.text-deep-orange-7{color:#f4511e!important}.text-deep-orange-8{color:#e64a19!important}.text-deep-orange-9{color:#d84315!important}.text-deep-orange-10{color:#bf360c!important}.text-deep-orange-11{color:#ff9e80!important}.text-deep-orange-12{color:#ff6e40!important}.text-deep-orange-13{color:#ff3d00!important}.text-deep-orange-14{color:#dd2c00!important}.text-brown{color:#795548!important}.text-brown-1{color:#efebe9!important}.text-brown-2{color:#d7ccc8!important}.text-brown-3{color:#bcaaa4!important}.text-brown-4{color:#a1887f!important}.text-brown-5{color:#8d6e63!important}.text-brown-6{color:#795548!important}.text-brown-7{color:#6d4c41!important}.text-brown-8{color:#5d4037!important}.text-brown-9{color:#4e342e!important}.text-brown-10{color:#3e2723!important}.text-brown-11{color:#d7ccc8!important}.text-brown-12{color:#bcaaa4!important}.text-brown-13{color:#8d6e63!important}.text-brown-14{color:#5d4037!important}.text-grey{color:#9e9e9e!important}.text-grey-1{color:#fafafa!important}.text-grey-2{color:#f5f5f5!important}.text-grey-3{color:#eee!important}.text-grey-4{color:#e0e0e0!important}.text-grey-5{color:#bdbdbd!important}.text-grey-6{color:#9e9e9e!important}.text-grey-7{color:#757575!important}.text-grey-8{color:#616161!important}.text-grey-9{color:#424242!important}.text-grey-10{color:#212121!important}.text-grey-11{color:#f5f5f5!important}.text-grey-12{color:#eee!important}.text-grey-13{color:#bdbdbd!important}.text-grey-14{color:#616161!important}.text-blue-grey{color:#607d8b!important}.text-blue-grey-1{color:#eceff1!important}.text-blue-grey-2{color:#cfd8dc!important}.text-blue-grey-3{color:#b0bec5!important}.text-blue-grey-4{color:#90a4ae!important}.text-blue-grey-5{color:#78909c!important}.text-blue-grey-6{color:#607d8b!important}.text-blue-grey-7{color:#546e7a!important}.text-blue-grey-8{color:#455a64!important}.text-blue-grey-9{color:#37474f!important}.text-blue-grey-10{color:#263238!important}.text-blue-grey-11{color:#cfd8dc!important}.text-blue-grey-12{color:#b0bec5!important}.text-blue-grey-13{color:#78909c!important}.text-blue-grey-14{color:#455a64!important}.bg-red{background:#f44336!important}.bg-red-1{background:#ffebee!important}.bg-red-2{background:#ffcdd2!important}.bg-red-3{background:#ef9a9a!important}.bg-red-4{background:#e57373!important}.bg-red-5{background:#ef5350!important}.bg-red-6{background:#f44336!important}.bg-red-7{background:#e53935!important}.bg-red-8{background:#d32f2f!important}.bg-red-9{background:#c62828!important}.bg-red-10{background:#b71c1c!important}.bg-red-11{background:#ff8a80!important}.bg-red-12{background:#ff5252!important}.bg-red-13{background:#ff1744!important}.bg-red-14{background:#d50000!important}.bg-pink{background:#e91e63!important}.bg-pink-1{background:#fce4ec!important}.bg-pink-2{background:#f8bbd0!important}.bg-pink-3{background:#f48fb1!important}.bg-pink-4{background:#f06292!important}.bg-pink-5{background:#ec407a!important}.bg-pink-6{background:#e91e63!important}.bg-pink-7{background:#d81b60!important}.bg-pink-8{background:#c2185b!important}.bg-pink-9{background:#ad1457!important}.bg-pink-10{background:#880e4f!important}.bg-pink-11{background:#ff80ab!important}.bg-pink-12{background:#ff4081!important}.bg-pink-13{background:#f50057!important}.bg-pink-14{background:#c51162!important}.bg-purple{background:#9c27b0!important}.bg-purple-1{background:#f3e5f5!important}.bg-purple-2{background:#e1bee7!important}.bg-purple-3{background:#ce93d8!important}.bg-purple-4{background:#ba68c8!important}.bg-purple-5{background:#ab47bc!important}.bg-purple-6{background:#9c27b0!important}.bg-purple-7{background:#8e24aa!important}.bg-purple-8{background:#7b1fa2!important}.bg-purple-9{background:#6a1b9a!important}.bg-purple-10{background:#4a148c!important}.bg-purple-11{background:#ea80fc!important}.bg-purple-12{background:#e040fb!important}.bg-purple-13{background:#d500f9!important}.bg-purple-14{background:#a0f!important}.bg-deep-purple{background:#673ab7!important}.bg-deep-purple-1{background:#ede7f6!important}.bg-deep-purple-2{background:#d1c4e9!important}.bg-deep-purple-3{background:#b39ddb!important}.bg-deep-purple-4{background:#9575cd!important}.bg-deep-purple-5{background:#7e57c2!important}.bg-deep-purple-6{background:#673ab7!important}.bg-deep-purple-7{background:#5e35b1!important}.bg-deep-purple-8{background:#512da8!important}.bg-deep-purple-9{background:#4527a0!important}.bg-deep-purple-10{background:#311b92!important}.bg-deep-purple-11{background:#b388ff!important}.bg-deep-purple-12{background:#7c4dff!important}.bg-deep-purple-13{background:#651fff!important}.bg-deep-purple-14{background:#6200ea!important}.bg-indigo{background:#3f51b5!important}.bg-indigo-1{background:#e8eaf6!important}.bg-indigo-2{background:#c5cae9!important}.bg-indigo-3{background:#9fa8da!important}.bg-indigo-4{background:#7986cb!important}.bg-indigo-5{background:#5c6bc0!important}.bg-indigo-6{background:#3f51b5!important}.bg-indigo-7{background:#3949ab!important}.bg-indigo-8{background:#303f9f!important}.bg-indigo-9{background:#283593!important}.bg-indigo-10{background:#1a237e!important}.bg-indigo-11{background:#8c9eff!important}.bg-indigo-12{background:#536dfe!important}.bg-indigo-13{background:#3d5afe!important}.bg-indigo-14{background:#304ffe!important}.bg-blue{background:#2196f3!important}.bg-blue-1{background:#e3f2fd!important}.bg-blue-2{background:#bbdefb!important}.bg-blue-3{background:#90caf9!important}.bg-blue-4{background:#64b5f6!important}.bg-blue-5{background:#42a5f5!important}.bg-blue-6{background:#2196f3!important}.bg-blue-7{background:#1e88e5!important}.bg-blue-8{background:#1976d2!important}.bg-blue-9{background:#1565c0!important}.bg-blue-10{background:#0d47a1!important}.bg-blue-11{background:#82b1ff!important}.bg-blue-12{background:#448aff!important}.bg-blue-13{background:#2979ff!important}.bg-blue-14{background:#2962ff!important}.bg-light-blue{background:#03a9f4!important}.bg-light-blue-1{background:#e1f5fe!important}.bg-light-blue-2{background:#b3e5fc!important}.bg-light-blue-3{background:#81d4fa!important}.bg-light-blue-4{background:#4fc3f7!important}.bg-light-blue-5{background:#29b6f6!important}.bg-light-blue-6{background:#03a9f4!important}.bg-light-blue-7{background:#039be5!important}.bg-light-blue-8{background:#0288d1!important}.bg-light-blue-9{background:#0277bd!important}.bg-light-blue-10{background:#01579b!important}.bg-light-blue-11{background:#80d8ff!important}.bg-light-blue-12{background:#40c4ff!important}.bg-light-blue-13{background:#00b0ff!important}.bg-light-blue-14{background:#0091ea!important}.bg-cyan{background:#00bcd4!important}.bg-cyan-1{background:#e0f7fa!important}.bg-cyan-2{background:#b2ebf2!important}.bg-cyan-3{background:#80deea!important}.bg-cyan-4{background:#4dd0e1!important}.bg-cyan-5{background:#26c6da!important}.bg-cyan-6{background:#00bcd4!important}.bg-cyan-7{background:#00acc1!important}.bg-cyan-8{background:#0097a7!important}.bg-cyan-9{background:#00838f!important}.bg-cyan-10{background:#006064!important}.bg-cyan-11{background:#84ffff!important}.bg-cyan-12{background:#18ffff!important}.bg-cyan-13{background:#00e5ff!important}.bg-cyan-14{background:#00b8d4!important}.bg-teal{background:#009688!important}.bg-teal-1{background:#e0f2f1!important}.bg-teal-2{background:#b2dfdb!important}.bg-teal-3{background:#80cbc4!important}.bg-teal-4{background:#4db6ac!important}.bg-teal-5{background:#26a69a!important}.bg-teal-6{background:#009688!important}.bg-teal-7{background:#00897b!important}.bg-teal-8{background:#00796b!important}.bg-teal-9{background:#00695c!important}.bg-teal-10{background:#004d40!important}.bg-teal-11{background:#a7ffeb!important}.bg-teal-12{background:#64ffda!important}.bg-teal-13{background:#1de9b6!important}.bg-teal-14{background:#00bfa5!important}.bg-green{background:#4caf50!important}.bg-green-1{background:#e8f5e9!important}.bg-green-2{background:#c8e6c9!important}.bg-green-3{background:#a5d6a7!important}.bg-green-4{background:#81c784!important}.bg-green-5{background:#66bb6a!important}.bg-green-6{background:#4caf50!important}.bg-green-7{background:#43a047!important}.bg-green-8{background:#388e3c!important}.bg-green-9{background:#2e7d32!important}.bg-green-10{background:#1b5e20!important}.bg-green-11{background:#b9f6ca!important}.bg-green-12{background:#69f0ae!important}.bg-green-13{background:#00e676!important}.bg-green-14{background:#00c853!important}.bg-light-green{background:#8bc34a!important}.bg-light-green-1{background:#f1f8e9!important}.bg-light-green-2{background:#dcedc8!important}.bg-light-green-3{background:#c5e1a5!important}.bg-light-green-4{background:#aed581!important}.bg-light-green-5{background:#9ccc65!important}.bg-light-green-6{background:#8bc34a!important}.bg-light-green-7{background:#7cb342!important}.bg-light-green-8{background:#689f38!important}.bg-light-green-9{background:#558b2f!important}.bg-light-green-10{background:#33691e!important}.bg-light-green-11{background:#ccff90!important}.bg-light-green-12{background:#b2ff59!important}.bg-light-green-13{background:#76ff03!important}.bg-light-green-14{background:#64dd17!important}.bg-lime{background:#cddc39!important}.bg-lime-1{background:#f9fbe7!important}.bg-lime-2{background:#f0f4c3!important}.bg-lime-3{background:#e6ee9c!important}.bg-lime-4{background:#dce775!important}.bg-lime-5{background:#d4e157!important}.bg-lime-6{background:#cddc39!important}.bg-lime-7{background:#c0ca33!important}.bg-lime-8{background:#afb42b!important}.bg-lime-9{background:#9e9d24!important}.bg-lime-10{background:#827717!important}.bg-lime-11{background:#f4ff81!important}.bg-lime-12{background:#eeff41!important}.bg-lime-13{background:#c6ff00!important}.bg-lime-14{background:#aeea00!important}.bg-yellow{background:#ffeb3b!important}.bg-yellow-1{background:#fffde7!important}.bg-yellow-2{background:#fff9c4!important}.bg-yellow-3{background:#fff59d!important}.bg-yellow-4{background:#fff176!important}.bg-yellow-5{background:#ffee58!important}.bg-yellow-6{background:#ffeb3b!important}.bg-yellow-7{background:#fdd835!important}.bg-yellow-8{background:#fbc02d!important}.bg-yellow-9{background:#f9a825!important}.bg-yellow-10{background:#f57f17!important}.bg-yellow-11{background:#ffff8d!important}.bg-yellow-12{background:#ff0!important}.bg-yellow-13{background:#ffea00!important}.bg-yellow-14{background:#ffd600!important}.bg-amber{background:#ffc107!important}.bg-amber-1{background:#fff8e1!important}.bg-amber-2{background:#ffecb3!important}.bg-amber-3{background:#ffe082!important}.bg-amber-4{background:#ffd54f!important}.bg-amber-5{background:#ffca28!important}.bg-amber-6{background:#ffc107!important}.bg-amber-7{background:#ffb300!important}.bg-amber-8{background:#ffa000!important}.bg-amber-9{background:#ff8f00!important}.bg-amber-10{background:#ff6f00!important}.bg-amber-11{background:#ffe57f!important}.bg-amber-12{background:#ffd740!important}.bg-amber-13{background:#ffc400!important}.bg-amber-14{background:#ffab00!important}.bg-orange{background:#ff9800!important}.bg-orange-1{background:#fff3e0!important}.bg-orange-2{background:#ffe0b2!important}.bg-orange-3{background:#ffcc80!important}.bg-orange-4{background:#ffb74d!important}.bg-orange-5{background:#ffa726!important}.bg-orange-6{background:#ff9800!important}.bg-orange-7{background:#fb8c00!important}.bg-orange-8{background:#f57c00!important}.bg-orange-9{background:#ef6c00!important}.bg-orange-10{background:#e65100!important}.bg-orange-11{background:#ffd180!important}.bg-orange-12{background:#ffab40!important}.bg-orange-13{background:#ff9100!important}.bg-orange-14{background:#ff6d00!important}.bg-deep-orange{background:#ff5722!important}.bg-deep-orange-1{background:#fbe9e7!important}.bg-deep-orange-2{background:#ffccbc!important}.bg-deep-orange-3{background:#ffab91!important}.bg-deep-orange-4{background:#ff8a65!important}.bg-deep-orange-5{background:#ff7043!important}.bg-deep-orange-6{background:#ff5722!important}.bg-deep-orange-7{background:#f4511e!important}.bg-deep-orange-8{background:#e64a19!important}.bg-deep-orange-9{background:#d84315!important}.bg-deep-orange-10{background:#bf360c!important}.bg-deep-orange-11{background:#ff9e80!important}.bg-deep-orange-12{background:#ff6e40!important}.bg-deep-orange-13{background:#ff3d00!important}.bg-deep-orange-14{background:#dd2c00!important}.bg-brown{background:#795548!important}.bg-brown-1{background:#efebe9!important}.bg-brown-2{background:#d7ccc8!important}.bg-brown-3{background:#bcaaa4!important}.bg-brown-4{background:#a1887f!important}.bg-brown-5{background:#8d6e63!important}.bg-brown-6{background:#795548!important}.bg-brown-7{background:#6d4c41!important}.bg-brown-8{background:#5d4037!important}.bg-brown-9{background:#4e342e!important}.bg-brown-10{background:#3e2723!important}.bg-brown-11{background:#d7ccc8!important}.bg-brown-12{background:#bcaaa4!important}.bg-brown-13{background:#8d6e63!important}.bg-brown-14{background:#5d4037!important}.bg-grey{background:#9e9e9e!important}.bg-grey-1{background:#fafafa!important}.bg-grey-2{background:#f5f5f5!important}.bg-grey-3{background:#eee!important}.bg-grey-4{background:#e0e0e0!important}.bg-grey-5{background:#bdbdbd!important}.bg-grey-6{background:#9e9e9e!important}.bg-grey-7{background:#757575!important}.bg-grey-8{background:#616161!important}.bg-grey-9{background:#424242!important}.bg-grey-10{background:#212121!important}.bg-grey-11{background:#f5f5f5!important}.bg-grey-12{background:#eee!important}.bg-grey-13{background:#bdbdbd!important}.bg-grey-14{background:#616161!important}.bg-blue-grey{background:#607d8b!important}.bg-blue-grey-1{background:#eceff1!important}.bg-blue-grey-2{background:#cfd8dc!important}.bg-blue-grey-3{background:#b0bec5!important}.bg-blue-grey-4{background:#90a4ae!important}.bg-blue-grey-5{background:#78909c!important}.bg-blue-grey-6{background:#607d8b!important}.bg-blue-grey-7{background:#546e7a!important}.bg-blue-grey-8{background:#455a64!important}.bg-blue-grey-9{background:#37474f!important}.bg-blue-grey-10{background:#263238!important}.bg-blue-grey-11{background:#cfd8dc!important}.bg-blue-grey-12{background:#b0bec5!important}.bg-blue-grey-13{background:#78909c!important}.bg-blue-grey-14{background:#455a64!important}.shadow-transition{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)!important}.shadow-1{box-shadow:0 1px 3px rgba(0,0,0,.2),0 1px 1px rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.shadow-up-1{box-shadow:0 -1px 3px rgba(0,0,0,.2),0 -1px 1px rgba(0,0,0,.14),0 -2px 1px -1px rgba(0,0,0,.12)}.shadow-2{box-shadow:0 1px 5px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.shadow-up-2{box-shadow:0 -1px 5px rgba(0,0,0,.2),0 -2px 2px rgba(0,0,0,.14),0 -3px 1px -2px rgba(0,0,0,.12)}.shadow-3{box-shadow:0 1px 8px rgba(0,0,0,.2),0 3px 4px rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.shadow-up-3{box-shadow:0 -1px 8px rgba(0,0,0,.2),0 -3px 4px rgba(0,0,0,.14),0 -3px 3px -2px rgba(0,0,0,.12)}.shadow-4{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.14),0 1px 10px rgba(0,0,0,.12)}.shadow-up-4{box-shadow:0 -2px 4px -1px rgba(0,0,0,.2),0 -4px 5px rgba(0,0,0,.14),0 -1px 10px rgba(0,0,0,.12)}.shadow-5{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px rgba(0,0,0,.14),0 1px 14px rgba(0,0,0,.12)}.shadow-up-5{box-shadow:0 -3px 5px -1px rgba(0,0,0,.2),0 -5px 8px rgba(0,0,0,.14),0 -1px 14px rgba(0,0,0,.12)}.shadow-6{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px rgba(0,0,0,.14),0 1px 18px rgba(0,0,0,.12)}.shadow-up-6{box-shadow:0 -3px 5px -1px rgba(0,0,0,.2),0 -6px 10px rgba(0,0,0,.14),0 -1px 18px rgba(0,0,0,.12)}.shadow-7{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.shadow-up-7{box-shadow:0 -4px 5px -2px rgba(0,0,0,.2),0 -7px 10px 1px rgba(0,0,0,.14),0 -2px 16px 1px rgba(0,0,0,.12)}.shadow-8{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.shadow-up-8{box-shadow:0 -5px 5px -3px rgba(0,0,0,.2),0 -8px 10px 1px rgba(0,0,0,.14),0 -3px 14px 2px rgba(0,0,0,.12)}.shadow-9{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.shadow-up-9{box-shadow:0 -5px 6px -3px rgba(0,0,0,.2),0 -9px 12px 1px rgba(0,0,0,.14),0 -3px 16px 2px rgba(0,0,0,.12)}.shadow-10{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.shadow-up-10{box-shadow:0 -6px 6px -3px rgba(0,0,0,.2),0 -10px 14px 1px rgba(0,0,0,.14),0 -4px 18px 3px rgba(0,0,0,.12)}.shadow-11{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.shadow-up-11{box-shadow:0 -6px 7px -4px rgba(0,0,0,.2),0 -11px 15px 1px rgba(0,0,0,.14),0 -4px 20px 3px rgba(0,0,0,.12)}.shadow-12{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.shadow-up-12{box-shadow:0 -7px 8px -4px rgba(0,0,0,.2),0 -12px 17px 2px rgba(0,0,0,.14),0 -5px 22px 4px rgba(0,0,0,.12)}.shadow-13{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.shadow-up-13{box-shadow:0 -7px 8px -4px rgba(0,0,0,.2),0 -13px 19px 2px rgba(0,0,0,.14),0 -5px 24px 4px rgba(0,0,0,.12)}.shadow-14{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.shadow-up-14{box-shadow:0 -7px 9px -4px rgba(0,0,0,.2),0 -14px 21px 2px rgba(0,0,0,.14),0 -5px 26px 4px rgba(0,0,0,.12)}.shadow-15{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.shadow-up-15{box-shadow:0 -8px 9px -5px rgba(0,0,0,.2),0 -15px 22px 2px rgba(0,0,0,.14),0 -6px 28px 5px rgba(0,0,0,.12)}.shadow-16{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.shadow-up-16{box-shadow:0 -8px 10px -5px rgba(0,0,0,.2),0 -16px 24px 2px rgba(0,0,0,.14),0 -6px 30px 5px rgba(0,0,0,.12)}.shadow-17{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.shadow-up-17{box-shadow:0 -8px 11px -5px rgba(0,0,0,.2),0 -17px 26px 2px rgba(0,0,0,.14),0 -6px 32px 5px rgba(0,0,0,.12)}.shadow-18{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.shadow-up-18{box-shadow:0 -9px 11px -5px rgba(0,0,0,.2),0 -18px 28px 2px rgba(0,0,0,.14),0 -7px 34px 6px rgba(0,0,0,.12)}.shadow-19{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.shadow-up-19{box-shadow:0 -9px 12px -6px rgba(0,0,0,.2),0 -19px 29px 2px rgba(0,0,0,.14),0 -7px 36px 6px rgba(0,0,0,.12)}.shadow-20{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.shadow-up-20{box-shadow:0 -10px 13px -6px rgba(0,0,0,.2),0 -20px 31px 3px rgba(0,0,0,.14),0 -8px 38px 7px rgba(0,0,0,.12)}.shadow-21{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.shadow-up-21{box-shadow:0 -10px 13px -6px rgba(0,0,0,.2),0 -21px 33px 3px rgba(0,0,0,.14),0 -8px 40px 7px rgba(0,0,0,.12)}.shadow-22{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.shadow-up-22{box-shadow:0 -10px 14px -6px rgba(0,0,0,.2),0 -22px 35px 3px rgba(0,0,0,.14),0 -8px 42px 7px rgba(0,0,0,.12)}.shadow-23{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.shadow-up-23{box-shadow:0 -11px 14px -7px rgba(0,0,0,.2),0 -23px 36px 3px rgba(0,0,0,.14),0 -9px 44px 8px rgba(0,0,0,.12)}.shadow-24{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}.shadow-up-24{box-shadow:0 -11px 15px -7px rgba(0,0,0,.2),0 -24px 38px 3px rgba(0,0,0,.14),0 -9px 46px 8px rgba(0,0,0,.12)}.inset-shadow{box-shadow:inset 0 7px 9px -7px rgba(0,0,0,.7)}.inset-shadow-down{box-shadow:inset 0 -7px 9px -7px rgba(0,0,0,.7)}body.body--dark .shadow-1{box-shadow:0 1px 3px hsla(0,0%,100%,.2),0 1px 1px hsla(0,0%,100%,.14),0 2px 1px -1px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-1{box-shadow:0 -1px 3px hsla(0,0%,100%,.2),0 -1px 1px hsla(0,0%,100%,.14),0 -2px 1px -1px hsla(0,0%,100%,.12)}body.body--dark .shadow-2{box-shadow:0 1px 5px hsla(0,0%,100%,.2),0 2px 2px hsla(0,0%,100%,.14),0 3px 1px -2px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-2{box-shadow:0 -1px 5px hsla(0,0%,100%,.2),0 -2px 2px hsla(0,0%,100%,.14),0 -3px 1px -2px hsla(0,0%,100%,.12)}body.body--dark .shadow-3{box-shadow:0 1px 8px hsla(0,0%,100%,.2),0 3px 4px hsla(0,0%,100%,.14),0 3px 3px -2px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-3{box-shadow:0 -1px 8px hsla(0,0%,100%,.2),0 -3px 4px hsla(0,0%,100%,.14),0 -3px 3px -2px hsla(0,0%,100%,.12)}body.body--dark .shadow-4{box-shadow:0 2px 4px -1px hsla(0,0%,100%,.2),0 4px 5px hsla(0,0%,100%,.14),0 1px 10px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-4{box-shadow:0 -2px 4px -1px hsla(0,0%,100%,.2),0 -4px 5px hsla(0,0%,100%,.14),0 -1px 10px hsla(0,0%,100%,.12)}body.body--dark .shadow-5{box-shadow:0 3px 5px -1px hsla(0,0%,100%,.2),0 5px 8px hsla(0,0%,100%,.14),0 1px 14px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-5{box-shadow:0 -3px 5px -1px hsla(0,0%,100%,.2),0 -5px 8px hsla(0,0%,100%,.14),0 -1px 14px hsla(0,0%,100%,.12)}body.body--dark .shadow-6{box-shadow:0 3px 5px -1px hsla(0,0%,100%,.2),0 6px 10px hsla(0,0%,100%,.14),0 1px 18px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-6{box-shadow:0 -3px 5px -1px hsla(0,0%,100%,.2),0 -6px 10px hsla(0,0%,100%,.14),0 -1px 18px hsla(0,0%,100%,.12)}body.body--dark .shadow-7{box-shadow:0 4px 5px -2px hsla(0,0%,100%,.2),0 7px 10px 1px hsla(0,0%,100%,.14),0 2px 16px 1px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-7{box-shadow:0 -4px 5px -2px hsla(0,0%,100%,.2),0 -7px 10px 1px hsla(0,0%,100%,.14),0 -2px 16px 1px hsla(0,0%,100%,.12)}body.body--dark .shadow-8{box-shadow:0 5px 5px -3px hsla(0,0%,100%,.2),0 8px 10px 1px hsla(0,0%,100%,.14),0 3px 14px 2px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-8{box-shadow:0 -5px 5px -3px hsla(0,0%,100%,.2),0 -8px 10px 1px hsla(0,0%,100%,.14),0 -3px 14px 2px hsla(0,0%,100%,.12)}body.body--dark .shadow-9{box-shadow:0 5px 6px -3px hsla(0,0%,100%,.2),0 9px 12px 1px hsla(0,0%,100%,.14),0 3px 16px 2px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-9{box-shadow:0 -5px 6px -3px hsla(0,0%,100%,.2),0 -9px 12px 1px hsla(0,0%,100%,.14),0 -3px 16px 2px hsla(0,0%,100%,.12)}body.body--dark .shadow-10{box-shadow:0 6px 6px -3px hsla(0,0%,100%,.2),0 10px 14px 1px hsla(0,0%,100%,.14),0 4px 18px 3px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-10{box-shadow:0 -6px 6px -3px hsla(0,0%,100%,.2),0 -10px 14px 1px hsla(0,0%,100%,.14),0 -4px 18px 3px hsla(0,0%,100%,.12)}body.body--dark .shadow-11{box-shadow:0 6px 7px -4px hsla(0,0%,100%,.2),0 11px 15px 1px hsla(0,0%,100%,.14),0 4px 20px 3px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-11{box-shadow:0 -6px 7px -4px hsla(0,0%,100%,.2),0 -11px 15px 1px hsla(0,0%,100%,.14),0 -4px 20px 3px hsla(0,0%,100%,.12)}body.body--dark .shadow-12{box-shadow:0 7px 8px -4px hsla(0,0%,100%,.2),0 12px 17px 2px hsla(0,0%,100%,.14),0 5px 22px 4px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-12{box-shadow:0 -7px 8px -4px hsla(0,0%,100%,.2),0 -12px 17px 2px hsla(0,0%,100%,.14),0 -5px 22px 4px hsla(0,0%,100%,.12)}body.body--dark .shadow-13{box-shadow:0 7px 8px -4px hsla(0,0%,100%,.2),0 13px 19px 2px hsla(0,0%,100%,.14),0 5px 24px 4px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-13{box-shadow:0 -7px 8px -4px hsla(0,0%,100%,.2),0 -13px 19px 2px hsla(0,0%,100%,.14),0 -5px 24px 4px hsla(0,0%,100%,.12)}body.body--dark .shadow-14{box-shadow:0 7px 9px -4px hsla(0,0%,100%,.2),0 14px 21px 2px hsla(0,0%,100%,.14),0 5px 26px 4px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-14{box-shadow:0 -7px 9px -4px hsla(0,0%,100%,.2),0 -14px 21px 2px hsla(0,0%,100%,.14),0 -5px 26px 4px hsla(0,0%,100%,.12)}body.body--dark .shadow-15{box-shadow:0 8px 9px -5px hsla(0,0%,100%,.2),0 15px 22px 2px hsla(0,0%,100%,.14),0 6px 28px 5px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-15{box-shadow:0 -8px 9px -5px hsla(0,0%,100%,.2),0 -15px 22px 2px hsla(0,0%,100%,.14),0 -6px 28px 5px hsla(0,0%,100%,.12)}body.body--dark .shadow-16{box-shadow:0 8px 10px -5px hsla(0,0%,100%,.2),0 16px 24px 2px hsla(0,0%,100%,.14),0 6px 30px 5px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-16{box-shadow:0 -8px 10px -5px hsla(0,0%,100%,.2),0 -16px 24px 2px hsla(0,0%,100%,.14),0 -6px 30px 5px hsla(0,0%,100%,.12)}body.body--dark .shadow-17{box-shadow:0 8px 11px -5px hsla(0,0%,100%,.2),0 17px 26px 2px hsla(0,0%,100%,.14),0 6px 32px 5px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-17{box-shadow:0 -8px 11px -5px hsla(0,0%,100%,.2),0 -17px 26px 2px hsla(0,0%,100%,.14),0 -6px 32px 5px hsla(0,0%,100%,.12)}body.body--dark .shadow-18{box-shadow:0 9px 11px -5px hsla(0,0%,100%,.2),0 18px 28px 2px hsla(0,0%,100%,.14),0 7px 34px 6px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-18{box-shadow:0 -9px 11px -5px hsla(0,0%,100%,.2),0 -18px 28px 2px hsla(0,0%,100%,.14),0 -7px 34px 6px hsla(0,0%,100%,.12)}body.body--dark .shadow-19{box-shadow:0 9px 12px -6px hsla(0,0%,100%,.2),0 19px 29px 2px hsla(0,0%,100%,.14),0 7px 36px 6px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-19{box-shadow:0 -9px 12px -6px hsla(0,0%,100%,.2),0 -19px 29px 2px hsla(0,0%,100%,.14),0 -7px 36px 6px hsla(0,0%,100%,.12)}body.body--dark .shadow-20{box-shadow:0 10px 13px -6px hsla(0,0%,100%,.2),0 20px 31px 3px hsla(0,0%,100%,.14),0 8px 38px 7px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-20{box-shadow:0 -10px 13px -6px hsla(0,0%,100%,.2),0 -20px 31px 3px hsla(0,0%,100%,.14),0 -8px 38px 7px hsla(0,0%,100%,.12)}body.body--dark .shadow-21{box-shadow:0 10px 13px -6px hsla(0,0%,100%,.2),0 21px 33px 3px hsla(0,0%,100%,.14),0 8px 40px 7px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-21{box-shadow:0 -10px 13px -6px hsla(0,0%,100%,.2),0 -21px 33px 3px hsla(0,0%,100%,.14),0 -8px 40px 7px hsla(0,0%,100%,.12)}body.body--dark .shadow-22{box-shadow:0 10px 14px -6px hsla(0,0%,100%,.2),0 22px 35px 3px hsla(0,0%,100%,.14),0 8px 42px 7px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-22{box-shadow:0 -10px 14px -6px hsla(0,0%,100%,.2),0 -22px 35px 3px hsla(0,0%,100%,.14),0 -8px 42px 7px hsla(0,0%,100%,.12)}body.body--dark .shadow-23{box-shadow:0 11px 14px -7px hsla(0,0%,100%,.2),0 23px 36px 3px hsla(0,0%,100%,.14),0 9px 44px 8px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-23{box-shadow:0 -11px 14px -7px hsla(0,0%,100%,.2),0 -23px 36px 3px hsla(0,0%,100%,.14),0 -9px 44px 8px hsla(0,0%,100%,.12)}body.body--dark .shadow-24{box-shadow:0 11px 15px -7px hsla(0,0%,100%,.2),0 24px 38px 3px hsla(0,0%,100%,.14),0 9px 46px 8px hsla(0,0%,100%,.12)}body.body--dark .shadow-up-24{box-shadow:0 -11px 15px -7px hsla(0,0%,100%,.2),0 -24px 38px 3px hsla(0,0%,100%,.14),0 -9px 46px 8px hsla(0,0%,100%,.12)}body.body--dark .inset-shadow{box-shadow:inset 0 7px 9px -7px hsla(0,0%,100%,.7)}body.body--dark .inset-shadow-down{box-shadow:inset 0 -7px 9px -7px hsla(0,0%,100%,.7)}.no-shadow,.shadow-0{box-shadow:none!important}.z-marginals{z-index:2000}.z-notify{z-index:9500}.z-fullscreen{z-index:6000}.z-inherit{z-index:inherit!important}.column,.flex,.row{display:flex;flex-wrap:wrap}.column.inline,.flex.inline,.row.inline{display:inline-flex}.row.reverse{flex-direction:row-reverse}.column{flex-direction:column}.column.reverse{flex-direction:column-reverse}.wrap{flex-wrap:wrap}.no-wrap{flex-wrap:nowrap}.reverse-wrap{flex-wrap:wrap-reverse}.order-first{order:-10000}.order-last{order:10000}.order-none{order:0}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.flex-center,.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.flex-center,.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-stretch{align-content:stretch}.content-between{align-content:space-between}.content-around{align-content:space-around}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-baseline{align-self:baseline}.self-stretch{align-self:stretch}.q-gutter-none,.q-gutter-none>*,.q-gutter-x-none,.q-gutter-x-none>*{margin-left:0}.q-gutter-none,.q-gutter-none>*,.q-gutter-y-none,.q-gutter-y-none>*{margin-top:0}.q-col-gutter-none,.q-col-gutter-x-none{margin-left:0}.q-col-gutter-none>*,.q-col-gutter-x-none>*{padding-left:0}.q-col-gutter-none,.q-col-gutter-y-none{margin-top:0}.q-col-gutter-none>*,.q-col-gutter-y-none>*{padding-top:0}.q-gutter-x-xs,.q-gutter-xs{margin-left:-4px}.q-gutter-x-xs>*,.q-gutter-xs>*{margin-left:4px}.q-gutter-xs,.q-gutter-y-xs{margin-top:-4px}.q-gutter-xs>*,.q-gutter-y-xs>*{margin-top:4px}.q-col-gutter-x-xs,.q-col-gutter-xs{margin-left:-4px}.q-col-gutter-x-xs>*,.q-col-gutter-xs>*{padding-left:4px}.q-col-gutter-xs,.q-col-gutter-y-xs{margin-top:-4px}.q-col-gutter-xs>*,.q-col-gutter-y-xs>*{padding-top:4px}.q-gutter-sm,.q-gutter-x-sm{margin-left:-8px}.q-gutter-sm>*,.q-gutter-x-sm>*{margin-left:8px}.q-gutter-sm,.q-gutter-y-sm{margin-top:-8px}.q-gutter-sm>*,.q-gutter-y-sm>*{margin-top:8px}.q-col-gutter-sm,.q-col-gutter-x-sm{margin-left:-8px}.q-col-gutter-sm>*,.q-col-gutter-x-sm>*{padding-left:8px}.q-col-gutter-sm,.q-col-gutter-y-sm{margin-top:-8px}.q-col-gutter-sm>*,.q-col-gutter-y-sm>*{padding-top:8px}.q-gutter-md,.q-gutter-x-md{margin-left:-16px}.q-gutter-md>*,.q-gutter-x-md>*{margin-left:16px}.q-gutter-md,.q-gutter-y-md{margin-top:-16px}.q-gutter-md>*,.q-gutter-y-md>*{margin-top:16px}.q-col-gutter-md,.q-col-gutter-x-md{margin-left:-16px}.q-col-gutter-md>*,.q-col-gutter-x-md>*{padding-left:16px}.q-col-gutter-md,.q-col-gutter-y-md{margin-top:-16px}.q-col-gutter-md>*,.q-col-gutter-y-md>*{padding-top:16px}.q-gutter-lg,.q-gutter-x-lg{margin-left:-24px}.q-gutter-lg>*,.q-gutter-x-lg>*{margin-left:24px}.q-gutter-lg,.q-gutter-y-lg{margin-top:-24px}.q-gutter-lg>*,.q-gutter-y-lg>*{margin-top:24px}.q-col-gutter-lg,.q-col-gutter-x-lg{margin-left:-24px}.q-col-gutter-lg>*,.q-col-gutter-x-lg>*{padding-left:24px}.q-col-gutter-lg,.q-col-gutter-y-lg{margin-top:-24px}.q-col-gutter-lg>*,.q-col-gutter-y-lg>*{padding-top:24px}.q-gutter-x-xl,.q-gutter-xl{margin-left:-48px}.q-gutter-x-xl>*,.q-gutter-xl>*{margin-left:48px}.q-gutter-xl,.q-gutter-y-xl{margin-top:-48px}.q-gutter-xl>*,.q-gutter-y-xl>*{margin-top:48px}.q-col-gutter-x-xl,.q-col-gutter-xl{margin-left:-48px}.q-col-gutter-x-xl>*,.q-col-gutter-xl>*{padding-left:48px}.q-col-gutter-xl,.q-col-gutter-y-xl{margin-top:-48px}.q-col-gutter-xl>*,.q-col-gutter-y-xl>*{padding-top:48px}@media (min-width:0){.flex>.col,.flex>.col-0,.flex>.col-1,.flex>.col-10,.flex>.col-11,.flex>.col-12,.flex>.col-2,.flex>.col-3,.flex>.col-4,.flex>.col-5,.flex>.col-6,.flex>.col-7,.flex>.col-8,.flex>.col-9,.flex>.col-auto,.flex>.col-grow,.flex>.col-shrink,.flex>.col-xs,.flex>.col-xs-0,.flex>.col-xs-1,.flex>.col-xs-10,.flex>.col-xs-11,.flex>.col-xs-12,.flex>.col-xs-2,.flex>.col-xs-3,.flex>.col-xs-4,.flex>.col-xs-5,.flex>.col-xs-6,.flex>.col-xs-7,.flex>.col-xs-8,.flex>.col-xs-9,.flex>.col-xs-auto,.flex>.col-xs-grow,.flex>.col-xs-shrink,.row>.col,.row>.col-0,.row>.col-1,.row>.col-10,.row>.col-11,.row>.col-12,.row>.col-2,.row>.col-3,.row>.col-4,.row>.col-5,.row>.col-6,.row>.col-7,.row>.col-8,.row>.col-9,.row>.col-auto,.row>.col-grow,.row>.col-shrink,.row>.col-xs,.row>.col-xs-0,.row>.col-xs-1,.row>.col-xs-10,.row>.col-xs-11,.row>.col-xs-12,.row>.col-xs-2,.row>.col-xs-3,.row>.col-xs-4,.row>.col-xs-5,.row>.col-xs-6,.row>.col-xs-7,.row>.col-xs-8,.row>.col-xs-9,.row>.col-xs-auto,.row>.col-xs-grow,.row>.col-xs-shrink{width:auto;min-width:0;max-width:100%}.column>.col,.column>.col-0,.column>.col-1,.column>.col-10,.column>.col-11,.column>.col-12,.column>.col-2,.column>.col-3,.column>.col-4,.column>.col-5,.column>.col-6,.column>.col-7,.column>.col-8,.column>.col-9,.column>.col-auto,.column>.col-grow,.column>.col-shrink,.column>.col-xs,.column>.col-xs-0,.column>.col-xs-1,.column>.col-xs-10,.column>.col-xs-11,.column>.col-xs-12,.column>.col-xs-2,.column>.col-xs-3,.column>.col-xs-4,.column>.col-xs-5,.column>.col-xs-6,.column>.col-xs-7,.column>.col-xs-8,.column>.col-xs-9,.column>.col-xs-auto,.column>.col-xs-grow,.column>.col-xs-shrink,.flex>.col,.flex>.col-0,.flex>.col-1,.flex>.col-10,.flex>.col-11,.flex>.col-12,.flex>.col-2,.flex>.col-3,.flex>.col-4,.flex>.col-5,.flex>.col-6,.flex>.col-7,.flex>.col-8,.flex>.col-9,.flex>.col-auto,.flex>.col-grow,.flex>.col-shrink,.flex>.col-xs,.flex>.col-xs-0,.flex>.col-xs-1,.flex>.col-xs-10,.flex>.col-xs-11,.flex>.col-xs-12,.flex>.col-xs-2,.flex>.col-xs-3,.flex>.col-xs-4,.flex>.col-xs-5,.flex>.col-xs-6,.flex>.col-xs-7,.flex>.col-xs-8,.flex>.col-xs-9,.flex>.col-xs-auto,.flex>.col-xs-grow,.flex>.col-xs-shrink{height:auto;min-height:0;max-height:100%}.col,.col-xs{flex:10000 1 0%}.col-0,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-xs-0,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-auto{flex:0 0 auto}.col-grow,.col-xs-grow{flex:1 0 auto}.col-shrink,.col-xs-shrink{flex:0 1 auto}.row>.col-0,.row>.col-xs-0{height:auto;width:0}.row>.offset-0,.row>.offset-xs-0{margin-left:0}.column>.col-0,.column>.col-xs-0{height:0;width:auto}.row>.col-1,.row>.col-xs-1{height:auto;width:8.3333%}.row>.offset-1,.row>.offset-xs-1{margin-left:8.3333%}.column>.col-1,.column>.col-xs-1{height:8.3333%;width:auto}.row>.col-2,.row>.col-xs-2{height:auto;width:16.6667%}.row>.offset-2,.row>.offset-xs-2{margin-left:16.6667%}.column>.col-2,.column>.col-xs-2{height:16.6667%;width:auto}.row>.col-3,.row>.col-xs-3{height:auto;width:25%}.row>.offset-3,.row>.offset-xs-3{margin-left:25%}.column>.col-3,.column>.col-xs-3{height:25%;width:auto}.row>.col-4,.row>.col-xs-4{height:auto;width:33.3333%}.row>.offset-4,.row>.offset-xs-4{margin-left:33.3333%}.column>.col-4,.column>.col-xs-4{height:33.3333%;width:auto}.row>.col-5,.row>.col-xs-5{height:auto;width:41.6667%}.row>.offset-5,.row>.offset-xs-5{margin-left:41.6667%}.column>.col-5,.column>.col-xs-5{height:41.6667%;width:auto}.row>.col-6,.row>.col-xs-6{height:auto;width:50%}.row>.offset-6,.row>.offset-xs-6{margin-left:50%}.column>.col-6,.column>.col-xs-6{height:50%;width:auto}.row>.col-7,.row>.col-xs-7{height:auto;width:58.3333%}.row>.offset-7,.row>.offset-xs-7{margin-left:58.3333%}.column>.col-7,.column>.col-xs-7{height:58.3333%;width:auto}.row>.col-8,.row>.col-xs-8{height:auto;width:66.6667%}.row>.offset-8,.row>.offset-xs-8{margin-left:66.6667%}.column>.col-8,.column>.col-xs-8{height:66.6667%;width:auto}.row>.col-9,.row>.col-xs-9{height:auto;width:75%}.row>.offset-9,.row>.offset-xs-9{margin-left:75%}.column>.col-9,.column>.col-xs-9{height:75%;width:auto}.row>.col-10,.row>.col-xs-10{height:auto;width:83.3333%}.row>.offset-10,.row>.offset-xs-10{margin-left:83.3333%}.column>.col-10,.column>.col-xs-10{height:83.3333%;width:auto}.row>.col-11,.row>.col-xs-11{height:auto;width:91.6667%}.row>.offset-11,.row>.offset-xs-11{margin-left:91.6667%}.column>.col-11,.column>.col-xs-11{height:91.6667%;width:auto}.row>.col-12,.row>.col-xs-12{height:auto;width:100%}.row>.offset-12,.row>.offset-xs-12{margin-left:100%}.column>.col-12,.column>.col-xs-12{height:100%;width:auto}.row>.col-all{height:auto;flex:0 0 100%}}@media (min-width:600px){.flex>.col-sm,.flex>.col-sm-0,.flex>.col-sm-1,.flex>.col-sm-10,.flex>.col-sm-11,.flex>.col-sm-12,.flex>.col-sm-2,.flex>.col-sm-3,.flex>.col-sm-4,.flex>.col-sm-5,.flex>.col-sm-6,.flex>.col-sm-7,.flex>.col-sm-8,.flex>.col-sm-9,.flex>.col-sm-auto,.flex>.col-sm-grow,.flex>.col-sm-shrink,.row>.col-sm,.row>.col-sm-0,.row>.col-sm-1,.row>.col-sm-10,.row>.col-sm-11,.row>.col-sm-12,.row>.col-sm-2,.row>.col-sm-3,.row>.col-sm-4,.row>.col-sm-5,.row>.col-sm-6,.row>.col-sm-7,.row>.col-sm-8,.row>.col-sm-9,.row>.col-sm-auto,.row>.col-sm-grow,.row>.col-sm-shrink{width:auto;min-width:0;max-width:100%}.column>.col-sm,.column>.col-sm-0,.column>.col-sm-1,.column>.col-sm-10,.column>.col-sm-11,.column>.col-sm-12,.column>.col-sm-2,.column>.col-sm-3,.column>.col-sm-4,.column>.col-sm-5,.column>.col-sm-6,.column>.col-sm-7,.column>.col-sm-8,.column>.col-sm-9,.column>.col-sm-auto,.column>.col-sm-grow,.column>.col-sm-shrink,.flex>.col-sm,.flex>.col-sm-0,.flex>.col-sm-1,.flex>.col-sm-10,.flex>.col-sm-11,.flex>.col-sm-12,.flex>.col-sm-2,.flex>.col-sm-3,.flex>.col-sm-4,.flex>.col-sm-5,.flex>.col-sm-6,.flex>.col-sm-7,.flex>.col-sm-8,.flex>.col-sm-9,.flex>.col-sm-auto,.flex>.col-sm-grow,.flex>.col-sm-shrink{height:auto;min-height:0;max-height:100%}.col-sm{flex:10000 1 0%}.col-sm-0,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto{flex:0 0 auto}.col-sm-grow{flex:1 0 auto}.col-sm-shrink{flex:0 1 auto}.row>.col-sm-0{height:auto;width:0}.row>.offset-sm-0{margin-left:0}.column>.col-sm-0{height:0;width:auto}.row>.col-sm-1{height:auto;width:8.3333%}.row>.offset-sm-1{margin-left:8.3333%}.column>.col-sm-1{height:8.3333%;width:auto}.row>.col-sm-2{height:auto;width:16.6667%}.row>.offset-sm-2{margin-left:16.6667%}.column>.col-sm-2{height:16.6667%;width:auto}.row>.col-sm-3{height:auto;width:25%}.row>.offset-sm-3{margin-left:25%}.column>.col-sm-3{height:25%;width:auto}.row>.col-sm-4{height:auto;width:33.3333%}.row>.offset-sm-4{margin-left:33.3333%}.column>.col-sm-4{height:33.3333%;width:auto}.row>.col-sm-5{height:auto;width:41.6667%}.row>.offset-sm-5{margin-left:41.6667%}.column>.col-sm-5{height:41.6667%;width:auto}.row>.col-sm-6{height:auto;width:50%}.row>.offset-sm-6{margin-left:50%}.column>.col-sm-6{height:50%;width:auto}.row>.col-sm-7{height:auto;width:58.3333%}.row>.offset-sm-7{margin-left:58.3333%}.column>.col-sm-7{height:58.3333%;width:auto}.row>.col-sm-8{height:auto;width:66.6667%}.row>.offset-sm-8{margin-left:66.6667%}.column>.col-sm-8{height:66.6667%;width:auto}.row>.col-sm-9{height:auto;width:75%}.row>.offset-sm-9{margin-left:75%}.column>.col-sm-9{height:75%;width:auto}.row>.col-sm-10{height:auto;width:83.3333%}.row>.offset-sm-10{margin-left:83.3333%}.column>.col-sm-10{height:83.3333%;width:auto}.row>.col-sm-11{height:auto;width:91.6667%}.row>.offset-sm-11{margin-left:91.6667%}.column>.col-sm-11{height:91.6667%;width:auto}.row>.col-sm-12{height:auto;width:100%}.row>.offset-sm-12{margin-left:100%}.column>.col-sm-12{height:100%;width:auto}}@media (min-width:1024px){.flex>.col-md,.flex>.col-md-0,.flex>.col-md-1,.flex>.col-md-10,.flex>.col-md-11,.flex>.col-md-12,.flex>.col-md-2,.flex>.col-md-3,.flex>.col-md-4,.flex>.col-md-5,.flex>.col-md-6,.flex>.col-md-7,.flex>.col-md-8,.flex>.col-md-9,.flex>.col-md-auto,.flex>.col-md-grow,.flex>.col-md-shrink,.row>.col-md,.row>.col-md-0,.row>.col-md-1,.row>.col-md-10,.row>.col-md-11,.row>.col-md-12,.row>.col-md-2,.row>.col-md-3,.row>.col-md-4,.row>.col-md-5,.row>.col-md-6,.row>.col-md-7,.row>.col-md-8,.row>.col-md-9,.row>.col-md-auto,.row>.col-md-grow,.row>.col-md-shrink{width:auto;min-width:0;max-width:100%}.column>.col-md,.column>.col-md-0,.column>.col-md-1,.column>.col-md-10,.column>.col-md-11,.column>.col-md-12,.column>.col-md-2,.column>.col-md-3,.column>.col-md-4,.column>.col-md-5,.column>.col-md-6,.column>.col-md-7,.column>.col-md-8,.column>.col-md-9,.column>.col-md-auto,.column>.col-md-grow,.column>.col-md-shrink,.flex>.col-md,.flex>.col-md-0,.flex>.col-md-1,.flex>.col-md-10,.flex>.col-md-11,.flex>.col-md-12,.flex>.col-md-2,.flex>.col-md-3,.flex>.col-md-4,.flex>.col-md-5,.flex>.col-md-6,.flex>.col-md-7,.flex>.col-md-8,.flex>.col-md-9,.flex>.col-md-auto,.flex>.col-md-grow,.flex>.col-md-shrink{height:auto;min-height:0;max-height:100%}.col-md{flex:10000 1 0%}.col-md-0,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto{flex:0 0 auto}.col-md-grow{flex:1 0 auto}.col-md-shrink{flex:0 1 auto}.row>.col-md-0{height:auto;width:0}.row>.offset-md-0{margin-left:0}.column>.col-md-0{height:0;width:auto}.row>.col-md-1{height:auto;width:8.3333%}.row>.offset-md-1{margin-left:8.3333%}.column>.col-md-1{height:8.3333%;width:auto}.row>.col-md-2{height:auto;width:16.6667%}.row>.offset-md-2{margin-left:16.6667%}.column>.col-md-2{height:16.6667%;width:auto}.row>.col-md-3{height:auto;width:25%}.row>.offset-md-3{margin-left:25%}.column>.col-md-3{height:25%;width:auto}.row>.col-md-4{height:auto;width:33.3333%}.row>.offset-md-4{margin-left:33.3333%}.column>.col-md-4{height:33.3333%;width:auto}.row>.col-md-5{height:auto;width:41.6667%}.row>.offset-md-5{margin-left:41.6667%}.column>.col-md-5{height:41.6667%;width:auto}.row>.col-md-6{height:auto;width:50%}.row>.offset-md-6{margin-left:50%}.column>.col-md-6{height:50%;width:auto}.row>.col-md-7{height:auto;width:58.3333%}.row>.offset-md-7{margin-left:58.3333%}.column>.col-md-7{height:58.3333%;width:auto}.row>.col-md-8{height:auto;width:66.6667%}.row>.offset-md-8{margin-left:66.6667%}.column>.col-md-8{height:66.6667%;width:auto}.row>.col-md-9{height:auto;width:75%}.row>.offset-md-9{margin-left:75%}.column>.col-md-9{height:75%;width:auto}.row>.col-md-10{height:auto;width:83.3333%}.row>.offset-md-10{margin-left:83.3333%}.column>.col-md-10{height:83.3333%;width:auto}.row>.col-md-11{height:auto;width:91.6667%}.row>.offset-md-11{margin-left:91.6667%}.column>.col-md-11{height:91.6667%;width:auto}.row>.col-md-12{height:auto;width:100%}.row>.offset-md-12{margin-left:100%}.column>.col-md-12{height:100%;width:auto}}@media (min-width:1440px){.flex>.col-lg,.flex>.col-lg-0,.flex>.col-lg-1,.flex>.col-lg-10,.flex>.col-lg-11,.flex>.col-lg-12,.flex>.col-lg-2,.flex>.col-lg-3,.flex>.col-lg-4,.flex>.col-lg-5,.flex>.col-lg-6,.flex>.col-lg-7,.flex>.col-lg-8,.flex>.col-lg-9,.flex>.col-lg-auto,.flex>.col-lg-grow,.flex>.col-lg-shrink,.row>.col-lg,.row>.col-lg-0,.row>.col-lg-1,.row>.col-lg-10,.row>.col-lg-11,.row>.col-lg-12,.row>.col-lg-2,.row>.col-lg-3,.row>.col-lg-4,.row>.col-lg-5,.row>.col-lg-6,.row>.col-lg-7,.row>.col-lg-8,.row>.col-lg-9,.row>.col-lg-auto,.row>.col-lg-grow,.row>.col-lg-shrink{width:auto;min-width:0;max-width:100%}.column>.col-lg,.column>.col-lg-0,.column>.col-lg-1,.column>.col-lg-10,.column>.col-lg-11,.column>.col-lg-12,.column>.col-lg-2,.column>.col-lg-3,.column>.col-lg-4,.column>.col-lg-5,.column>.col-lg-6,.column>.col-lg-7,.column>.col-lg-8,.column>.col-lg-9,.column>.col-lg-auto,.column>.col-lg-grow,.column>.col-lg-shrink,.flex>.col-lg,.flex>.col-lg-0,.flex>.col-lg-1,.flex>.col-lg-10,.flex>.col-lg-11,.flex>.col-lg-12,.flex>.col-lg-2,.flex>.col-lg-3,.flex>.col-lg-4,.flex>.col-lg-5,.flex>.col-lg-6,.flex>.col-lg-7,.flex>.col-lg-8,.flex>.col-lg-9,.flex>.col-lg-auto,.flex>.col-lg-grow,.flex>.col-lg-shrink{height:auto;min-height:0;max-height:100%}.col-lg{flex:10000 1 0%}.col-lg-0,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto{flex:0 0 auto}.col-lg-grow{flex:1 0 auto}.col-lg-shrink{flex:0 1 auto}.row>.col-lg-0{height:auto;width:0}.row>.offset-lg-0{margin-left:0}.column>.col-lg-0{height:0;width:auto}.row>.col-lg-1{height:auto;width:8.3333%}.row>.offset-lg-1{margin-left:8.3333%}.column>.col-lg-1{height:8.3333%;width:auto}.row>.col-lg-2{height:auto;width:16.6667%}.row>.offset-lg-2{margin-left:16.6667%}.column>.col-lg-2{height:16.6667%;width:auto}.row>.col-lg-3{height:auto;width:25%}.row>.offset-lg-3{margin-left:25%}.column>.col-lg-3{height:25%;width:auto}.row>.col-lg-4{height:auto;width:33.3333%}.row>.offset-lg-4{margin-left:33.3333%}.column>.col-lg-4{height:33.3333%;width:auto}.row>.col-lg-5{height:auto;width:41.6667%}.row>.offset-lg-5{margin-left:41.6667%}.column>.col-lg-5{height:41.6667%;width:auto}.row>.col-lg-6{height:auto;width:50%}.row>.offset-lg-6{margin-left:50%}.column>.col-lg-6{height:50%;width:auto}.row>.col-lg-7{height:auto;width:58.3333%}.row>.offset-lg-7{margin-left:58.3333%}.column>.col-lg-7{height:58.3333%;width:auto}.row>.col-lg-8{height:auto;width:66.6667%}.row>.offset-lg-8{margin-left:66.6667%}.column>.col-lg-8{height:66.6667%;width:auto}.row>.col-lg-9{height:auto;width:75%}.row>.offset-lg-9{margin-left:75%}.column>.col-lg-9{height:75%;width:auto}.row>.col-lg-10{height:auto;width:83.3333%}.row>.offset-lg-10{margin-left:83.3333%}.column>.col-lg-10{height:83.3333%;width:auto}.row>.col-lg-11{height:auto;width:91.6667%}.row>.offset-lg-11{margin-left:91.6667%}.column>.col-lg-11{height:91.6667%;width:auto}.row>.col-lg-12{height:auto;width:100%}.row>.offset-lg-12{margin-left:100%}.column>.col-lg-12{height:100%;width:auto}}@media (min-width:1920px){.flex>.col-xl,.flex>.col-xl-0,.flex>.col-xl-1,.flex>.col-xl-10,.flex>.col-xl-11,.flex>.col-xl-12,.flex>.col-xl-2,.flex>.col-xl-3,.flex>.col-xl-4,.flex>.col-xl-5,.flex>.col-xl-6,.flex>.col-xl-7,.flex>.col-xl-8,.flex>.col-xl-9,.flex>.col-xl-auto,.flex>.col-xl-grow,.flex>.col-xl-shrink,.row>.col-xl,.row>.col-xl-0,.row>.col-xl-1,.row>.col-xl-10,.row>.col-xl-11,.row>.col-xl-12,.row>.col-xl-2,.row>.col-xl-3,.row>.col-xl-4,.row>.col-xl-5,.row>.col-xl-6,.row>.col-xl-7,.row>.col-xl-8,.row>.col-xl-9,.row>.col-xl-auto,.row>.col-xl-grow,.row>.col-xl-shrink{width:auto;min-width:0;max-width:100%}.column>.col-xl,.column>.col-xl-0,.column>.col-xl-1,.column>.col-xl-10,.column>.col-xl-11,.column>.col-xl-12,.column>.col-xl-2,.column>.col-xl-3,.column>.col-xl-4,.column>.col-xl-5,.column>.col-xl-6,.column>.col-xl-7,.column>.col-xl-8,.column>.col-xl-9,.column>.col-xl-auto,.column>.col-xl-grow,.column>.col-xl-shrink,.flex>.col-xl,.flex>.col-xl-0,.flex>.col-xl-1,.flex>.col-xl-10,.flex>.col-xl-11,.flex>.col-xl-12,.flex>.col-xl-2,.flex>.col-xl-3,.flex>.col-xl-4,.flex>.col-xl-5,.flex>.col-xl-6,.flex>.col-xl-7,.flex>.col-xl-8,.flex>.col-xl-9,.flex>.col-xl-auto,.flex>.col-xl-grow,.flex>.col-xl-shrink{height:auto;min-height:0;max-height:100%}.col-xl{flex:10000 1 0%}.col-xl-0,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{flex:0 0 auto}.col-xl-grow{flex:1 0 auto}.col-xl-shrink{flex:0 1 auto}.row>.col-xl-0{height:auto;width:0}.row>.offset-xl-0{margin-left:0}.column>.col-xl-0{height:0;width:auto}.row>.col-xl-1{height:auto;width:8.3333%}.row>.offset-xl-1{margin-left:8.3333%}.column>.col-xl-1{height:8.3333%;width:auto}.row>.col-xl-2{height:auto;width:16.6667%}.row>.offset-xl-2{margin-left:16.6667%}.column>.col-xl-2{height:16.6667%;width:auto}.row>.col-xl-3{height:auto;width:25%}.row>.offset-xl-3{margin-left:25%}.column>.col-xl-3{height:25%;width:auto}.row>.col-xl-4{height:auto;width:33.3333%}.row>.offset-xl-4{margin-left:33.3333%}.column>.col-xl-4{height:33.3333%;width:auto}.row>.col-xl-5{height:auto;width:41.6667%}.row>.offset-xl-5{margin-left:41.6667%}.column>.col-xl-5{height:41.6667%;width:auto}.row>.col-xl-6{height:auto;width:50%}.row>.offset-xl-6{margin-left:50%}.column>.col-xl-6{height:50%;width:auto}.row>.col-xl-7{height:auto;width:58.3333%}.row>.offset-xl-7{margin-left:58.3333%}.column>.col-xl-7{height:58.3333%;width:auto}.row>.col-xl-8{height:auto;width:66.6667%}.row>.offset-xl-8{margin-left:66.6667%}.column>.col-xl-8{height:66.6667%;width:auto}.row>.col-xl-9{height:auto;width:75%}.row>.offset-xl-9{margin-left:75%}.column>.col-xl-9{height:75%;width:auto}.row>.col-xl-10{height:auto;width:83.3333%}.row>.offset-xl-10{margin-left:83.3333%}.column>.col-xl-10{height:83.3333%;width:auto}.row>.col-xl-11{height:auto;width:91.6667%}.row>.offset-xl-11{margin-left:91.6667%}.column>.col-xl-11{height:91.6667%;width:auto}.row>.col-xl-12{height:auto;width:100%}.row>.offset-xl-12{margin-left:100%}.column>.col-xl-12{height:100%;width:auto}}.rounded-borders{border-radius:4px}.border-radius-inherit{border-radius:inherit}.no-transition{transition:none!important}.transition-0{transition:0s!important}.glossy{background-image:linear-gradient(180deg,hsla(0,0%,100%,.3),hsla(0,0%,100%,0) 50%,rgba(0,0,0,.12) 51%,rgba(0,0,0,.04))!important}.q-placeholder::placeholder{color:inherit;opacity:.7}.q-body--fullscreen-mixin,.q-body--prevent-scroll{position:fixed!important}.q-body--force-scrollbar-x{overflow-x:scroll}.q-body--force-scrollbar-y{overflow-y:scroll}.q-no-input-spinner{-moz-appearance:textfield!important}.q-no-input-spinner::-webkit-inner-spin-button,.q-no-input-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.q-link{outline:0;text-decoration:none}.q-link--focusable:focus-visible{-webkit-text-decoration:underline dashed currentColor 1px;text-decoration:underline dashed currentColor 1px}body.electron .q-electron-drag{-webkit-user-select:none;-webkit-app-region:drag}body.electron .q-electron-drag .q-btn-item,body.electron .q-electron-drag--exception{-webkit-app-region:no-drag}img.responsive{max-width:100%;height:auto}.non-selectable{-webkit-user-select:none!important;user-select:none!important}.scroll,body.mobile .scroll--mobile{overflow:auto}.scroll,.scroll-x,.scroll-y{-webkit-overflow-scrolling:touch;will-change:scroll-position}.scroll-x{overflow-x:auto}.scroll-y{overflow-y:auto}.no-scroll{overflow:hidden!important}.no-pointer-events,.no-pointer-events--children,.no-pointer-events--children *{pointer-events:none!important}.all-pointer-events{pointer-events:all!important}.cursor-pointer{cursor:pointer!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-inherit{cursor:inherit!important}.cursor-none{cursor:none!important}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled]{cursor:default}.rotate-45{transform:rotate(45deg)}.rotate-90{transform:rotate(90deg)}.rotate-135{transform:rotate(135deg)}.rotate-180{transform:rotate(180deg)}.rotate-225{transform:rotate(225deg)}.rotate-270{transform:rotate(270deg)}.rotate-315{transform:rotate(315deg)}.flip-horizontal{transform:scaleX(-1)}.flip-vertical{transform:scaleY(-1)}.float-left{float:left}.float-right{float:right}.relative-position{position:relative}.fixed,.fixed-bottom,.fixed-bottom-left,.fixed-bottom-right,.fixed-center,.fixed-full,.fixed-left,.fixed-right,.fixed-top,.fixed-top-left,.fixed-top-right,.fullscreen{position:fixed}.absolute,.absolute-bottom,.absolute-bottom-left,.absolute-bottom-right,.absolute-center,.absolute-full,.absolute-left,.absolute-right,.absolute-top,.absolute-top-left,.absolute-top-right{position:absolute}.absolute-top,.fixed-top{top:0;left:0;right:0}.absolute-right,.fixed-right{top:0;right:0;bottom:0}.absolute-bottom,.fixed-bottom{right:0;bottom:0;left:0}.absolute-left,.fixed-left{top:0;bottom:0;left:0}.absolute-top-left,.fixed-top-left{top:0;left:0}.absolute-top-right,.fixed-top-right{top:0;right:0}.absolute-bottom-left,.fixed-bottom-left{bottom:0;left:0}.absolute-bottom-right,.fixed-bottom-right{bottom:0;right:0}.fullscreen{z-index:6000;border-radius:0!important;max-width:100vw;max-height:100vh}body.q-ios-padding .fullscreen{padding-top:20px!important;padding-top:env(safe-area-inset-top)!important;padding-bottom:env(safe-area-inset-bottom)!important}.absolute-full,.fixed-full,.fullscreen{top:0;right:0;bottom:0;left:0}.absolute-center,.fixed-center{top:50%;left:50%;transform:translate(-50%,-50%)}.vertical-top{vertical-align:top!important}.vertical-middle{vertical-align:middle!important}.vertical-bottom{vertical-align:bottom!important}.on-left{margin-right:12px}.on-right{margin-left:12px}.q-position-engine{margin-top:var(--q-pe-top,0)!important;margin-left:var(--q-pe-left,0)!important;will-change:auto;visibility:collapse}:root{--q-size-xs:0;--q-size-sm:600px;--q-size-md:1024px;--q-size-lg:1440px;--q-size-xl:1920px}.fit{width:100%!important}.fit,.full-height{height:100%!important}.full-width{width:100%!important;margin-left:0!important;margin-right:0!important}.window-height{margin-top:0!important;margin-bottom:0!important;height:100vh!important}.window-width{margin-left:0!important;margin-right:0!important;width:100vw!important}.block{display:block!important}.inline-block{display:inline-block!important}.q-pa-none{padding:0 0}.q-pl-none{padding-left:0}.q-pr-none{padding-right:0}.q-pt-none{padding-top:0}.q-pb-none{padding-bottom:0}.q-px-none{padding-left:0;padding-right:0}.q-py-none{padding-top:0;padding-bottom:0}.q-ma-none{margin:0 0}.q-ml-none{margin-left:0}.q-mr-none{margin-right:0}.q-mt-none{margin-top:0}.q-mb-none{margin-bottom:0}.q-mx-none{margin-left:0;margin-right:0}.q-my-none{margin-top:0;margin-bottom:0}.q-pa-xs{padding:4px 4px}.q-pl-xs{padding-left:4px}.q-pr-xs{padding-right:4px}.q-pt-xs{padding-top:4px}.q-pb-xs{padding-bottom:4px}.q-px-xs{padding-left:4px;padding-right:4px}.q-py-xs{padding-top:4px;padding-bottom:4px}.q-ma-xs{margin:4px 4px}.q-ml-xs{margin-left:4px}.q-mr-xs{margin-right:4px}.q-mt-xs{margin-top:4px}.q-mb-xs{margin-bottom:4px}.q-mx-xs{margin-left:4px;margin-right:4px}.q-my-xs{margin-top:4px;margin-bottom:4px}.q-pa-sm{padding:8px 8px}.q-pl-sm{padding-left:8px}.q-pr-sm{padding-right:8px}.q-pt-sm{padding-top:8px}.q-pb-sm{padding-bottom:8px}.q-px-sm{padding-left:8px;padding-right:8px}.q-py-sm{padding-top:8px;padding-bottom:8px}.q-ma-sm{margin:8px 8px}.q-ml-sm{margin-left:8px}.q-mr-sm{margin-right:8px}.q-mt-sm{margin-top:8px}.q-mb-sm{margin-bottom:8px}.q-mx-sm{margin-left:8px;margin-right:8px}.q-my-sm{margin-top:8px;margin-bottom:8px}.q-pa-md{padding:16px 16px}.q-pl-md{padding-left:16px}.q-pr-md{padding-right:16px}.q-pt-md{padding-top:16px}.q-pb-md{padding-bottom:16px}.q-px-md{padding-left:16px;padding-right:16px}.q-py-md{padding-top:16px;padding-bottom:16px}.q-ma-md{margin:16px 16px}.q-ml-md{margin-left:16px}.q-mr-md{margin-right:16px}.q-mt-md{margin-top:16px}.q-mb-md{margin-bottom:16px}.q-mx-md{margin-left:16px;margin-right:16px}.q-my-md{margin-top:16px;margin-bottom:16px}.q-pa-lg{padding:24px 24px}.q-pl-lg{padding-left:24px}.q-pr-lg{padding-right:24px}.q-pt-lg{padding-top:24px}.q-pb-lg{padding-bottom:24px}.q-px-lg{padding-left:24px;padding-right:24px}.q-py-lg{padding-top:24px;padding-bottom:24px}.q-ma-lg{margin:24px 24px}.q-ml-lg{margin-left:24px}.q-mr-lg{margin-right:24px}.q-mt-lg{margin-top:24px}.q-mb-lg{margin-bottom:24px}.q-mx-lg{margin-left:24px;margin-right:24px}.q-my-lg{margin-top:24px;margin-bottom:24px}.q-pa-xl{padding:48px 48px}.q-pl-xl{padding-left:48px}.q-pr-xl{padding-right:48px}.q-pt-xl{padding-top:48px}.q-pb-xl{padding-bottom:48px}.q-px-xl{padding-left:48px;padding-right:48px}.q-py-xl{padding-top:48px;padding-bottom:48px}.q-ma-xl{margin:48px 48px}.q-ml-xl{margin-left:48px}.q-mr-xl{margin-right:48px}.q-mt-xl{margin-top:48px}.q-mb-xl{margin-bottom:48px}.q-mx-xl{margin-left:48px;margin-right:48px}.q-my-xl{margin-top:48px;margin-bottom:48px}.q-mt-auto,.q-my-auto{margin-top:auto}.q-ml-auto{margin-left:auto}.q-mb-auto,.q-my-auto{margin-bottom:auto}.q-mr-auto,.q-mx-auto{margin-right:auto}.q-mx-auto{margin-left:auto}.q-touch{-webkit-user-select:none;user-select:none;user-drag:none;-khtml-user-drag:none;-webkit-user-drag:none}.q-touch-x{touch-action:pan-x}.q-touch-y{touch-action:pan-y}:root{--q-transition-duration:.3s}.q-transition--fade-enter-active,.q-transition--fade-leave-active,.q-transition--flip-enter-active,.q-transition--flip-leave-active,.q-transition--jump-down-enter-active,.q-transition--jump-down-leave-active,.q-transition--jump-left-enter-active,.q-transition--jump-left-leave-active,.q-transition--jump-right-enter-active,.q-transition--jump-right-leave-active,.q-transition--jump-up-enter-active,.q-transition--jump-up-leave-active,.q-transition--rotate-enter-active,.q-transition--rotate-leave-active,.q-transition--scale-enter-active,.q-transition--scale-leave-active,.q-transition--slide-down-enter-active,.q-transition--slide-down-leave-active,.q-transition--slide-left-enter-active,.q-transition--slide-left-leave-active,.q-transition--slide-right-enter-active,.q-transition--slide-right-leave-active,.q-transition--slide-up-enter-active,.q-transition--slide-up-leave-active{--q-transition-duration:.3s;--q-transition-easing:cubic-bezier(0.215,0.61,0.355,1)}.q-transition--fade-leave-active,.q-transition--flip-leave-active,.q-transition--jump-down-leave-active,.q-transition--jump-left-leave-active,.q-transition--jump-right-leave-active,.q-transition--jump-up-leave-active,.q-transition--rotate-leave-active,.q-transition--scale-leave-active,.q-transition--slide-down-leave-active,.q-transition--slide-left-leave-active,.q-transition--slide-right-leave-active,.q-transition--slide-up-leave-active{position:absolute}.q-transition--slide-down-enter-active,.q-transition--slide-down-leave-active,.q-transition--slide-left-enter-active,.q-transition--slide-left-leave-active,.q-transition--slide-right-enter-active,.q-transition--slide-right-leave-active,.q-transition--slide-up-enter-active,.q-transition--slide-up-leave-active{transition:transform var(--q-transition-duration) var(--q-transition-easing)}.q-transition--slide-right-enter-from{transform:translate3d(-100%,0,0)}.q-transition--slide-left-enter-from,.q-transition--slide-right-leave-to{transform:translate3d(100%,0,0)}.q-transition--slide-left-leave-to{transform:translate3d(-100%,0,0)}.q-transition--slide-up-enter-from{transform:translate3d(0,100%,0)}.q-transition--slide-down-enter-from,.q-transition--slide-up-leave-to{transform:translate3d(0,-100%,0)}.q-transition--slide-down-leave-to{transform:translate3d(0,100%,0)}.q-transition--jump-down-enter-active,.q-transition--jump-down-leave-active,.q-transition--jump-left-enter-active,.q-transition--jump-left-leave-active,.q-transition--jump-right-enter-active,.q-transition--jump-right-leave-active,.q-transition--jump-up-enter-active,.q-transition--jump-up-leave-active{transition:opacity var(--q-transition-duration),transform var(--q-transition-duration)}.q-transition--jump-down-enter-from,.q-transition--jump-down-leave-to,.q-transition--jump-left-enter-from,.q-transition--jump-left-leave-to,.q-transition--jump-right-enter-from,.q-transition--jump-right-leave-to,.q-transition--jump-up-enter-from,.q-transition--jump-up-leave-to{opacity:0}.q-transition--jump-right-enter-from{transform:translate3d(-15px,0,0)}.q-transition--jump-left-enter-from,.q-transition--jump-right-leave-to{transform:translate3d(15px,0,0)}.q-transition--jump-left-leave-to{transform:translateX(-15px)}.q-transition--jump-up-enter-from{transform:translate3d(0,15px,0)}.q-transition--jump-down-enter-from,.q-transition--jump-up-leave-to{transform:translate3d(0,-15px,0)}.q-transition--jump-down-leave-to{transform:translate3d(0,15px,0)}.q-transition--fade-enter-active,.q-transition--fade-leave-active{transition:opacity var(--q-transition-duration) ease-out}.q-transition--fade-enter-from,.q-transition--fade-leave-to{opacity:0}.q-transition--scale-enter-active,.q-transition--scale-leave-active{transition:opacity var(--q-transition-duration),transform var(--q-transition-duration) var(--q-transition-easing)}.q-transition--scale-enter-from,.q-transition--scale-leave-to{opacity:0;transform:scale3d(0,0,1)}.q-transition--rotate-enter-active,.q-transition--rotate-leave-active{transition:opacity var(--q-transition-duration),transform var(--q-transition-duration) var(--q-transition-easing);transform-style:preserve-3d}.q-transition--rotate-enter-from,.q-transition--rotate-leave-to{opacity:0;transform:scale3d(0,0,1) rotate(90deg)}.q-transition--flip-down-enter-active,.q-transition--flip-down-leave-active,.q-transition--flip-left-enter-active,.q-transition--flip-left-leave-active,.q-transition--flip-right-enter-active,.q-transition--flip-right-leave-active,.q-transition--flip-up-enter-active,.q-transition--flip-up-leave-active{transition:transform var(--q-transition-duration);-webkit-backface-visibility:hidden;backface-visibility:hidden}.q-transition--flip-down-enter-to,.q-transition--flip-down-leave-from,.q-transition--flip-left-enter-to,.q-transition--flip-left-leave-from,.q-transition--flip-right-enter-to,.q-transition--flip-right-leave-from,.q-transition--flip-up-enter-to,.q-transition--flip-up-leave-from{transform:perspective(400px) rotate3d(1,1,0,0deg)}.q-transition--flip-right-enter-from{transform:perspective(400px) rotateY(-180deg)}.q-transition--flip-left-enter-from,.q-transition--flip-right-leave-to{transform:perspective(400px) rotateY(180deg)}.q-transition--flip-left-leave-to{transform:perspective(400px) rotateY(-180deg)}.q-transition--flip-up-enter-from{transform:perspective(400px) rotateX(-180deg)}.q-transition--flip-down-enter-from,.q-transition--flip-up-leave-to{transform:perspective(400px) rotateX(180deg)}.q-transition--flip-down-leave-to{transform:perspective(400px) rotateX(-180deg)}body{min-width:100px;min-height:100%;font-family:Roboto,-apple-system,Helvetica Neue,Helvetica,Arial,sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;line-height:1.5;font-size:14px}h1{font-size:6rem;line-height:6rem;letter-spacing:-.01562em}h1,h2{font-weight:300}h2{font-size:3.75rem;line-height:3.75rem;letter-spacing:-.00833em}h3{font-size:3rem;line-height:3.125rem;letter-spacing:normal}h3,h4{font-weight:400}h4{font-size:2.125rem;line-height:2.5rem;letter-spacing:.00735em}h5{font-size:1.5rem;font-weight:400;letter-spacing:normal}h5,h6{line-height:2rem}h6{font-size:1.25rem;font-weight:500;letter-spacing:.0125em}p{margin:0 0 16px}.text-h1{font-size:6rem;font-weight:300;line-height:6rem;letter-spacing:-.01562em}.text-h2{font-size:3.75rem;font-weight:300;line-height:3.75rem;letter-spacing:-.00833em}.text-h3{font-size:3rem;font-weight:400;line-height:3.125rem;letter-spacing:normal}.text-h4{font-size:2.125rem;font-weight:400;line-height:2.5rem;letter-spacing:.00735em}.text-h5{font-size:1.5rem;font-weight:400;line-height:2rem;letter-spacing:normal}.text-h6{font-size:1.25rem;font-weight:500;line-height:2rem;letter-spacing:.0125em}.text-subtitle1{font-size:1rem;font-weight:400;line-height:1.75rem;letter-spacing:.00937em}.text-subtitle2{font-size:.875rem;font-weight:500;line-height:1.375rem;letter-spacing:.00714em}.text-body1{font-size:1rem;font-weight:400;line-height:1.5rem;letter-spacing:.03125em}.text-body2{font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.01786em}.text-overline{font-size:.75rem;font-weight:500;line-height:2rem;letter-spacing:.16667em}.text-caption{font-size:.75rem;font-weight:400;line-height:1.25rem;letter-spacing:.03333em}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-justify{text-align:justify;-webkit-hyphens:auto;hyphens:auto}.text-italic{font-style:italic}.text-bold{font-weight:700}.text-no-wrap{white-space:nowrap}.text-strike{text-decoration:line-through}.text-weight-thin{font-weight:100}.text-weight-light{font-weight:300}.text-weight-regular{font-weight:400}.text-weight-medium{font-weight:500}.text-weight-bold{font-weight:700}.text-weight-bolder{font-weight:900}small{font-size:80%}big{font-size:170%}sub{bottom:-.25em}sup{top:-.5em}.no-margin{margin:0!important}.no-padding{padding:0!important}.no-border{border:0!important}.no-border-radius{border-radius:0!important}.no-box-shadow{box-shadow:none!important}.no-outline{outline:0!important}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ellipsis-2-lines,.ellipsis-3-lines{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.ellipsis-2-lines{-webkit-line-clamp:2}.ellipsis-3-lines{-webkit-line-clamp:3}.readonly{cursor:default!important}.disabled,.disabled *,[disabled],[disabled] *{outline:0!important;cursor:not-allowed!important}.disabled,[disabled]{opacity:.6!important}.hidden{display:none!important}.invisible,.invisible *{visibility:hidden!important;transition:none!important;animation:none!important}.transparent{background:transparent!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-hidden-y{overflow-y:hidden!important}.hide-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.hide-scrollbar::-webkit-scrollbar{width:0;height:0;display:none}.dimmed:after,.light-dimmed:after{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0}.dimmed:after{background:rgba(0,0,0,.4)!important}.light-dimmed:after{background:hsla(0,0%,100%,.6)!important}.z-top{z-index:7000!important}.z-max{z-index:9998!important}body.capacitor .capacitor-hide,body.cordova .cordova-hide,body.desktop .desktop-hide,body.electron .electron-hide,body.mobile .mobile-hide,body.native-mobile .native-mobile-hide,body.platform-android .platform-android-hide,body.platform-ios .platform-ios-hide,body.touch .touch-hide,body.within-iframe .within-iframe-hide,body:not(.capacitor) .capacitor-only,body:not(.cordova) .cordova-only,body:not(.desktop) .desktop-only,body:not(.electron) .electron-only,body:not(.mobile) .mobile-only,body:not(.native-mobile) .native-mobile-only,body:not(.platform-android) .platform-android-only,body:not(.platform-ios) .platform-ios-only,body:not(.touch) .touch-only,body:not(.within-iframe) .within-iframe-only{display:none!important}@media (orientation:portrait){.orientation-landscape{display:none!important}}@media (orientation:landscape){.orientation-portrait{display:none!important}}@media screen{.print-only{display:none!important}}@media print{.print-hide{display:none!important}}@media (max-width:599.98px){.gt-lg,.gt-md,.gt-sm,.gt-xs,.lg,.md,.sm,.xl,.xs-hide{display:none!important}}@media (min-width:600px) and (max-width:1023.98px){.gt-lg,.gt-md,.gt-sm,.lg,.lt-sm,.md,.sm-hide,.xl,.xs{display:none!important}}@media (min-width:1024px) and (max-width:1439.98px){.gt-lg,.gt-md,.lg,.lt-md,.lt-sm,.md-hide,.sm,.xl,.xs{display:none!important}}@media (min-width:1440px) and (max-width:1919.98px){.gt-lg,.lg-hide,.lt-lg,.lt-md,.lt-sm,.md,.sm,.xl,.xs{display:none!important}}@media (min-width:1920px){.lg,.lt-lg,.lt-md,.lt-sm,.lt-xl,.md,.sm,.xl-hide,.xs{display:none!important}}.q-focus-helper,.q-focusable,.q-hoverable,.q-manual-focusable{outline:0}body.desktop .q-focus-helper{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;border-radius:inherit;opacity:0;transition:background-color .3s cubic-bezier(.25,.8,.5,1),opacity .4s cubic-bezier(.25,.8,.5,1)}body.desktop .q-focus-helper:after,body.desktop .q-focus-helper:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;border-radius:inherit;transition:background-color .3s cubic-bezier(.25,.8,.5,1),opacity .6s cubic-bezier(.25,.8,.5,1)}body.desktop .q-focus-helper:before{background:#000}body.desktop .q-focus-helper:after{background:#fff}body.desktop .q-focus-helper--rounded{border-radius:4px}body.desktop .q-focus-helper--round{border-radius:50%}body.desktop .q-focusable:focus>.q-focus-helper,body.desktop .q-hoverable:hover>.q-focus-helper,body.desktop .q-manual-focusable--focused>.q-focus-helper{background:currentColor;opacity:.15}body.desktop .q-focusable:focus>.q-focus-helper:before,body.desktop .q-hoverable:hover>.q-focus-helper:before,body.desktop .q-manual-focusable--focused>.q-focus-helper:before{opacity:.1}body.desktop .q-focusable:focus>.q-focus-helper:after,body.desktop .q-hoverable:hover>.q-focus-helper:after,body.desktop .q-manual-focusable--focused>.q-focus-helper:after{opacity:.4}body.desktop .q-focusable:focus>.q-focus-helper,body.desktop .q-manual-focusable--focused>.q-focus-helper{opacity:.22}body.body--dark{color:#fff;background:var(--q-dark-page)}.q-dark{color:#fff;background:var(--q-dark)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { h, computed } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hMergeSlotSafely } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QAvatar',\n\n props: {\n ...useSizeProps,\n\n fontSize: String,\n\n color: String,\n textColor: String,\n\n icon: String,\n square: Boolean,\n rounded: Boolean\n },\n\n setup (props, { slots }) {\n const sizeStyle = useSize(props)\n\n const classes = computed(() =>\n 'q-avatar'\n + (props.color ? ` bg-${ props.color }` : '')\n + (props.textColor ? ` text-${ props.textColor } q-chip--colored` : '')\n + (\n props.square === true\n ? ' q-avatar--square'\n : (props.rounded === true ? ' rounded-borders' : '')\n )\n )\n\n const contentStyle = computed(() => (\n props.fontSize\n ? { fontSize: props.fontSize }\n : null\n ))\n\n return () => {\n const icon = props.icon !== void 0\n ? [ h(QIcon, { name: props.icon }) ]\n : void 0\n\n return h('div', {\n class: classes.value,\n style: sizeStyle.value\n }, [\n h('div', {\n class: 'q-avatar__content row flex-center overflow-hidden',\n style: contentStyle.value\n }, hMergeSlotSafely(slots.default, icon))\n ])\n }\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\n\nconst alignValues = [ 'top', 'middle', 'bottom' ]\n\nexport default createComponent({\n name: 'QBadge',\n\n props: {\n color: String,\n textColor: String,\n\n floating: Boolean,\n transparent: Boolean,\n multiLine: Boolean,\n outline: Boolean,\n rounded: Boolean,\n\n label: [ Number, String ],\n\n align: {\n type: String,\n validator: v => alignValues.includes(v)\n }\n },\n\n setup (props, { slots }) {\n const style = computed(() => {\n return props.align !== void 0\n ? { verticalAlign: props.align }\n : null\n })\n\n const classes = computed(() => {\n const text = props.outline === true\n ? props.color || props.textColor\n : props.textColor\n\n return 'q-badge flex inline items-center no-wrap'\n + ` q-badge--${ props.multiLine === true ? 'multi' : 'single' }-line`\n + (props.outline === true\n ? ' q-badge--outline'\n : (props.color !== void 0 ? ` bg-${ props.color }` : '')\n )\n + (text !== void 0 ? ` text-${ text }` : '')\n + (props.floating === true ? ' q-badge--floating' : '')\n + (props.rounded === true ? ' q-badge--rounded' : '')\n + (props.transparent === true ? ' q-badge--transparent' : '')\n })\n\n return () => h('div', {\n class: classes.value,\n style: style.value,\n role: 'status',\n 'aria-label': props.label\n }, hMergeSlot(slots.default, props.label !== void 0 ? [ props.label ] : []))\n }\n})\n","import { h, ref, computed, Transition, onBeforeUnmount, withDirectives, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport Ripple from '../../directives/Ripple.js'\n\nimport useBtn, { useBtnProps } from './use-btn.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport { stop, prevent, stopAndPrevent, listenOpts } from '../../utils/event.js'\nimport { isKeyCode } from '../../utils/private/key-composition.js'\n\nconst { passiveCapture } = listenOpts\n\nlet\n touchTarget = null,\n keyboardTarget = null,\n mouseTarget = null\n\nexport default createComponent({\n name: 'QBtn',\n\n props: {\n ...useBtnProps,\n\n percentage: Number,\n darkPercentage: Boolean,\n\n onTouchstart: [ Function, Array ]\n },\n\n emits: [ 'click', 'keydown', 'mousedown', 'keyup' ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n\n const {\n classes, style, innerClasses,\n attributes,\n hasLink, linkTag, navigateOnClick,\n isActionable\n } = useBtn(props)\n\n const rootRef = ref(null)\n const blurTargetRef = ref(null)\n\n let localTouchTargetEl = null, avoidMouseRipple, mouseTimer = null\n\n const hasLabel = computed(() =>\n props.label !== void 0 && props.label !== null && props.label !== ''\n )\n\n const ripple = computed(() => (\n props.disable === true || props.ripple === false\n ? false\n : {\n keyCodes: hasLink.value === true ? [ 13, 32 ] : [ 13 ],\n ...(props.ripple === true ? {} : props.ripple)\n }\n ))\n\n const rippleProps = computed(() => ({ center: props.round }))\n\n const percentageStyle = computed(() => {\n const val = Math.max(0, Math.min(100, props.percentage))\n return val > 0\n ? { transition: 'transform 0.6s', transform: `translateX(${ val - 100 }%)` }\n : {}\n })\n\n const onEvents = computed(() => {\n if (props.loading === true) {\n return {\n onMousedown: onLoadingEvt,\n onTouchstart: onLoadingEvt,\n onClick: onLoadingEvt,\n onKeydown: onLoadingEvt,\n onKeyup: onLoadingEvt\n }\n }\n\n if (isActionable.value === true) {\n const acc = {\n onClick,\n onKeydown,\n onMousedown\n }\n\n if (proxy.$q.platform.has.touch === true) {\n const suffix = props.onTouchstart !== void 0\n ? ''\n : 'Passive'\n\n acc[ `onTouchstart${ suffix }` ] = onTouchstart\n }\n\n return acc\n }\n\n return {\n // needed; especially for disabled tags\n onClick: stopAndPrevent\n }\n })\n\n const nodeProps = computed(() => ({\n ref: rootRef,\n class: 'q-btn q-btn-item non-selectable no-outline ' + classes.value,\n style: style.value,\n ...attributes.value,\n ...onEvents.value\n }))\n\n function onClick (e) {\n // is it already destroyed?\n if (rootRef.value === null) { return }\n\n if (e !== void 0) {\n if (e.defaultPrevented === true) {\n return\n }\n\n const el = document.activeElement\n // focus button if it came from ENTER on form\n // prevent the new submit (already done)\n if (\n props.type === 'submit'\n && el !== document.body\n && rootRef.value.contains(el) === false\n // required for iOS and desktop Safari\n && el.contains(rootRef.value) === false\n ) {\n rootRef.value.focus()\n\n const onClickCleanup = () => {\n document.removeEventListener('keydown', stopAndPrevent, true)\n document.removeEventListener('keyup', onClickCleanup, passiveCapture)\n rootRef.value !== null && rootRef.value.removeEventListener('blur', onClickCleanup, passiveCapture)\n }\n\n document.addEventListener('keydown', stopAndPrevent, true)\n document.addEventListener('keyup', onClickCleanup, passiveCapture)\n rootRef.value.addEventListener('blur', onClickCleanup, passiveCapture)\n }\n }\n\n navigateOnClick(e)\n }\n\n function onKeydown (e) {\n // is it already destroyed?\n if (rootRef.value === null) { return }\n\n emit('keydown', e)\n\n if (isKeyCode(e, [ 13, 32 ]) === true && keyboardTarget !== rootRef.value) {\n keyboardTarget !== null && cleanup()\n\n if (e.defaultPrevented !== true) {\n // focus external button if the focus helper was focused before\n rootRef.value.focus()\n\n keyboardTarget = rootRef.value\n rootRef.value.classList.add('q-btn--active')\n document.addEventListener('keyup', onPressEnd, true)\n rootRef.value.addEventListener('blur', onPressEnd, passiveCapture)\n }\n\n stopAndPrevent(e)\n }\n }\n\n function onTouchstart (e) {\n // is it already destroyed?\n if (rootRef.value === null) { return }\n\n emit('touchstart', e)\n\n if (e.defaultPrevented === true) { return }\n\n if (touchTarget !== rootRef.value) {\n touchTarget !== null && cleanup()\n touchTarget = rootRef.value\n\n localTouchTargetEl = e.target\n localTouchTargetEl.addEventListener('touchcancel', onPressEnd, passiveCapture)\n localTouchTargetEl.addEventListener('touchend', onPressEnd, passiveCapture)\n }\n\n // avoid duplicated mousedown event\n // triggering another early ripple\n avoidMouseRipple = true\n mouseTimer !== null && clearTimeout(mouseTimer)\n mouseTimer = setTimeout(() => {\n mouseTimer = null\n avoidMouseRipple = false\n }, 200)\n }\n\n function onMousedown (e) {\n // is it already destroyed?\n if (rootRef.value === null) { return }\n\n e.qSkipRipple = avoidMouseRipple === true\n emit('mousedown', e)\n\n if (e.defaultPrevented !== true && mouseTarget !== rootRef.value) {\n mouseTarget !== null && cleanup()\n mouseTarget = rootRef.value\n rootRef.value.classList.add('q-btn--active')\n document.addEventListener('mouseup', onPressEnd, passiveCapture)\n }\n }\n\n function onPressEnd (e) {\n // is it already destroyed?\n if (rootRef.value === null) { return }\n\n // needed for IE (because it emits blur when focusing button from focus helper)\n if (e !== void 0 && e.type === 'blur' && document.activeElement === rootRef.value) {\n return\n }\n\n if (e !== void 0 && e.type === 'keyup') {\n if (keyboardTarget === rootRef.value && isKeyCode(e, [ 13, 32 ]) === true) {\n // for click trigger\n const evt = new MouseEvent('click', e)\n evt.qKeyEvent = true\n e.defaultPrevented === true && prevent(evt)\n e.cancelBubble === true && stop(evt)\n rootRef.value.dispatchEvent(evt)\n\n stopAndPrevent(e)\n\n // for ripple\n e.qKeyEvent = true\n }\n\n emit('keyup', e)\n }\n\n cleanup()\n }\n\n function cleanup (destroying) {\n const blurTarget = blurTargetRef.value\n\n if (\n destroying !== true\n && (touchTarget === rootRef.value || mouseTarget === rootRef.value)\n && blurTarget !== null\n && blurTarget !== document.activeElement\n ) {\n blurTarget.setAttribute('tabindex', -1)\n blurTarget.focus()\n }\n\n if (touchTarget === rootRef.value) {\n if (localTouchTargetEl !== null) {\n localTouchTargetEl.removeEventListener('touchcancel', onPressEnd, passiveCapture)\n localTouchTargetEl.removeEventListener('touchend', onPressEnd, passiveCapture)\n }\n touchTarget = localTouchTargetEl = null\n }\n\n if (mouseTarget === rootRef.value) {\n document.removeEventListener('mouseup', onPressEnd, passiveCapture)\n mouseTarget = null\n }\n\n if (keyboardTarget === rootRef.value) {\n document.removeEventListener('keyup', onPressEnd, true)\n rootRef.value !== null && rootRef.value.removeEventListener('blur', onPressEnd, passiveCapture)\n keyboardTarget = null\n }\n\n rootRef.value !== null && rootRef.value.classList.remove('q-btn--active')\n }\n\n function onLoadingEvt (evt) {\n stopAndPrevent(evt)\n evt.qSkipRipple = true\n }\n\n onBeforeUnmount(() => {\n cleanup(true)\n })\n\n // expose public methods\n Object.assign(proxy, { click: onClick })\n\n return () => {\n let inner = []\n\n props.icon !== void 0 && inner.push(\n h(QIcon, {\n name: props.icon,\n left: props.stack === false && hasLabel.value === true,\n role: 'img',\n 'aria-hidden': 'true'\n })\n )\n\n hasLabel.value === true && inner.push(\n h('span', { class: 'block' }, [ props.label ])\n )\n\n inner = hMergeSlot(slots.default, inner)\n\n if (props.iconRight !== void 0 && props.round === false) {\n inner.push(\n h(QIcon, {\n name: props.iconRight,\n right: props.stack === false && hasLabel.value === true,\n role: 'img',\n 'aria-hidden': 'true'\n })\n )\n }\n\n const child = [\n h('span', {\n class: 'q-focus-helper',\n ref: blurTargetRef\n })\n ]\n\n if (props.loading === true && props.percentage !== void 0) {\n child.push(\n h('span', {\n class: 'q-btn__progress absolute-full overflow-hidden' + (props.darkPercentage === true ? ' q-btn__progress--dark' : '')\n }, [\n h('span', {\n class: 'q-btn__progress-indicator fit block',\n style: percentageStyle.value\n })\n ])\n )\n }\n\n child.push(\n h('span', {\n class: 'q-btn__content text-center col items-center q-anchor--skip ' + innerClasses.value\n }, inner)\n )\n\n props.loading !== null && child.push(\n h(Transition, {\n name: 'q-transition--fade'\n }, () => (\n props.loading === true\n ? [\n h('span', {\n key: 'loading',\n class: 'absolute-full flex flex-center'\n }, slots.loading !== void 0 ? slots.loading() : [ h(QSpinner) ])\n ]\n : null\n ))\n )\n\n return withDirectives(\n h(\n linkTag.value,\n nodeProps.value,\n child\n ),\n [ [\n Ripple,\n ripple.value,\n void 0,\n rippleProps.value\n ] ]\n )\n }\n }\n})\n","import { computed } from 'vue'\n\nimport useAlign, { useAlignProps } from '../../composables/private/use-align.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\nimport useRouterLink, { useRouterLinkProps } from '../../composables/private/use-router-link.js'\n\nexport const btnPadding = {\n none: 0,\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32\n}\n\nconst defaultSizes = {\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n}\n\nconst formTypes = [ 'button', 'submit', 'reset' ]\nconst mediaTypeRE = /[^\\s]\\/[^\\s]/\n\nexport const btnDesignOptions = [ 'flat', 'outline', 'push', 'unelevated' ]\nexport const getBtnDesign = (props, defaultValue) => {\n if (props.flat === true) return 'flat'\n if (props.outline === true) return 'outline'\n if (props.push === true) return 'push'\n if (props.unelevated === true) return 'unelevated'\n return defaultValue\n}\nexport const getBtnDesignAttr = props => {\n const design = getBtnDesign(props)\n return design !== void 0\n ? { [ design ]: true }\n : {}\n}\n\nexport const useBtnProps = {\n ...useSizeProps,\n ...useRouterLinkProps,\n\n type: {\n type: String,\n default: 'button'\n },\n\n label: [ Number, String ],\n icon: String,\n iconRight: String,\n\n ...btnDesignOptions.reduce(\n (acc, val) => (acc[ val ] = Boolean) && acc,\n {}\n ),\n\n square: Boolean,\n round: Boolean,\n rounded: Boolean,\n glossy: Boolean,\n\n size: String,\n fab: Boolean,\n fabMini: Boolean,\n padding: String,\n\n color: String,\n textColor: String,\n noCaps: Boolean,\n noWrap: Boolean,\n dense: Boolean,\n\n tabindex: [ Number, String ],\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n },\n\n align: {\n ...useAlignProps.align,\n default: 'center'\n },\n stack: Boolean,\n stretch: Boolean,\n loading: {\n type: Boolean,\n default: null\n },\n disable: Boolean\n}\n\nexport default function (props) {\n const sizeStyle = useSize(props, defaultSizes)\n const alignClass = useAlign(props)\n const { hasRouterLink, hasLink, linkTag, linkAttrs, navigateOnClick } = useRouterLink({\n fallbackTag: 'button'\n })\n\n const style = computed(() => {\n const obj = props.fab === false && props.fabMini === false\n ? sizeStyle.value\n : {}\n\n return props.padding !== void 0\n ? Object.assign({}, obj, {\n padding: props.padding\n .split(/\\s+/)\n .map(v => (v in btnPadding ? btnPadding[ v ] + 'px' : v))\n .join(' '),\n minWidth: '0',\n minHeight: '0'\n })\n : obj\n })\n\n const isRounded = computed(() =>\n props.rounded === true || props.fab === true || props.fabMini === true\n )\n\n const isActionable = computed(() =>\n props.disable !== true && props.loading !== true\n )\n\n const tabIndex = computed(() => (\n isActionable.value === true ? props.tabindex || 0 : -1\n ))\n\n const design = computed(() => getBtnDesign(props, 'standard'))\n\n const attributes = computed(() => {\n const acc = { tabindex: tabIndex.value }\n\n if (hasLink.value === true) {\n Object.assign(acc, linkAttrs.value)\n }\n else if (formTypes.includes(props.type) === true) {\n acc.type = props.type\n }\n\n if (linkTag.value === 'a') {\n if (props.disable === true) {\n acc[ 'aria-disabled' ] = 'true'\n }\n else if (acc.href === void 0) {\n acc.role = 'button'\n }\n\n if (hasRouterLink.value !== true && mediaTypeRE.test(props.type) === true) {\n acc.type = props.type\n }\n }\n else if (props.disable === true) {\n acc.disabled = ''\n acc[ 'aria-disabled' ] = 'true'\n }\n\n if (props.loading === true && props.percentage !== void 0) {\n Object.assign(acc, {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': props.percentage\n })\n }\n\n return acc\n })\n\n const classes = computed(() => {\n let colors\n\n if (props.color !== void 0) {\n if (props.flat === true || props.outline === true) {\n colors = `text-${ props.textColor || props.color }`\n }\n else {\n colors = `bg-${ props.color } text-${ props.textColor || 'white' }`\n }\n }\n else if (props.textColor) {\n colors = `text-${ props.textColor }`\n }\n\n const shape = props.round === true\n ? 'round'\n : `rectangle${ isRounded.value === true ? ' q-btn--rounded' : (props.square === true ? ' q-btn--square' : '') }`\n\n return `q-btn--${ design.value } q-btn--${ shape }`\n + (colors !== void 0 ? ' ' + colors : '')\n + (isActionable.value === true ? ' q-btn--actionable q-focusable q-hoverable' : (props.disable === true ? ' disabled' : ''))\n + (props.fab === true ? ' q-btn--fab' : (props.fabMini === true ? ' q-btn--fab-mini' : ''))\n + (props.noCaps === true ? ' q-btn--no-uppercase' : '')\n + (props.dense === true ? ' q-btn--dense' : '')\n + (props.stretch === true ? ' no-border-radius self-stretch' : '')\n + (props.glossy === true ? ' glossy' : '')\n + (props.square ? ' q-btn--square' : '')\n })\n\n const innerClasses = computed(() =>\n alignClass.value + (props.stack === true ? ' column' : ' row')\n + (props.noWrap === true ? ' no-wrap text-no-wrap' : '')\n + (props.loading === true ? ' q-btn__content--hidden' : '')\n )\n\n return {\n classes,\n style,\n innerClasses,\n attributes,\n hasLink,\n linkTag,\n navigateOnClick,\n isActionable\n }\n}\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QCard',\n\n props: {\n ...useDarkProps,\n\n tag: {\n type: String,\n default: 'div'\n },\n\n square: Boolean,\n flat: Boolean,\n bordered: Boolean\n },\n\n setup (props, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n const isDark = useDark(props, $q)\n\n const classes = computed(() =>\n 'q-card'\n + (isDark.value === true ? ' q-card--dark q-dark' : '')\n + (props.bordered === true ? ' q-card--bordered' : '')\n + (props.square === true ? ' q-card--square no-border-radius' : '')\n + (props.flat === true ? ' q-card--flat no-shadow' : '')\n )\n\n return () => h(props.tag, { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, computed } from 'vue'\n\nimport useAlign, { useAlignProps } from '../../composables/private/use-align.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QCardActions',\n\n props: {\n ...useAlignProps,\n vertical: Boolean\n },\n\n setup (props, { slots }) {\n const alignClass = useAlign(props)\n\n const classes = computed(() =>\n `q-card__actions ${ alignClass.value }`\n + ` q-card__actions--${ props.vertical === true ? 'vert column' : 'horiz row' }`\n )\n\n return () => h('div', { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QCardSection',\n\n props: {\n tag: {\n type: String,\n default: 'div'\n },\n\n horizontal: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() =>\n 'q-card__section'\n + ` q-card__section--${ props.horizontal === true ? 'horiz row no-wrap' : 'vert' }`\n )\n\n return () => h(props.tag, { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, computed, watch, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport usePanel, { usePanelProps, usePanelEmits } from '../../composables/private/use-panel.js'\nimport useFullscreen, { useFullscreenProps, useFullscreenEmits } from '../../composables/private/use-fullscreen.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { isNumber } from '../../utils/is.js'\nimport { hMergeSlot, hDir } from '../../utils/private/render.js'\n\nconst navigationPositionOptions = [ 'top', 'right', 'bottom', 'left' ]\nconst controlTypeOptions = [ 'regular', 'flat', 'outline', 'push', 'unelevated' ]\n\nexport default createComponent({\n name: 'QCarousel',\n\n props: {\n ...useDarkProps,\n ...usePanelProps,\n ...useFullscreenProps,\n\n transitionPrev: { // usePanelParentProps override\n type: String,\n default: 'fade'\n },\n transitionNext: { // usePanelParentProps override\n type: String,\n default: 'fade'\n },\n\n height: String,\n padding: Boolean,\n\n controlColor: String,\n controlTextColor: String,\n controlType: {\n type: String,\n validator: v => controlTypeOptions.includes(v),\n default: 'flat'\n },\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 => navigationPositionOptions.includes(v)\n },\n navigationIcon: String,\n navigationActiveIcon: String,\n\n thumbnails: Boolean\n },\n\n emits: [\n ...useFullscreenEmits,\n ...usePanelEmits\n ],\n\n setup (props, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const isDark = useDark(props, $q)\n\n let timer = null, panelsLen\n\n const {\n updatePanelsList, getPanelContent,\n panelDirectives, goToPanel,\n previousPanel, nextPanel, getEnabledPanels,\n panelIndex\n } = usePanel()\n\n const { inFullscreen } = useFullscreen()\n\n const style = computed(() => (\n inFullscreen.value !== true && props.height !== void 0\n ? { height: props.height }\n : {}\n ))\n\n const direction = computed(() => (props.vertical === true ? 'vertical' : 'horizontal'))\n\n const classes = computed(() =>\n `q-carousel q-panel-parent q-carousel--with${ props.padding === true ? '' : 'out' }-padding`\n + (inFullscreen.value === true ? ' fullscreen' : '')\n + (isDark.value === true ? ' q-carousel--dark q-dark' : '')\n + (props.arrows === true ? ` q-carousel--arrows-${ direction.value }` : '')\n + (props.navigation === true ? ` q-carousel--navigation-${ navigationPosition.value }` : '')\n )\n\n const arrowIcons = computed(() => {\n const ico = [\n props.prevIcon || $q.iconSet.carousel[ props.vertical === true ? 'up' : 'left' ],\n props.nextIcon || $q.iconSet.carousel[ props.vertical === true ? 'down' : 'right' ]\n ]\n\n return props.vertical === false && $q.lang.rtl === true\n ? ico.reverse()\n : ico\n })\n\n const navIcon = computed(() => props.navigationIcon || $q.iconSet.carousel.navigationIcon)\n const navActiveIcon = computed(() => props.navigationActiveIcon || navIcon.value)\n const navigationPosition = computed(() => props.navigationPosition\n || (props.vertical === true ? 'right' : 'bottom')\n )\n\n const controlProps = computed(() => ({\n color: props.controlColor,\n textColor: props.controlTextColor,\n round: true,\n [ props.controlType ]: true,\n dense: true\n }))\n\n watch(() => props.modelValue, () => {\n if (props.autoplay) {\n startTimer()\n }\n })\n\n watch(() => props.autoplay, val => {\n if (val) {\n startTimer()\n }\n else if (timer !== null) {\n clearTimeout(timer)\n timer = null\n }\n })\n\n function startTimer () {\n const duration = isNumber(props.autoplay) === true\n ? Math.abs(props.autoplay)\n : 5000\n\n timer !== null && clearTimeout(timer)\n timer = setTimeout(() => {\n timer = null\n\n if (duration >= 0) {\n nextPanel()\n }\n else {\n previousPanel()\n }\n }, duration)\n }\n\n onMounted(() => {\n props.autoplay && startTimer()\n })\n\n onBeforeUnmount(() => {\n timer !== null && clearTimeout(timer)\n })\n\n function getNavigationContainer (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--${ navigationPosition.value }`\n + (props.controlColor !== void 0 ? ` text-${ props.controlColor }` : '')\n }, [\n h('div', {\n class: 'q-carousel__navigation-inner flex flex-center no-wrap'\n }, getEnabledPanels().map(mapping))\n ])\n }\n\n function getContent () {\n const node = []\n\n if (props.navigation === true) {\n const fn = slots[ 'navigation-icon' ] !== void 0\n ? slots[ '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 ...opts.btnProps,\n onClick: opts.onClick\n })\n\n const maxIndex = panelsLen - 1\n node.push(\n getNavigationContainer('buttons', (panel, index) => {\n const name = panel.props.name\n const active = panelIndex.value === index\n\n return fn({\n index,\n maxIndex,\n name,\n active,\n btnProps: {\n icon: active === true ? navActiveIcon.value : navIcon.value,\n size: 'sm',\n ...controlProps.value\n },\n onClick: () => { goToPanel(name) }\n })\n })\n )\n }\n else if (props.thumbnails === true) {\n const color = props.controlColor !== void 0\n ? ` text-${ props.controlColor }`\n : ''\n\n node.push(getNavigationContainer('thumbnails', panel => {\n const slide = panel.props\n\n return h('img', {\n key: 'tmb#' + slide.name,\n class: `q-carousel__thumbnail q-carousel__thumbnail--${ slide.name === props.modelValue ? '' : 'in' }active` + color,\n src: slide.imgSrc || slide[ 'img-src' ],\n onClick: () => { goToPanel(slide.name) }\n })\n }))\n }\n\n if (props.arrows === true && panelIndex.value >= 0) {\n if (props.infinite === true || panelIndex.value > 0) {\n node.push(\n h('div', {\n key: 'prev',\n class: `q-carousel__control q-carousel__arrow q-carousel__prev-arrow q-carousel__prev-arrow--${ direction.value } absolute flex flex-center`\n }, [\n h(QBtn, {\n icon: arrowIcons.value[ 0 ],\n ...controlProps.value,\n onClick: previousPanel\n })\n ])\n )\n }\n\n if (props.infinite === true || panelIndex.value < panelsLen - 1) {\n node.push(\n h('div', {\n key: 'next',\n class: 'q-carousel__control q-carousel__arrow q-carousel__next-arrow'\n + ` q-carousel__next-arrow--${ direction.value } absolute flex flex-center`\n }, [\n h(QBtn, {\n icon: arrowIcons.value[ 1 ],\n ...controlProps.value,\n onClick: nextPanel\n })\n ])\n )\n }\n }\n\n return hMergeSlot(slots.control, node)\n }\n\n return () => {\n panelsLen = updatePanelsList(slots)\n\n return h('div', {\n class: classes.value,\n style: style.value\n }, [\n hDir(\n 'div',\n { class: 'q-carousel__slides-container' },\n getPanelContent(),\n 'sl-cont',\n props.swipeable,\n () => panelDirectives.value\n )\n ].concat(getContent()))\n }\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { usePanelChildProps } from '../../composables/private/use-panel.js'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QCarouselSlide',\n\n props: {\n ...usePanelChildProps,\n imgSrc: String\n },\n\n setup (props, { slots }) {\n const style = computed(() => (\n props.imgSrc\n ? { backgroundImage: `url(\"${ props.imgSrc }\")` }\n : {}\n ))\n\n return () => h('div', {\n class: 'q-carousel__slide',\n style: style.value\n }, hSlot(slots.default))\n }\n})\n","import { h, computed } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport useCheckbox, { useCheckboxProps, useCheckboxEmits } from './use-checkbox.js'\n\nconst bgNode = h('div', {\n key: 'svg',\n class: 'q-checkbox__bg absolute'\n}, [\n h('svg', {\n class: 'q-checkbox__svg fit absolute-full',\n viewBox: '0 0 24 24'\n }, [\n h('path', {\n class: 'q-checkbox__truthy',\n fill: 'none',\n d: 'M1.73,12.91 8.1,19.28 22.79,4.59'\n }),\n\n h('path', {\n class: 'q-checkbox__indet',\n d: 'M4,14H20V10H4'\n })\n ])\n])\n\nexport default createComponent({\n name: 'QCheckbox',\n\n props: useCheckboxProps,\n emits: useCheckboxEmits,\n\n setup (props) {\n function getInner (isTrue, isIndeterminate) {\n const icon = computed(() =>\n (isTrue.value === true\n ? props.checkedIcon\n : (isIndeterminate.value === true\n ? props.indeterminateIcon\n : props.uncheckedIcon\n )\n ) || null\n )\n\n return () => (\n icon.value !== null\n ? [\n h('div', {\n key: 'icon',\n class: 'q-checkbox__icon-container absolute-full flex flex-center no-wrap'\n }, [\n h(QIcon, {\n class: 'q-checkbox__icon',\n name: icon.value\n })\n ])\n ]\n : [ bgNode ]\n )\n }\n\n return useCheckbox('checkbox', getInner)\n }\n})\n","import { h, ref, computed, getCurrentInstance, toRaw } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\nimport useRefocusTarget from '../../composables/private/use-refocus-target.js'\nimport { useFormInject, useFormProps } from '../../composables/private/use-form.js'\n\nimport optionSizes from '../../utils/private/option-sizes.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { hSlot, hMergeSlot } from '../../utils/private/render.js'\n\nexport const useCheckboxProps = {\n ...useDarkProps,\n ...useSizeProps,\n ...useFormProps,\n\n modelValue: {\n required: true,\n default: null\n },\n val: {},\n\n trueValue: { default: true },\n falseValue: { default: false },\n indeterminateValue: { default: null },\n\n checkedIcon: String,\n uncheckedIcon: String,\n indeterminateIcon: String,\n\n toggleOrder: {\n type: String,\n validator: v => v === 'tf' || v === 'ft'\n },\n toggleIndeterminate: Boolean,\n\n label: String,\n leftLabel: Boolean,\n\n color: String,\n keepColor: Boolean,\n dense: Boolean,\n\n disable: Boolean,\n tabindex: [ String, Number ]\n}\n\nexport const useCheckboxEmits = [ 'update:modelValue' ]\n\nexport default function (type, getInner) {\n const { props, slots, emit, proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const isDark = useDark(props, $q)\n\n const rootRef = ref(null)\n const { refocusTargetEl, refocusTarget } = useRefocusTarget(props, rootRef)\n const sizeStyle = useSize(props, optionSizes)\n\n const modelIsArray = computed(() =>\n props.val !== void 0 && Array.isArray(props.modelValue)\n )\n\n const index = computed(() => {\n const val = toRaw(props.val)\n return modelIsArray.value === true\n ? props.modelValue.findIndex(opt => toRaw(opt) === val)\n : -1\n })\n\n const isTrue = computed(() => (\n modelIsArray.value === true\n ? index.value > -1\n : toRaw(props.modelValue) === toRaw(props.trueValue)\n ))\n\n const isFalse = computed(() => (\n modelIsArray.value === true\n ? index.value === -1\n : toRaw(props.modelValue) === toRaw(props.falseValue)\n ))\n\n const isIndeterminate = computed(() =>\n isTrue.value === false && isFalse.value === false\n )\n\n const tabindex = computed(() => (\n props.disable === true ? -1 : props.tabindex || 0\n ))\n\n const classes = computed(() =>\n `q-${ type } cursor-pointer no-outline row inline no-wrap items-center`\n + (props.disable === true ? ' disabled' : '')\n + (isDark.value === true ? ` q-${ type }--dark` : '')\n + (props.dense === true ? ` q-${ type }--dense` : '')\n + (props.leftLabel === true ? ' reverse' : '')\n )\n\n const innerClass = computed(() => {\n const state = isTrue.value === true ? 'truthy' : (isFalse.value === true ? 'falsy' : 'indet')\n const color = props.color !== void 0 && (\n props.keepColor === true\n || (type === 'toggle' ? isTrue.value === true : isFalse.value !== true)\n )\n ? ` text-${ props.color }`\n : ''\n\n return `q-${ type }__inner relative-position non-selectable q-${ type }__inner--${ state }${ color }`\n })\n\n const formAttrs = computed(() => {\n const prop = { type: 'checkbox' }\n\n props.name !== void 0 && Object.assign(prop, {\n // see https://vuejs.org/guide/extras/render-function.html#creating-vnodes (.prop)\n '.checked': isTrue.value,\n '^checked': isTrue.value === true ? 'checked' : void 0,\n name: props.name,\n value: modelIsArray.value === true\n ? props.val\n : props.trueValue\n })\n\n return prop\n })\n\n const injectFormInput = useFormInject(formAttrs)\n\n const attributes = computed(() => {\n const attrs = {\n tabindex: tabindex.value,\n role: type === 'toggle' ? 'switch' : 'checkbox',\n 'aria-label': props.label,\n 'aria-checked': isIndeterminate.value === true\n ? 'mixed'\n : (isTrue.value === true ? 'true' : 'false')\n }\n\n if (props.disable === true) {\n attrs[ 'aria-disabled' ] = 'true'\n }\n\n return attrs\n })\n\n function onClick (e) {\n if (e !== void 0) {\n stopAndPrevent(e)\n refocusTarget(e)\n }\n\n if (props.disable !== true) {\n emit('update:modelValue', getNextValue(), e)\n }\n }\n\n function getNextValue () {\n if (modelIsArray.value === true) {\n if (isTrue.value === true) {\n const val = props.modelValue.slice()\n val.splice(index.value, 1)\n return val\n }\n\n return props.modelValue.concat([ props.val ])\n }\n\n if (isTrue.value === true) {\n if (props.toggleOrder !== 'ft' || props.toggleIndeterminate === false) {\n return props.falseValue\n }\n }\n else if (isFalse.value === true) {\n if (props.toggleOrder === 'ft' || props.toggleIndeterminate === false) {\n return props.trueValue\n }\n }\n else {\n return props.toggleOrder !== 'ft'\n ? props.trueValue\n : props.falseValue\n }\n\n return props.indeterminateValue\n }\n\n function onKeydown (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n stopAndPrevent(e)\n }\n }\n\n function onKeyup (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n onClick(e)\n }\n }\n\n const getInnerContent = getInner(isTrue, isIndeterminate)\n\n // expose public methods\n Object.assign(proxy, { toggle: onClick })\n\n return () => {\n const inner = getInnerContent()\n\n props.disable !== true && injectFormInput(\n inner,\n 'unshift',\n ` q-${ type }__native absolute q-ma-none q-pa-none`\n )\n\n const child = [\n h('div', {\n class: innerClass.value,\n style: sizeStyle.value,\n 'aria-hidden': 'true'\n }, inner)\n ]\n\n if (refocusTargetEl.value !== null) {\n child.push(refocusTargetEl.value)\n }\n\n const label = props.label !== void 0\n ? hMergeSlot(slots.default, [ props.label ])\n : hSlot(slots.default)\n\n label !== void 0 && child.push(\n h('div', {\n class: `q-${ type }__label q-anchor--skip`\n }, label)\n )\n\n return h('div', {\n ref: rootRef,\n class: classes.value,\n ...attributes.value,\n onClick,\n onKeydown,\n onKeyup\n }, child)\n }\n}\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport Ripple from '../../directives/Ripple.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { hMergeSlotSafely, hDir } from '../../utils/private/render.js'\n\nexport const defaultSizes = {\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n}\n\nexport default createComponent({\n name: 'QChip',\n\n props: {\n ...useDarkProps,\n ...useSizeProps,\n\n dense: Boolean,\n\n icon: String,\n iconRight: String,\n iconRemove: String,\n iconSelected: String,\n label: [ String, Number ],\n\n color: String,\n textColor: String,\n\n modelValue: {\n type: Boolean,\n default: true\n },\n selected: {\n type: Boolean,\n default: null\n },\n\n square: Boolean,\n outline: Boolean,\n clickable: Boolean,\n removable: Boolean,\n\n removeAriaLabel: String,\n\n tabindex: [ String, Number ],\n disable: Boolean,\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n }\n },\n\n emits: [ 'update:modelValue', 'update:selected', 'remove', 'click' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const isDark = useDark(props, $q)\n const sizeStyle = useSize(props, defaultSizes)\n\n const hasLeftIcon = computed(() => props.selected === true || props.icon !== void 0)\n\n const leftIcon = computed(() => (\n props.selected === true\n ? props.iconSelected || $q.iconSet.chip.selected\n : props.icon\n ))\n\n const removeIcon = computed(() => props.iconRemove || $q.iconSet.chip.remove)\n\n const isClickable = computed(() =>\n props.disable === false\n && (props.clickable === true || props.selected !== null)\n )\n\n const classes = computed(() => {\n const text = props.outline === true\n ? props.color || props.textColor\n : props.textColor\n\n return 'q-chip row inline no-wrap items-center'\n + (props.outline === false && props.color !== void 0 ? ` bg-${ props.color }` : '')\n + (text ? ` text-${ text } q-chip--colored` : '')\n + (props.disable === true ? ' disabled' : '')\n + (props.dense === true ? ' q-chip--dense' : '')\n + (props.outline === true ? ' q-chip--outline' : '')\n + (props.selected === true ? ' q-chip--selected' : '')\n + (isClickable.value === true ? ' q-chip--clickable cursor-pointer non-selectable q-hoverable' : '')\n + (props.square === true ? ' q-chip--square' : '')\n + (isDark.value === true ? ' q-chip--dark q-dark' : '')\n })\n\n const attributes = computed(() => {\n const chip = props.disable === true\n ? { tabindex: -1, 'aria-disabled': 'true' }\n : { tabindex: props.tabindex || 0 }\n const remove = {\n ...chip,\n role: 'button',\n 'aria-hidden': 'false',\n 'aria-label': props.removeAriaLabel || $q.lang.label.remove\n }\n\n return { chip, remove }\n })\n\n function onKeyup (e) {\n e.keyCode === 13 /* ENTER */ && onClick(e)\n }\n\n function onClick (e) {\n if (!props.disable) {\n emit('update:selected', !props.selected)\n emit('click', e)\n }\n }\n\n function onRemove (e) {\n if (e.keyCode === void 0 || e.keyCode === 13) {\n stopAndPrevent(e)\n if (props.disable === false) {\n emit('update:modelValue', false)\n emit('remove')\n }\n }\n }\n\n function getContent () {\n const child = []\n\n isClickable.value === true && child.push(\n h('div', { class: 'q-focus-helper' })\n )\n\n hasLeftIcon.value === true && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--left',\n name: leftIcon.value\n })\n )\n\n const label = props.label !== void 0\n ? [ h('div', { class: 'ellipsis' }, [ props.label ]) ]\n : void 0\n\n child.push(\n h('div', {\n class: 'q-chip__content col row no-wrap items-center q-anchor--skip'\n }, hMergeSlotSafely(slots.default, label))\n )\n\n props.iconRight && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--right',\n name: props.iconRight\n })\n )\n\n props.removable === true && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--remove cursor-pointer',\n name: removeIcon.value,\n ...attributes.value.remove,\n onClick: onRemove,\n onKeyup: onRemove\n })\n )\n\n return child\n }\n\n return () => {\n if (props.modelValue === false) { return }\n\n const data = {\n class: classes.value,\n style: sizeStyle.value\n }\n\n isClickable.value === true && Object.assign(\n data,\n attributes.value.chip,\n { onClick, onKeyup }\n )\n\n return hDir(\n 'div',\n data,\n getContent(),\n 'ripple',\n props.ripple !== false && props.disable !== true,\n () => [ [ Ripple, props.ripple ] ]\n )\n }\n }\n})\n","import { h, ref, computed, watch, Transition, nextTick, getCurrentInstance } from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useCache from '../../composables/private/use-cache.js'\nimport { useFormProps, useFormAttrs, useFormInject } from '../../composables/private/use-form.js'\nimport useDatetime, { useDatetimeProps, useDatetimeEmits, getDayHash } from './use-datetime.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { formatDate, __splitDate, getDateDiff } from '../../utils/date.js'\nimport { pad } from '../../utils/format.js'\nimport { jalaaliMonthLength, toGregorian } from '../../utils/private/date-persian.js'\nimport { isObject } from '../../utils/is.js'\n\nconst yearsInterval = 20\nconst views = [ 'Calendar', 'Years', 'Months' ]\nconst viewIsValid = v => views.includes(v)\nconst yearMonthValidator = v => /^-?[\\d]+\\/[0-1]\\d$/.test(v)\nconst lineStr = ' \\u2014 '\n\nfunction getMonthHash (date) {\n return date.year + '/' + pad(date.month)\n}\n\nexport default createComponent({\n name: 'QDate',\n\n props: {\n ...useDatetimeProps,\n ...useFormProps,\n ...useDarkProps,\n\n multiple: Boolean,\n range: Boolean,\n\n title: String,\n subtitle: String,\n\n mask: {\n // this mask is forced\n // when using persian calendar\n default: 'YYYY/MM/DD'\n },\n\n defaultYearMonth: {\n type: String,\n validator: yearMonthValidator\n },\n\n yearsInMonthView: Boolean,\n\n events: [ Array, Function ],\n eventColor: [ String, Function ],\n\n emitImmediately: Boolean,\n\n options: [ Array, Function ],\n\n navigationMinYearMonth: {\n type: String,\n validator: yearMonthValidator\n },\n\n navigationMaxYearMonth: {\n type: String,\n validator: yearMonthValidator\n },\n\n noUnset: Boolean,\n\n firstDayOfWeek: [ String, Number ],\n todayBtn: Boolean,\n minimal: Boolean,\n defaultView: {\n type: String,\n default: 'Calendar',\n validator: viewIsValid\n }\n },\n\n emits: [\n ...useDatetimeEmits,\n 'rangeStart', 'rangeEnd', 'navigation'\n ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const isDark = useDark(props, $q)\n const { getCache } = useCache()\n const { tabindex, headerClass, getLocale, getCurrentDate } = useDatetime(props, $q)\n\n let lastEmitValue\n\n const formAttrs = useFormAttrs(props)\n const injectFormInput = useFormInject(formAttrs)\n\n const blurTargetRef = ref(null)\n const innerMask = ref(getMask())\n const innerLocale = ref(getLocale())\n\n const mask = computed(() => getMask())\n const locale = computed(() => getLocale())\n\n const today = computed(() => getCurrentDate())\n\n // model of current calendar view:\n const viewModel = ref(getViewModel(innerMask.value, innerLocale.value))\n\n const view = ref(props.defaultView)\n\n const direction = $q.lang.rtl === true ? 'right' : 'left'\n const monthDirection = ref(direction.value)\n const yearDirection = ref(direction.value)\n\n const year = viewModel.value.year\n const startYear = ref(year - (year % yearsInterval) - (year < 0 ? yearsInterval : 0))\n const editRange = ref(null)\n\n const classes = computed(() => {\n const type = props.landscape === true ? 'landscape' : 'portrait'\n return `q-date q-date--${ type } q-date--${ type }-${ props.minimal === true ? 'minimal' : 'standard' }`\n + (isDark.value === true ? ' q-date--dark q-dark' : '')\n + (props.bordered === true ? ' q-date--bordered' : '')\n + (props.square === true ? ' q-date--square no-border-radius' : '')\n + (props.flat === true ? ' q-date--flat no-shadow' : '')\n + (props.disable === true ? ' disabled' : (props.readonly === true ? ' q-date--readonly' : ''))\n })\n\n const computedColor = computed(() => {\n return props.color || 'primary'\n })\n\n const computedTextColor = computed(() => {\n return props.textColor || 'white'\n })\n\n const isImmediate = computed(() =>\n props.emitImmediately === true\n && props.multiple !== true\n && props.range !== true\n )\n\n const normalizedModel = computed(() => (\n Array.isArray(props.modelValue) === true\n ? props.modelValue\n : (props.modelValue !== null && props.modelValue !== void 0 ? [ props.modelValue ] : [])\n ))\n\n const daysModel = computed(() =>\n normalizedModel.value\n .filter(date => typeof date === 'string')\n .map(date => decodeString(date, innerMask.value, innerLocale.value))\n .filter(date =>\n date.dateHash !== null\n && date.day !== null\n && date.month !== null\n && date.year !== null\n )\n )\n\n const rangeModel = computed(() => {\n const fn = date => decodeString(date, innerMask.value, innerLocale.value)\n return normalizedModel.value\n .filter(date => isObject(date) === true && date.from !== void 0 && date.to !== void 0)\n .map(range => ({ from: fn(range.from), to: fn(range.to) }))\n .filter(range => range.from.dateHash !== null && range.to.dateHash !== null && range.from.dateHash < range.to.dateHash)\n })\n\n const getNativeDateFn = computed(() => (\n props.calendar !== 'persian'\n ? model => new Date(model.year, model.month - 1, model.day)\n : model => {\n const gDate = toGregorian(model.year, model.month, model.day)\n return new Date(gDate.gy, gDate.gm - 1, gDate.gd)\n }\n ))\n\n const encodeObjectFn = computed(() => (\n props.calendar === 'persian'\n ? getDayHash\n : (date, mask, locale) => formatDate(\n new Date(\n date.year,\n date.month - 1,\n date.day,\n date.hour,\n date.minute,\n date.second,\n date.millisecond\n ),\n mask === void 0 ? innerMask.value : mask,\n locale === void 0 ? innerLocale.value : locale,\n date.year,\n date.timezoneOffset\n )\n ))\n\n const daysInModel = computed(() =>\n daysModel.value.length + rangeModel.value.reduce(\n (acc, range) => acc + 1 + getDateDiff(\n getNativeDateFn.value(range.to),\n getNativeDateFn.value(range.from)\n ),\n 0\n )\n )\n\n const headerTitle = computed(() => {\n if (props.title !== void 0 && props.title !== null && props.title.length !== 0) {\n return props.title\n }\n\n if (editRange.value !== null) {\n const model = editRange.value.init\n const date = getNativeDateFn.value(model)\n\n return innerLocale.value.daysShort[ date.getDay() ] + ', '\n + innerLocale.value.monthsShort[ model.month - 1 ] + ' '\n + model.day + lineStr + '?'\n }\n\n if (daysInModel.value === 0) {\n return lineStr\n }\n\n if (daysInModel.value > 1) {\n return `${ daysInModel.value } ${ innerLocale.value.pluralDay }`\n }\n\n const model = daysModel.value[ 0 ]\n const date = getNativeDateFn.value(model)\n\n if (isNaN(date.valueOf()) === true) {\n return lineStr\n }\n\n if (innerLocale.value.headerTitle !== void 0) {\n return innerLocale.value.headerTitle(date, model)\n }\n\n return innerLocale.value.daysShort[ date.getDay() ] + ', '\n + innerLocale.value.monthsShort[ model.month - 1 ] + ' '\n + model.day\n })\n\n const minSelectedModel = computed(() => {\n const model = daysModel.value.concat(rangeModel.value.map(range => range.from))\n .sort((a, b) => a.year - b.year || a.month - b.month)\n\n return model[ 0 ]\n })\n\n const maxSelectedModel = computed(() => {\n const model = daysModel.value.concat(rangeModel.value.map(range => range.to))\n .sort((a, b) => b.year - a.year || b.month - a.month)\n\n return model[ 0 ]\n })\n\n const headerSubtitle = computed(() => {\n if (props.subtitle !== void 0 && props.subtitle !== null && props.subtitle.length !== 0) {\n return props.subtitle\n }\n\n if (daysInModel.value === 0) {\n return lineStr\n }\n\n if (daysInModel.value > 1) {\n const from = minSelectedModel.value\n const to = maxSelectedModel.value\n const month = innerLocale.value.monthsShort\n\n return month[ from.month - 1 ] + (\n from.year !== to.year\n ? ' ' + from.year + lineStr + month[ to.month - 1 ] + ' '\n : (\n from.month !== to.month\n ? lineStr + month[ to.month - 1 ]\n : ''\n )\n ) + ' ' + to.year\n }\n\n return daysModel.value[ 0 ].year\n })\n\n const dateArrow = computed(() => {\n const val = [ $q.iconSet.datetime.arrowLeft, $q.iconSet.datetime.arrowRight ]\n return $q.lang.rtl === true ? val.reverse() : val\n })\n\n const computedFirstDayOfWeek = computed(() => (\n props.firstDayOfWeek !== void 0\n ? Number(props.firstDayOfWeek)\n : innerLocale.value.firstDayOfWeek\n ))\n\n const daysOfWeek = computed(() => {\n const\n days = innerLocale.value.daysShort,\n first = computedFirstDayOfWeek.value\n\n return first > 0\n ? days.slice(first, 7).concat(days.slice(0, first))\n : days\n })\n\n const daysInMonth = computed(() => {\n const date = viewModel.value\n return props.calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n })\n\n const evtColor = computed(() => (\n typeof props.eventColor === 'function'\n ? props.eventColor\n : () => props.eventColor\n ))\n\n const minNav = computed(() => {\n if (props.navigationMinYearMonth === void 0) {\n return null\n }\n\n const data = props.navigationMinYearMonth.split('/')\n return { year: parseInt(data[ 0 ], 10), month: parseInt(data[ 1 ], 10) }\n })\n\n const maxNav = computed(() => {\n if (props.navigationMaxYearMonth === void 0) {\n return null\n }\n\n const data = props.navigationMaxYearMonth.split('/')\n return { year: parseInt(data[ 0 ], 10), month: parseInt(data[ 1 ], 10) }\n })\n\n const navBoundaries = computed(() => {\n const data = {\n month: { prev: true, next: true },\n year: { prev: true, next: true }\n }\n\n if (minNav.value !== null && minNav.value.year >= viewModel.value.year) {\n data.year.prev = false\n if (minNav.value.year === viewModel.value.year && minNav.value.month >= viewModel.value.month) {\n data.month.prev = false\n }\n }\n\n if (maxNav.value !== null && maxNav.value.year <= viewModel.value.year) {\n data.year.next = false\n if (maxNav.value.year === viewModel.value.year && maxNav.value.month <= viewModel.value.month) {\n data.month.next = false\n }\n }\n\n return data\n })\n\n const daysMap = computed(() => {\n const map = {}\n\n daysModel.value.forEach(entry => {\n const hash = getMonthHash(entry)\n\n if (map[ hash ] === void 0) {\n map[ hash ] = []\n }\n\n map[ hash ].push(entry.day)\n })\n\n return map\n })\n\n const rangeMap = computed(() => {\n const map = {}\n\n rangeModel.value.forEach(entry => {\n const hashFrom = getMonthHash(entry.from)\n const hashTo = getMonthHash(entry.to)\n\n if (map[ hashFrom ] === void 0) {\n map[ hashFrom ] = []\n }\n\n map[ hashFrom ].push({\n from: entry.from.day,\n to: hashFrom === hashTo ? entry.to.day : void 0,\n range: entry\n })\n\n if (hashFrom < hashTo) {\n let hash\n const { year, month } = entry.from\n const cur = month < 12\n ? { year, month: month + 1 }\n : { year: year + 1, month: 1 }\n\n while ((hash = getMonthHash(cur)) <= hashTo) {\n if (map[ hash ] === void 0) {\n map[ hash ] = []\n }\n\n map[ hash ].push({\n from: void 0,\n to: hash === hashTo ? entry.to.day : void 0,\n range: entry\n })\n\n cur.month++\n if (cur.month > 12) {\n cur.year++\n cur.month = 1\n }\n }\n }\n })\n\n return map\n })\n\n const rangeView = computed(() => {\n if (editRange.value === null) {\n return\n }\n\n const { init, initHash, final, finalHash } = editRange.value\n\n const [ from, to ] = initHash <= finalHash\n ? [ init, final ]\n : [ final, init ]\n\n const fromHash = getMonthHash(from)\n const toHash = getMonthHash(to)\n\n if (fromHash !== viewMonthHash.value && toHash !== viewMonthHash.value) {\n return\n }\n\n const view = {}\n\n if (fromHash === viewMonthHash.value) {\n view.from = from.day\n view.includeFrom = true\n }\n else {\n view.from = 1\n }\n\n if (toHash === viewMonthHash.value) {\n view.to = to.day\n view.includeTo = true\n }\n else {\n view.to = daysInMonth.value\n }\n\n return view\n })\n\n const viewMonthHash = computed(() => getMonthHash(viewModel.value))\n\n const selectionDaysMap = computed(() => {\n const map = {}\n\n if (props.options === void 0) {\n for (let i = 1; i <= daysInMonth.value; i++) {\n map[ i ] = true\n }\n\n return map\n }\n\n const fn = typeof props.options === 'function'\n ? props.options\n : date => props.options.includes(date)\n\n for (let i = 1; i <= daysInMonth.value; i++) {\n const dayHash = viewMonthHash.value + '/' + pad(i)\n map[ i ] = fn(dayHash)\n }\n\n return map\n })\n\n const eventDaysMap = computed(() => {\n const map = {}\n\n if (props.events === void 0) {\n for (let i = 1; i <= daysInMonth.value; i++) {\n map[ i ] = false\n }\n }\n else {\n const fn = typeof props.events === 'function'\n ? props.events\n : date => props.events.includes(date)\n\n for (let i = 1; i <= daysInMonth.value; i++) {\n const dayHash = viewMonthHash.value + '/' + pad(i)\n map[ i ] = fn(dayHash) === true && evtColor.value(dayHash)\n }\n }\n\n return map\n })\n\n const viewDays = computed(() => {\n let date, endDay\n const { year, month } = viewModel.value\n\n if (props.calendar !== 'persian') {\n date = new Date(year, month - 1, 1)\n endDay = (new Date(year, month - 1, 0)).getDate()\n }\n else {\n const gDate = toGregorian(year, month, 1)\n date = new Date(gDate.gy, gDate.gm - 1, gDate.gd)\n let prevJM = month - 1\n let prevJY = year\n if (prevJM === 0) {\n prevJM = 12\n prevJY--\n }\n endDay = jalaaliMonthLength(prevJY, prevJM)\n }\n\n return {\n days: date.getDay() - computedFirstDayOfWeek.value - 1,\n endDay\n }\n })\n\n const days = computed(() => {\n const res = []\n const { days, endDay } = viewDays.value\n\n const len = days < 0 ? days + 7 : days\n if (len < 6) {\n for (let i = endDay - len; i <= endDay; i++) {\n res.push({ i, fill: true })\n }\n }\n\n const index = res.length\n\n for (let i = 1; i <= daysInMonth.value; i++) {\n const day = { i, event: eventDaysMap.value[ i ], classes: [] }\n\n if (selectionDaysMap.value[ i ] === true) {\n day.in = true\n day.flat = true\n }\n\n res.push(day)\n }\n\n // if current view has days in model\n if (daysMap.value[ viewMonthHash.value ] !== void 0) {\n daysMap.value[ viewMonthHash.value ].forEach(day => {\n const i = index + day - 1\n Object.assign(res[ i ], {\n selected: true,\n unelevated: true,\n flat: false,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n })\n }\n\n // if current view has ranges in model\n if (rangeMap.value[ viewMonthHash.value ] !== void 0) {\n rangeMap.value[ viewMonthHash.value ].forEach(entry => {\n if (entry.from !== void 0) {\n const from = index + entry.from - 1\n const to = index + (entry.to || daysInMonth.value) - 1\n\n for (let day = from; day <= to; day++) {\n Object.assign(res[ day ], {\n range: entry.range,\n unelevated: true,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n }\n\n Object.assign(res[ from ], {\n rangeFrom: true,\n flat: false\n })\n\n entry.to !== void 0 && Object.assign(res[ to ], {\n rangeTo: true,\n flat: false\n })\n }\n else if (entry.to !== void 0) {\n const to = index + entry.to - 1\n\n for (let day = index; day <= to; day++) {\n Object.assign(res[ day ], {\n range: entry.range,\n unelevated: true,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n }\n\n Object.assign(res[ to ], {\n flat: false,\n rangeTo: true\n })\n }\n else {\n const to = index + daysInMonth.value - 1\n for (let day = index; day <= to; day++) {\n Object.assign(res[ day ], {\n range: entry.range,\n unelevated: true,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n }\n }\n })\n }\n\n if (rangeView.value !== void 0) {\n const from = index + rangeView.value.from - 1\n const to = index + rangeView.value.to - 1\n\n for (let day = from; day <= to; day++) {\n res[ day ].color = computedColor.value\n res[ day ].editRange = true\n }\n\n if (rangeView.value.includeFrom === true) {\n res[ from ].editRangeFrom = true\n }\n if (rangeView.value.includeTo === true) {\n res[ to ].editRangeTo = true\n }\n }\n\n if (viewModel.value.year === today.value.year && viewModel.value.month === today.value.month) {\n res[ index + today.value.day - 1 ].today = true\n }\n\n const left = res.length % 7\n if (left > 0) {\n const afterDays = 7 - left\n for (let i = 1; i <= afterDays; i++) {\n res.push({ i, fill: true })\n }\n }\n\n res.forEach(day => {\n let cls = 'q-date__calendar-item '\n\n if (day.fill === true) {\n cls += 'q-date__calendar-item--fill'\n }\n else {\n cls += `q-date__calendar-item--${ day.in === true ? 'in' : 'out' }`\n\n if (day.range !== void 0) {\n cls += ` q-date__range${ day.rangeTo === true ? '-to' : (day.rangeFrom === true ? '-from' : '') }`\n }\n\n if (day.editRange === true) {\n cls += ` q-date__edit-range${ day.editRangeFrom === true ? '-from' : '' }${ day.editRangeTo === true ? '-to' : '' }`\n }\n\n if (day.range !== void 0 || day.editRange === true) {\n cls += ` text-${ day.color }`\n }\n }\n\n day.classes = cls\n })\n\n return res\n })\n\n const attributes = computed(() => (\n props.disable === true\n ? { 'aria-disabled': 'true' }\n : (props.readonly === true ? { 'aria-readonly': 'true' } : {})\n ))\n\n watch(() => props.modelValue, v => {\n if (lastEmitValue === v) {\n lastEmitValue = 0\n }\n else {\n const model = getViewModel(innerMask.value, innerLocale.value)\n updateViewModel(model.year, model.month, model)\n }\n })\n\n watch(view, () => {\n if (blurTargetRef.value !== null && proxy.$el.contains(document.activeElement) === true) {\n blurTargetRef.value.focus()\n }\n })\n\n watch(() => viewModel.value.year + '|' + viewModel.value.month, () => {\n emit('navigation', { year: viewModel.value.year, month: viewModel.value.month })\n })\n\n watch(mask, val => {\n updateValue(val, innerLocale.value, 'mask')\n innerMask.value = val\n })\n\n watch(locale, val => {\n updateValue(innerMask.value, val, 'locale')\n innerLocale.value = val\n })\n\n function setToday () {\n const date = today.value\n const month = daysMap.value[ getMonthHash(date) ]\n\n if (month === void 0 || month.includes(date.day) === false) {\n addToModel(date)\n }\n\n setCalendarTo(date.year, date.month)\n }\n\n function setView (viewMode) {\n if (viewIsValid(viewMode) === true) {\n view.value = viewMode\n }\n }\n\n function offsetCalendar (type, descending) {\n if ([ 'month', 'year' ].includes(type)) {\n const fn = type === 'month' ? goToMonth : goToYear\n fn(descending === true ? -1 : 1)\n }\n }\n\n function setCalendarTo (year, month) {\n view.value = 'Calendar'\n updateViewModel(year, month)\n }\n\n function setEditingRange (from, to) {\n if (props.range === false || !from) {\n editRange.value = null\n return\n }\n\n const init = Object.assign({ ...viewModel.value }, from)\n const final = to !== void 0\n ? Object.assign({ ...viewModel.value }, to)\n : init\n\n editRange.value = {\n init,\n initHash: getDayHash(init),\n final,\n finalHash: getDayHash(final)\n }\n\n setCalendarTo(init.year, init.month)\n }\n\n function getMask () {\n return props.calendar === 'persian' ? 'YYYY/MM/DD' : props.mask\n }\n\n function decodeString (date, mask, locale) {\n return __splitDate(\n date,\n mask,\n locale,\n props.calendar,\n {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n }\n )\n }\n\n function getViewModel (mask, locale) {\n const model = Array.isArray(props.modelValue) === true\n ? props.modelValue\n : (props.modelValue ? [ props.modelValue ] : [])\n\n if (model.length === 0) {\n return getDefaultViewModel()\n }\n\n const target = model[ model.length - 1 ]\n const decoded = decodeString(\n target.from !== void 0 ? target.from : target,\n mask,\n locale\n )\n\n return decoded.dateHash === null\n ? getDefaultViewModel()\n : decoded\n }\n\n function getDefaultViewModel () {\n let year, month\n\n if (props.defaultYearMonth !== void 0) {\n const d = props.defaultYearMonth.split('/')\n year = parseInt(d[ 0 ], 10)\n month = parseInt(d[ 1 ], 10)\n }\n else {\n // may come from data() where computed\n // props are not yet available\n const d = today.value !== void 0\n ? today.value\n : getCurrentDate()\n\n year = d.year\n month = d.month\n }\n\n return {\n year,\n month,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n dateHash: year + '/' + pad(month) + '/01'\n }\n }\n\n function goToMonth (offset) {\n let year = viewModel.value.year\n let month = Number(viewModel.value.month) + offset\n\n if (month === 13) {\n month = 1\n year++\n }\n else if (month === 0) {\n month = 12\n year--\n }\n\n updateViewModel(year, month)\n isImmediate.value === true && emitImmediately('month')\n }\n\n function goToYear (offset) {\n const year = Number(viewModel.value.year) + offset\n updateViewModel(year, viewModel.value.month)\n isImmediate.value === true && emitImmediately('year')\n }\n\n function setYear (year) {\n updateViewModel(year, viewModel.value.month)\n view.value = props.defaultView === 'Years' ? 'Months' : 'Calendar'\n isImmediate.value === true && emitImmediately('year')\n }\n\n function setMonth (month) {\n updateViewModel(viewModel.value.year, month)\n view.value = 'Calendar'\n isImmediate.value === true && emitImmediately('month')\n }\n\n function toggleDate (date, monthHash) {\n const month = daysMap.value[ monthHash ]\n const fn = month !== void 0 && month.includes(date.day) === true\n ? removeFromModel\n : addToModel\n\n fn(date)\n }\n\n function getShortDate (date) {\n return { year: date.year, month: date.month, day: date.day }\n }\n\n function updateViewModel (year, month, time) {\n if (minNav.value !== null && year <= minNav.value.year) {\n year = minNav.value.year\n if (month < minNav.value.month) {\n month = minNav.value.month\n }\n }\n\n if (maxNav.value !== null && year >= maxNav.value.year) {\n year = maxNav.value.year\n if (month > maxNav.value.month) {\n month = maxNav.value.month\n }\n }\n\n if (time !== void 0) {\n const { hour, minute, second, millisecond, timezoneOffset, timeHash } = time\n Object.assign(viewModel.value, { hour, minute, second, millisecond, timezoneOffset, timeHash })\n }\n\n const newHash = year + '/' + pad(month) + '/01'\n\n if (newHash !== viewModel.value.dateHash) {\n monthDirection.value = (viewModel.value.dateHash < newHash) === ($q.lang.rtl !== true) ? 'left' : 'right'\n if (year !== viewModel.value.year) {\n yearDirection.value = monthDirection.value\n }\n\n nextTick(() => {\n startYear.value = year - year % yearsInterval - (year < 0 ? yearsInterval : 0)\n Object.assign(viewModel.value, {\n year,\n month,\n day: 1,\n dateHash: newHash\n })\n })\n }\n }\n\n function emitValue (val, action, date) {\n const value = val !== null && val.length === 1 && props.multiple === false\n ? val[ 0 ]\n : val\n\n lastEmitValue = value\n\n const { reason, details } = getEmitParams(action, date)\n emit('update:modelValue', value, reason, details)\n }\n\n function emitImmediately (reason) {\n const date = daysModel.value[ 0 ] !== void 0 && daysModel.value[ 0 ].dateHash !== null\n ? { ...daysModel.value[ 0 ] }\n : { ...viewModel.value } // inherit day, hours, minutes, milliseconds...\n\n // nextTick required because of animation delay in viewModel\n nextTick(() => {\n date.year = viewModel.value.year\n date.month = viewModel.value.month\n\n const maxDay = props.calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n\n date.day = Math.min(Math.max(1, date.day), maxDay)\n\n const value = encodeEntry(date)\n lastEmitValue = value\n\n const { details } = getEmitParams('', date)\n emit('update:modelValue', value, reason, details)\n })\n }\n\n function getEmitParams (action, date) {\n return date.from !== void 0\n ? {\n reason: `${ action }-range`,\n details: {\n ...getShortDate(date.target),\n from: getShortDate(date.from),\n to: getShortDate(date.to)\n }\n }\n : {\n reason: `${ action }-day`,\n details: getShortDate(date)\n }\n }\n\n function encodeEntry (date, mask, locale) {\n return date.from !== void 0\n ? { from: encodeObjectFn.value(date.from, mask, locale), to: encodeObjectFn.value(date.to, mask, locale) }\n : encodeObjectFn.value(date, mask, locale)\n }\n\n function addToModel (date) {\n let value\n\n if (props.multiple === true) {\n if (date.from !== void 0) {\n // we also need to filter out intersections\n\n const fromHash = getDayHash(date.from)\n const toHash = getDayHash(date.to)\n\n const days = daysModel.value\n .filter(day => day.dateHash < fromHash || day.dateHash > toHash)\n\n const ranges = rangeModel.value\n .filter(({ from, to }) => to.dateHash < fromHash || from.dateHash > toHash)\n\n value = days.concat(ranges).concat(date).map(entry => encodeEntry(entry))\n }\n else {\n const model = normalizedModel.value.slice()\n model.push(encodeEntry(date))\n value = model\n }\n }\n else {\n value = encodeEntry(date)\n }\n\n emitValue(value, 'add', date)\n }\n\n function removeFromModel (date) {\n if (props.noUnset === true) {\n return\n }\n\n let model = null\n\n if (props.multiple === true && Array.isArray(props.modelValue) === true) {\n const val = encodeEntry(date)\n\n if (date.from !== void 0) {\n model = props.modelValue.filter(\n date => (\n date.from !== void 0\n ? (date.from !== val.from && date.to !== val.to)\n : true\n )\n )\n }\n else {\n model = props.modelValue.filter(date => date !== val)\n }\n\n if (model.length === 0) {\n model = null\n }\n }\n\n emitValue(model, 'remove', date)\n }\n\n function updateValue (mask, locale, reason) {\n const model = daysModel.value\n .concat(rangeModel.value)\n .map(entry => encodeEntry(entry, mask, locale))\n .filter(entry => {\n return entry.from !== void 0\n ? entry.from.dateHash !== null && entry.to.dateHash !== null\n : entry.dateHash !== null\n })\n\n emit('update:modelValue', (props.multiple === true ? model : model[ 0 ]) || null, reason)\n }\n\n function getHeader () {\n if (props.minimal === true) { return }\n\n return h('div', {\n class: 'q-date__header ' + headerClass.value\n }, [\n h('div', {\n class: 'relative-position'\n }, [\n h(Transition, {\n name: 'q-transition--fade'\n }, () => h('div', {\n key: 'h-yr-' + headerSubtitle.value,\n class: 'q-date__header-subtitle q-date__header-link '\n + (view.value === 'Years' ? 'q-date__header-link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n ...getCache('vY', {\n onClick () { view.value = 'Years' },\n onKeyup (e) { e.keyCode === 13 && (view.value = 'Years') }\n })\n }, [ headerSubtitle.value ]))\n ]),\n\n h('div', {\n class: 'q-date__header-title relative-position flex no-wrap'\n }, [\n h('div', {\n class: 'relative-position col'\n }, [\n h(Transition, {\n name: 'q-transition--fade'\n }, () => h('div', {\n key: 'h-sub' + headerTitle.value,\n class: 'q-date__header-title-label q-date__header-link '\n + (view.value === 'Calendar' ? 'q-date__header-link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n ...getCache('vC', {\n onClick () { view.value = 'Calendar' },\n onKeyup (e) { e.keyCode === 13 && (view.value = 'Calendar') }\n })\n }, [ headerTitle.value ]))\n ]),\n\n props.todayBtn === true ? h(QBtn, {\n class: 'q-date__header-today self-start',\n icon: $q.iconSet.datetime.today,\n flat: true,\n size: 'sm',\n round: true,\n tabindex: tabindex.value,\n onClick: setToday\n }) : null\n ])\n ])\n }\n\n function getNavigation ({ label, type, key, dir, goTo, boundaries, cls }) {\n return [\n h('div', {\n class: 'row items-center q-date__arrow'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n size: 'sm',\n flat: true,\n icon: dateArrow.value[ 0 ],\n tabindex: tabindex.value,\n disable: boundaries.prev === false,\n ...getCache('go-#' + type, { onClick () { goTo(-1) } })\n })\n ]),\n\n h('div', {\n class: 'relative-position overflow-hidden flex flex-center' + cls\n }, [\n h(Transition, {\n name: 'q-transition--jump-' + dir\n }, () => h('div', { key }, [\n h(QBtn, {\n flat: true,\n dense: true,\n noCaps: true,\n label,\n tabindex: tabindex.value,\n ...getCache('view#' + type, { onClick: () => { view.value = type } })\n })\n ]))\n ]),\n\n h('div', {\n class: 'row items-center q-date__arrow'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n size: 'sm',\n flat: true,\n icon: dateArrow.value[ 1 ],\n tabindex: tabindex.value,\n disable: boundaries.next === false,\n ...getCache('go+#' + type, { onClick () { goTo(1) } })\n })\n ])\n ]\n }\n\n const renderViews = {\n Calendar: () => ([\n h('div', {\n key: 'calendar-view',\n class: 'q-date__view q-date__calendar'\n }, [\n h('div', {\n class: 'q-date__navigation row items-center no-wrap'\n }, getNavigation({\n label: innerLocale.value.months[ viewModel.value.month - 1 ],\n type: 'Months',\n key: viewModel.value.month,\n dir: monthDirection.value,\n goTo: goToMonth,\n boundaries: navBoundaries.value.month,\n cls: ' col'\n }).concat(getNavigation({\n label: viewModel.value.year,\n type: 'Years',\n key: viewModel.value.year,\n dir: yearDirection.value,\n goTo: goToYear,\n boundaries: navBoundaries.value.year,\n cls: ''\n }))),\n\n h('div', {\n class: 'q-date__calendar-weekdays row items-center no-wrap'\n }, daysOfWeek.value.map(day => h('div', { class: 'q-date__calendar-item' }, [ h('div', day) ]))),\n\n h('div', {\n class: 'q-date__calendar-days-container relative-position overflow-hidden'\n }, [\n h(Transition, {\n name: 'q-transition--slide-' + monthDirection.value\n }, () => h('div', {\n key: viewMonthHash.value,\n class: 'q-date__calendar-days fit'\n }, days.value.map(day => h('div', { class: day.classes }, [\n day.in === true\n ? h(\n QBtn, {\n class: day.today === true ? 'q-date__today' : '',\n dense: true,\n flat: day.flat,\n unelevated: day.unelevated,\n color: day.color,\n textColor: day.textColor,\n label: day.i,\n tabindex: tabindex.value,\n ...getCache('day#' + day.i, {\n onClick: () => { onDayClick(day.i) },\n onMouseover: () => { onDayMouseover(day.i) }\n })\n },\n day.event !== false\n ? () => h('div', { class: 'q-date__event bg-' + day.event })\n : null\n )\n : h('div', '' + day.i)\n ]))))\n ])\n ])\n ]),\n\n Months () {\n const currentYear = viewModel.value.year === today.value.year\n const isDisabled = month => {\n return (\n (minNav.value !== null && viewModel.value.year === minNav.value.year && minNav.value.month > month)\n || (maxNav.value !== null && viewModel.value.year === maxNav.value.year && maxNav.value.month < month)\n )\n }\n\n const content = innerLocale.value.monthsShort.map((month, i) => {\n const active = viewModel.value.month === i + 1\n\n return h('div', {\n class: 'q-date__months-item flex flex-center'\n }, [\n h(QBtn, {\n class: currentYear === true && today.value.month === i + 1 ? 'q-date__today' : null,\n flat: active !== true,\n label: month,\n unelevated: active,\n color: active === true ? computedColor.value : null,\n textColor: active === true ? computedTextColor.value : null,\n tabindex: tabindex.value,\n disable: isDisabled(i + 1),\n ...getCache('month#' + i, { onClick: () => { setMonth(i + 1) } })\n })\n ])\n })\n\n props.yearsInMonthView === true && content.unshift(\n h('div', { class: 'row no-wrap full-width' }, [\n getNavigation({\n label: viewModel.value.year,\n type: 'Years',\n key: viewModel.value.year,\n dir: yearDirection.value,\n goTo: goToYear,\n boundaries: navBoundaries.value.year,\n cls: ' col'\n })\n ])\n )\n\n return h('div', {\n key: 'months-view',\n class: 'q-date__view q-date__months flex flex-center'\n }, content)\n },\n\n Years () {\n const\n start = startYear.value,\n stop = start + yearsInterval,\n years = []\n\n const isDisabled = year => {\n return (\n (minNav.value !== null && minNav.value.year > year)\n || (maxNav.value !== null && maxNav.value.year < year)\n )\n }\n\n for (let i = start; i <= stop; i++) {\n const active = viewModel.value.year === i\n\n years.push(\n h('div', {\n class: 'q-date__years-item flex flex-center'\n }, [\n h(QBtn, {\n key: 'yr' + i,\n class: today.value.year === i ? 'q-date__today' : null,\n flat: !active,\n label: i,\n dense: true,\n unelevated: active,\n color: active === true ? computedColor.value : null,\n textColor: active === true ? computedTextColor.value : null,\n tabindex: tabindex.value,\n disable: isDisabled(i),\n ...getCache('yr#' + i, { onClick: () => { setYear(i) } })\n })\n ])\n )\n }\n\n return h('div', {\n class: 'q-date__view q-date__years flex flex-center'\n }, [\n h('div', {\n class: 'col-auto'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n flat: true,\n icon: dateArrow.value[ 0 ],\n tabindex: tabindex.value,\n disable: isDisabled(start),\n ...getCache('y-', { onClick: () => { startYear.value -= yearsInterval } })\n })\n ]),\n\n h('div', {\n class: 'q-date__years-content col self-stretch row items-center'\n }, years),\n\n h('div', {\n class: 'col-auto'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n flat: true,\n icon: dateArrow.value[ 1 ],\n tabindex: tabindex.value,\n disable: isDisabled(stop),\n ...getCache('y+', { onClick: () => { startYear.value += yearsInterval } })\n })\n ])\n ])\n }\n }\n\n function onDayClick (dayIndex) {\n const day = { ...viewModel.value, day: dayIndex }\n\n if (props.range === false) {\n toggleDate(day, viewMonthHash.value)\n return\n }\n\n if (editRange.value === null) {\n const dayProps = days.value.find(day => day.fill !== true && day.i === dayIndex)\n\n if (props.noUnset !== true && dayProps.range !== void 0) {\n removeFromModel({ target: day, from: dayProps.range.from, to: dayProps.range.to })\n return\n }\n\n if (dayProps.selected === true) {\n removeFromModel(day)\n return\n }\n\n const initHash = getDayHash(day)\n\n editRange.value = {\n init: day,\n initHash,\n final: day,\n finalHash: initHash\n }\n\n emit('rangeStart', getShortDate(day))\n }\n else {\n const\n initHash = editRange.value.initHash,\n finalHash = getDayHash(day),\n payload = initHash <= finalHash\n ? { from: editRange.value.init, to: day }\n : { from: day, to: editRange.value.init }\n\n editRange.value = null\n addToModel(initHash === finalHash ? day : { target: day, ...payload })\n\n emit('rangeEnd', {\n from: getShortDate(payload.from),\n to: getShortDate(payload.to)\n })\n }\n }\n\n function onDayMouseover (dayIndex) {\n if (editRange.value !== null) {\n const final = { ...viewModel.value, day: dayIndex }\n\n Object.assign(editRange.value, {\n final,\n finalHash: getDayHash(final)\n })\n }\n }\n\n // expose public methods\n Object.assign(proxy, {\n setToday, setView, offsetCalendar, setCalendarTo, setEditingRange\n })\n\n return () => {\n const content = [\n h('div', {\n class: 'q-date__content col relative-position'\n }, [\n h(Transition, {\n name: 'q-transition--fade'\n }, renderViews[ view.value ])\n ])\n ]\n\n const def = hSlot(slots.default)\n def !== void 0 && content.push(\n h('div', { class: 'q-date__actions' }, def)\n )\n\n if (props.name !== void 0 && props.disable !== true) {\n injectFormInput(content, 'push')\n }\n\n return h('div', {\n class: classes.value,\n ...attributes.value\n }, [\n getHeader(),\n\n h('div', {\n ref: blurTargetRef,\n class: 'q-date__main col column',\n tabindex: -1\n }, content)\n ])\n }\n }\n})\n","import { computed } from 'vue'\n\nimport { toJalaali } from '../../utils/private/date-persian.js'\nimport { pad } from '../../utils/format.js'\n\nconst calendars = [ 'gregorian', 'persian' ]\n\nexport const useDatetimeProps = {\n modelValue: {\n required: true\n },\n\n mask: {\n type: String\n },\n locale: Object,\n\n calendar: {\n type: String,\n validator: v => calendars.includes(v),\n default: 'gregorian'\n },\n\n landscape: Boolean,\n\n color: String,\n textColor: String,\n\n square: Boolean,\n flat: Boolean,\n bordered: Boolean,\n\n readonly: Boolean,\n disable: Boolean\n}\n\nexport const useDatetimeEmits = [ 'update:modelValue' ]\n\nexport function getDayHash (date) {\n return date.year + '/' + pad(date.month) + '/' + pad(date.day)\n}\n\nexport default function (props, $q) {\n const editable = computed(() => {\n return props.disable !== true && props.readonly !== true\n })\n\n const tabindex = computed(() => {\n return editable.value === true ? 0 : -1\n })\n\n const headerClass = computed(() => {\n const cls = []\n props.color !== void 0 && cls.push(`bg-${ props.color }`)\n props.textColor !== void 0 && cls.push(`text-${ props.textColor }`)\n return cls.join(' ')\n })\n\n function getLocale () {\n return props.locale !== void 0\n ? { ...$q.lang.date, ...props.locale }\n : $q.lang.date\n }\n\n function getCurrentDate (dateOnly) {\n const d = new Date()\n const timeFill = dateOnly === true ? null : 0\n\n if (props.calendar === 'persian') {\n const jDate = toJalaali(d)\n return {\n year: jDate.jy,\n month: jDate.jm,\n day: jDate.jd\n }\n }\n\n return {\n year: d.getFullYear(),\n month: d.getMonth() + 1,\n day: d.getDate(),\n hour: timeFill,\n minute: timeFill,\n second: timeFill,\n millisecond: timeFill\n }\n }\n\n return {\n editable,\n tabindex,\n headerClass,\n\n getLocale,\n getCurrentDate\n }\n}\n","import { h, ref, computed, watch, onBeforeUnmount, Transition, getCurrentInstance } from 'vue'\n\nimport useHistory from '../../composables/private/use-history.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\nimport useTick from '../../composables/private/use-tick.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport useTransition, { useTransitionProps } from '../../composables/private/use-transition.js'\nimport usePortal from '../../composables/private/use-portal.js'\nimport usePreventScroll from '../../composables/private/use-prevent-scroll.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { childHasFocus } from '../../utils/dom.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { addEscapeKey, removeEscapeKey } from '../../utils/private/escape-key.js'\nimport { addFocusout, removeFocusout } from '../../utils/private/focusout.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\n\nlet maximizedModals = 0\n\nconst positionClass = {\n standard: 'fixed-full flex-center',\n top: 'fixed-top justify-center',\n bottom: 'fixed-bottom justify-center',\n right: 'fixed-right items-center',\n left: 'fixed-left items-center'\n}\n\nconst defaultTransitions = {\n standard: [ 'scale', 'scale' ],\n top: [ 'slide-down', 'slide-up' ],\n bottom: [ 'slide-up', 'slide-down' ],\n right: [ 'slide-left', 'slide-right' ],\n left: [ 'slide-right', 'slide-left' ]\n}\n\nexport default createComponent({\n name: 'QDialog',\n\n inheritAttrs: false,\n\n props: {\n ...useModelToggleProps,\n ...useTransitionProps,\n\n transitionShow: String, // override useTransitionProps\n transitionHide: String, // override useTransitionProps\n\n persistent: Boolean,\n autoClose: Boolean,\n allowFocusOutside: Boolean,\n\n noEscDismiss: Boolean,\n noBackdropDismiss: Boolean,\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n noShake: Boolean,\n\n seamless: Boolean,\n\n maximized: Boolean,\n fullWidth: Boolean,\n fullHeight: Boolean,\n\n square: Boolean,\n\n position: {\n type: String,\n default: 'standard',\n validator: val => val === 'standard'\n || [ 'top', 'bottom', 'left', 'right' ].includes(val)\n }\n },\n\n emits: [\n ...useModelToggleEmits,\n 'shake', 'click', 'escapeKey'\n ],\n\n setup (props, { slots, emit, attrs }) {\n const vm = getCurrentInstance()\n\n const innerRef = ref(null)\n const showing = ref(false)\n const animating = ref(false)\n\n let shakeTimeout = null, refocusTarget = null, isMaximized, avoidAutoClose\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && props.noRouteDismiss !== true\n && props.seamless !== true\n )\n\n const { preventBodyScroll } = usePreventScroll()\n const { registerTimeout } = useTimeout()\n const { registerTick, removeTick } = useTick()\n\n const { transitionProps, transitionStyle } = useTransition(\n props,\n () => defaultTransitions[ props.position ][ 0 ],\n () => defaultTransitions[ props.position ][ 1 ]\n )\n\n const { showPortal, hidePortal, portalIsAccessible, renderPortal } = usePortal(\n vm, innerRef, renderPortalContent, 'dialog'\n )\n\n const { hide } = useModelToggle({\n showing,\n hideOnRouteChange,\n handleShow,\n handleHide,\n processOnMount: true\n })\n\n const { addToHistory, removeFromHistory } = useHistory(showing, hide, hideOnRouteChange)\n\n const classes = computed(() =>\n 'q-dialog__inner flex no-pointer-events'\n + ` q-dialog__inner--${ props.maximized === true ? 'maximized' : 'minimized' }`\n + ` q-dialog__inner--${ props.position } ${ positionClass[ props.position ] }`\n + (animating.value === true ? ' q-dialog__inner--animating' : '')\n + (props.fullWidth === true ? ' q-dialog__inner--fullwidth' : '')\n + (props.fullHeight === true ? ' q-dialog__inner--fullheight' : '')\n + (props.square === true ? ' q-dialog__inner--square' : '')\n )\n\n const useBackdrop = computed(() => showing.value === true && props.seamless !== true)\n\n const onEvents = computed(() => (\n props.autoClose === true\n ? { onClick: onAutoClose }\n : {}\n ))\n\n const rootClasses = computed(() => [\n 'q-dialog fullscreen no-pointer-events '\n + `q-dialog--${ useBackdrop.value === true ? 'modal' : 'seamless' }`,\n attrs.class\n ])\n\n watch(() => props.maximized, state => {\n showing.value === true && updateMaximized(state)\n })\n\n watch(useBackdrop, val => {\n preventBodyScroll(val)\n\n if (val === true) {\n addFocusout(onFocusChange)\n addEscapeKey(onEscapeKey)\n }\n else {\n removeFocusout(onFocusChange)\n removeEscapeKey(onEscapeKey)\n }\n })\n\n function handleShow (evt) {\n addToHistory()\n\n refocusTarget = props.noRefocus === false && document.activeElement !== null\n ? document.activeElement\n : null\n\n updateMaximized(props.maximized)\n showPortal()\n animating.value = true\n\n if (props.noFocus !== true) {\n document.activeElement !== null && document.activeElement.blur()\n registerTick(focus)\n }\n else {\n removeTick()\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n if (vm.proxy.$q.platform.is.ios === true) {\n if (props.seamless !== true && document.activeElement) {\n const\n { top, bottom } = document.activeElement.getBoundingClientRect(),\n { innerHeight } = window,\n height = window.visualViewport !== void 0\n ? window.visualViewport.height\n : innerHeight\n\n if (top > 0 && bottom > height / 2) {\n document.scrollingElement.scrollTop = Math.min(\n document.scrollingElement.scrollHeight - height,\n bottom >= innerHeight\n ? Infinity\n : Math.ceil(document.scrollingElement.scrollTop + bottom - height / 2)\n )\n }\n\n document.activeElement.scrollIntoView()\n }\n\n // required in order to avoid the \"double-tap needed\" issue\n avoidAutoClose = true\n innerRef.value.click()\n avoidAutoClose = false\n }\n\n showPortal(true) // done showing portal\n animating.value = false\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTick()\n removeFromHistory()\n cleanup(true)\n animating.value = true\n hidePortal()\n\n if (refocusTarget !== null) {\n ((evt && evt.type.indexOf('key') === 0\n ? refocusTarget.closest('[tabindex]:not([tabindex^=\"-\"])')\n : void 0\n ) || refocusTarget).focus()\n refocusTarget = null\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n hidePortal(true) // done hiding, now destroy\n animating.value = false\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function focus (selector) {\n addFocusFn(() => {\n let node = innerRef.value\n\n if (node === null || node.contains(document.activeElement) === true) {\n return\n }\n\n node = (selector !== '' ? node.querySelector(selector) : null)\n || node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')\n || node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')\n || node.querySelector('[autofocus], [data-autofocus]')\n || node\n node.focus({ preventScroll: true })\n })\n }\n\n function shake (focusTarget) {\n if (focusTarget && typeof focusTarget.focus === 'function') {\n focusTarget.focus({ preventScroll: true })\n }\n else {\n focus()\n }\n\n emit('shake')\n\n const node = innerRef.value\n\n if (node !== null) {\n node.classList.remove('q-animate--scale')\n node.classList.add('q-animate--scale')\n shakeTimeout !== null && clearTimeout(shakeTimeout)\n shakeTimeout = setTimeout(() => {\n shakeTimeout = null\n if (innerRef.value !== null) {\n node.classList.remove('q-animate--scale')\n // some platforms (like desktop Chrome)\n // require calling focus() again\n focus()\n }\n }, 170)\n }\n }\n\n function onEscapeKey () {\n if (props.seamless !== true) {\n if (props.persistent === true || props.noEscDismiss === true) {\n props.maximized !== true && props.noShake !== true && shake()\n }\n else {\n emit('escapeKey')\n hide()\n }\n }\n }\n\n function cleanup (hiding) {\n if (shakeTimeout !== null) {\n clearTimeout(shakeTimeout)\n shakeTimeout = null\n }\n\n if (hiding === true || showing.value === true) {\n updateMaximized(false)\n\n if (props.seamless !== true) {\n preventBodyScroll(false)\n removeFocusout(onFocusChange)\n removeEscapeKey(onEscapeKey)\n }\n }\n\n if (hiding !== true) {\n refocusTarget = null\n }\n }\n\n function updateMaximized (active) {\n if (active === true) {\n if (isMaximized !== true) {\n maximizedModals < 1 && document.body.classList.add('q-body--dialog')\n maximizedModals++\n\n isMaximized = true\n }\n }\n else if (isMaximized === true) {\n if (maximizedModals < 2) {\n document.body.classList.remove('q-body--dialog')\n }\n\n maximizedModals--\n isMaximized = false\n }\n }\n\n function onAutoClose (e) {\n if (avoidAutoClose !== true) {\n hide(e)\n emit('click', e)\n }\n }\n\n function onBackdropClick (e) {\n if (props.persistent !== true && props.noBackdropDismiss !== true) {\n hide(e)\n }\n else if (props.noShake !== true) {\n shake()\n }\n }\n\n function onFocusChange (evt) {\n // the focus is not in a vue child component\n if (\n props.allowFocusOutside !== true\n && portalIsAccessible.value === true\n && childHasFocus(innerRef.value, evt.target) !== true\n ) {\n focus('[tabindex]:not([tabindex=\"-1\"])')\n }\n }\n\n Object.assign(vm.proxy, {\n // expose public methods\n focus, shake,\n\n // private but needed by QSelect\n __updateRefocusTarget (target) {\n refocusTarget = target || null\n }\n })\n\n onBeforeUnmount(cleanup)\n\n function renderPortalContent () {\n return h('div', {\n role: 'dialog',\n 'aria-modal': useBackdrop.value === true ? 'true' : 'false',\n ...attrs,\n class: rootClasses.value\n }, [\n h(Transition, {\n name: 'q-transition--fade',\n appear: true\n }, () => (\n useBackdrop.value === true\n ? h('div', {\n class: 'q-dialog__backdrop fixed-full',\n style: transitionStyle.value,\n 'aria-hidden': 'true',\n tabindex: -1,\n onClick: onBackdropClick\n })\n : null\n )),\n\n h(\n Transition,\n transitionProps.value,\n () => (\n showing.value === true\n ? h('div', {\n ref: innerRef,\n class: classes.value,\n style: transitionStyle.value,\n tabindex: -1,\n ...onEvents.value\n }, hSlot(slots.default))\n : null\n )\n )\n ])\n }\n\n return renderPortal\n }\n})\n","import { h, withDirectives, ref, computed, watch, onMounted, onBeforeUnmount, nextTick, inject, getCurrentInstance } from 'vue'\n\nimport useHistory from '../../composables/private/use-history.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport usePreventScroll from '../../composables/private/use-prevent-scroll.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { between } from '../../utils/format.js'\nimport { hSlot, hDir } from '../../utils/private/render.js'\nimport { layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'\n\nconst duration = 150\n\nexport default createComponent({\n name: 'QDrawer',\n\n inheritAttrs: false,\n\n props: {\n ...useModelToggleProps,\n ...useDarkProps,\n\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 noMiniAnimation: Boolean,\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\n overlay: Boolean,\n persistent: Boolean,\n noSwipeOpen: Boolean,\n noSwipeClose: Boolean,\n noSwipeBackdrop: Boolean\n },\n\n emits: [\n ...useModelToggleEmits,\n 'onLayout', 'miniState'\n ],\n\n setup (props, { slots, emit, attrs }) {\n const vm = getCurrentInstance()\n const { proxy: { $q } } = vm\n\n const isDark = useDark(props, $q)\n const { preventBodyScroll } = usePreventScroll()\n const { registerTimeout, removeTimeout } = useTimeout()\n\n const $layout = inject(layoutKey, emptyRenderFn)\n if ($layout === emptyRenderFn) {\n console.error('QDrawer needs to be child of QLayout')\n return emptyRenderFn\n }\n\n let lastDesktopState, timerMini = null, layoutTotalWidthWatcher\n\n const belowBreakpoint = ref(\n props.behavior === 'mobile'\n || (props.behavior !== 'desktop' && $layout.totalWidth.value <= props.breakpoint)\n )\n\n const isMini = computed(() =>\n props.mini === true && belowBreakpoint.value !== true\n )\n\n const size = computed(() => (\n isMini.value === true\n ? props.miniWidth\n : props.width\n ))\n\n const showing = ref(\n props.showIfAbove === true && belowBreakpoint.value === false\n ? true\n : props.modelValue === true\n )\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && (belowBreakpoint.value === true || onScreenOverlay.value === true)\n )\n\n function handleShow (evt, noEvent) {\n addToHistory()\n\n evt !== false && $layout.animate()\n applyPosition(0)\n\n if (belowBreakpoint.value === true) {\n const otherInstance = $layout.instances[ otherSide.value ]\n if (otherInstance !== void 0 && otherInstance.belowBreakpoint === true) {\n otherInstance.hide(false)\n }\n\n applyBackdrop(1)\n $layout.isContainer.value !== true && preventBodyScroll(true)\n }\n else {\n applyBackdrop(0)\n evt !== false && setScrollable(false)\n }\n\n registerTimeout(() => {\n evt !== false && setScrollable(true)\n noEvent !== true && emit('show', evt)\n }, duration)\n }\n\n function handleHide (evt, noEvent) {\n removeFromHistory()\n\n evt !== false && $layout.animate()\n\n applyBackdrop(0)\n applyPosition(stateDirection.value * size.value)\n\n cleanup()\n\n if (noEvent !== true) {\n registerTimeout(() => { emit('hide', evt) }, duration)\n }\n else {\n removeTimeout()\n }\n }\n\n const { show, hide } = useModelToggle({\n showing,\n hideOnRouteChange,\n handleShow,\n handleHide\n })\n\n const { addToHistory, removeFromHistory } = useHistory(showing, hide, hideOnRouteChange)\n\n const instance = {\n belowBreakpoint,\n hide\n }\n\n const rightSide = computed(() => props.side === 'right')\n\n const stateDirection = computed(() =>\n ($q.lang.rtl === true ? -1 : 1) * (rightSide.value === true ? 1 : -1)\n )\n\n const flagBackdropBg = ref(0)\n const flagPanning = ref(false)\n const flagMiniAnimate = ref(false)\n const flagContentPosition = ref( // starting with \"hidden\" for SSR\n size.value * stateDirection.value\n )\n\n const otherSide = computed(() => (rightSide.value === true ? 'left' : 'right'))\n const offset = computed(() => (\n showing.value === true && belowBreakpoint.value === false && props.overlay === false\n ? (props.miniToOverlay === true ? props.miniWidth : size.value)\n : 0\n ))\n\n const fixed = computed(() =>\n props.overlay === true\n || props.miniToOverlay === true\n || $layout.view.value.indexOf(rightSide.value ? 'R' : 'L') > -1\n || ($q.platform.is.ios === true && $layout.isContainer.value === true)\n )\n\n const onLayout = computed(() =>\n props.overlay === false\n && showing.value === true\n && belowBreakpoint.value === false\n )\n\n const onScreenOverlay = computed(() =>\n props.overlay === true\n && showing.value === true\n && belowBreakpoint.value === false\n )\n\n const backdropClass = computed(() =>\n 'fullscreen q-drawer__backdrop'\n + (showing.value === false && flagPanning.value === false ? ' hidden' : '')\n )\n\n const backdropStyle = computed(() => ({\n backgroundColor: `rgba(0,0,0,${ flagBackdropBg.value * 0.4 })`\n }))\n\n const headerSlot = computed(() => (\n rightSide.value === true\n ? $layout.rows.value.top[ 2 ] === 'r'\n : $layout.rows.value.top[ 0 ] === 'l'\n ))\n\n const footerSlot = computed(() => (\n rightSide.value === true\n ? $layout.rows.value.bottom[ 2 ] === 'r'\n : $layout.rows.value.bottom[ 0 ] === 'l'\n ))\n\n const aboveStyle = computed(() => {\n const css = {}\n\n if ($layout.header.space === true && headerSlot.value === false) {\n if (fixed.value === true) {\n css.top = `${ $layout.header.offset }px`\n }\n else if ($layout.header.space === true) {\n css.top = `${ $layout.header.size }px`\n }\n }\n\n if ($layout.footer.space === true && footerSlot.value === false) {\n if (fixed.value === true) {\n css.bottom = `${ $layout.footer.offset }px`\n }\n else if ($layout.footer.space === true) {\n css.bottom = `${ $layout.footer.size }px`\n }\n }\n\n return css\n })\n\n const style = computed(() => {\n const style = {\n width: `${ size.value }px`,\n transform: `translateX(${ flagContentPosition.value }px)`\n }\n\n return belowBreakpoint.value === true\n ? style\n : Object.assign(style, aboveStyle.value)\n })\n\n const contentClass = computed(() =>\n 'q-drawer__content fit '\n + ($layout.isContainer.value !== true ? 'scroll' : 'overflow-auto')\n )\n\n const classes = computed(() =>\n `q-drawer q-drawer--${ props.side }`\n + (flagMiniAnimate.value === true ? ' q-drawer--mini-animate' : '')\n + (props.bordered === true ? ' q-drawer--bordered' : '')\n + (isDark.value === true ? ' q-drawer--dark q-dark' : '')\n + (\n flagPanning.value === true\n ? ' no-transition'\n : (showing.value === true ? '' : ' q-layout--prevent-focus')\n )\n + (\n belowBreakpoint.value === true\n ? ' fixed q-drawer--on-top q-drawer--mobile q-drawer--top-padding'\n : ` q-drawer--${ isMini.value === true ? 'mini' : 'standard' }`\n + (fixed.value === true || onLayout.value !== true ? ' fixed' : '')\n + (props.overlay === true || props.miniToOverlay === true ? ' q-drawer--on-top' : '')\n + (headerSlot.value === true ? ' q-drawer--top-padding' : '')\n )\n )\n\n const openDirective = computed(() => {\n // if props.noSwipeOpen !== true\n const dir = $q.lang.rtl === true ? props.side : otherSide.value\n\n return [ [\n TouchPan,\n onOpenPan,\n void 0,\n {\n [ dir ]: true,\n mouse: true\n }\n ] ]\n })\n\n const contentCloseDirective = computed(() => {\n // if belowBreakpoint.value === true && props.noSwipeClose !== true\n const dir = $q.lang.rtl === true ? otherSide.value : props.side\n\n return [ [\n TouchPan,\n onClosePan,\n void 0,\n {\n [ dir ]: true,\n mouse: true\n }\n ] ]\n })\n\n const backdropCloseDirective = computed(() => {\n // if showing.value === true && props.noSwipeBackdrop !== true\n const dir = $q.lang.rtl === true ? otherSide.value : props.side\n\n return [ [\n TouchPan,\n onClosePan,\n void 0,\n {\n [ dir ]: true,\n mouse: true,\n mouseAllDir: true\n }\n ] ]\n })\n\n function updateBelowBreakpoint () {\n updateLocal(belowBreakpoint, (\n props.behavior === 'mobile'\n || (props.behavior !== 'desktop' && $layout.totalWidth.value <= props.breakpoint)\n ))\n }\n\n watch(belowBreakpoint, val => {\n if (val === true) { // from lg to xs\n lastDesktopState = showing.value\n showing.value === true && hide(false)\n }\n else if (\n props.overlay === false\n && props.behavior !== 'mobile'\n && lastDesktopState !== false\n ) { // from xs to lg\n if (showing.value === true) {\n applyPosition(0)\n applyBackdrop(0)\n cleanup()\n }\n else {\n show(false)\n }\n }\n })\n\n watch(() => props.side, (newSide, oldSide) => {\n if ($layout.instances[ oldSide ] === instance) {\n $layout.instances[ oldSide ] = void 0\n $layout[ oldSide ].space = false\n $layout[ oldSide ].offset = 0\n }\n\n $layout.instances[ newSide ] = instance\n $layout[ newSide ].size = size.value\n $layout[ newSide ].space = onLayout.value\n $layout[ newSide ].offset = offset.value\n })\n\n watch($layout.totalWidth, () => {\n if ($layout.isContainer.value === true || document.qScrollPrevented !== true) {\n updateBelowBreakpoint()\n }\n })\n\n watch(\n () => props.behavior + props.breakpoint,\n updateBelowBreakpoint\n )\n\n watch($layout.isContainer, val => {\n showing.value === true && preventBodyScroll(val !== true)\n val === true && updateBelowBreakpoint()\n })\n\n watch($layout.scrollbarWidth, () => {\n applyPosition(showing.value === true ? 0 : void 0)\n })\n\n watch(offset, val => { updateLayout('offset', val) })\n\n watch(onLayout, val => {\n emit('onLayout', val)\n updateLayout('space', val)\n })\n\n watch(rightSide, () => { applyPosition() })\n\n watch(size, val => {\n applyPosition()\n updateSizeOnLayout(props.miniToOverlay, val)\n })\n\n watch(() => props.miniToOverlay, val => {\n updateSizeOnLayout(val, size.value)\n })\n\n watch(() => $q.lang.rtl, () => { applyPosition() })\n\n watch(() => props.mini, () => {\n if (props.noMiniAnimation) return\n if (props.modelValue === true) {\n animateMini()\n $layout.animate()\n }\n })\n\n watch(isMini, val => { emit('miniState', val) })\n\n function applyPosition (position) {\n if (position === void 0) {\n nextTick(() => {\n position = showing.value === true ? 0 : size.value\n applyPosition(stateDirection.value * position)\n })\n }\n else {\n if (\n $layout.isContainer.value === true\n && rightSide.value === true\n && (belowBreakpoint.value === true || Math.abs(position) === size.value)\n ) {\n position += stateDirection.value * $layout.scrollbarWidth.value\n }\n\n flagContentPosition.value = position\n }\n }\n\n function applyBackdrop (x) {\n flagBackdropBg.value = x\n }\n\n function setScrollable (v) {\n const action = v === true\n ? 'remove'\n : ($layout.isContainer.value !== true ? 'add' : '')\n\n action !== '' && document.body.classList[ action ]('q-body--drawer-toggle')\n }\n\n function animateMini () {\n timerMini !== null && clearTimeout(timerMini)\n\n if (vm.proxy && vm.proxy.$el) {\n // need to speed it up and apply it immediately,\n // even faster than Vue's nextTick!\n vm.proxy.$el.classList.add('q-drawer--mini-animate')\n }\n\n flagMiniAnimate.value = true\n timerMini = setTimeout(() => {\n timerMini = null\n flagMiniAnimate.value = false\n if (vm && vm.proxy && vm.proxy.$el) {\n vm.proxy.$el.classList.remove('q-drawer--mini-animate')\n }\n }, 150)\n }\n\n function onOpenPan (evt) {\n if (showing.value !== 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 = size.value,\n position = between(evt.distance.x, 0, width)\n\n if (evt.isFinal === true) {\n const opened = position >= Math.min(75, width)\n\n if (opened === true) {\n show()\n }\n else {\n $layout.animate()\n applyBackdrop(0)\n applyPosition(stateDirection.value * width)\n }\n\n flagPanning.value = false\n return\n }\n\n applyPosition(\n ($q.lang.rtl === true ? rightSide.value !== true : rightSide.value)\n ? Math.max(width - position, 0)\n : Math.min(0, position - width)\n )\n applyBackdrop(\n between(position / width, 0, 1)\n )\n\n if (evt.isFirst === true) {\n flagPanning.value = true\n }\n }\n\n function onClosePan (evt) {\n if (showing.value !== 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 = size.value,\n dir = evt.direction === props.side,\n position = ($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\n if (opened === true) {\n $layout.animate()\n applyBackdrop(1)\n applyPosition(0)\n }\n else {\n hide()\n }\n\n flagPanning.value = false\n return\n }\n\n applyPosition(stateDirection.value * position)\n applyBackdrop(between(1 - position / width, 0, 1))\n\n if (evt.isFirst === true) {\n flagPanning.value = true\n }\n }\n\n function cleanup () {\n preventBodyScroll(false)\n setScrollable(true)\n }\n\n function updateLayout (prop, val) {\n $layout.update(props.side, prop, val)\n }\n\n function updateLocal (prop, val) {\n if (prop.value !== val) {\n prop.value = val\n }\n }\n\n function updateSizeOnLayout (miniToOverlay, size) {\n updateLayout('size', miniToOverlay === true ? props.miniWidth : size)\n }\n\n $layout.instances[ props.side ] = instance\n updateSizeOnLayout(props.miniToOverlay, size.value)\n updateLayout('space', onLayout.value)\n updateLayout('offset', offset.value)\n\n if (\n props.showIfAbove === true\n && props.modelValue !== true\n && showing.value === true\n && props[ 'onUpdate:modelValue' ] !== void 0\n ) {\n emit('update:modelValue', true)\n }\n\n onMounted(() => {\n emit('onLayout', onLayout.value)\n emit('miniState', isMini.value)\n\n lastDesktopState = props.showIfAbove === true\n\n const fn = () => {\n const action = showing.value === true ? handleShow : handleHide\n action(false, true)\n }\n\n if ($layout.totalWidth.value !== 0) {\n // make sure that all computed properties\n // have been updated before calling handleShow/handleHide()\n nextTick(fn)\n return\n }\n\n layoutTotalWidthWatcher = watch($layout.totalWidth, () => {\n layoutTotalWidthWatcher()\n layoutTotalWidthWatcher = void 0\n\n if (showing.value === false && props.showIfAbove === true && belowBreakpoint.value === false) {\n show(false)\n }\n else {\n fn()\n }\n })\n })\n\n onBeforeUnmount(() => {\n layoutTotalWidthWatcher !== void 0 && layoutTotalWidthWatcher()\n\n if (timerMini !== null) {\n clearTimeout(timerMini)\n timerMini = null\n }\n\n showing.value === true && cleanup()\n\n if ($layout.instances[ props.side ] === instance) {\n $layout.instances[ props.side ] = void 0\n updateLayout('size', 0)\n updateLayout('offset', 0)\n updateLayout('space', false)\n }\n })\n\n return () => {\n const child = []\n\n if (belowBreakpoint.value === true) {\n props.noSwipeOpen === false && child.push(\n withDirectives(\n h('div', {\n key: 'open',\n class: `q-drawer__opener fixed-${ props.side }`,\n 'aria-hidden': 'true'\n }),\n openDirective.value\n )\n )\n\n child.push(\n hDir(\n 'div',\n {\n ref: 'backdrop',\n class: backdropClass.value,\n style: backdropStyle.value,\n 'aria-hidden': 'true',\n onClick: hide\n },\n void 0,\n 'backdrop',\n props.noSwipeBackdrop !== true && showing.value === true,\n () => backdropCloseDirective.value\n )\n )\n }\n\n const mini = isMini.value === true && slots.mini !== void 0\n const content = [\n h('div', {\n ...attrs,\n key: '' + mini, // required otherwise Vue will not diff correctly\n class: [\n contentClass.value,\n attrs.class\n ]\n }, mini === true\n ? slots.mini()\n : hSlot(slots.default)\n )\n ]\n\n if (props.elevated === true && showing.value === true) {\n content.push(\n h('div', {\n class: 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'\n })\n )\n }\n\n child.push(\n hDir(\n 'aside',\n { ref: 'content', class: classes.value, style: style.value },\n content,\n 'contentclose',\n props.noSwipeClose !== true && belowBreakpoint.value === true,\n () => contentCloseDirective.value\n )\n )\n\n return h('div', { class: 'q-drawer-container' }, child)\n }\n }\n})\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, orSame) {\n return !el || el === document.body\n ? false\n : (orSame === true && el === parent) || (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 default class Caret {\n constructor (el, eVm) {\n this.el = el\n this.eVm = eVm\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, true) && isChildOf(sel.focusNode, this.el, true)) {\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 (length = 0) {\n if (this.savedPos > 0 && this.savedPos < length) {\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 (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 if (this.selection === null) {\n return false\n }\n\n switch (cmd) {\n case 'formatBlock':\n return (param === 'DIV' && this.parent === this.el)\n || 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.eVm.inFullscreen.value\n case 'viewsource':\n return this.eVm.isViewingSource.value\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 Print - ${ document.title }\n \n \n
${ this.el.innerHTML }
\n \n \n `)\n win.print()\n win.close()\n\n return\n }\n else if (cmd === 'link') {\n const link = this.getParentAttribute('href')\n\n if (link === null) {\n const selection = this.selectWord(this.selection)\n const url = selection ? selection.toString() : ''\n\n if (!url.length) {\n if (!this.range || !this.range.cloneContents().querySelector('img')) {\n return\n }\n }\n\n this.eVm.editLinkUrl.value = urlRegex.test(url) ? url : 'https://'\n document.execCommand('createLink', false, this.eVm.editLinkUrl.value)\n\n this.save(selection.getRangeAt(0))\n }\n else {\n this.eVm.editLinkUrl.value = link\n\n this.range.selectNodeContents(this.parent)\n this.save()\n }\n\n return\n }\n else if (cmd === 'fullscreen') {\n this.eVm.toggleFullscreen()\n done()\n\n return\n }\n else if (cmd === 'viewsource') {\n this.eVm.isViewingSource.value = this.eVm.isViewingSource.value === false\n this.eVm.setContent(this.eVm.props.modelValue)\n done()\n\n return\n }\n\n document.execCommand(cmd, false, param)\n\n done()\n }\n\n selectWord (sel) {\n if (sel === null || sel.isCollapsed !== true || /* IE 11 */ sel.modify === void 0) {\n return sel\n }\n\n // Detect if selection is backwards\n const range = document.createRange()\n range.setStart(sel.anchorNode, sel.anchorOffset)\n range.setEnd(sel.focusNode, sel.focusOffset)\n const direction = range.collapsed ? [ 'backward', 'forward' ] : [ 'forward', 'backward' ]\n range.detach()\n\n // modify() works on the focus of the selection\n const\n endNode = sel.focusNode,\n endOffset = sel.focusOffset\n sel.collapse(sel.anchorNode, sel.anchorOffset)\n sel.modify('move', direction[ 0 ], 'character')\n sel.modify('move', direction[ 1 ], 'word')\n sel.extend(endNode, endOffset)\n sel.modify('extend', direction[ 1 ], 'character')\n sel.modify('extend', direction[ 0 ], 'word')\n\n return sel\n }\n}\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QBtnGroup',\n\n props: {\n unelevated: Boolean,\n outline: Boolean,\n flat: Boolean,\n rounded: Boolean,\n square: Boolean,\n push: Boolean,\n stretch: Boolean,\n glossy: Boolean,\n spread: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() => {\n const cls = [ 'unelevated', 'outline', 'flat', 'rounded', 'square', 'push', 'stretch', 'glossy' ]\n .filter(t => props[ t ] === true)\n .map(t => `q-btn-group--${ t }`).join(' ')\n\n return `q-btn-group row no-wrap${ cls.length !== 0 ? ' ' + cls : '' }`\n + (props.spread === true ? ' q-btn-group--spread' : ' inline')\n })\n\n return () => h('div', { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, ref, computed, watch, onMounted, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QBtn from '../btn/QBtn.js'\nimport QBtnGroup from '../btn-group/QBtnGroup.js'\nimport QMenu from '../menu/QMenu.js'\n\nimport { getBtnDesignAttr, useBtnProps } from '../btn/use-btn.js'\nimport { useTransitionProps } from '../../composables/private/use-transition.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stop } from '../../utils/event.js'\nimport uid from '../../utils/uid.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nconst btnPropsList = Object.keys(useBtnProps)\n\nexport const passBtnProps = props => btnPropsList.reduce(\n (acc, key) => {\n const val = props[ key ]\n if (val !== void 0) {\n acc[ key ] = val\n }\n return acc\n },\n {}\n)\n\nexport default createComponent({\n name: 'QBtnDropdown',\n\n props: {\n ...useBtnProps,\n ...useTransitionProps,\n\n modelValue: Boolean,\n split: Boolean,\n dropdownIcon: String,\n\n contentClass: [ Array, String, Object ],\n contentStyle: [ Array, String, Object ],\n\n cover: Boolean,\n persistent: Boolean,\n noRouteDismiss: Boolean,\n autoClose: Boolean,\n\n menuAnchor: {\n type: String,\n default: 'bottom end'\n },\n menuSelf: {\n type: String,\n default: 'top end'\n },\n menuOffset: Array,\n\n disableMainBtn: Boolean,\n disableDropdown: Boolean,\n\n noIconAnimation: Boolean,\n\n toggleAriaLabel: String\n },\n\n emits: [ 'update:modelValue', 'click', 'beforeShow', 'show', 'beforeHide', 'hide' ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n\n const showing = ref(props.modelValue)\n const menuRef = ref(null)\n const targetUid = uid()\n\n const ariaAttrs = computed(() => {\n const acc = {\n 'aria-expanded': showing.value === true ? 'true' : 'false',\n 'aria-haspopup': 'true',\n 'aria-controls': targetUid,\n 'aria-label': props.toggleAriaLabel || proxy.$q.lang.label[ showing.value === true ? 'collapse' : 'expand' ](props.label)\n }\n\n if (\n props.disable === true\n || (\n (props.split === false && props.disableMainBtn === true)\n || props.disableDropdown === true\n )\n ) {\n acc[ 'aria-disabled' ] = 'true'\n }\n\n return acc\n })\n\n const iconClass = computed(() =>\n 'q-btn-dropdown__arrow'\n + (showing.value === true && props.noIconAnimation === false ? ' rotate-180' : '')\n + (props.split === false ? ' q-btn-dropdown__arrow-container' : '')\n )\n\n const btnDesignAttr = computed(() => getBtnDesignAttr(props))\n const btnProps = computed(() => passBtnProps(props))\n\n watch(() => props.modelValue, val => {\n menuRef.value !== null && menuRef.value[ val ? 'show' : 'hide' ]()\n })\n\n watch(() => props.split, hide)\n\n function onBeforeShow (e) {\n showing.value = true\n emit('beforeShow', e)\n }\n\n function onShow (e) {\n emit('show', e)\n emit('update:modelValue', true)\n }\n\n function onBeforeHide (e) {\n showing.value = false\n emit('beforeHide', e)\n }\n\n function onHide (e) {\n emit('hide', e)\n emit('update:modelValue', false)\n }\n\n function onClick (e) {\n emit('click', e)\n }\n\n function onClickHide (e) {\n stop(e)\n hide()\n emit('click', e)\n }\n\n function toggle (evt) {\n menuRef.value !== null && menuRef.value.toggle(evt)\n }\n\n function show (evt) {\n menuRef.value !== null && menuRef.value.show(evt)\n }\n\n function hide (evt) {\n menuRef.value !== null && menuRef.value.hide(evt)\n }\n\n // expose public methods\n Object.assign(proxy, {\n show, hide, toggle\n })\n\n onMounted(() => {\n props.modelValue === true && show()\n })\n\n return () => {\n const Arrow = [\n h(QIcon, {\n class: iconClass.value,\n name: props.dropdownIcon || proxy.$q.iconSet.arrow.dropdown\n })\n ]\n\n props.disableDropdown !== true && Arrow.push(\n h(QMenu, {\n ref: menuRef,\n id: targetUid,\n class: props.contentClass,\n style: props.contentStyle,\n cover: props.cover,\n fit: true,\n persistent: props.persistent,\n noRouteDismiss: props.noRouteDismiss,\n autoClose: props.autoClose,\n anchor: props.menuAnchor,\n self: props.menuSelf,\n offset: props.menuOffset,\n separateClosePopup: true,\n transitionShow: props.transitionShow,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n onBeforeShow,\n onShow,\n onBeforeHide,\n onHide\n }, slots.default)\n )\n\n if (props.split === false) {\n return h(QBtn, {\n class: 'q-btn-dropdown q-btn-dropdown--simple',\n ...btnProps.value,\n ...ariaAttrs.value,\n disable: props.disable === true || props.disableMainBtn === true,\n noWrap: true,\n round: false,\n onClick\n }, {\n default: () => hSlot(slots.label, []).concat(Arrow),\n loading: slots.loading\n })\n }\n\n return h(QBtnGroup, {\n class: 'q-btn-dropdown q-btn-dropdown--split no-wrap q-btn-item',\n rounded: props.rounded,\n square: props.square,\n ...btnDesignAttr.value,\n glossy: props.glossy,\n stretch: props.stretch\n }, () => [\n h(QBtn, {\n class: 'q-btn-dropdown--current',\n ...btnProps.value,\n disable: props.disable === true || props.disableMainBtn === true,\n noWrap: true,\n round: false,\n onClick: onClickHide\n }, {\n default: slots.label,\n loading: slots.loading\n }),\n\n h(QBtn, {\n class: 'q-btn-dropdown__arrow-container q-anchor--skip',\n ...ariaAttrs.value,\n ...btnDesignAttr.value,\n disable: props.disable === true || props.disableDropdown === true,\n rounded: props.rounded,\n color: props.color,\n textColor: props.textColor,\n dense: props.dense,\n size: props.size,\n padding: props.padding,\n ripple: props.ripple\n }, () => Arrow)\n ])\n }\n }\n})\n","import { h } from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport QBtnDropdown from '../btn-dropdown/QBtnDropdown.js'\nimport QIcon from '../icon/QIcon.js'\nimport QTooltip from '../tooltip/QTooltip.js'\nimport QItem from '../item/QItem.js'\nimport QItemSection from '../item/QItemSection.js'\n\nimport { prevent, stop } from '../../utils/event.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { shouldIgnoreKey } from '../../utils/private/key-composition.js'\n\nfunction run (e, btn, eVm) {\n if (btn.handler) {\n btn.handler(e, eVm, eVm.caret)\n }\n else {\n eVm.runCmd(btn.cmd, btn.param)\n }\n}\n\nfunction getGroup (children) {\n return h('div', { class: 'q-editor__toolbar-group' }, children)\n}\n\nfunction getBtn (eVm, btn, clickHandler, active = false) {\n const\n toggled = active || (btn.type === 'toggle'\n ? (btn.toggled ? btn.toggled(eVm) : btn.cmd && eVm.caret.is(btn.cmd, btn.param))\n : false),\n child = []\n\n if (btn.tip && eVm.$q.platform.is.desktop) {\n const Key = btn.key\n ? h('div', [\n h('small', `(CTRL + ${ String.fromCharCode(btn.key) })`)\n ])\n : null\n child.push(\n h(QTooltip, { delay: 1000 }, () => [\n h('div', { innerHTML: btn.tip }),\n Key\n ])\n )\n }\n\n return h(QBtn, {\n ...eVm.buttonProps.value,\n icon: btn.icon !== null ? btn.icon : void 0,\n color: toggled ? btn.toggleColor || eVm.props.toolbarToggleColor : btn.color || eVm.props.toolbarColor,\n textColor: toggled && !eVm.props.toolbarPush ? null : btn.textColor || eVm.props.toolbarTextColor,\n label: btn.label,\n disable: btn.disable ? (typeof btn.disable === 'function' ? btn.disable(eVm) : true) : false,\n size: 'sm',\n onClick (e) {\n clickHandler && clickHandler()\n run(e, btn, eVm)\n }\n }, () => child)\n}\n\nfunction getDropdown (eVm, btn) {\n const onlyIcons = btn.list === 'only-icons'\n let\n label = btn.label,\n icon = btn.icon !== null ? btn.icon : void 0,\n contentClass,\n Items\n\n function closeDropdown () {\n Dropdown.component.proxy.hide()\n }\n\n if (onlyIcons) {\n Items = btn.options.map(btn => {\n const active = btn.type === void 0\n ? eVm.caret.is(btn.cmd, btn.param)\n : false\n\n if (active) {\n label = btn.tip\n icon = btn.icon !== null ? btn.icon : void 0\n }\n return getBtn(eVm, btn, closeDropdown, active)\n })\n contentClass = eVm.toolbarBackgroundClass.value\n Items = [\n getGroup(Items)\n ]\n }\n else {\n const activeClass = eVm.props.toolbarToggleColor !== void 0\n ? `text-${ eVm.props.toolbarToggleColor }`\n : null\n const inactiveClass = eVm.props.toolbarTextColor !== void 0\n ? `text-${ eVm.props.toolbarTextColor }`\n : null\n\n const noIcons = btn.list === 'no-icons'\n\n Items = btn.options.map(btn => {\n const disable = btn.disable ? btn.disable(eVm) : false\n const active = btn.type === void 0\n ? eVm.caret.is(btn.cmd, btn.param)\n : false\n\n if (active) {\n label = btn.tip\n icon = btn.icon !== null ? btn.icon : void 0\n }\n\n const htmlTip = btn.htmlTip\n\n return h(QItem, {\n active,\n activeClass,\n clickable: true,\n disable,\n dense: true,\n onClick (e) {\n closeDropdown()\n eVm.contentRef.value !== null && eVm.contentRef.value.focus()\n eVm.caret.restore()\n run(e, btn, eVm)\n }\n }, () => [\n noIcons === true\n ? null\n : h(\n QItemSection,\n {\n class: active ? activeClass : inactiveClass,\n side: true\n },\n () => h(QIcon, { name: btn.icon !== null ? btn.icon : void 0 })\n ),\n\n h(\n QItemSection,\n htmlTip\n ? () => h('div', { class: 'text-no-wrap', innerHTML: btn.htmlTip })\n : (btn.tip ? () => h('div', { class: 'text-no-wrap' }, btn.tip) : void 0)\n )\n ])\n })\n contentClass = [ eVm.toolbarBackgroundClass.value, inactiveClass ]\n }\n\n const highlight = btn.highlight && label !== btn.label\n const Dropdown = h(QBtnDropdown, {\n ...eVm.buttonProps.value,\n noCaps: true,\n noWrap: true,\n color: highlight ? eVm.props.toolbarToggleColor : eVm.props.toolbarColor,\n textColor: highlight && !eVm.props.toolbarPush ? null : eVm.props.toolbarTextColor,\n label: btn.fixedLabel ? btn.label : label,\n icon: btn.fixedIcon ? (btn.icon !== null ? btn.icon : void 0) : icon,\n contentClass,\n onShow: evt => eVm.emit('dropdownShow', evt),\n onHide: evt => eVm.emit('dropdownHide', evt),\n onBeforeShow: evt => eVm.emit('dropdownBeforeShow', evt),\n onBeforeHide: evt => eVm.emit('dropdownBeforeHide', evt)\n }, () => Items)\n\n return Dropdown\n}\n\nexport function getToolbar (eVm) {\n if (eVm.caret) {\n return eVm.buttons.value\n .filter(f => {\n return !eVm.isViewingSource.value || f.find(fb => fb.cmd === 'viewsource')\n })\n .map(group => getGroup(\n group.map(btn => {\n if (eVm.isViewingSource.value && btn.cmd !== 'viewsource') {\n return false\n }\n\n if (btn.type === 'slot') {\n return hSlot(eVm.slots[ btn.slot ])\n }\n\n if (btn.type === 'dropdown') {\n return getDropdown(eVm, btn)\n }\n\n return getBtn(eVm, 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 (eVm) {\n if (eVm.caret) {\n const color = eVm.props.toolbarColor || eVm.props.toolbarTextColor\n let link = eVm.editLinkUrl.value\n const updateLink = () => {\n eVm.caret.restore()\n\n if (link !== eVm.editLinkUrl.value) {\n document.execCommand('createLink', false, link === '' ? ' ' : link)\n }\n\n eVm.editLinkUrl.value = null\n }\n\n return [\n h('div', { class: `q-mx-xs text-${ color }` }, `${ eVm.$q.lang.editor.url }: `),\n h('input', {\n key: 'qedt_btm_input',\n class: 'col q-editor__link-input',\n value: link,\n onInput: evt => {\n stop(evt)\n link = evt.target.value\n },\n onKeydown: evt => {\n if (shouldIgnoreKey(evt) === true) {\n return\n }\n\n switch (evt.keyCode) {\n case 13: // ENTER key\n prevent(evt)\n return updateLink()\n case 27: // ESCAPE key\n prevent(evt)\n eVm.caret.restore()\n if (!eVm.editLinkUrl.value || eVm.editLinkUrl.value === 'https://') {\n document.execCommand('unlink')\n }\n eVm.editLinkUrl.value = null\n break\n }\n }\n }),\n getGroup([\n h(QBtn, {\n key: 'qedt_btm_rem',\n tabindex: -1,\n ...eVm.buttonProps.value,\n label: eVm.$q.lang.label.remove,\n noCaps: true,\n onClick: () => {\n eVm.caret.restore()\n document.execCommand('unlink')\n eVm.editLinkUrl.value = null\n }\n }),\n h(QBtn, {\n key: 'qedt_btm_upd',\n ...eVm.buttonProps.value,\n label: eVm.$q.lang.label.update,\n noCaps: true,\n onClick: updateLink\n })\n ])\n ]\n }\n}\n","const\n toString = Object.prototype.toString,\n hasOwn = Object.prototype.hasOwnProperty,\n notPlainObject = new Set(\n [ 'Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp' ]\n .map(name => '[object ' + name + ']')\n )\n\nfunction isPlainObject (obj) {\n if (obj !== Object(obj) || notPlainObject.has(toString.call(obj)) === true) {\n return false\n }\n\n if (\n obj.constructor\n && hasOwn.call(obj, 'constructor') === false\n && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf') === false\n ) {\n return false\n }\n\n let key\n for (key in obj) {} // eslint-disable-line\n\n return key === void 0 || hasOwn.call(obj, key)\n}\n\nexport default function extend () {\n let\n options, name, src, copy, copyIsArray, clone,\n target = arguments[ 0 ] || {},\n i = 1,\n deep = false\n const length = arguments.length\n\n if (typeof target === 'boolean') {\n deep = target\n target = arguments[ 1 ] || {}\n i = 2\n }\n\n if (Object(target) !== target && typeof target !== 'function') {\n target = {}\n }\n\n if (length === i) {\n target = this\n i--\n }\n\n for (; i < length; i++) {\n if ((options = arguments[ i ]) !== null) {\n for (name in options) {\n src = target[ name ]\n copy = options[ name ]\n\n if (target === copy) {\n continue\n }\n\n if (\n deep === true\n && copy\n && ((copyIsArray = Array.isArray(copy)) || isPlainObject(copy) === true)\n ) {\n if (copyIsArray === true) {\n clone = Array.isArray(src) === true ? src : []\n }\n else {\n clone = isPlainObject(src) === true ? src : {}\n }\n\n target[ name ] = extend(deep, clone, copy)\n }\n else if (copy !== void 0) {\n target[ name ] = copy\n }\n }\n }\n }\n\n return target\n}\n","import { h, ref, computed, watch, onMounted, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport Caret from './editor-caret.js'\nimport { getToolbar, getFonts, getLinkEditor } from './editor-utils.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useFullscreen, { useFullscreenProps, useFullscreenEmits } from '../../composables/private/use-fullscreen.js'\nimport useSplitAttrs from '../../composables/private/use-split-attrs.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport extend from '../../utils/extend.js'\nimport { shouldIgnoreKey } from '../../utils/private/key-composition.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\n\nexport default createComponent({\n name: 'QEditor',\n\n props: {\n ...useDarkProps,\n ...useFullscreenProps,\n\n modelValue: {\n type: String,\n required: true\n },\n readonly: Boolean,\n disable: Boolean,\n minHeight: {\n type: String,\n default: '10rem'\n },\n maxHeight: String,\n height: String,\n definitions: Object,\n fonts: Object,\n placeholder: String,\n\n toolbar: {\n type: Array,\n validator: v => v.length === 0 || v.every(group => group.length),\n default () {\n return [\n [ 'left', 'center', 'right', 'justify' ],\n [ 'bold', 'italic', 'underline', 'strike' ],\n [ 'undo', 'redo' ]\n ]\n }\n },\n toolbarColor: String,\n toolbarBg: String,\n toolbarTextColor: String,\n toolbarToggleColor: {\n type: String,\n default: 'primary'\n },\n toolbarOutline: Boolean,\n toolbarPush: Boolean,\n toolbarRounded: Boolean,\n\n paragraphTag: {\n type: String,\n validator: v => [ 'div', 'p' ].includes(v),\n default: 'div'\n },\n\n contentStyle: Object,\n contentClass: [ Object, Array, String ],\n\n square: Boolean,\n flat: Boolean,\n dense: Boolean\n },\n\n emits: [\n ...useFullscreenEmits,\n 'update:modelValue',\n 'keydown', 'click', 'mouseup', 'keyup', 'touchend',\n 'focus', 'blur',\n 'dropdownShow',\n 'dropdownHide',\n 'dropdownBeforeShow',\n 'dropdownBeforeHide',\n 'linkShow',\n 'linkHide'\n ],\n\n setup (props, { slots, emit, attrs }) {\n const { proxy, vnode } = getCurrentInstance()\n const { $q } = proxy\n\n const isDark = useDark(props, $q)\n const { inFullscreen, toggleFullscreen } = useFullscreen()\n const splitAttrs = useSplitAttrs(attrs, vnode)\n\n const rootRef = ref(null)\n const contentRef = ref(null)\n\n const editLinkUrl = ref(null)\n const isViewingSource = ref(false)\n\n const editable = computed(() => !props.readonly && !props.disable)\n\n let defaultFont, offsetBottom\n let lastEmit = props.modelValue // eslint-disable-line\n\n if (__QUASAR_SSR_SERVER__ !== true) {\n document.execCommand('defaultParagraphSeparator', false, props.paragraphTag)\n defaultFont = window.getComputedStyle(document.body).fontFamily\n }\n\n const toolbarBackgroundClass = computed(() => (\n props.toolbarBg ? ` bg-${ props.toolbarBg }` : ''\n ))\n\n const buttonProps = computed(() => {\n const flat = props.toolbarOutline !== true\n && props.toolbarPush !== true\n\n return {\n type: 'a',\n flat,\n noWrap: true,\n outline: props.toolbarOutline,\n push: props.toolbarPush,\n rounded: props.toolbarRounded,\n dense: true,\n color: props.toolbarColor,\n disable: !editable.value,\n size: 'sm'\n }\n })\n\n const buttonDef = computed(() => {\n const\n e = $q.lang.editor,\n i = $q.iconSet.editor\n\n return {\n bold: { cmd: 'bold', icon: i.bold, tip: e.bold, key: 66 },\n italic: { cmd: 'italic', icon: i.italic, tip: e.italic, key: 73 },\n strike: { cmd: 'strikeThrough', icon: i.strikethrough, tip: e.strikethrough, key: 83 },\n underline: { cmd: 'underline', icon: i.underline, tip: e.underline, key: 85 },\n unordered: { cmd: 'insertUnorderedList', icon: i.unorderedList, tip: e.unorderedList },\n ordered: { cmd: 'insertOrderedList', icon: i.orderedList, tip: e.orderedList },\n subscript: { cmd: 'subscript', icon: i.subscript, tip: e.subscript, htmlTip: 'x2' },\n superscript: { cmd: 'superscript', icon: i.superscript, tip: e.superscript, htmlTip: 'x2' },\n link: { cmd: 'link', disable: eVm => eVm.caret && !eVm.caret.can('link'), icon: i.hyperlink, tip: e.hyperlink, key: 76 },\n fullscreen: { cmd: 'fullscreen', icon: i.toggleFullscreen, tip: e.toggleFullscreen, key: 70 },\n viewsource: { cmd: 'viewsource', icon: i.viewSource, tip: e.viewSource },\n\n quote: { cmd: 'formatBlock', param: 'BLOCKQUOTE', icon: i.quote, tip: e.quote, key: 81 },\n left: { cmd: 'justifyLeft', icon: i.left, tip: e.left },\n center: { cmd: 'justifyCenter', icon: i.center, tip: e.center },\n right: { cmd: 'justifyRight', icon: i.right, tip: e.right },\n justify: { cmd: 'justifyFull', icon: i.justify, tip: e.justify },\n\n print: { type: 'no-state', cmd: 'print', icon: i.print, tip: e.print, key: 80 },\n outdent: { type: 'no-state', disable: eVm => eVm.caret && !eVm.caret.can('outdent'), cmd: 'outdent', icon: i.outdent, tip: e.outdent },\n indent: { type: 'no-state', disable: eVm => eVm.caret && !eVm.caret.can('indent'), cmd: 'indent', icon: i.indent, tip: e.indent },\n removeFormat: { type: 'no-state', cmd: 'removeFormat', icon: i.removeFormat, tip: e.removeFormat },\n hr: { type: 'no-state', cmd: 'insertHorizontalRule', icon: i.hr, tip: e.hr },\n undo: { type: 'no-state', cmd: 'undo', icon: i.undo, tip: e.undo, key: 90 },\n redo: { type: 'no-state', cmd: 'redo', icon: i.redo, tip: e.redo, key: 89 },\n\n h1: { cmd: 'formatBlock', param: 'H1', icon: i.heading1 || i.heading, tip: e.heading1, htmlTip: `

${ e.heading1 }

` },\n h2: { cmd: 'formatBlock', param: 'H2', icon: i.heading2 || i.heading, tip: e.heading2, htmlTip: `

${ e.heading2 }

` },\n h3: { cmd: 'formatBlock', param: 'H3', icon: i.heading3 || i.heading, tip: e.heading3, htmlTip: `

${ e.heading3 }

` },\n h4: { cmd: 'formatBlock', param: 'H4', icon: i.heading4 || i.heading, tip: e.heading4, htmlTip: `

${ e.heading4 }

` },\n h5: { cmd: 'formatBlock', param: 'H5', icon: i.heading5 || i.heading, tip: e.heading5, htmlTip: `
${ e.heading5 }
` },\n h6: { cmd: 'formatBlock', param: 'H6', icon: i.heading6 || i.heading, tip: e.heading6, htmlTip: `
${ e.heading6 }
` },\n p: { cmd: 'formatBlock', param: props.paragraphTag, icon: i.heading, tip: e.paragraph },\n code: { cmd: 'formatBlock', param: 'PRE', icon: i.code, htmlTip: `${ 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 const buttons = computed(() => {\n const userDef = props.definitions || {}\n const def = props.definitions || props.fonts\n ? extend(\n true,\n {},\n buttonDef.value,\n userDef,\n getFonts(\n defaultFont,\n $q.lang.editor.defaultFont,\n $q.iconSet.editor.font,\n props.fonts\n )\n )\n : buttonDef.value\n\n return props.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 || (buttonDef.value[ obj.cmd ] && buttonDef.value[ 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 const eVm = {\n $q,\n props,\n slots,\n emit,\n // caret (will get injected after mount)\n inFullscreen,\n toggleFullscreen,\n runCmd,\n isViewingSource,\n editLinkUrl,\n toolbarBackgroundClass,\n buttonProps,\n contentRef,\n buttons,\n setContent\n }\n\n watch(() => props.modelValue, v => {\n if (lastEmit !== v) {\n lastEmit = v\n setContent(v, true)\n }\n })\n\n watch(editLinkUrl, v => {\n emit(`link-${ v ? 'Show' : 'Hide' }`)\n })\n\n const hasToolbar = computed(() => props.toolbar && props.toolbar.length !== 0)\n\n const keys = computed(() => {\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 buttons.value.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 const innerStyle = computed(() => (\n inFullscreen.value\n ? props.contentStyle\n : [\n {\n minHeight: props.minHeight,\n height: props.height,\n maxHeight: props.maxHeight\n },\n props.contentStyle\n ]\n ))\n\n const classes = computed(() =>\n `q-editor q-editor--${ isViewingSource.value === true ? 'source' : 'default' }`\n + (props.disable === true ? ' disabled' : '')\n + (inFullscreen.value === true ? ' fullscreen column' : '')\n + (props.square === true ? ' q-editor--square no-border-radius' : '')\n + (props.flat === true ? ' q-editor--flat' : '')\n + (props.dense === true ? ' q-editor--dense' : '')\n + (isDark.value === true ? ' q-editor--dark q-dark' : '')\n )\n\n const innerClass = computed(() => ([\n props.contentClass,\n 'q-editor__content',\n { col: inFullscreen.value, 'overflow-auto': inFullscreen.value || props.maxHeight }\n ]))\n\n const attributes = computed(() => (\n props.disable === true\n ? { 'aria-disabled': 'true' }\n : (props.readonly === true ? { 'aria-readonly': 'true' } : {})\n ))\n\n function onInput () {\n if (contentRef.value !== null) {\n const prop = `inner${ isViewingSource.value === true ? 'Text' : 'HTML' }`\n const val = contentRef.value[ prop ]\n\n if (val !== props.modelValue) {\n lastEmit = val\n emit('update:modelValue', val)\n }\n }\n }\n\n function onKeydown (e) {\n emit('keydown', e)\n\n if (e.ctrlKey !== true || shouldIgnoreKey(e) === true) {\n refreshToolbar()\n return\n }\n\n const key = e.keyCode\n const target = keys.value[ key ]\n if (target !== void 0) {\n const { cmd, param } = target\n stopAndPrevent(e)\n runCmd(cmd, param, false)\n }\n }\n\n function onClick (e) {\n refreshToolbar()\n emit('click', e)\n }\n\n function onBlur (e) {\n if (contentRef.value !== null) {\n const { scrollTop, scrollHeight } = contentRef.value\n offsetBottom = scrollHeight - scrollTop\n }\n eVm.caret.save()\n emit('blur', e)\n }\n\n function onFocus (e) {\n nextTick(() => {\n if (contentRef.value !== null && offsetBottom !== void 0) {\n contentRef.value.scrollTop = contentRef.value.scrollHeight - offsetBottom\n }\n })\n emit('focus', e)\n }\n\n function onFocusin (e) {\n const root = rootRef.value\n\n if (\n root !== null\n && root.contains(e.target) === true\n && (\n e.relatedTarget === null\n || root.contains(e.relatedTarget) !== true\n )\n ) {\n const prop = `inner${ isViewingSource.value === true ? 'Text' : 'HTML' }`\n eVm.caret.restorePosition(contentRef.value[ prop ].length)\n refreshToolbar()\n }\n }\n\n function onFocusout (e) {\n const root = rootRef.value\n\n if (\n root !== null\n && root.contains(e.target) === true\n && (\n e.relatedTarget === null\n || root.contains(e.relatedTarget) !== true\n )\n ) {\n eVm.caret.savePosition()\n refreshToolbar()\n }\n }\n\n function onPointerStart () {\n offsetBottom = void 0\n }\n\n function onSelectionchange (e) {\n eVm.caret.save()\n }\n\n function setContent (v, restorePosition) {\n if (contentRef.value !== null) {\n if (restorePosition === true) {\n eVm.caret.savePosition()\n }\n\n const prop = `inner${ isViewingSource.value === true ? 'Text' : 'HTML' }`\n contentRef.value[ prop ] = v\n\n if (restorePosition === true) {\n eVm.caret.restorePosition(contentRef.value[ prop ].length)\n refreshToolbar()\n }\n }\n }\n\n function runCmd (cmd, param, update = true) {\n focus()\n eVm.caret.restore()\n eVm.caret.apply(cmd, param, () => {\n focus()\n eVm.caret.save()\n if (update) {\n refreshToolbar()\n }\n })\n }\n\n function refreshToolbar () {\n setTimeout(() => {\n editLinkUrl.value = null\n proxy.$forceUpdate()\n }, 1)\n }\n\n function focus () {\n addFocusFn(() => {\n contentRef.value !== null && contentRef.value.focus({ preventScroll: true })\n })\n }\n\n function getContentEl () {\n return contentRef.value\n }\n\n onMounted(() => {\n eVm.caret = proxy.caret = new Caret(contentRef.value, eVm)\n setContent(props.modelValue)\n refreshToolbar()\n\n document.addEventListener('selectionchange', onSelectionchange)\n })\n\n onBeforeUnmount(() => {\n document.removeEventListener('selectionchange', onSelectionchange)\n })\n\n // expose public methods\n Object.assign(proxy, {\n runCmd, refreshToolbar, focus, getContentEl\n })\n\n return () => {\n let toolbars\n\n if (hasToolbar.value) {\n const bars = [\n h('div', {\n key: 'qedt_top',\n class: 'q-editor__toolbar row no-wrap scroll-x'\n + toolbarBackgroundClass.value\n }, getToolbar(eVm))\n ]\n\n editLinkUrl.value !== null && bars.push(\n h('div', {\n key: 'qedt_btm',\n class: 'q-editor__toolbar row no-wrap items-center scroll-x'\n + toolbarBackgroundClass.value\n }, getLinkEditor(eVm))\n )\n\n toolbars = h('div', {\n key: 'toolbar_ctainer',\n class: 'q-editor__toolbars-container'\n }, bars)\n }\n\n return h('div', {\n ref: rootRef,\n class: classes.value,\n style: { height: inFullscreen.value === true ? '100%' : null },\n ...attributes.value,\n onFocusin,\n onFocusout\n }, [\n toolbars,\n\n h('div', {\n ref: contentRef,\n style: innerStyle.value,\n class: innerClass.value,\n contenteditable: editable.value,\n placeholder: props.placeholder,\n ...(__QUASAR_SSR_SERVER__\n ? { innerHTML: props.modelValue }\n : {}),\n ...splitAttrs.listeners.value,\n onInput,\n onKeydown,\n onClick,\n onBlur,\n onFocus,\n\n // clean saved scroll position\n onMousedown: onPointerStart,\n onTouchstartPassive: onPointerStart\n })\n ])\n }\n }\n})\n","import useField, { useFieldState, useFieldProps, useFieldEmits } from '../../composables/private/use-field.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'QField',\n\n inheritAttrs: false,\n\n props: useFieldProps,\n\n emits: useFieldEmits,\n\n setup () {\n return useField(useFieldState())\n }\n})\n","import { h, ref, computed, getCurrentInstance } from 'vue'\n\nimport { client } from '../../plugins/Platform.js'\nimport { stop, stopAndPrevent } from '../../utils/event.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\nfunction stopAndPreventDrag (e) {\n e && e.dataTransfer && (e.dataTransfer.dropEffect = 'copy')\n stopAndPrevent(e)\n}\n\nexport const useFileProps = {\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\nexport const useFileEmits = [ 'rejected' ]\n\nexport default function ({\n editable,\n dnd,\n getFileInput,\n addFilesToQueue\n}) {\n const { props, emit, proxy } = getCurrentInstance()\n\n const dndRef = ref(null)\n\n const extensions = computed(() => (\n props.accept !== void 0\n ? props.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 : null\n ))\n\n const maxFilesNumber = computed(() => parseInt(props.maxFiles, 10))\n const maxTotalSizeNumber = computed(() => parseInt(props.maxTotalSize, 10))\n\n function pickFiles (e) {\n if (editable.value) {\n if (e !== Object(e)) {\n e = { target: null }\n }\n\n if (e.target !== null && e.target.matches('input[type=\"file\"]') === true) {\n // stop propagation if it's not a real pointer event\n e.clientX === 0 && e.clientY === 0 && stop(e)\n }\n else {\n const input = getFileInput()\n input && input !== e.target && input.click(e)\n }\n }\n }\n\n function addFiles (files) {\n if (editable.value && files) {\n addFilesToQueue(null, files)\n }\n }\n\n function 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 emit('rejected', rejectedFiles)\n }\n }\n\n // filter file types\n if (props.accept !== void 0 && extensions.value.indexOf('*/') === -1) {\n files = filterFiles(files, rejectedFiles, 'accept', file => {\n return extensions.value.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 (props.maxFileSize !== void 0) {\n const maxFileSize = parseInt(props.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 (props.multiple !== true && files.length !== 0) {\n files = [ files[ 0 ] ]\n }\n\n // Compute key to use for each file\n files.forEach(file => {\n file.__key = file.webkitRelativePath + file.lastModified + file.name + file.size\n })\n\n if (append === true) {\n // Avoid duplicate files\n const filenameMap = currentFileList.map(entry => entry.__key)\n files = filterFiles(files, rejectedFiles, 'duplicate', file => {\n return filenameMap.includes(file.__key) === false\n })\n }\n\n if (files.length === 0) { return done() }\n\n if (props.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 <= maxTotalSizeNumber.value\n })\n\n if (files.length === 0) { return done() }\n }\n\n // do we have custom filter function?\n if (typeof props.filter === 'function') {\n const filteredFiles = props.filter(files)\n files = filterFiles(files, rejectedFiles, 'filter', file => {\n return filteredFiles.includes(file)\n })\n }\n\n if (props.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 <= maxFilesNumber.value\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 function onDragover (e) {\n stopAndPreventDrag(e)\n dnd.value !== true && (dnd.value = true)\n }\n\n function onDragleave (e) {\n stopAndPrevent(e)\n\n // Safari bug: relatedTarget is null for over 10 years\n // https://bugs.webkit.org/show_bug.cgi?id=66547\n const gone = e.relatedTarget !== null || client.is.safari !== true\n ? e.relatedTarget !== dndRef.value\n : document.elementsFromPoint(e.clientX, e.clientY).includes(dndRef.value) === false\n\n gone === true && (dnd.value = false)\n }\n\n function onDrop (e) {\n stopAndPreventDrag(e)\n const files = e.dataTransfer.files\n\n if (files.length !== 0) {\n addFilesToQueue(null, files)\n }\n\n dnd.value = false\n }\n\n function getDndNode (type) {\n if (dnd.value === true) {\n return h('div', {\n ref: dndRef,\n class: `q-${ type }__dnd absolute-full`,\n onDragenter: stopAndPreventDrag,\n onDragover: stopAndPreventDrag,\n onDragleave,\n onDrop\n })\n }\n }\n\n // expose public methods\n Object.assign(proxy, { pickFiles, addFiles })\n\n return {\n pickFiles,\n addFiles,\n onDragover,\n onDragleave,\n processFiles,\n getDndNode,\n\n maxFilesNumber,\n maxTotalSizeNumber\n }\n}\n","import { h, ref, computed, getCurrentInstance } from 'vue'\n\nimport QChip from '../chip/QChip.js'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits, fieldValueIsFilled } from '../../composables/private/use-field.js'\nimport { useFormProps, useFormInputNameAttr } from '../../composables/private/use-form.js'\nimport useFile, { useFileProps, useFileEmits } from '../../composables/private/use-file.js'\nimport useFileFormDomProps from '../../composables/private/use-file-dom-props.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { humanStorageSize } from '../../utils/format.js'\nimport { prevent } from '../../utils/event.js'\nimport { injectProp } from '../../utils/private/inject-obj-prop.js'\n\nexport default createComponent({\n name: 'QFile',\n\n inheritAttrs: false,\n\n props: {\n ...useFieldProps,\n ...useFormProps,\n ...useFileProps,\n\n /* SSR does not know about File & FileList */\n modelValue: __QUASAR_SSR_SERVER__\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 emits: [\n ...useFieldEmits,\n ...useFileEmits\n ],\n\n setup (props, { slots, emit, attrs }) {\n const { proxy } = getCurrentInstance()\n\n const state = useFieldState()\n\n const inputRef = ref(null)\n const dnd = ref(false)\n const nameProp = useFormInputNameAttr(props)\n\n const {\n pickFiles,\n onDragover,\n onDragleave,\n processFiles,\n getDndNode\n } = useFile({ editable: state.editable, dnd, getFileInput, addFilesToQueue })\n\n const formDomProps = useFileFormDomProps(props)\n\n const innerValue = computed(() => (\n Object(props.modelValue) === props.modelValue\n ? ('length' in props.modelValue ? Array.from(props.modelValue) : [ props.modelValue ])\n : []\n ))\n\n const hasValue = computed(() => fieldValueIsFilled(innerValue.value))\n\n const selectedString = computed(() =>\n innerValue.value\n .map(file => file.name)\n .join(', ')\n )\n\n const totalSize = computed(() =>\n humanStorageSize(\n innerValue.value.reduce((acc, file) => acc + file.size, 0)\n )\n )\n\n const counterProps = computed(() => ({\n totalSize: totalSize.value,\n filesNumber: innerValue.value.length,\n maxFiles: props.maxFiles\n }))\n\n const inputAttrs = computed(() => ({\n tabindex: -1,\n type: 'file',\n title: '', // try to remove default tooltip,\n accept: props.accept,\n capture: props.capture,\n name: nameProp.value,\n ...attrs,\n id: state.targetUid.value,\n disabled: state.editable.value !== true\n }))\n\n const fieldClass = computed(() =>\n 'q-file q-field--auto-height'\n + (dnd.value === true ? ' q-file--dnd' : '')\n )\n\n const isAppending = computed(() =>\n props.multiple === true && props.append === true\n )\n\n function removeAtIndex (index) {\n const files = innerValue.value.slice()\n files.splice(index, 1)\n emitValue(files)\n }\n\n function removeFile (file) {\n const index = innerValue.value.indexOf(file)\n if (index > -1) {\n removeAtIndex(index)\n }\n }\n\n function emitValue (files) {\n emit('update:modelValue', props.multiple === true ? files : files[ 0 ])\n }\n\n function onKeydown (e) {\n // prevent form submit if ENTER is pressed\n e.keyCode === 13 && prevent(e)\n }\n\n function onKeyup (e) {\n // only on ENTER and SPACE to match native input field\n if (e.keyCode === 13 || e.keyCode === 32) {\n pickFiles(e)\n }\n }\n\n function getFileInput () {\n return inputRef.value\n }\n\n function addFilesToQueue (e, fileList) {\n const files = processFiles(e, fileList, innerValue.value, isAppending.value)\n const fileInput = getFileInput()\n\n if (fileInput !== void 0 && fileInput !== null) {\n fileInput.value = ''\n }\n\n // if nothing to do...\n if (files === void 0) { return }\n\n // protect against input @change being called in a loop\n // like it happens on Safari, so don't emit same thing:\n if (\n props.multiple === true\n ? props.modelValue && files.every(f => innerValue.value.includes(f))\n : props.modelValue === files[ 0 ]\n ) {\n return\n }\n\n emitValue(\n isAppending.value === true\n ? innerValue.value.concat(files)\n : files\n )\n }\n\n function getFiller () {\n return [\n h('input', {\n class: [ props.inputClass, 'q-file__filler' ],\n style: props.inputStyle\n })\n ]\n }\n\n function getSelection () {\n if (slots.file !== void 0) {\n return innerValue.value.length === 0\n ? getFiller()\n : innerValue.value.map(\n (file, index) => slots.file({ index, file, ref: this })\n )\n }\n\n if (slots.selected !== void 0) {\n return innerValue.value.length === 0\n ? getFiller()\n : slots.selected({ files: innerValue.value, ref: this })\n }\n\n if (props.useChips === true) {\n return innerValue.value.length === 0\n ? getFiller()\n : innerValue.value.map((file, i) => h(QChip, {\n key: 'file-' + i,\n removable: state.editable.value,\n dense: true,\n textColor: props.color,\n tabindex: props.tabindex,\n onRemove: () => { removeAtIndex(i) }\n }, () => h('span', {\n class: 'ellipsis',\n textContent: file.name\n })))\n }\n\n const textContent = props.displayValue !== void 0\n ? props.displayValue\n : selectedString.value\n\n return textContent.length !== 0\n ? [\n h('div', {\n class: props.inputClass,\n style: props.inputStyle,\n textContent\n })\n ]\n : getFiller()\n }\n\n function getInput () {\n const data = {\n ref: inputRef,\n ...inputAttrs.value,\n ...formDomProps.value,\n class: 'q-field__input fit absolute-full cursor-pointer',\n onChange: addFilesToQueue\n }\n\n if (props.multiple === true) {\n data.multiple = true\n }\n\n return h('input', data)\n }\n\n Object.assign(state, {\n fieldClass,\n emitValue,\n hasValue,\n inputRef,\n innerValue,\n\n floatingLabel: computed(() =>\n hasValue.value === true\n || fieldValueIsFilled(props.displayValue)\n ),\n\n computedCounter: computed(() => {\n if (props.counterLabel !== void 0) {\n return props.counterLabel(counterProps.value)\n }\n\n const max = props.maxFiles\n return `${ innerValue.value.length }${ max !== void 0 ? ' / ' + max : '' } (${ totalSize.value })`\n }),\n\n getControlChild: () => getDndNode('file'),\n getControl: () => {\n const data = {\n ref: state.targetRef,\n class: 'q-field__native row items-center cursor-pointer',\n tabindex: props.tabindex\n }\n\n if (state.editable.value === true) {\n Object.assign(data, { onDragover, onDragleave, onKeydown, onKeyup })\n }\n\n return h('div', data, [ getInput() ].concat(getSelection()))\n }\n })\n\n // expose public methods\n Object.assign(proxy, {\n removeAtIndex,\n removeFile,\n getNativeElement: () => inputRef.value // deprecated\n })\n\n injectProp(proxy, 'nativeEl', () => inputRef.value)\n\n return useField(state)\n }\n})\n","import { h, ref, computed, watch, onBeforeUnmount, inject, getCurrentInstance } from 'vue'\n\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport { layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'\n\nexport default createComponent({\n name: 'QFooter',\n\n props: {\n modelValue: {\n type: Boolean,\n default: true\n },\n reveal: Boolean,\n bordered: Boolean,\n elevated: Boolean,\n\n heightHint: {\n type: [ String, Number ],\n default: 50\n }\n },\n\n emits: [ 'reveal', 'focusin' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const $layout = inject(layoutKey, emptyRenderFn)\n if ($layout === emptyRenderFn) {\n console.error('QFooter needs to be child of QLayout')\n return emptyRenderFn\n }\n\n const size = ref(parseInt(props.heightHint, 10))\n const revealed = ref(true)\n const windowHeight = ref(\n isRuntimeSsrPreHydration.value === true || $layout.isContainer.value === true\n ? 0\n : window.innerHeight\n )\n\n const fixed = computed(() =>\n props.reveal === true\n || $layout.view.value.indexOf('F') > -1\n || ($q.platform.is.ios && $layout.isContainer.value === true)\n )\n\n const containerHeight = computed(() => (\n $layout.isContainer.value === true\n ? $layout.containerHeight.value\n : windowHeight.value\n ))\n\n const offset = computed(() => {\n if (props.modelValue !== true) {\n return 0\n }\n if (fixed.value === true) {\n return revealed.value === true ? size.value : 0\n }\n const offset = $layout.scroll.value.position + containerHeight.value + size.value - $layout.height.value\n return offset > 0 ? offset : 0\n })\n\n const hidden = computed(() =>\n props.modelValue !== true || (fixed.value === true && revealed.value !== true)\n )\n\n const revealOnFocus = computed(() =>\n props.modelValue === true && hidden.value === true && props.reveal === true\n )\n\n const classes = computed(() =>\n 'q-footer q-layout__section--marginal '\n + (fixed.value === true ? 'fixed' : 'absolute') + '-bottom'\n + (props.bordered === true ? ' q-footer--bordered' : '')\n + (hidden.value === true ? ' q-footer--hidden' : '')\n + (\n props.modelValue !== true\n ? ' q-layout--prevent-focus' + (fixed.value !== true ? ' hidden' : '')\n : ''\n )\n )\n\n const style = computed(() => {\n const\n view = $layout.rows.value.bottom,\n css = {}\n\n if (view[ 0 ] === 'l' && $layout.left.space === true) {\n css[ $q.lang.rtl === true ? 'right' : 'left' ] = `${ $layout.left.size }px`\n }\n if (view[ 2 ] === 'r' && $layout.right.space === true) {\n css[ $q.lang.rtl === true ? 'left' : 'right' ] = `${ $layout.right.size }px`\n }\n\n return css\n })\n\n function updateLayout (prop, val) {\n $layout.update('footer', prop, val)\n }\n\n function updateLocal (prop, val) {\n if (prop.value !== val) {\n prop.value = val\n }\n }\n\n function onResize ({ height }) {\n updateLocal(size, height)\n updateLayout('size', height)\n }\n\n function updateRevealed () {\n if (props.reveal !== true) { return }\n\n const { direction, position, inflectionPoint } = $layout.scroll.value\n\n updateLocal(revealed, (\n direction === 'up'\n || position - inflectionPoint < 100\n || $layout.height.value - containerHeight.value - position - size.value < 300\n ))\n }\n\n function onFocusin (evt) {\n if (revealOnFocus.value === true) {\n updateLocal(revealed, true)\n }\n\n emit('focusin', evt)\n }\n\n watch(() => props.modelValue, val => {\n updateLayout('space', val)\n updateLocal(revealed, true)\n $layout.animate()\n })\n\n watch(offset, val => {\n updateLayout('offset', val)\n })\n\n watch(() => props.reveal, val => {\n val === false && updateLocal(revealed, props.modelValue)\n })\n\n watch(revealed, val => {\n $layout.animate()\n emit('reveal', val)\n })\n\n watch([ size, $layout.scroll, $layout.height ], updateRevealed)\n\n watch(() => $q.screen.height, val => {\n $layout.isContainer.value !== true && updateLocal(windowHeight, val)\n })\n\n const instance = {}\n\n $layout.instances.footer = instance\n props.modelValue === true && updateLayout('size', size.value)\n updateLayout('space', props.modelValue)\n updateLayout('offset', offset.value)\n\n onBeforeUnmount(() => {\n if ($layout.instances.footer === instance) {\n $layout.instances.footer = void 0\n updateLayout('size', 0)\n updateLayout('offset', 0)\n updateLayout('space', false)\n }\n })\n\n return () => {\n const child = hMergeSlot(slots.default, [\n h(QResizeObserver, {\n debounce: 0,\n onResize\n })\n ])\n\n props.elevated === true && child.push(\n h('div', {\n class: 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'\n })\n )\n\n return h('footer', {\n class: classes.value,\n style: style.value,\n onFocusin\n }, child)\n }\n }\n})\n","import { h, ref, computed, watch, onBeforeUnmount, inject, getCurrentInstance } from 'vue'\n\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hUniqueSlot } from '../../utils/private/render.js'\nimport { layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'\n\nexport default createComponent({\n name: 'QHeader',\n\n props: {\n modelValue: {\n type: Boolean,\n default: true\n },\n reveal: Boolean,\n revealOffset: {\n type: Number,\n default: 250\n },\n bordered: Boolean,\n elevated: Boolean,\n\n heightHint: {\n type: [ String, Number ],\n default: 50\n }\n },\n\n emits: [ 'reveal', 'focusin' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const $layout = inject(layoutKey, emptyRenderFn)\n if ($layout === emptyRenderFn) {\n console.error('QHeader needs to be child of QLayout')\n return emptyRenderFn\n }\n\n const size = ref(parseInt(props.heightHint, 10))\n const revealed = ref(true)\n\n const fixed = computed(() =>\n props.reveal === true\n || $layout.view.value.indexOf('H') > -1\n || ($q.platform.is.ios && $layout.isContainer.value === true)\n )\n\n const offset = computed(() => {\n if (props.modelValue !== true) {\n return 0\n }\n if (fixed.value === true) {\n return revealed.value === true ? size.value : 0\n }\n const offset = size.value - $layout.scroll.value.position\n return offset > 0 ? offset : 0\n })\n\n const hidden = computed(() => props.modelValue !== true\n || (fixed.value === true && revealed.value !== true)\n )\n\n const revealOnFocus = computed(() =>\n props.modelValue === true && hidden.value === true && props.reveal === true\n )\n\n const classes = computed(() =>\n 'q-header q-layout__section--marginal '\n + (fixed.value === true ? 'fixed' : 'absolute') + '-top'\n + (props.bordered === true ? ' q-header--bordered' : '')\n + (hidden.value === true ? ' q-header--hidden' : '')\n + (props.modelValue !== true ? ' q-layout--prevent-focus' : '')\n )\n\n const style = computed(() => {\n const\n view = $layout.rows.value.top,\n css = {}\n\n if (view[ 0 ] === 'l' && $layout.left.space === true) {\n css[ $q.lang.rtl === true ? 'right' : 'left' ] = `${ $layout.left.size }px`\n }\n if (view[ 2 ] === 'r' && $layout.right.space === true) {\n css[ $q.lang.rtl === true ? 'left' : 'right' ] = `${ $layout.right.size }px`\n }\n\n return css\n })\n\n function updateLayout (prop, val) {\n $layout.update('header', prop, val)\n }\n\n function updateLocal (prop, val) {\n if (prop.value !== val) {\n prop.value = val\n }\n }\n\n function onResize ({ height }) {\n updateLocal(size, height)\n updateLayout('size', height)\n }\n\n function onFocusin (evt) {\n if (revealOnFocus.value === true) {\n updateLocal(revealed, true)\n }\n\n emit('focusin', evt)\n }\n\n watch(() => props.modelValue, val => {\n updateLayout('space', val)\n updateLocal(revealed, true)\n $layout.animate()\n })\n\n watch(offset, val => {\n updateLayout('offset', val)\n })\n\n watch(() => props.reveal, val => {\n val === false && updateLocal(revealed, props.modelValue)\n })\n\n watch(revealed, val => {\n $layout.animate()\n emit('reveal', val)\n })\n\n watch($layout.scroll, scroll => {\n props.reveal === true && updateLocal(revealed,\n scroll.direction === 'up'\n || scroll.position <= props.revealOffset\n || scroll.position - scroll.inflectionPoint < 100\n )\n })\n\n const instance = {}\n\n $layout.instances.header = instance\n props.modelValue === true && updateLayout('size', size.value)\n updateLayout('space', props.modelValue)\n updateLayout('offset', offset.value)\n\n onBeforeUnmount(() => {\n if ($layout.instances.header === instance) {\n $layout.instances.header = void 0\n updateLayout('size', 0)\n updateLayout('offset', 0)\n updateLayout('space', false)\n }\n })\n\n return () => {\n const child = hUniqueSlot(slots.default, [])\n\n props.elevated === true && child.push(\n h('div', {\n class: 'q-layout__shadow absolute-full overflow-hidden no-pointer-events'\n })\n )\n\n child.push(\n h(QResizeObserver, {\n debounce: 0,\n onResize\n })\n )\n\n return h('header', {\n class: classes.value,\n style: style.value,\n onFocusin\n }, child)\n }\n }\n})\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot, hMergeSlot } from '../../utils/private/render.js'\n\nconst defaultViewBox = '0 0 24 24'\n\nconst sameFn = i => i\nconst ionFn = i => `ionicons ${ i }`\n\nconst libMap = {\n 'mdi-': i => `mdi ${ i }`,\n 'icon-': sameFn, // fontawesome equiv\n 'bt-': i => `bt ${ i }`,\n 'eva-': i => `eva ${ i }`,\n 'ion-md': ionFn,\n 'ion-ios': ionFn,\n 'ion-logo': ionFn,\n 'iconfont ': sameFn,\n 'ti-': i => `themify-icon ${ i }`,\n 'bi-': i => `bootstrap-icons ${ i }`\n}\n\nconst matMap = {\n o_: '-outlined',\n r_: '-round',\n s_: '-sharp'\n}\n\nconst symMap = {\n sym_o_: '-outlined',\n sym_r_: '-rounded',\n sym_s_: '-sharp'\n}\n\nconst libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')')\nconst matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')')\nconst symRE = new RegExp('^(' + Object.keys(symMap).join('|') + ')')\nconst mRE = /^[Mm]\\s?[-+]?\\.?\\d/\nconst imgRE = /^img:/\nconst svgUseRE = /^svguse:/\nconst ionRE = /^ion-/\nconst faRE = /^(fa-(sharp|solid|regular|light|brands|duotone|thin)|[lf]a[srlbdk]?) /\n\nexport default createComponent({\n name: 'QIcon',\n\n props: {\n ...useSizeProps,\n\n tag: {\n type: String,\n default: 'i'\n },\n\n name: String,\n color: String,\n left: Boolean,\n right: Boolean\n },\n\n setup (props, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n const sizeStyle = useSize(props)\n\n const classes = computed(() =>\n 'q-icon'\n + (props.left === true ? ' on-left' : '') // TODO Qv3: drop this\n + (props.right === true ? ' on-right' : '')\n + (props.color !== void 0 ? ` text-${ props.color }` : '')\n )\n\n const type = computed(() => {\n let cls\n let icon = props.name\n\n if (icon === 'none' || !icon) {\n return { none: true }\n }\n\n if ($q.iconMapFn !== null) {\n const res = $q.iconMapFn(icon)\n if (res !== void 0) {\n if (res.icon !== void 0) {\n icon = res.icon\n if (icon === 'none' || !icon) {\n return { none: true }\n }\n }\n else {\n return {\n cls: res.cls,\n content: res.content !== void 0\n ? res.content\n : ' '\n }\n }\n }\n }\n\n if (mRE.test(icon) === true) {\n const [ def, viewBox = defaultViewBox ] = icon.split('|')\n\n return {\n svg: true,\n viewBox,\n nodes: def.split('&&').map(path => {\n const [ d, style, transform ] = path.split('@@')\n return h('path', { style, d, transform })\n })\n }\n }\n\n if (imgRE.test(icon) === true) {\n return {\n img: true,\n src: icon.substring(4)\n }\n }\n\n if (svgUseRE.test(icon) === true) {\n const [ def, viewBox = defaultViewBox ] = icon.split('|')\n\n return {\n svguse: true,\n src: def.substring(7),\n viewBox\n }\n }\n\n let content = ' '\n const matches = icon.match(libRE)\n\n if (matches !== null) {\n cls = libMap[ matches[ 1 ] ](icon)\n }\n else if (faRE.test(icon) === true) {\n cls = icon\n }\n else if (ionRE.test(icon) === true) {\n cls = `ionicons ion-${ $q.platform.is.ios === true ? 'ios' : 'md' }${ icon.substring(3) }`\n }\n else if (symRE.test(icon) === true) {\n // \"notranslate\" class is for Google Translate\n // to avoid tampering with Material Symbols ligature font\n //\n // Caution: To be able to add suffix to the class name,\n // keep the 'material-symbols' at the end of the string.\n cls = 'notranslate material-symbols'\n\n const matches = icon.match(symRE)\n if (matches !== null) {\n icon = icon.substring(6)\n cls += symMap[ matches[ 1 ] ]\n }\n\n content = icon\n }\n else {\n // \"notranslate\" class is for Google Translate\n // to avoid tampering with Material Icons ligature font\n //\n // Caution: To be able to add suffix to the class name,\n // keep the 'material-icons' at the end of the string.\n cls = 'notranslate material-icons'\n\n const matches = icon.match(matRE)\n if (matches !== null) {\n icon = icon.substring(2)\n cls += matMap[ matches[ 1 ] ]\n }\n\n content = icon\n }\n\n return {\n cls,\n content\n }\n })\n\n return () => {\n const data = {\n class: classes.value,\n style: sizeStyle.value,\n 'aria-hidden': 'true',\n role: 'presentation'\n }\n\n if (type.value.none === true) {\n return h(props.tag, data, hSlot(slots.default))\n }\n\n if (type.value.img === true) {\n return h('span', data, hMergeSlot(slots.default, [\n h('img', { src: type.value.src })\n ]))\n }\n\n if (type.value.svg === true) {\n return h('span', data, hMergeSlot(slots.default, [\n h('svg', {\n viewBox: type.value.viewBox || '0 0 24 24'\n }, type.value.nodes)\n ]))\n }\n\n if (type.value.svguse === true) {\n return h('span', data, hMergeSlot(slots.default, [\n h('svg', {\n viewBox: type.value.viewBox\n }, [\n h('use', { 'xlink:href': type.value.src })\n ])\n ]))\n }\n\n if (type.value.cls !== void 0) {\n data.class += ' ' + type.value.cls\n }\n\n return h(props.tag, data, hMergeSlot(slots.default, [\n type.value.content\n ]))\n }\n }\n})\n","import { computed } from 'vue'\n\nexport const useRatioProps = {\n ratio: [ String, Number ]\n}\n\nexport default function (props, naturalRatio) {\n // return ratioStyle\n return computed(() => {\n const ratio = Number(\n props.ratio || (naturalRatio !== void 0 ? naturalRatio.value : void 0)\n )\n\n return isNaN(ratio) !== true && ratio > 0\n ? { paddingBottom: `${ 100 / ratio }%` }\n : null\n })\n}\n","import { h, ref, computed, watch, onMounted, onBeforeUnmount, Transition } from 'vue'\n\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport useRatio, { useRatioProps } from '../../composables/private/use-ratio.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nconst defaultRatio = 16 / 9\n\nexport default createComponent({\n name: 'QImg',\n\n props: {\n ...useRatioProps,\n\n src: String,\n srcset: String,\n sizes: String,\n\n alt: String,\n crossorigin: String,\n decoding: String,\n referrerpolicy: String,\n\n draggable: Boolean,\n\n loading: {\n type: String,\n default: 'lazy'\n },\n fetchpriority: {\n type: String,\n default: 'auto'\n },\n width: String,\n height: String,\n initialRatio: {\n type: [ Number, String ],\n default: defaultRatio\n },\n\n placeholderSrc: String,\n\n fit: {\n type: String,\n default: 'cover'\n },\n position: {\n type: String,\n default: '50% 50%'\n },\n\n imgClass: String,\n imgStyle: Object,\n\n noSpinner: Boolean,\n noNativeMenu: Boolean,\n noTransition: Boolean,\n\n spinnerColor: String,\n spinnerSize: String\n },\n\n emits: [ 'load', 'error' ],\n\n setup (props, { slots, emit }) {\n const naturalRatio = ref(props.initialRatio)\n const ratioStyle = useRatio(props, naturalRatio)\n\n let loadTimer = null, isDestroyed = false\n\n const images = [\n ref(null),\n ref(getPlaceholderSrc())\n ]\n\n const position = ref(0)\n\n const isLoading = ref(false)\n const hasError = ref(false)\n\n const classes = computed(() =>\n `q-img q-img--${ props.noNativeMenu === true ? 'no-' : '' }menu`\n )\n\n const style = computed(() => ({\n width: props.width,\n height: props.height\n }))\n\n const imgClass = computed(() =>\n `q-img__image ${ props.imgClass !== void 0 ? props.imgClass + ' ' : '' }`\n + `q-img__image--with${ props.noTransition === true ? 'out' : '' }-transition`\n )\n\n const imgStyle = computed(() => ({\n ...props.imgStyle,\n objectFit: props.fit,\n objectPosition: props.position\n }))\n\n watch(() => getCurrentSrc(), addImage)\n\n function getCurrentSrc () {\n return props.src || props.srcset || props.sizes\n ? {\n src: props.src,\n srcset: props.srcset,\n sizes: props.sizes\n }\n : null\n }\n\n function getPlaceholderSrc () {\n return props.placeholderSrc !== void 0\n ? { src: props.placeholderSrc }\n : null\n }\n\n function addImage (imgProps) {\n if (loadTimer !== null) {\n clearTimeout(loadTimer)\n loadTimer = null\n }\n\n hasError.value = false\n\n if (imgProps === null) {\n isLoading.value = false\n images[ position.value ^ 1 ].value = getPlaceholderSrc()\n }\n else {\n isLoading.value = true\n }\n\n images[ position.value ].value = imgProps\n }\n\n function onLoad ({ target }) {\n if (isDestroyed === true) { return }\n\n if (loadTimer !== null) {\n clearTimeout(loadTimer)\n loadTimer = null\n }\n\n naturalRatio.value = target.naturalHeight === 0\n ? 0.5\n : target.naturalWidth / target.naturalHeight\n\n waitForCompleteness(target, 1)\n }\n\n function waitForCompleteness (target, count) {\n // protect against running forever\n if (isDestroyed === true || count === 1000) { return }\n\n if (target.complete === true) {\n onReady(target)\n }\n else {\n loadTimer = setTimeout(() => {\n loadTimer = null\n waitForCompleteness(target, count + 1)\n }, 50)\n }\n }\n\n function onReady (img) {\n if (isDestroyed === true) { return }\n\n position.value = position.value ^ 1\n images[ position.value ].value = null\n isLoading.value = false\n hasError.value = false\n emit('load', img.currentSrc || img.src)\n }\n\n function onError (err) {\n if (loadTimer !== null) {\n clearTimeout(loadTimer)\n loadTimer = null\n }\n\n isLoading.value = false\n hasError.value = true\n images[ position.value ].value = null\n images[ position.value ^ 1 ].value = getPlaceholderSrc()\n emit('error', err)\n }\n\n function getImage (index) {\n const img = images[ index ].value\n\n const data = {\n key: 'img_' + index,\n class: imgClass.value,\n style: imgStyle.value,\n crossorigin: props.crossorigin,\n decoding: props.decoding,\n referrerpolicy: props.referrerpolicy,\n height: props.height,\n width: props.width,\n loading: props.loading,\n fetchpriority: props.fetchpriority,\n 'aria-hidden': 'true',\n draggable: props.draggable,\n ...img\n }\n\n if (position.value === index) {\n data.class += ' q-img__image--waiting'\n Object.assign(data, { onLoad, onError })\n }\n else {\n data.class += ' q-img__image--loaded'\n }\n\n return h(\n 'div',\n { class: 'q-img__container absolute-full', key: 'img' + index },\n h('img', data)\n )\n }\n\n function getContent () {\n if (isLoading.value !== true) {\n return h('div', {\n key: 'content',\n class: 'q-img__content absolute-full q-anchor--skip'\n }, hSlot(slots[ hasError.value === true ? 'error' : 'default' ]))\n }\n\n return h('div', {\n key: 'loading',\n class: 'q-img__loading absolute-full flex flex-center'\n }, (\n slots.loading !== void 0\n ? slots.loading()\n : (\n props.noSpinner === true\n ? void 0\n : [\n h(QSpinner, {\n color: props.spinnerColor,\n size: props.spinnerSize\n })\n ]\n )\n ))\n }\n\n if (__QUASAR_SSR_SERVER__ !== true) {\n if (__QUASAR_SSR_CLIENT__) {\n onMounted(() => {\n addImage(getCurrentSrc())\n })\n }\n else {\n addImage(getCurrentSrc())\n }\n\n onBeforeUnmount(() => {\n isDestroyed = true\n\n if (loadTimer !== null) {\n clearTimeout(loadTimer)\n loadTimer = null\n }\n })\n }\n\n return () => {\n const content = []\n\n if (ratioStyle.value !== null) {\n content.push(\n h('div', { key: 'filler', style: ratioStyle.value })\n )\n }\n\n if (hasError.value !== true) {\n if (images[ 0 ].value !== null) {\n content.push(getImage(0))\n }\n\n if (images[ 1 ].value !== null) {\n content.push(getImage(1))\n }\n }\n\n content.push(\n h(Transition, { name: 'q-transition--fade' }, getContent)\n )\n\n return h('div', {\n class: classes.value,\n style: style.value,\n role: 'img',\n 'aria-label': props.alt\n }, content)\n }\n }\n})\n","import { h, ref, computed, watch, onMounted, onActivated, onDeactivated, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport debounce from '../../utils/debounce.js'\nimport { height } from '../../utils/dom.js'\nimport { getScrollTarget, getScrollHeight, getVerticalScrollPosition, setVerticalScrollPosition } from '../../utils/scroll.js'\nimport { listenOpts } from '../../utils/event.js'\nimport { hSlot, hUniqueSlot } from '../../utils/private/render.js'\n\nconst { passive } = listenOpts\n\nexport default createComponent({\n name: 'QInfiniteScroll',\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 emits: [ 'load' ],\n\n setup (props, { slots, emit }) {\n const isFetching = ref(false)\n const isWorking = ref(true)\n const rootRef = ref(null)\n const loadingRef = ref(null)\n\n let index = props.initialIndex || 0\n let localScrollTarget, poll\n\n const classes = computed(() =>\n 'q-infinite-scroll__loading'\n + (isFetching.value === true ? '' : ' invisible')\n )\n\n function immediatePoll () {\n if (props.disable === true || isFetching.value === true || isWorking.value === false) {\n return\n }\n\n const\n scrollHeight = getScrollHeight(localScrollTarget),\n scrollPosition = getVerticalScrollPosition(localScrollTarget),\n containerHeight = height(localScrollTarget)\n\n if (props.reverse === false) {\n if (Math.round(scrollPosition + containerHeight + props.offset) >= Math.round(scrollHeight)) {\n trigger()\n }\n }\n else if (Math.round(scrollPosition) <= props.offset) {\n trigger()\n }\n }\n\n function trigger () {\n if (props.disable === true || isFetching.value === true || isWorking.value === false) {\n return\n }\n\n index++\n isFetching.value = true\n\n const heightBefore = getScrollHeight(localScrollTarget)\n\n emit('load', index, isDone => {\n if (isWorking.value === true) {\n isFetching.value = false\n nextTick(() => {\n if (props.reverse === true) {\n const\n heightAfter = getScrollHeight(localScrollTarget),\n scrollPosition = getVerticalScrollPosition(localScrollTarget),\n heightDifference = heightAfter - heightBefore\n\n setVerticalScrollPosition(localScrollTarget, scrollPosition + heightDifference)\n }\n\n if (isDone === true) {\n stop()\n }\n else if (rootRef.value) {\n rootRef.value.closest('body') && poll()\n }\n })\n }\n })\n }\n\n function reset () {\n index = 0\n }\n\n function resume () {\n if (isWorking.value === false) {\n isWorking.value = true\n localScrollTarget.addEventListener('scroll', poll, passive)\n }\n\n immediatePoll()\n }\n\n function stop () {\n if (isWorking.value === true) {\n isWorking.value = false\n isFetching.value = false\n localScrollTarget.removeEventListener('scroll', poll, passive)\n if (poll !== void 0 && poll.cancel !== void 0) {\n poll.cancel()\n }\n }\n }\n\n function updateScrollTarget () {\n if (localScrollTarget && isWorking.value === true) {\n localScrollTarget.removeEventListener('scroll', poll, passive)\n }\n\n localScrollTarget = getScrollTarget(rootRef.value, props.scrollTarget)\n\n if (isWorking.value === true) {\n localScrollTarget.addEventListener('scroll', poll, passive)\n\n if (props.reverse === true) {\n const\n scrollHeight = getScrollHeight(localScrollTarget),\n containerHeight = height(localScrollTarget)\n\n setVerticalScrollPosition(localScrollTarget, scrollHeight - containerHeight)\n }\n\n immediatePoll()\n }\n }\n\n function setIndex (newIndex) {\n index = newIndex\n }\n\n function setDebounce (val) {\n val = parseInt(val, 10)\n\n const oldPoll = poll\n\n poll = val <= 0\n ? immediatePoll\n : debounce(immediatePoll, isNaN(val) === true ? 100 : val)\n\n if (localScrollTarget && isWorking.value === true) {\n if (oldPoll !== void 0) {\n localScrollTarget.removeEventListener('scroll', oldPoll, passive)\n }\n\n localScrollTarget.addEventListener('scroll', poll, passive)\n }\n }\n\n function updateSvgAnimations (isRetry) {\n if (renderLoadingSlot.value === true) {\n if (loadingRef.value === null) {\n isRetry !== true && nextTick(() => { updateSvgAnimations(true) })\n return\n }\n\n // we need to pause svg animations (if any) when hiding\n // otherwise the browser will keep on recalculating the style\n const action = `${ isFetching.value === true ? 'un' : '' }pauseAnimations`\n Array.from(loadingRef.value.getElementsByTagName('svg')).forEach(el => {\n el[ action ]()\n })\n }\n }\n\n const renderLoadingSlot = computed(() => props.disable !== true && isWorking.value === true)\n\n watch([ isFetching, renderLoadingSlot ], () => { updateSvgAnimations() })\n\n watch(() => props.disable, val => {\n if (val === true) { stop() }\n else { resume() }\n })\n\n watch(() => props.reverse, () => {\n if (isFetching.value === false && isWorking.value === true) {\n immediatePoll()\n }\n })\n\n watch(() => props.scrollTarget, updateScrollTarget)\n watch(() => props.debounce, setDebounce)\n\n let scrollPos = false\n\n onActivated(() => {\n if (scrollPos !== false && localScrollTarget) {\n setVerticalScrollPosition(localScrollTarget, scrollPos)\n }\n })\n\n onDeactivated(() => {\n scrollPos = localScrollTarget\n ? getVerticalScrollPosition(localScrollTarget)\n : false\n })\n\n onBeforeUnmount(() => {\n if (isWorking.value === true) {\n localScrollTarget.removeEventListener('scroll', poll, passive)\n }\n })\n\n onMounted(() => {\n setDebounce(props.debounce)\n updateScrollTarget()\n\n isFetching.value === false && updateSvgAnimations()\n })\n\n // expose public methods\n const vm = getCurrentInstance()\n Object.assign(vm.proxy, {\n poll: () => { poll !== void 0 && poll() },\n trigger, stop, reset, resume, setIndex\n })\n\n return () => {\n const child = hUniqueSlot(slots.default, [])\n\n if (renderLoadingSlot.value === true) {\n child[ props.reverse === false ? 'push' : 'unshift' ](\n h('div', { ref: loadingRef, class: classes.value }, hSlot(slots.loading))\n )\n }\n\n return h('div', {\n class: 'q-infinite-scroll',\n ref: rootRef\n }, child)\n }\n }\n})\n","import { ref, watch, nextTick } from 'vue'\n\nimport { shouldIgnoreKey } from '../../utils/private/key-composition.js'\n\n// leave NAMED_MASKS at top of file (code referenced from docs)\nconst NAMED_MASKS = {\n date: '####/##/##',\n datetime: '####/##/## ##:##',\n time: '##:##',\n fulltime: '##:##:##',\n phone: '(###) ### - ####',\n card: '#### #### #### ####'\n}\n\nconst TOKENS = {\n '#': { pattern: '[\\\\d]', negate: '[^\\\\d]' },\n\n S: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]' },\n N: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]' },\n\n A: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]', transform: v => v.toLocaleUpperCase() },\n a: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]', transform: v => v.toLocaleLowerCase() },\n\n X: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]', transform: v => v.toLocaleUpperCase() },\n x: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]', transform: v => v.toLocaleLowerCase() }\n}\n\nconst KEYS = Object.keys(TOKENS)\nKEYS.forEach(key => {\n TOKENS[ key ].regex = new RegExp(TOKENS[ key ].pattern)\n})\n\nconst\n tokenRegexMask = new RegExp('\\\\\\\\([^.*+?^${}()|([\\\\]])|([.*+?^${}()|[\\\\]])|([' + KEYS.join('') + '])|(.)', 'g'),\n escRegex = /[.*+?^${}()|[\\]\\\\]/g\n\nconst MARKER = String.fromCharCode(1)\n\nexport const useMaskProps = {\n mask: String,\n reverseFillMask: Boolean,\n fillMask: [ Boolean, String ],\n unmaskedValue: Boolean\n}\n\nexport default function (props, emit, emitValue, inputRef) {\n let maskMarked, maskReplaced, computedMask, computedUnmask, pastedTextStart, selectionAnchor\n\n const hasMask = ref(null)\n const innerValue = ref(getInitialMaskedValue())\n\n function getIsTypeText () {\n return props.autogrow === true\n || [ 'textarea', 'text', 'search', 'url', 'tel', 'password' ].includes(props.type)\n }\n\n watch(() => props.type + props.autogrow, updateMaskInternals)\n\n watch(() => props.mask, v => {\n if (v !== void 0) {\n updateMaskValue(innerValue.value, true)\n }\n else {\n const val = unmaskValue(innerValue.value)\n updateMaskInternals()\n props.modelValue !== val && emit('update:modelValue', val)\n }\n })\n\n watch(() => props.fillMask + props.reverseFillMask, () => {\n hasMask.value === true && updateMaskValue(innerValue.value, true)\n })\n\n watch(() => props.unmaskedValue, () => {\n hasMask.value === true && updateMaskValue(innerValue.value)\n })\n\n function getInitialMaskedValue () {\n updateMaskInternals()\n\n if (hasMask.value === true) {\n const masked = maskValue(unmaskValue(props.modelValue))\n\n return props.fillMask !== false\n ? fillWithMask(masked)\n : masked\n }\n\n return props.modelValue\n }\n\n function getPaddedMaskMarked (size) {\n if (size < maskMarked.length) {\n return maskMarked.slice(-size)\n }\n\n let pad = '', localMaskMarked = maskMarked\n const padPos = localMaskMarked.indexOf(MARKER)\n\n if (padPos > -1) {\n for (let i = size - localMaskMarked.length; i > 0; i--) {\n pad += MARKER\n }\n\n localMaskMarked = localMaskMarked.slice(0, padPos) + pad + localMaskMarked.slice(padPos)\n }\n\n return localMaskMarked\n }\n\n function updateMaskInternals () {\n hasMask.value = props.mask !== void 0\n && props.mask.length !== 0\n && getIsTypeText()\n\n if (hasMask.value === false) {\n computedUnmask = void 0\n maskMarked = ''\n maskReplaced = ''\n return\n }\n\n const\n localComputedMask = NAMED_MASKS[ props.mask ] === void 0\n ? props.mask\n : NAMED_MASKS[ props.mask ],\n fillChar = typeof props.fillMask === 'string' && props.fillMask.length !== 0\n ? props.fillMask.slice(0, 1)\n : '_',\n fillCharEscaped = fillChar.replace(escRegex, '\\\\$&'),\n unmask = [],\n extract = [],\n mask = []\n\n let\n firstMatch = props.reverseFillMask === true,\n unmaskChar = '',\n negateChar = ''\n\n localComputedMask.replace(tokenRegexMask, (_, char1, esc, token, char2) => {\n if (token !== void 0) {\n const c = TOKENS[ token ]\n mask.push(c)\n negateChar = c.negate\n if (firstMatch === true) {\n extract.push('(?:' + negateChar + '+)?(' + c.pattern + '+)?(?:' + negateChar + '+)?(' + c.pattern + '+)?')\n firstMatch = false\n }\n extract.push('(?:' + negateChar + '+)?(' + c.pattern + ')?')\n }\n else if (esc !== void 0) {\n unmaskChar = '\\\\' + (esc === '\\\\' ? '' : esc)\n mask.push(esc)\n unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')\n }\n else {\n const c = char1 !== void 0 ? char1 : char2\n unmaskChar = c === '\\\\' ? '\\\\\\\\\\\\\\\\' : c.replace(escRegex, '\\\\\\\\$&')\n mask.push(c)\n unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')\n }\n })\n\n const\n unmaskMatcher = new RegExp(\n '^'\n + unmask.join('')\n + '(' + (unmaskChar === '' ? '.' : '[^' + unmaskChar + ']') + '+)?'\n + (unmaskChar === '' ? '' : '[' + unmaskChar + ']*') + '$'\n ),\n extractLast = extract.length - 1,\n extractMatcher = extract.map((re, index) => {\n if (index === 0 && props.reverseFillMask === true) {\n return new RegExp('^' + fillCharEscaped + '*' + re)\n }\n else if (index === extractLast) {\n return new RegExp(\n '^' + re\n + '(' + (negateChar === '' ? '.' : negateChar) + '+)?'\n + (props.reverseFillMask === true ? '$' : fillCharEscaped + '*')\n )\n }\n\n return new RegExp('^' + re)\n })\n\n computedMask = mask\n computedUnmask = val => {\n const unmaskMatch = unmaskMatcher.exec(props.reverseFillMask === true ? val : val.slice(0, mask.length + 1))\n if (unmaskMatch !== null) {\n val = unmaskMatch.slice(1).join('')\n }\n\n const\n extractMatch = [],\n extractMatcherLength = extractMatcher.length\n\n for (let i = 0, str = val; i < extractMatcherLength; i++) {\n const m = extractMatcher[ i ].exec(str)\n\n if (m === null) {\n break\n }\n\n str = str.slice(m.shift().length)\n extractMatch.push(...m)\n }\n if (extractMatch.length !== 0) {\n return extractMatch.join('')\n }\n\n return val\n }\n maskMarked = mask.map(v => (typeof v === 'string' ? v : MARKER)).join('')\n maskReplaced = maskMarked.split(MARKER).join(fillChar)\n }\n\n function updateMaskValue (rawVal, updateMaskInternalsFlag, inputType) {\n const\n inp = inputRef.value,\n end = inp.selectionEnd,\n endReverse = inp.value.length - end,\n unmasked = unmaskValue(rawVal)\n\n // Update here so unmask uses the original fillChar\n updateMaskInternalsFlag === true && updateMaskInternals()\n\n const\n preMasked = maskValue(unmasked),\n masked = props.fillMask !== false\n ? fillWithMask(preMasked)\n : preMasked,\n changed = innerValue.value !== masked\n\n // We want to avoid \"flickering\" so we set value immediately\n inp.value !== masked && (inp.value = masked)\n\n changed === true && (innerValue.value = masked)\n\n document.activeElement === inp && nextTick(() => {\n if (masked === maskReplaced) {\n const cursor = props.reverseFillMask === true ? maskReplaced.length : 0\n inp.setSelectionRange(cursor, cursor, 'forward')\n\n return\n }\n\n if (inputType === 'insertFromPaste' && props.reverseFillMask !== true) {\n const maxEnd = inp.selectionEnd\n let cursor = end - 1\n // each non-marker char means we move once to right\n for (let i = pastedTextStart; i <= cursor && i < maxEnd; i++) {\n if (maskMarked[ i ] !== MARKER) {\n cursor++\n }\n }\n moveCursor.right(inp, cursor)\n\n return\n }\n\n if ([ 'deleteContentBackward', 'deleteContentForward' ].indexOf(inputType) > -1) {\n const cursor = props.reverseFillMask === true\n ? (\n end === 0\n ? (masked.length > preMasked.length ? 1 : 0)\n : Math.max(0, masked.length - (masked === maskReplaced ? 0 : Math.min(preMasked.length, endReverse) + 1)) + 1\n )\n : end\n\n inp.setSelectionRange(cursor, cursor, 'forward')\n return\n }\n\n if (props.reverseFillMask === true) {\n if (changed === true) {\n const cursor = Math.max(0, masked.length - (masked === maskReplaced ? 0 : Math.min(preMasked.length, endReverse + 1)))\n\n if (cursor === 1 && end === 1) {\n inp.setSelectionRange(cursor, cursor, 'forward')\n }\n else {\n moveCursor.rightReverse(inp, cursor)\n }\n }\n else {\n const cursor = masked.length - endReverse\n inp.setSelectionRange(cursor, cursor, 'backward')\n }\n }\n else {\n if (changed === true) {\n const cursor = Math.max(0, maskMarked.indexOf(MARKER), Math.min(preMasked.length, end) - 1)\n moveCursor.right(inp, cursor)\n }\n else {\n const cursor = end - 1\n moveCursor.right(inp, cursor)\n }\n }\n })\n\n const val = props.unmaskedValue === true\n ? unmaskValue(masked)\n : masked\n\n String(props.modelValue) !== val && emitValue(val, true)\n }\n\n function moveCursorForPaste (inp, start, end) {\n const preMasked = maskValue(unmaskValue(inp.value))\n\n start = Math.max(0, maskMarked.indexOf(MARKER), Math.min(preMasked.length, start))\n pastedTextStart = start\n\n inp.setSelectionRange(start, end, 'forward')\n }\n\n const moveCursor = {\n left (inp, cursor) {\n const noMarkBefore = maskMarked.slice(cursor - 1).indexOf(MARKER) === -1\n let i = Math.max(0, cursor - 1)\n\n for (; i >= 0; i--) {\n if (maskMarked[ i ] === MARKER) {\n cursor = i\n noMarkBefore === true && cursor++\n break\n }\n }\n\n if (\n i < 0\n && maskMarked[ cursor ] !== void 0\n && maskMarked[ cursor ] !== MARKER\n ) {\n return moveCursor.right(inp, 0)\n }\n\n cursor >= 0 && inp.setSelectionRange(cursor, cursor, 'backward')\n },\n\n right (inp, cursor) {\n const limit = inp.value.length\n let i = Math.min(limit, cursor + 1)\n\n for (; i <= limit; i++) {\n if (maskMarked[ i ] === MARKER) {\n cursor = i\n break\n }\n else if (maskMarked[ i - 1 ] === MARKER) {\n cursor = i\n }\n }\n\n if (\n i > limit\n && maskMarked[ cursor - 1 ] !== void 0\n && maskMarked[ cursor - 1 ] !== MARKER\n ) {\n return moveCursor.left(inp, limit)\n }\n\n inp.setSelectionRange(cursor, cursor, 'forward')\n },\n\n leftReverse (inp, cursor) {\n const\n localMaskMarked = getPaddedMaskMarked(inp.value.length)\n let i = Math.max(0, cursor - 1)\n\n for (; i >= 0; i--) {\n if (localMaskMarked[ i - 1 ] === MARKER) {\n cursor = i\n break\n }\n else if (localMaskMarked[ i ] === MARKER) {\n cursor = i\n if (i === 0) {\n break\n }\n }\n }\n\n if (\n i < 0\n && localMaskMarked[ cursor ] !== void 0\n && localMaskMarked[ cursor ] !== MARKER\n ) {\n return moveCursor.rightReverse(inp, 0)\n }\n\n cursor >= 0 && inp.setSelectionRange(cursor, cursor, 'backward')\n },\n\n rightReverse (inp, cursor) {\n const\n limit = inp.value.length,\n localMaskMarked = getPaddedMaskMarked(limit),\n noMarkBefore = localMaskMarked.slice(0, cursor + 1).indexOf(MARKER) === -1\n let i = Math.min(limit, cursor + 1)\n\n for (; i <= limit; i++) {\n if (localMaskMarked[ i - 1 ] === MARKER) {\n cursor = i\n cursor > 0 && noMarkBefore === true && cursor--\n break\n }\n }\n\n if (\n i > limit\n && localMaskMarked[ cursor - 1 ] !== void 0\n && localMaskMarked[ cursor - 1 ] !== MARKER\n ) {\n return moveCursor.leftReverse(inp, limit)\n }\n\n inp.setSelectionRange(cursor, cursor, 'forward')\n }\n }\n\n function onMaskedClick (e) {\n emit('click', e)\n\n selectionAnchor = void 0\n }\n\n function onMaskedKeydown (e) {\n emit('keydown', e)\n\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const\n inp = inputRef.value,\n start = inp.selectionStart,\n end = inp.selectionEnd\n\n if (!e.shiftKey) {\n selectionAnchor = void 0\n }\n\n if (e.keyCode === 37 || e.keyCode === 39) { // Left / Right\n if (e.shiftKey && selectionAnchor === void 0) {\n selectionAnchor = inp.selectionDirection === 'forward' ? start : end\n }\n\n const fn = moveCursor[ (e.keyCode === 39 ? 'right' : 'left') + (props.reverseFillMask === true ? 'Reverse' : '') ]\n\n e.preventDefault()\n fn(inp, selectionAnchor === start ? end : start)\n\n if (e.shiftKey) {\n const cursor = inp.selectionStart\n inp.setSelectionRange(Math.min(selectionAnchor, cursor), Math.max(selectionAnchor, cursor), 'forward')\n }\n }\n else if (\n e.keyCode === 8 // Backspace\n && props.reverseFillMask !== true\n && start === end\n ) {\n moveCursor.left(inp, start)\n inp.setSelectionRange(inp.selectionStart, end, 'backward')\n }\n else if (\n e.keyCode === 46 // Delete\n && props.reverseFillMask === true\n && start === end\n ) {\n moveCursor.rightReverse(inp, end)\n inp.setSelectionRange(start, inp.selectionEnd, 'forward')\n }\n }\n\n function maskValue (val) {\n if (val === void 0 || val === null || val === '') { return '' }\n\n if (props.reverseFillMask === true) {\n return maskValueReverse(val)\n }\n\n const mask = computedMask\n\n let valIndex = 0, output = ''\n\n for (let maskIndex = 0; maskIndex < mask.length; maskIndex++) {\n const\n valChar = val[ valIndex ],\n maskDef = mask[ maskIndex ]\n\n if (typeof maskDef === 'string') {\n output += maskDef\n valChar === maskDef && valIndex++\n }\n else if (valChar !== void 0 && maskDef.regex.test(valChar)) {\n output += maskDef.transform !== void 0\n ? maskDef.transform(valChar)\n : valChar\n valIndex++\n }\n else {\n return output\n }\n }\n\n return output\n }\n\n function maskValueReverse (val) {\n const\n mask = computedMask,\n firstTokenIndex = maskMarked.indexOf(MARKER)\n\n let valIndex = val.length - 1, output = ''\n\n for (let maskIndex = mask.length - 1; maskIndex >= 0 && valIndex > -1; maskIndex--) {\n const maskDef = mask[ maskIndex ]\n\n let valChar = val[ valIndex ]\n\n if (typeof maskDef === 'string') {\n output = maskDef + output\n valChar === maskDef && valIndex--\n }\n else if (valChar !== void 0 && maskDef.regex.test(valChar)) {\n do {\n output = (maskDef.transform !== void 0 ? maskDef.transform(valChar) : valChar) + output\n valIndex--\n valChar = val[ valIndex ]\n // eslint-disable-next-line no-unmodified-loop-condition\n } while (firstTokenIndex === maskIndex && valChar !== void 0 && maskDef.regex.test(valChar))\n }\n else {\n return output\n }\n }\n\n return output\n }\n\n function unmaskValue (val) {\n return typeof val !== 'string' || computedUnmask === void 0\n ? (typeof val === 'number' ? computedUnmask('' + val) : val)\n : computedUnmask(val)\n }\n\n function fillWithMask (val) {\n if (maskReplaced.length - val.length <= 0) {\n return val\n }\n\n return props.reverseFillMask === true && val.length !== 0\n ? maskReplaced.slice(0, -val.length) + val\n : val + maskReplaced.slice(val.length)\n }\n\n return {\n innerValue,\n hasMask,\n moveCursorForPaste,\n updateMaskValue,\n onMaskedKeydown,\n onMaskedClick\n }\n}\n","import { h, ref, computed, watch, onBeforeUnmount, onMounted, nextTick, getCurrentInstance } from 'vue'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits, fieldValueIsFilled } from '../../composables/private/use-field.js'\nimport useMask, { useMaskProps } from './use-mask.js'\nimport { useFormProps, useFormInputNameAttr } from '../../composables/private/use-form.js'\nimport useFileFormDomProps from '../../composables/private/use-file-dom-props.js'\nimport useKeyComposition from '../../composables/private/use-key-composition.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stop } from '../../utils/event.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\nimport { injectProp } from '../../utils/private/inject-obj-prop.js'\n\nexport default createComponent({\n name: 'QInput',\n\n inheritAttrs: false,\n\n props: {\n ...useFieldProps,\n ...useMaskProps,\n ...useFormProps,\n\n modelValue: { required: false },\n\n shadowText: String,\n\n type: {\n type: String,\n default: 'text'\n },\n\n debounce: [ String, Number ],\n\n autogrow: Boolean, // makes a textarea\n\n inputClass: [ Array, String, Object ],\n inputStyle: [ Array, String, Object ]\n },\n\n emits: [\n ...useFieldEmits,\n 'paste', 'change',\n 'keydown', 'click', 'animationend'\n ],\n\n setup (props, { emit, attrs }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const temp = {}\n let emitCachedValue = NaN, typedNumber, stopValueWatcher, emitTimer = null, emitValueFn\n\n const inputRef = ref(null)\n const nameProp = useFormInputNameAttr(props)\n\n const {\n innerValue,\n hasMask,\n moveCursorForPaste,\n updateMaskValue,\n onMaskedKeydown,\n onMaskedClick\n } = useMask(props, emit, emitValue, inputRef)\n\n const formDomProps = useFileFormDomProps(props, /* type guard */ true)\n const hasValue = computed(() => fieldValueIsFilled(innerValue.value))\n\n const onComposition = useKeyComposition(onInput)\n\n const state = useFieldState()\n\n const isTextarea = computed(() =>\n props.type === 'textarea' || props.autogrow === true\n )\n\n const isTypeText = computed(() =>\n isTextarea.value === true\n || [ 'text', 'search', 'url', 'tel', 'password' ].includes(props.type)\n )\n\n const onEvents = computed(() => {\n const evt = {\n ...state.splitAttrs.listeners.value,\n onInput,\n onPaste,\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n onChange,\n onBlur: onFinishEditing,\n onFocus: stop\n }\n\n evt.onCompositionstart = evt.onCompositionupdate = evt.onCompositionend = onComposition\n\n if (hasMask.value === true) {\n evt.onKeydown = onMaskedKeydown\n // reset selection anchor on pointer selection\n evt.onClick = onMaskedClick\n }\n\n if (props.autogrow === true) {\n evt.onAnimationend = onAnimationend\n }\n\n return evt\n })\n\n const inputAttrs = computed(() => {\n const attrs = {\n tabindex: 0,\n 'data-autofocus': props.autofocus === true || void 0,\n rows: props.type === 'textarea' ? 6 : void 0,\n 'aria-label': props.label,\n name: nameProp.value,\n ...state.splitAttrs.attributes.value,\n id: state.targetUid.value,\n maxlength: props.maxlength,\n disabled: props.disable === true,\n readonly: props.readonly === true\n }\n\n if (isTextarea.value === false) {\n attrs.type = props.type\n }\n\n if (props.autogrow === true) {\n attrs.rows = 1\n }\n\n return attrs\n })\n\n // some browsers lose the native input value\n // so we need to reattach it dynamically\n // (like type=\"password\" <-> type=\"text\"; see #12078)\n watch(() => props.type, () => {\n if (inputRef.value) {\n inputRef.value.value = props.modelValue\n }\n })\n\n watch(() => props.modelValue, v => {\n if (hasMask.value === true) {\n if (stopValueWatcher === true) {\n stopValueWatcher = false\n\n if (String(v) === emitCachedValue) {\n return\n }\n }\n\n updateMaskValue(v)\n }\n else if (innerValue.value !== v) {\n innerValue.value = v\n\n if (\n props.type === 'number'\n && temp.hasOwnProperty('value') === true\n ) {\n if (typedNumber === true) {\n typedNumber = false\n }\n else {\n delete temp.value\n }\n }\n }\n\n // textarea only\n props.autogrow === true && nextTick(adjustHeight)\n })\n\n watch(() => props.autogrow, val => {\n // textarea only\n if (val === true) {\n nextTick(adjustHeight)\n }\n // if it has a number of rows set respect it\n else if (inputRef.value !== null && attrs.rows > 0) {\n inputRef.value.style.height = 'auto'\n }\n })\n\n watch(() => props.dense, () => {\n props.autogrow === true && nextTick(adjustHeight)\n })\n\n function focus () {\n addFocusFn(() => {\n const el = document.activeElement\n if (\n inputRef.value !== null\n && inputRef.value !== el\n && (el === null || el.id !== state.targetUid.value)\n ) {\n inputRef.value.focus({ preventScroll: true })\n }\n })\n }\n\n function select () {\n inputRef.value !== null && inputRef.value.select()\n }\n\n function onPaste (e) {\n if (hasMask.value === true && props.reverseFillMask !== true) {\n const inp = e.target\n moveCursorForPaste(inp, inp.selectionStart, inp.selectionEnd)\n }\n\n emit('paste', e)\n }\n\n function onInput (e) {\n if (!e || !e.target) {\n return\n }\n\n if (props.type === 'file') {\n emit('update:modelValue', e.target.files)\n return\n }\n\n const val = e.target.value\n\n if (e.target.qComposing === true) {\n temp.value = val\n\n return\n }\n\n if (hasMask.value === true) {\n updateMaskValue(val, false, e.inputType)\n }\n else {\n emitValue(val)\n\n if (isTypeText.value === true && e.target === document.activeElement) {\n const { selectionStart, selectionEnd } = e.target\n\n if (selectionStart !== void 0 && selectionEnd !== void 0) {\n nextTick(() => {\n if (e.target === document.activeElement && val.indexOf(e.target.value) === 0) {\n e.target.setSelectionRange(selectionStart, selectionEnd)\n }\n })\n }\n }\n }\n\n // we need to trigger it immediately too,\n // to avoid \"flickering\"\n props.autogrow === true && adjustHeight()\n }\n\n function onAnimationend (e) {\n emit('animationend', e)\n adjustHeight()\n }\n\n function emitValue (val, stopWatcher) {\n emitValueFn = () => {\n emitTimer = null\n\n if (\n props.type !== 'number'\n && temp.hasOwnProperty('value') === true\n ) {\n delete temp.value\n }\n\n if (props.modelValue !== val && emitCachedValue !== val) {\n emitCachedValue = val\n\n stopWatcher === true && (stopValueWatcher = true)\n emit('update:modelValue', val)\n\n nextTick(() => {\n emitCachedValue === val && (emitCachedValue = NaN)\n })\n }\n\n emitValueFn = void 0\n }\n\n if (props.type === 'number') {\n typedNumber = true\n temp.value = val\n }\n\n if (props.debounce !== void 0) {\n emitTimer !== null && clearTimeout(emitTimer)\n temp.value = val\n emitTimer = setTimeout(emitValueFn, props.debounce)\n }\n else {\n emitValueFn()\n }\n }\n\n // textarea only\n function adjustHeight () {\n requestAnimationFrame(() => {\n const inp = inputRef.value\n if (inp !== null) {\n const parentStyle = inp.parentNode.style\n // chrome does not keep scroll #15498\n const { scrollTop } = inp\n // chrome calculates a smaller scrollHeight when in a .column container\n const { overflowY, maxHeight } = $q.platform.is.firefox === true\n ? {}\n : window.getComputedStyle(inp)\n // on firefox or if overflowY is specified as scroll #14263, #14344\n // we don't touch overflow\n // firefox is not so bad in the end\n const changeOverflow = overflowY !== void 0 && overflowY !== 'scroll'\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 changeOverflow === true && (inp.style.overflowY = 'hidden')\n parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'\n inp.style.height = '1px'\n\n inp.style.height = inp.scrollHeight + 'px'\n // we should allow scrollbars only\n // if there is maxHeight and content is taller than maxHeight\n changeOverflow === true && (inp.style.overflowY = parseInt(maxHeight, 10) < inp.scrollHeight ? 'auto' : 'hidden')\n parentStyle.marginBottom = ''\n inp.scrollTop = scrollTop\n }\n })\n }\n\n function onChange (e) {\n onComposition(e)\n\n if (emitTimer !== null) {\n clearTimeout(emitTimer)\n emitTimer = null\n }\n\n emitValueFn !== void 0 && emitValueFn()\n\n emit('change', e.target.value)\n }\n\n function onFinishEditing (e) {\n e !== void 0 && stop(e)\n\n if (emitTimer !== null) {\n clearTimeout(emitTimer)\n emitTimer = null\n }\n\n emitValueFn !== void 0 && emitValueFn()\n\n typedNumber = false\n stopValueWatcher = false\n delete temp.value\n\n // we need to use setTimeout instead of this.$nextTick\n // to avoid a bug where focusout is not emitted for type date/time/week/...\n props.type !== 'file' && setTimeout(() => {\n if (inputRef.value !== null) {\n inputRef.value.value = innerValue.value !== void 0 ? innerValue.value : ''\n }\n })\n }\n\n function getCurValue () {\n return temp.hasOwnProperty('value') === true\n ? temp.value\n : (innerValue.value !== void 0 ? innerValue.value : '')\n }\n\n onBeforeUnmount(() => {\n onFinishEditing()\n })\n\n onMounted(() => {\n // textarea only\n props.autogrow === true && adjustHeight()\n })\n\n Object.assign(state, {\n innerValue,\n\n fieldClass: computed(() =>\n `q-${ isTextarea.value === true ? 'textarea' : 'input' }`\n + (props.autogrow === true ? ' q-textarea--autogrow' : '')\n ),\n\n hasShadow: computed(() =>\n props.type !== 'file'\n && typeof props.shadowText === 'string'\n && props.shadowText.length !== 0\n ),\n\n inputRef,\n\n emitValue,\n\n hasValue,\n\n floatingLabel: computed(() =>\n (\n hasValue.value === true\n && (props.type !== 'number' || isNaN(innerValue.value) === false)\n )\n || fieldValueIsFilled(props.displayValue)\n ),\n\n getControl: () => {\n return h(isTextarea.value === true ? 'textarea' : 'input', {\n ref: inputRef,\n class: [\n 'q-field__native q-placeholder',\n props.inputClass\n ],\n style: props.inputStyle,\n ...inputAttrs.value,\n ...onEvents.value,\n ...(\n props.type !== 'file'\n ? { value: getCurValue() }\n : formDomProps.value\n )\n })\n },\n\n getShadowControl: () => {\n return h('div', {\n class: 'q-field__native q-field__shadow absolute-bottom no-pointer-events'\n + (isTextarea.value === true ? '' : ' text-no-wrap')\n }, [\n h('span', { class: 'invisible' }, getCurValue()),\n h('span', props.shadowText)\n ])\n }\n })\n\n const renderFn = useField(state)\n\n // expose public methods\n Object.assign(proxy, {\n focus,\n select,\n getNativeElement: () => inputRef.value // deprecated\n })\n\n injectProp(proxy, 'nativeEl', () => inputRef.value)\n\n return renderFn\n }\n})\n","import { h, ref, computed, Transition } from 'vue'\n\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nimport Intersection from '../../directives/Intersection.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot, hDir } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QIntersection',\n\n props: {\n tag: {\n type: String,\n default: 'div'\n },\n\n once: Boolean,\n transition: String,\n transitionDuration: {\n type: [ String, Number ],\n default: 300\n },\n\n ssrPrerender: Boolean,\n\n margin: String,\n threshold: [ Number, Array ],\n root: {\n default: null\n },\n\n disable: Boolean,\n\n onVisibility: Function\n },\n\n setup (props, { slots, emit }) {\n const showing = ref(isRuntimeSsrPreHydration.value === true ? props.ssrPrerender : false)\n\n const intersectionProps = computed(() => (\n props.root !== void 0 || props.margin !== void 0 || props.threshold !== void 0\n ? {\n handler: trigger,\n cfg: {\n root: props.root,\n rootMargin: props.margin,\n threshold: props.threshold\n }\n }\n : trigger\n ))\n\n const hasDirective = computed(() =>\n props.disable !== true\n && (isRuntimeSsrPreHydration.value !== true || props.once !== true || props.ssrPrerender !== true)\n )\n\n const directives = computed(() => {\n // if hasDirective.value === true\n return [ [\n Intersection,\n intersectionProps.value,\n void 0,\n { once: props.once }\n ] ]\n })\n\n const transitionStyle = computed(\n () => `--q-transition-duration: ${ props.transitionDuration }ms`\n )\n\n function trigger (entry) {\n if (showing.value !== entry.isIntersecting) {\n showing.value = entry.isIntersecting\n props.onVisibility !== void 0 && emit('visibility', showing.value)\n }\n }\n\n function getContent () {\n if (showing.value === true) {\n return [ h('div', { key: 'content', style: transitionStyle.value }, hSlot(slots.default)) ]\n }\n\n if (slots.hidden !== void 0) {\n return [ h('div', { key: 'hidden', style: transitionStyle.value }, slots.hidden()) ]\n }\n }\n\n return () => {\n const child = props.transition\n ? [\n h(Transition, {\n name: 'q-transition--' + props.transition\n }, getContent)\n ]\n : getContent()\n\n return hDir(\n props.tag,\n { class: 'q-intersection' },\n child,\n 'main',\n hasDirective.value,\n () => directives.value\n )\n }\n }\n})\n","import { h, ref, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useRouterLink, { useRouterLinkProps } from '../../composables/private/use-router-link.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hUniqueSlot } from '../../utils/private/render.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { isKeyCode } from '../../utils/private/key-composition.js'\n\nexport default createComponent({\n name: 'QItem',\n\n props: {\n ...useDarkProps,\n ...useRouterLinkProps,\n\n tag: {\n type: String,\n default: 'div'\n },\n\n active: {\n type: Boolean,\n default: null\n },\n\n clickable: Boolean,\n dense: Boolean,\n insetLevel: Number,\n\n tabindex: [ String, Number ],\n\n focused: Boolean,\n manualFocus: Boolean\n },\n\n emits: [ 'click', 'keyup' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const isDark = useDark(props, $q)\n const { hasLink, linkAttrs, linkClass, linkTag, navigateOnClick } = useRouterLink()\n\n const rootRef = ref(null)\n const blurTargetRef = ref(null)\n\n const isActionable = computed(() =>\n props.clickable === true\n || hasLink.value === true\n || props.tag === 'label'\n )\n\n const isClickable = computed(() =>\n props.disable !== true && isActionable.value === true\n )\n\n const classes = computed(() =>\n 'q-item q-item-type row no-wrap'\n + (props.dense === true ? ' q-item--dense' : '')\n + (isDark.value === true ? ' q-item--dark' : '')\n + (\n hasLink.value === true && props.active === null\n ? linkClass.value\n : (\n props.active === true\n ? ` q-item--active${ props.activeClass !== void 0 ? ` ${ props.activeClass }` : '' }`\n : ''\n )\n )\n + (props.disable === true ? ' disabled' : '')\n + (\n isClickable.value === true\n ? ' q-item--clickable q-link cursor-pointer '\n + (props.manualFocus === true ? 'q-manual-focusable' : 'q-focusable q-hoverable')\n + (props.focused === true ? ' q-manual-focusable--focused' : '')\n : ''\n )\n )\n\n const style = computed(() => {\n if (props.insetLevel === void 0) {\n return null\n }\n\n const dir = $q.lang.rtl === true ? 'Right' : 'Left'\n return {\n [ 'padding' + dir ]: (16 + props.insetLevel * 56) + 'px'\n }\n })\n\n function onClick (e) {\n if (isClickable.value === true) {\n if (blurTargetRef.value !== null) {\n if (e.qKeyEvent !== true && document.activeElement === rootRef.value) {\n blurTargetRef.value.focus()\n }\n else if (document.activeElement === blurTargetRef.value) {\n rootRef.value.focus()\n }\n }\n\n navigateOnClick(e)\n }\n }\n\n function onKeyup (e) {\n if (isClickable.value === true && isKeyCode(e, 13) === true) {\n stopAndPrevent(e)\n\n // for ripple\n e.qKeyEvent = true\n\n // for click trigger\n const evt = new MouseEvent('click', e)\n evt.qKeyEvent = true\n rootRef.value.dispatchEvent(evt)\n }\n\n emit('keyup', e)\n }\n\n function getContent () {\n const child = hUniqueSlot(slots.default, [])\n\n isClickable.value === true && child.unshift(\n h('div', { class: 'q-focus-helper', tabindex: -1, ref: blurTargetRef })\n )\n\n return child\n }\n\n return () => {\n const data = {\n ref: rootRef,\n class: classes.value,\n style: style.value,\n role: 'listitem',\n onClick,\n onKeyup\n }\n\n if (isClickable.value === true) {\n data.tabindex = props.tabindex || '0'\n Object.assign(data, linkAttrs.value)\n }\n else if (isActionable.value === true) {\n data[ 'aria-disabled' ] = 'true'\n }\n\n return h(\n linkTag.value,\n data,\n getContent()\n )\n }\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QItemLabel',\n\n props: {\n overline: Boolean,\n caption: Boolean,\n header: Boolean,\n lines: [ Number, String ]\n },\n\n setup (props, { slots }) {\n const parsedLines = computed(() => parseInt(props.lines, 10))\n\n const classes = computed(() =>\n 'q-item__label'\n + (props.overline === true ? ' q-item__label--overline text-overline' : '')\n + (props.caption === true ? ' q-item__label--caption text-caption' : '')\n + (props.header === true ? ' q-item__label--header' : '')\n + (parsedLines.value === 1 ? ' ellipsis' : '')\n )\n\n const style = computed(() => {\n return props.lines !== void 0 && parsedLines.value > 1\n ? {\n overflow: 'hidden',\n display: '-webkit-box',\n '-webkit-box-orient': 'vertical',\n '-webkit-line-clamp': parsedLines.value\n }\n : null\n })\n\n return () => h('div', {\n style: style.value,\n class: classes.value\n }, hSlot(slots.default))\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QItemSection',\n\n props: {\n avatar: Boolean,\n thumbnail: Boolean,\n side: Boolean,\n top: Boolean,\n noWrap: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() =>\n 'q-item__section column'\n + ` q-item__section--${ props.avatar === true || props.side === true || props.thumbnail === true ? 'side' : 'main' }`\n + (props.top === true ? ' q-item__section--top justify-start' : ' justify-center')\n + (props.avatar === true ? ' q-item__section--avatar' : '')\n + (props.thumbnail === true ? ' q-item__section--thumbnail' : '')\n + (props.noWrap === true ? ' q-item__section--nowrap' : '')\n )\n\n return () => h('div', { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QList',\n\n props: {\n ...useDarkProps,\n\n bordered: Boolean,\n dense: Boolean,\n separator: Boolean,\n padding: Boolean,\n\n tag: {\n type: String,\n default: 'div'\n }\n },\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const classes = computed(() =>\n 'q-list'\n + (props.bordered === true ? ' q-list--bordered' : '')\n + (props.dense === true ? ' q-list--dense' : '')\n + (props.separator === true ? ' q-list--separator' : '')\n + (isDark.value === true ? ' q-list--dark' : '')\n + (props.padding === true ? ' q-list--padding' : '')\n )\n\n return () => h(props.tag, { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, ref, reactive, computed, watch, provide, onUnmounted, getCurrentInstance } from 'vue'\n\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nimport QScrollObserver from '../scroll-observer/QScrollObserver.js'\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { getScrollbarWidth } from '../../utils/scroll.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport { layoutKey } from '../../utils/private/symbols.js'\n\nexport default createComponent({\n name: 'QLayout',\n\n props: {\n container: Boolean,\n view: {\n type: String,\n default: 'hhh lpr fff',\n validator: v => /^(h|l)h(h|r) lpr (f|l)f(f|r)$/.test(v.toLowerCase())\n },\n\n onScroll: Function,\n onScrollHeight: Function,\n onResize: Function\n },\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const rootRef = ref(null)\n\n // page related\n const height = ref($q.screen.height)\n const width = ref(props.container === true ? 0 : $q.screen.width)\n const scroll = ref({ position: 0, direction: 'down', inflectionPoint: 0 })\n\n // container only prop\n const containerHeight = ref(0)\n const scrollbarWidth = ref(isRuntimeSsrPreHydration.value === true ? 0 : getScrollbarWidth())\n\n const classes = computed(() =>\n 'q-layout q-layout--'\n + (props.container === true ? 'containerized' : 'standard')\n )\n\n const style = computed(() => (\n props.container === false\n ? { minHeight: $q.screen.height + 'px' }\n : null\n ))\n\n // used by container only\n const targetStyle = computed(() => (\n scrollbarWidth.value !== 0\n ? { [ $q.lang.rtl === true ? 'left' : 'right' ]: `${ scrollbarWidth.value }px` }\n : null\n ))\n\n const targetChildStyle = computed(() => (\n scrollbarWidth.value !== 0\n ? {\n [ $q.lang.rtl === true ? 'right' : 'left' ]: 0,\n [ $q.lang.rtl === true ? 'left' : 'right' ]: `-${ scrollbarWidth.value }px`,\n width: `calc(100% + ${ scrollbarWidth.value }px)`\n }\n : null\n ))\n\n function onPageScroll (data) {\n if (props.container === true || document.qScrollPrevented !== true) {\n const info = {\n position: data.position.top,\n direction: data.direction,\n directionChanged: data.directionChanged,\n inflectionPoint: data.inflectionPoint.top,\n delta: data.delta.top\n }\n\n scroll.value = info\n props.onScroll !== void 0 && emit('scroll', info)\n }\n }\n\n function onPageResize (data) {\n const { height: newHeight, width: newWidth } = data\n let resized = false\n\n if (height.value !== newHeight) {\n resized = true\n height.value = newHeight\n props.onScrollHeight !== void 0 && emit('scrollHeight', newHeight)\n updateScrollbarWidth()\n }\n if (width.value !== newWidth) {\n resized = true\n width.value = newWidth\n }\n\n if (resized === true && props.onResize !== void 0) {\n emit('resize', data)\n }\n }\n\n function onContainerResize ({ height }) {\n if (containerHeight.value !== height) {\n containerHeight.value = height\n updateScrollbarWidth()\n }\n }\n\n function updateScrollbarWidth () {\n if (props.container === true) {\n const width = height.value > containerHeight.value\n ? getScrollbarWidth()\n : 0\n\n if (scrollbarWidth.value !== width) {\n scrollbarWidth.value = width\n }\n }\n }\n\n let animateTimer = null\n\n const $layout = {\n instances: {},\n view: computed(() => props.view),\n isContainer: computed(() => props.container),\n\n rootRef,\n\n height,\n containerHeight,\n scrollbarWidth,\n totalWidth: computed(() => width.value + scrollbarWidth.value),\n\n rows: computed(() => {\n const rows = props.view.toLowerCase().split(' ')\n return {\n top: rows[ 0 ].split(''),\n middle: rows[ 1 ].split(''),\n bottom: rows[ 2 ].split('')\n }\n }),\n\n header: reactive({ size: 0, offset: 0, space: false }),\n right: reactive({ size: 300, offset: 0, space: false }),\n footer: reactive({ size: 0, offset: 0, space: false }),\n left: reactive({ size: 300, offset: 0, space: false }),\n\n scroll,\n\n animate () {\n if (animateTimer !== null) {\n clearTimeout(animateTimer)\n }\n else {\n document.body.classList.add('q-body--layout-animate')\n }\n\n animateTimer = setTimeout(() => {\n animateTimer = null\n document.body.classList.remove('q-body--layout-animate')\n }, 155)\n },\n\n update (part, prop, val) {\n $layout[ part ][ prop ] = val\n }\n }\n\n provide(layoutKey, $layout)\n\n // prevent scrollbar flicker while resizing window height\n // if no page scrollbar is already present\n if (__QUASAR_SSR_SERVER__ !== true && getScrollbarWidth() > 0) {\n let timer = null\n const el = document.body\n\n function restoreScrollbar () {\n timer = null\n el.classList.remove('hide-scrollbar')\n }\n\n function hideScrollbar () {\n if (timer === null) {\n // if it has no scrollbar then there's nothing to do\n\n if (el.scrollHeight > $q.screen.height) {\n return\n }\n\n el.classList.add('hide-scrollbar')\n }\n else {\n clearTimeout(timer)\n }\n\n timer = setTimeout(restoreScrollbar, 300)\n }\n\n function updateScrollEvent (action) {\n if (timer !== null && action === 'remove') {\n clearTimeout(timer)\n restoreScrollbar()\n }\n\n window[ `${ action }EventListener` ]('resize', hideScrollbar)\n }\n\n watch(\n () => (props.container !== true ? 'add' : 'remove'),\n updateScrollEvent\n )\n\n props.container !== true && updateScrollEvent('add')\n\n onUnmounted(() => {\n updateScrollEvent('remove')\n })\n }\n\n return () => {\n const content = hMergeSlot(slots.default, [\n h(QScrollObserver, { onScroll: onPageScroll }),\n h(QResizeObserver, { onResize: onPageResize })\n ])\n\n const layout = h('div', {\n class: classes.value,\n style: style.value,\n ref: props.container === true ? void 0 : rootRef,\n tabindex: -1\n }, content)\n\n if (props.container === true) {\n return h('div', {\n class: 'q-layout-container overflow-hidden',\n ref: rootRef\n }, [\n h(QResizeObserver, { onResize: onContainerResize }),\n h('div', {\n class: 'absolute-full',\n style: targetStyle.value\n }, [\n h('div', {\n class: 'scroll',\n style: targetChildStyle.value\n }, [ layout ])\n ])\n ])\n }\n\n return layout\n }\n }\n})\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\n\nconst defaultSizes = {\n xs: 2,\n sm: 4,\n md: 6,\n lg: 10,\n xl: 14\n}\n\nfunction width (val, reverse, $q) {\n return {\n transform: reverse === true\n ? `translateX(${ $q.lang.rtl === true ? '-' : '' }100%) scale3d(${ -val },1,1)`\n : `scale3d(${ val },1,1)`\n }\n}\n\nexport default createComponent({\n name: 'QLinearProgress',\n\n props: {\n ...useDarkProps,\n ...useSizeProps,\n\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 animationSpeed: {\n type: [ String, Number ],\n default: 2100\n },\n\n instantFeedback: Boolean\n },\n\n setup (props, { slots }) {\n const { proxy } = getCurrentInstance()\n const isDark = useDark(props, proxy.$q)\n const sizeStyle = useSize(props, defaultSizes)\n\n const motion = computed(() => props.indeterminate === true || props.query === true)\n const widthReverse = computed(() => props.reverse !== props.query)\n const style = computed(() => ({\n ...(sizeStyle.value !== null ? sizeStyle.value : {}),\n '--q-linear-progress-speed': `${ props.animationSpeed }ms`\n }))\n\n const classes = computed(() =>\n 'q-linear-progress'\n + (props.color !== void 0 ? ` text-${ props.color }` : '')\n + (props.reverse === true || props.query === true ? ' q-linear-progress--reverse' : '')\n + (props.rounded === true ? ' rounded-borders' : '')\n )\n\n const trackStyle = computed(() => width(props.buffer !== void 0 ? props.buffer : 1, widthReverse.value, proxy.$q))\n const transitionSuffix = computed(() => `with${ props.instantFeedback === true ? 'out' : '' }-transition`)\n\n const trackClass = computed(() =>\n 'q-linear-progress__track absolute-full'\n + ` q-linear-progress__track--${ transitionSuffix.value }`\n + ` q-linear-progress__track--${ isDark.value === true ? 'dark' : 'light' }`\n + (props.trackColor !== void 0 ? ` bg-${ props.trackColor }` : '')\n )\n\n const modelStyle = computed(() => width(motion.value === true ? 1 : props.value, widthReverse.value, proxy.$q))\n const modelClass = computed(() =>\n 'q-linear-progress__model absolute-full'\n + ` q-linear-progress__model--${ transitionSuffix.value }`\n + ` q-linear-progress__model--${ motion.value === true ? 'in' : '' }determinate`\n )\n\n const stripeStyle = computed(() => ({ width: `${ props.value * 100 }%` }))\n const stripeClass = computed(() =>\n `q-linear-progress__stripe absolute-${ props.reverse === true ? 'right' : 'left' }`\n + ` q-linear-progress__stripe--${ transitionSuffix.value }`\n )\n\n return () => {\n const child = [\n h('div', {\n class: trackClass.value,\n style: trackStyle.value\n }),\n\n h('div', {\n class: modelClass.value,\n style: modelStyle.value\n })\n ]\n\n props.stripe === true && motion.value === false && child.push(\n h('div', {\n class: stripeClass.value,\n style: stripeStyle.value\n })\n )\n\n return h('div', {\n class: classes.value,\n style: style.value,\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 1,\n 'aria-valuenow': props.indeterminate === true\n ? void 0\n : props.value\n }, hMergeSlot(slots.default, child))\n }\n }\n})\n","import { h, ref, computed, watch, Transition, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useAnchor, { useAnchorProps } from '../../composables/private/use-anchor.js'\nimport useScrollTarget from '../../composables/private/use-scroll-target.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport usePortal from '../../composables/private/use-portal.js'\nimport useTransition, { useTransitionProps } from '../../composables/private/use-transition.js'\nimport useTick from '../../composables/private/use-tick.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { closePortalMenus } from '../../utils/private/portal.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { position, stopAndPrevent } from '../../utils/event.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { addEscapeKey, removeEscapeKey } from '../../utils/private/escape-key.js'\nimport { addFocusout, removeFocusout } from '../../utils/private/focusout.js'\nimport { childHasFocus } from '../../utils/dom.js'\nimport { addClickOutside, removeClickOutside } from '../../utils/private/click-outside.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\n\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/private/position-engine.js'\n\nexport default createComponent({\n name: 'QMenu',\n\n inheritAttrs: false,\n\n props: {\n ...useAnchorProps,\n ...useModelToggleProps,\n ...useDarkProps,\n ...useTransitionProps,\n\n persistent: Boolean,\n autoClose: Boolean,\n separateClosePopup: Boolean,\n\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n\n fit: Boolean,\n cover: Boolean,\n\n square: Boolean,\n\n anchor: {\n type: String,\n validator: validatePosition\n },\n self: {\n type: String,\n validator: validatePosition\n },\n offset: {\n type: Array,\n validator: validateOffset\n },\n\n scrollTarget: {\n default: void 0\n },\n\n touchPosition: Boolean,\n\n maxHeight: {\n type: String,\n default: null\n },\n maxWidth: {\n type: String,\n default: null\n }\n },\n\n emits: [\n ...useModelToggleEmits,\n 'click', 'escapeKey'\n ],\n\n setup (props, { slots, emit, attrs }) {\n let refocusTarget = null, absoluteOffset, unwatchPosition, avoidAutoClose\n\n const vm = getCurrentInstance()\n const { proxy } = vm\n const { $q } = proxy\n\n const innerRef = ref(null)\n const showing = ref(false)\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && props.noRouteDismiss !== true\n )\n\n const isDark = useDark(props, $q)\n const { registerTick, removeTick } = useTick()\n const { registerTimeout } = useTimeout()\n const { transitionProps, transitionStyle } = useTransition(props)\n const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget)\n\n const { anchorEl, canShow } = useAnchor({ showing })\n\n const { hide } = useModelToggle({\n showing, canShow, handleShow, handleHide,\n hideOnRouteChange,\n processOnMount: true\n })\n\n const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent, 'menu')\n\n const clickOutsideProps = {\n anchorEl,\n innerRef,\n onClickOutside (e) {\n if (props.persistent !== true && showing.value === true) {\n hide(e)\n\n if (\n // always prevent touch event\n e.type === 'touchstart'\n // prevent click if it's on a dialog backdrop\n || e.target.classList.contains('q-dialog__backdrop')\n ) {\n stopAndPrevent(e)\n }\n\n return true\n }\n }\n }\n\n const anchorOrigin = computed(() =>\n parsePosition(\n props.anchor || (\n props.cover === true ? 'center middle' : 'bottom start'\n ),\n $q.lang.rtl\n )\n )\n\n const selfOrigin = computed(() => (\n props.cover === true\n ? anchorOrigin.value\n : parsePosition(props.self || 'top start', $q.lang.rtl)\n ))\n\n const menuClass = computed(() =>\n (props.square === true ? ' q-menu--square' : '')\n + (isDark.value === true ? ' q-menu--dark q-dark' : '')\n )\n\n const onEvents = computed(() => (\n props.autoClose === true\n ? { onClick: onAutoClose }\n : {}\n ))\n\n const handlesFocus = computed(() =>\n showing.value === true && props.persistent !== true\n )\n\n watch(handlesFocus, val => {\n if (val === true) {\n addEscapeKey(onEscapeKey)\n addClickOutside(clickOutsideProps)\n }\n else {\n removeEscapeKey(onEscapeKey)\n removeClickOutside(clickOutsideProps)\n }\n })\n\n function focus () {\n addFocusFn(() => {\n let node = innerRef.value\n\n if (node && node.contains(document.activeElement) !== true) {\n node = node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')\n || node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')\n || node.querySelector('[autofocus], [data-autofocus]')\n || node\n node.focus({ preventScroll: true })\n }\n })\n }\n\n function handleShow (evt) {\n refocusTarget = props.noRefocus === false\n ? document.activeElement\n : null\n\n addFocusout(onFocusout)\n\n showPortal()\n configureScrollTarget()\n\n absoluteOffset = void 0\n\n if (evt !== void 0 && (props.touchPosition || props.contextMenu)) {\n const pos = position(evt)\n\n if (pos.left !== void 0) {\n const { top, left } = anchorEl.value.getBoundingClientRect()\n absoluteOffset = { left: pos.left - left, top: pos.top - top }\n }\n }\n\n if (unwatchPosition === void 0) {\n unwatchPosition = watch(\n () => $q.screen.width + '|' + $q.screen.height + '|' + props.self + '|' + props.anchor + '|' + $q.lang.rtl,\n updatePosition\n )\n }\n\n if (props.noFocus !== true) {\n document.activeElement.blur()\n }\n\n // should removeTick() if this gets removed\n registerTick(() => {\n updatePosition()\n props.noFocus !== true && focus()\n })\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n // required in order to avoid the \"double-tap needed\" issue\n if ($q.platform.is.ios === true) {\n // if auto-close, then this click should\n // not close the menu\n avoidAutoClose = props.autoClose\n innerRef.value.click()\n }\n\n updatePosition()\n showPortal(true) // done showing portal\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTick()\n hidePortal()\n\n anchorCleanup(true)\n\n if (\n refocusTarget !== null\n && (\n // menu was hidden from code or ESC plugin\n evt === void 0\n // menu was not closed from a mouse or touch clickOutside\n || evt.qClickOutside !== true\n )\n ) {\n ((evt && evt.type.indexOf('key') === 0\n ? refocusTarget.closest('[tabindex]:not([tabindex^=\"-\"])')\n : void 0\n ) || refocusTarget).focus()\n refocusTarget = null\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n hidePortal(true) // done hiding, now destroy\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function anchorCleanup (hiding) {\n absoluteOffset = void 0\n\n if (unwatchPosition !== void 0) {\n unwatchPosition()\n unwatchPosition = void 0\n }\n\n if (hiding === true || showing.value === true) {\n removeFocusout(onFocusout)\n unconfigureScrollTarget()\n removeClickOutside(clickOutsideProps)\n removeEscapeKey(onEscapeKey)\n }\n\n if (hiding !== true) {\n refocusTarget = null\n }\n }\n\n function configureScrollTarget () {\n if (anchorEl.value !== null || props.scrollTarget !== void 0) {\n localScrollTarget.value = getScrollTarget(anchorEl.value, props.scrollTarget)\n changeScrollEvent(localScrollTarget.value, updatePosition)\n }\n }\n\n function onAutoClose (e) {\n // if auto-close, then the ios double-tap fix which\n // issues a click should not close the menu\n if (avoidAutoClose !== true) {\n closePortalMenus(proxy, e)\n emit('click', e)\n }\n else {\n avoidAutoClose = false\n }\n }\n\n function onFocusout (evt) {\n // the focus is not in a vue child component\n if (\n handlesFocus.value === true\n && props.noFocus !== true\n && childHasFocus(innerRef.value, evt.target) !== true\n ) {\n focus()\n }\n }\n\n function onEscapeKey (evt) {\n emit('escapeKey')\n hide(evt)\n }\n\n function updatePosition () {\n const el = innerRef.value\n\n if (el === null || anchorEl.value === null) {\n return\n }\n\n setPosition({\n el,\n offset: props.offset,\n anchorEl: anchorEl.value,\n anchorOrigin: anchorOrigin.value,\n selfOrigin: selfOrigin.value,\n absoluteOffset,\n fit: props.fit,\n cover: props.cover,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth\n })\n }\n\n function renderPortalContent () {\n return h(\n Transition,\n transitionProps.value,\n () => (\n showing.value === true\n ? h('div', {\n role: 'menu',\n ...attrs,\n ref: innerRef,\n tabindex: -1,\n class: [\n 'q-menu q-position-engine scroll' + menuClass.value,\n attrs.class\n ],\n style: [\n attrs.style,\n transitionStyle.value\n ],\n ...onEvents.value\n }, hSlot(slots.default))\n : null\n )\n )\n }\n\n onBeforeUnmount(anchorCleanup)\n\n // expose public methods\n Object.assign(proxy, { focus, updatePosition })\n\n return renderPortal\n }\n})\n","import { h, computed, inject, getCurrentInstance } from 'vue'\n\nimport { hSlot } from '../../utils/private/render.js'\nimport { layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'\n\nexport const usePageStickyProps = {\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\nexport default function () {\n const { props, proxy: { $q } } = getCurrentInstance()\n\n const $layout = inject(layoutKey, emptyRenderFn)\n if ($layout === emptyRenderFn) {\n console.error('QPageSticky needs to be child of QLayout')\n return emptyRenderFn\n }\n\n const attach = computed(() => {\n const pos = props.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 const top = computed(() => $layout.header.offset)\n const right = computed(() => $layout.right.offset)\n const bottom = computed(() => $layout.footer.offset)\n const left = computed(() => $layout.left.offset)\n\n const style = computed(() => {\n let posX = 0, posY = 0\n\n const side = attach.value\n const dir = $q.lang.rtl === true ? -1 : 1\n\n if (side.top === true && top.value !== 0) {\n posY = `${ top.value }px`\n }\n else if (side.bottom === true && bottom.value !== 0) {\n posY = `${ -bottom.value }px`\n }\n\n if (side.left === true && left.value !== 0) {\n posX = `${ dir * left.value }px`\n }\n else if (side.right === true && right.value !== 0) {\n posX = `${ -dir * right.value }px`\n }\n\n const css = { transform: `translate(${ posX }, ${ posY })` }\n\n if (props.offset) {\n css.margin = `${ props.offset[ 1 ] }px ${ props.offset[ 0 ] }px`\n }\n\n if (side.vertical === true) {\n if (left.value !== 0) {\n css[ $q.lang.rtl === true ? 'right' : 'left' ] = `${ left.value }px`\n }\n if (right.value !== 0) {\n css[ $q.lang.rtl === true ? 'left' : 'right' ] = `${ right.value }px`\n }\n }\n else if (side.horizontal === true) {\n if (top.value !== 0) {\n css.top = `${ top.value }px`\n }\n if (bottom.value !== 0) {\n css.bottom = `${ bottom.value }px`\n }\n }\n\n return css\n })\n\n const classes = computed(() =>\n `q-page-sticky row flex-center fixed-${ props.position }`\n + ` q-page-sticky--${ props.expand === true ? 'expand' : 'shrink' }`\n )\n\n function getStickyContent (slots) {\n const content = hSlot(slots.default)\n\n return h('div', {\n class: classes.value,\n style: style.value\n },\n props.expand === true\n ? content\n : [ h('div', content) ]\n )\n }\n\n return {\n $layout,\n getStickyContent\n }\n}\n","import { createComponent } from '../../utils/private/create.js'\nimport usePageSticky, { usePageStickyProps } from './use-page-sticky'\n\nexport default createComponent({\n name: 'QPageSticky',\n\n props: usePageStickyProps,\n\n setup (_, { slots }) {\n const { getStickyContent } = usePageSticky()\n return () => getStickyContent(slots)\n }\n})\n","import { h, computed, provide, inject, getCurrentInstance } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { pageContainerKey, layoutKey, emptyRenderFn } from '../../utils/private/symbols.js'\n\nexport default createComponent({\n name: 'QPageContainer',\n\n setup (_, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const $layout = inject(layoutKey, emptyRenderFn)\n if ($layout === emptyRenderFn) {\n console.error('QPageContainer needs to be child of QLayout')\n return emptyRenderFn\n }\n\n provide(pageContainerKey, true)\n\n const style = computed(() => {\n const css = {}\n\n if ($layout.header.space === true) {\n css.paddingTop = `${ $layout.header.size }px`\n }\n if ($layout.right.space === true) {\n css[ `padding${ $q.lang.rtl === true ? 'Left' : 'Right' }` ] = `${ $layout.right.size }px`\n }\n if ($layout.footer.space === true) {\n css.paddingBottom = `${ $layout.footer.size }px`\n }\n if ($layout.left.space === true) {\n css[ `padding${ $q.lang.rtl === true ? 'Right' : 'Left' }` ] = `${ $layout.left.size }px`\n }\n\n return css\n })\n\n return () => h('div', {\n class: 'q-page-container',\n style: style.value\n }, hSlot(slots.default))\n }\n})\n","// adapted from https://stackoverflow.com/a/40294058\n\nexport default function cloneDeep (data, hash = new WeakMap()) {\n if (Object(data) !== data) return data\n if (hash.has(data)) return hash.get(data)\n\n const result = data instanceof Date\n ? new Date(data)\n : (data instanceof RegExp\n ? new RegExp(data.source, data.flags)\n : (data instanceof Set\n ? new Set()\n : (data instanceof Map\n ? new Map()\n : (typeof data.constructor !== 'function'\n ? Object.create(null)\n : (data.prototype !== void 0 && typeof data.prototype.constructor === 'function'\n ? data\n : new data.constructor()\n )\n )\n )\n )\n )\n\n if (typeof data.constructor === 'function' && typeof data.valueOf === 'function') {\n const val = data.valueOf()\n\n if (Object(val) !== val) {\n const result = new data.constructor(val)\n\n hash.set(data, result)\n\n return result\n }\n }\n\n hash.set(data, result)\n\n if (data instanceof Set) {\n data.forEach(val => {\n result.add(cloneDeep(val, hash))\n })\n }\n else if (data instanceof Map) {\n data.forEach((val, key) => {\n result.set(key, cloneDeep(val, hash))\n })\n }\n\n return Object.assign(\n result,\n ...Object.keys(data).map(key => ({ [ key ]: cloneDeep(data[ key ], hash) }))\n )\n}\n","import { h, ref, computed, nextTick, getCurrentInstance } from 'vue'\n\nimport QMenu from '../menu/QMenu.js'\nimport QBtn from '../btn/QBtn.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport clone from '../../utils/clone.js'\nimport { isDeepEqual } from '../../utils/is.js'\nimport { injectProp } from '../../utils/private/inject-obj-prop.js'\n\nexport default createComponent({\n name: 'QPopupEdit',\n\n props: {\n modelValue: {\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 /* end of menu props */\n\n disable: Boolean\n },\n\n emits: [\n 'update:modelValue', 'save', 'cancel',\n 'beforeShow', 'show', 'beforeHide', 'hide'\n ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const menuRef = ref(null)\n\n const initialValue = ref('')\n const currentModel = ref('')\n\n let validated = false\n\n const scope = computed(() => {\n return injectProp({\n initialValue: initialValue.value,\n validate: props.validate,\n set,\n cancel,\n updatePosition\n }, 'value', () => currentModel.value, val => { currentModel.value = val })\n })\n\n function set () {\n if (props.validate(currentModel.value) === false) {\n return\n }\n\n if (hasModelChanged() === true) {\n emit('save', currentModel.value, initialValue.value)\n emit('update:modelValue', currentModel.value)\n }\n\n closeMenu()\n }\n\n function cancel () {\n if (hasModelChanged() === true) {\n emit('cancel', currentModel.value, initialValue.value)\n }\n\n closeMenu()\n }\n\n function updatePosition () {\n nextTick(() => {\n menuRef.value.updatePosition()\n })\n }\n\n function hasModelChanged () {\n return isDeepEqual(currentModel.value, initialValue.value) === false\n }\n\n function closeMenu () {\n validated = true\n menuRef.value.hide()\n }\n\n function onBeforeShow () {\n validated = false\n initialValue.value = clone(props.modelValue)\n currentModel.value = clone(props.modelValue)\n emit('beforeShow')\n }\n\n function onShow () {\n emit('show')\n }\n\n function onBeforeHide () {\n if (validated === false && hasModelChanged() === true) {\n if (props.autoSave === true && props.validate(currentModel.value) === true) {\n emit('save', currentModel.value, initialValue.value)\n emit('update:modelValue', currentModel.value)\n }\n else {\n emit('cancel', currentModel.value, initialValue.value)\n }\n }\n\n emit('beforeHide')\n }\n\n function onHide () {\n emit('hide')\n }\n\n function getContent () {\n const child = slots.default !== void 0\n ? [].concat(slots.default(scope.value))\n : []\n\n props.title && child.unshift(\n h('div', { class: 'q-dialog__title q-mt-sm q-mb-sm' }, props.title)\n )\n\n props.buttons === true && child.push(\n h('div', { class: 'q-popup-edit__buttons row justify-center no-wrap' }, [\n h(QBtn, {\n flat: true,\n color: props.color,\n label: props.labelCancel || $q.lang.label.cancel,\n onClick: cancel\n }),\n h(QBtn, {\n flat: true,\n color: props.color,\n label: props.labelSet || $q.lang.label.set,\n onClick: set\n })\n ])\n )\n\n return child\n }\n\n // expose public methods\n Object.assign(proxy, {\n set,\n cancel,\n show (e) { menuRef.value !== null && menuRef.value.show(e) },\n hide (e) { menuRef.value !== null && menuRef.value.hide(e) },\n updatePosition\n })\n\n return () => {\n if (props.disable === true) { return }\n\n return h(QMenu, {\n ref: menuRef,\n class: 'q-popup-edit',\n cover: props.cover,\n onBeforeShow,\n onShow,\n onBeforeHide,\n onHide,\n onEscapeKey: cancel\n }, getContent)\n }\n }\n})\n","import { h, ref, computed, watch, getCurrentInstance } from 'vue'\n\nimport QDialog from '../dialog/QDialog.js'\nimport QMenu from '../menu/QMenu.js'\n\nimport useAnchor, { useAnchorProps } from '../../composables/private/use-anchor.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { injectProp } from '../../utils/private/inject-obj-prop.js'\n\nexport default createComponent({\n name: 'QPopupProxy',\n\n props: {\n ...useAnchorProps,\n\n breakpoint: {\n type: [ String, Number ],\n default: 450\n }\n },\n\n emits: [ 'show', 'hide' ],\n\n setup (props, { slots, emit, attrs }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const showing = ref(false)\n const popupRef = ref(null)\n const breakpoint = computed(() => parseInt(props.breakpoint, 10))\n\n const { canShow } = useAnchor({ showing })\n\n function getType () {\n return $q.screen.width < breakpoint.value || $q.screen.height < breakpoint.value\n ? 'dialog'\n : 'menu'\n }\n\n const type = ref(getType())\n\n const popupProps = computed(() => (\n type.value === 'menu' ? { maxHeight: '99vh' } : {})\n )\n\n watch(() => getType(), val => {\n if (showing.value !== true) {\n type.value = val\n }\n })\n\n function onShow (evt) {\n showing.value = true\n emit('show', evt)\n }\n\n function onHide (evt) {\n showing.value = false\n type.value = getType()\n emit('hide', evt)\n }\n\n // expose public methods\n Object.assign(proxy, {\n show (evt) { canShow(evt) === true && popupRef.value.show(evt) },\n hide (evt) { popupRef.value.hide(evt) },\n toggle (evt) { popupRef.value.toggle(evt) }\n })\n\n injectProp(proxy, 'currentComponent', () => ({\n type: type.value,\n ref: popupRef.value\n }))\n\n return () => {\n const data = {\n ref: popupRef,\n ...popupProps.value,\n ...attrs,\n onShow,\n onHide\n }\n\n let component\n\n if (type.value === 'dialog') {\n component = QDialog\n }\n else {\n component = QMenu\n Object.assign(data, {\n target: props.target,\n contextMenu: props.contextMenu,\n noParentEvent: true,\n separateClosePopup: true\n })\n }\n\n return h(component, data, slots.default)\n }\n }\n})\n","import { h, ref, computed, getCurrentInstance, toRaw } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\nimport useRefocusTarget from '../../composables/private/use-refocus-target.js'\nimport { useFormProps, useFormInject } from '../../composables/private/use-form.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport optionSizes from '../../utils/private/option-sizes.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { hSlot, hMergeSlot } from '../../utils/private/render.js'\n\nconst svg = h('svg', {\n key: 'svg',\n class: 'q-radio__bg absolute non-selectable',\n viewBox: '0 0 24 24'\n}, [\n h('path', {\n d: 'M12,22a10,10 0 0 1 -10,-10a10,10 0 0 1 10,-10a10,10 0 0 1 10,10a10,10 0 0 1 -10,10m0,-22a12,12 0 0 0 -12,12a12,12 0 0 0 12,12a12,12 0 0 0 12,-12a12,12 0 0 0 -12,-12'\n }),\n\n h('path', {\n class: 'q-radio__check',\n d: 'M12,6a6,6 0 0 0 -6,6a6,6 0 0 0 6,6a6,6 0 0 0 6,-6a6,6 0 0 0 -6,-6'\n })\n])\n\nexport default createComponent({\n name: 'QRadio',\n\n props: {\n ...useDarkProps,\n ...useSizeProps,\n ...useFormProps,\n\n modelValue: { required: true },\n val: { required: true },\n\n label: String,\n leftLabel: Boolean,\n\n checkedIcon: String,\n uncheckedIcon: String,\n\n color: String,\n keepColor: Boolean,\n dense: Boolean,\n\n disable: Boolean,\n tabindex: [ String, Number ]\n },\n\n emits: [ 'update:modelValue' ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n\n const isDark = useDark(props, proxy.$q)\n const sizeStyle = useSize(props, optionSizes)\n\n const rootRef = ref(null)\n const { refocusTargetEl, refocusTarget } = useRefocusTarget(props, rootRef)\n\n const isTrue = computed(() => toRaw(props.modelValue) === toRaw(props.val))\n\n const classes = computed(() =>\n 'q-radio cursor-pointer no-outline row inline no-wrap items-center'\n + (props.disable === true ? ' disabled' : '')\n + (isDark.value === true ? ' q-radio--dark' : '')\n + (props.dense === true ? ' q-radio--dense' : '')\n + (props.leftLabel === true ? ' reverse' : '')\n )\n\n const innerClass = computed(() => {\n const color = props.color !== void 0 && (\n props.keepColor === true\n || isTrue.value === true\n )\n ? ` text-${ props.color }`\n : ''\n\n return 'q-radio__inner relative-position '\n + `q-radio__inner--${ isTrue.value === true ? 'truthy' : 'falsy' }${ color }`\n })\n\n const icon = computed(() =>\n (isTrue.value === true\n ? props.checkedIcon\n : props.uncheckedIcon\n ) || null\n )\n\n const tabindex = computed(() => (\n props.disable === true ? -1 : props.tabindex || 0\n ))\n\n const formAttrs = computed(() => {\n const prop = { type: 'radio' }\n\n props.name !== void 0 && Object.assign(prop, {\n // see https://vuejs.org/guide/extras/render-function.html#creating-vnodes (.prop)\n '.checked': isTrue.value === true,\n '^checked': isTrue.value === true ? 'checked' : void 0,\n name: props.name,\n value: props.val\n })\n\n return prop\n })\n\n const injectFormInput = useFormInject(formAttrs)\n\n function onClick (e) {\n if (e !== void 0) {\n stopAndPrevent(e)\n refocusTarget(e)\n }\n\n if (props.disable !== true && isTrue.value !== true) {\n emit('update:modelValue', props.val, e)\n }\n }\n\n function onKeydown (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n stopAndPrevent(e)\n }\n }\n\n function onKeyup (e) {\n if (e.keyCode === 13 || e.keyCode === 32) {\n onClick(e)\n }\n }\n\n // expose public methods\n Object.assign(proxy, { set: onClick })\n\n return () => {\n const content = icon.value !== null\n ? [\n h('div', {\n key: 'icon',\n class: 'q-radio__icon-container absolute-full flex flex-center no-wrap'\n }, [\n h(QIcon, {\n class: 'q-radio__icon',\n name: icon.value\n })\n ])\n ]\n : [ svg ]\n\n props.disable !== true && injectFormInput(\n content,\n 'unshift',\n ' q-radio__native q-ma-none q-pa-none'\n )\n\n const child = [\n h('div', {\n class: innerClass.value,\n style: sizeStyle.value,\n 'aria-hidden': 'true'\n }, content)\n ]\n\n if (refocusTargetEl.value !== null) {\n child.push(refocusTargetEl.value)\n }\n\n const label = props.label !== void 0\n ? hMergeSlot(slots.default, [ props.label ])\n : hSlot(slots.default)\n\n label !== void 0 && child.push(\n h('div', {\n class: 'q-radio__label q-anchor--skip'\n }, label)\n )\n\n return h('div', {\n ref: rootRef,\n class: classes.value,\n tabindex: tabindex.value,\n role: 'radio',\n 'aria-label': props.label,\n 'aria-checked': isTrue.value === true ? 'true' : 'false',\n 'aria-disabled': props.disable === true ? 'true' : void 0,\n onClick,\n onKeydown,\n onKeyup\n }, child)\n }\n }\n})\n","import { h, ref, computed, onBeforeUpdate, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\nimport { useFormProps, useFormAttrs, useFormInject } from '../../composables/private/use-form.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport { between } from '../../utils/format.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QRating',\n\n props: {\n ...useSizeProps,\n ...useFormProps,\n\n modelValue: {\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 iconAriaLabel: [ 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 emits: [ 'update:modelValue' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const sizeStyle = useSize(props)\n const formAttrs = useFormAttrs(props)\n const injectFormInput = useFormInject(formAttrs)\n\n const mouseModel = ref(0)\n\n let iconRefs = {}\n\n const editable = computed(() =>\n props.readonly !== true && props.disable !== true\n )\n\n const classes = computed(() =>\n 'q-rating row inline items-center'\n + ` q-rating--${ editable.value === true ? '' : 'non-' }editable`\n + (props.noDimming === true ? ' q-rating--no-dimming' : '')\n + (props.disable === true ? ' disabled' : '')\n + (\n props.color !== void 0 && Array.isArray(props.color) === false\n ? ` text-${ props.color }`\n : ''\n )\n )\n\n const iconData = computed(() => {\n const\n iconLen = Array.isArray(props.icon) === true ? props.icon.length : 0,\n selIconLen = Array.isArray(props.iconSelected) === true ? props.iconSelected.length : 0,\n halfIconLen = Array.isArray(props.iconHalf) === true ? props.iconHalf.length : 0,\n colorLen = Array.isArray(props.color) === true ? props.color.length : 0,\n selColorLen = Array.isArray(props.colorSelected) === true ? props.colorSelected.length : 0,\n halfColorLen = Array.isArray(props.colorHalf) === true ? props.colorHalf.length : 0\n\n return {\n iconLen,\n icon: iconLen > 0 ? props.icon[ iconLen - 1 ] : props.icon,\n selIconLen,\n selIcon: selIconLen > 0 ? props.iconSelected[ selIconLen - 1 ] : props.iconSelected,\n halfIconLen,\n halfIcon: halfIconLen > 0 ? props.iconHalf[ selIconLen - 1 ] : props.iconHalf,\n colorLen,\n color: colorLen > 0 ? props.color[ colorLen - 1 ] : props.color,\n selColorLen,\n selColor: selColorLen > 0 ? props.colorSelected[ selColorLen - 1 ] : props.colorSelected,\n halfColorLen,\n halfColor: halfColorLen > 0 ? props.colorHalf[ halfColorLen - 1 ] : props.colorHalf\n }\n })\n\n const iconLabel = computed(() => {\n if (typeof props.iconAriaLabel === 'string') {\n const label = props.iconAriaLabel.length !== 0 ? `${ props.iconAriaLabel } ` : ''\n return i => `${ label }${ i }`\n }\n\n if (Array.isArray(props.iconAriaLabel) === true) {\n const iMax = props.iconAriaLabel.length\n\n if (iMax > 0) {\n return i => props.iconAriaLabel[ Math.min(i, iMax) - 1 ]\n }\n }\n\n return (i, label) => `${ label } ${ i }`\n })\n\n const stars = computed(() => {\n const\n acc = [],\n icons = iconData.value,\n ceil = Math.ceil(props.modelValue),\n tabindex = editable.value === true ? 0 : null\n\n const halfIndex = props.iconHalf === void 0 || ceil === props.modelValue\n ? -1\n : ceil\n\n for (let i = 1; i <= props.max; i++) {\n const\n active = (mouseModel.value === 0 && props.modelValue >= i) || (mouseModel.value > 0 && mouseModel.value >= i),\n half = halfIndex === i && mouseModel.value < i,\n exSelected = mouseModel.value > 0 && (half === true ? ceil : props.modelValue) >= i && mouseModel.value < i,\n color = half === true\n ? (i <= icons.halfColorLen ? props.colorHalf[ i - 1 ] : icons.halfColor)\n : (\n icons.selColor !== void 0 && active === true\n ? (i <= icons.selColorLen ? props.colorSelected[ i - 1 ] : icons.selColor)\n : (i <= icons.colorLen ? props.color[ i - 1 ] : icons.color)\n ),\n name = (\n half === true\n ? (i <= icons.halfIconLen ? props.iconHalf[ i - 1 ] : icons.halfIcon)\n : (\n icons.selIcon !== void 0 && (active === true || exSelected === true)\n ? (i <= icons.selIconLen ? props.iconSelected[ i - 1 ] : icons.selIcon)\n : (i <= icons.iconLen ? props.icon[ i - 1 ] : icons.icon)\n )\n ) || $q.iconSet.rating.icon\n\n acc.push({\n name: (\n half === true\n ? (i <= icons.halfIconLen ? props.iconHalf[ i - 1 ] : icons.halfIcon)\n : (\n icons.selIcon !== void 0 && (active === true || exSelected === true)\n ? (i <= icons.selIconLen ? props.iconSelected[ i - 1 ] : icons.selIcon)\n : (i <= icons.iconLen ? props.icon[ i - 1 ] : icons.icon)\n )\n ) || $q.iconSet.rating.icon,\n\n attrs: {\n tabindex,\n role: 'radio',\n 'aria-checked': props.modelValue === i ? 'true' : 'false',\n 'aria-label': iconLabel.value(i, name)\n },\n\n iconClass: 'q-rating__icon'\n + (active === true || half === true ? ' q-rating__icon--active' : '')\n + (exSelected === true ? ' q-rating__icon--exselected' : '')\n + (mouseModel.value === i ? ' q-rating__icon--hovered' : '')\n + (color !== void 0 ? ` text-${ color }` : '')\n })\n }\n\n return acc\n })\n\n const attributes = computed(() => {\n const attrs = { role: 'radiogroup' }\n\n if (props.disable === true) {\n attrs[ 'aria-disabled' ] = 'true'\n }\n if (props.readonly === true) {\n attrs[ 'aria-readonly' ] = 'true'\n }\n\n return attrs\n })\n\n function set (value) {\n if (editable.value === true) {\n const\n model = between(parseInt(value, 10), 1, parseInt(props.max, 10)),\n newVal = props.noReset !== true && props.modelValue === model ? 0 : model\n\n newVal !== props.modelValue && emit('update:modelValue', newVal)\n mouseModel.value = 0\n }\n }\n\n function setHoverValue (value) {\n if (editable.value === true) {\n mouseModel.value = value\n }\n }\n\n function onKeyup (e, i) {\n switch (e.keyCode) {\n case 13:\n case 32:\n set(i)\n return stopAndPrevent(e)\n case 37: // LEFT ARROW\n case 40: // DOWN ARROW\n if (iconRefs[ `rt${ i - 1 }` ]) {\n iconRefs[ `rt${ i - 1 }` ].focus()\n }\n return stopAndPrevent(e)\n case 39: // RIGHT ARROW\n case 38: // UP ARROW\n if (iconRefs[ `rt${ i + 1 }` ]) {\n iconRefs[ `rt${ i + 1 }` ].focus()\n }\n return stopAndPrevent(e)\n }\n }\n\n function resetMouseModel () {\n mouseModel.value = 0\n }\n\n onBeforeUpdate(() => {\n iconRefs = {}\n })\n\n return () => {\n const child = []\n\n stars.value.forEach(({ iconClass, name, attrs }, index) => {\n const i = index + 1\n\n child.push(\n h('div', {\n key: i,\n ref: el => { iconRefs[ `rt${ i }` ] = el },\n class: 'q-rating__icon-container flex flex-center',\n ...attrs,\n onClick () { set(i) },\n onMouseover () { setHoverValue(i) },\n onMouseout: resetMouseModel,\n onFocus () { setHoverValue(i) },\n onBlur: resetMouseModel,\n onKeyup (e) { onKeyup(e, i) }\n }, hMergeSlot(\n slots[ `tip-${ i }` ],\n [ h(QIcon, { class: iconClass, name }) ]\n ))\n )\n })\n\n if (props.name !== void 0 && props.disable !== true) {\n injectFormInput(child, 'push')\n }\n\n return h('div', {\n class: classes.value,\n style: sizeStyle.value,\n ...attributes.value\n }, child)\n }\n }\n})\n","import { ref, onMounted } from 'vue'\n\n// using it to manage SSR rendering with best performance\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nexport default function () {\n const canRender = ref(!isRuntimeSsrPreHydration.value)\n\n if (canRender.value === false) {\n onMounted(() => {\n canRender.value = true\n })\n }\n\n return canRender\n}\n","import { h, onMounted, onBeforeUnmount, getCurrentInstance, nextTick } from 'vue'\n\nimport useCanRender from '../../composables/private/use-can-render.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { listenOpts, noop } from '../../utils/event.js'\n\nconst hasObserver = typeof ResizeObserver !== 'undefined'\nconst resizeProps = hasObserver === true\n ? {}\n : {\n style: 'display:block;position:absolute;top:0;left:0;right:0;bottom:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1;',\n url: 'about:blank'\n }\n\nexport default createComponent({\n name: 'QResizeObserver',\n\n props: {\n debounce: {\n type: [ String, Number ],\n default: 100\n }\n },\n\n emits: [ 'resize' ],\n\n setup (props, { emit }) {\n if (__QUASAR_SSR_SERVER__) { return noop }\n\n let timer = null, targetEl, size = { width: -1, height: -1 }\n\n function trigger (immediately) {\n if (immediately === true || props.debounce === 0 || props.debounce === '0') {\n emitEvent()\n }\n else if (timer === null) {\n timer = setTimeout(emitEvent, props.debounce)\n }\n }\n\n function emitEvent () {\n if (timer !== null) {\n clearTimeout(timer)\n timer = null\n }\n\n if (targetEl) {\n const { offsetWidth: width, offsetHeight: height } = targetEl\n\n if (width !== size.width || height !== size.height) {\n size = { width, height }\n emit('resize', size)\n }\n }\n }\n\n const { proxy } = getCurrentInstance()\n\n if (hasObserver === true) {\n let observer\n\n // initialize as soon as possible\n const init = stop => {\n targetEl = proxy.$el.parentNode\n\n if (targetEl) {\n observer = new ResizeObserver(trigger)\n observer.observe(targetEl)\n emitEvent()\n }\n else if (stop !== true) {\n nextTick(() => { init(true) })\n }\n }\n\n onMounted(() => { init() })\n\n onBeforeUnmount(() => {\n timer !== null && clearTimeout(timer)\n\n if (observer !== void 0) {\n if (observer.disconnect !== void 0) {\n observer.disconnect()\n }\n else if (targetEl) { // FF for Android\n observer.unobserve(targetEl)\n }\n }\n })\n\n return noop\n }\n else { // no observer, so fallback to old iframe method\n const canRender = useCanRender()\n\n let curDocView\n\n function cleanup () {\n if (timer !== null) {\n clearTimeout(timer)\n timer = null\n }\n\n if (curDocView !== void 0) {\n // iOS is fuzzy, need to check it first\n if (curDocView.removeEventListener !== void 0) {\n curDocView.removeEventListener('resize', trigger, listenOpts.passive)\n }\n curDocView = void 0\n }\n }\n\n function onObjLoad () {\n cleanup()\n\n if (targetEl && targetEl.contentDocument) {\n curDocView = targetEl.contentDocument.defaultView\n curDocView.addEventListener('resize', trigger, listenOpts.passive)\n emitEvent()\n }\n }\n\n onMounted(() => {\n nextTick(() => {\n targetEl = proxy.$el\n targetEl && onObjLoad()\n })\n })\n\n onBeforeUnmount(cleanup)\n\n // expose public method\n proxy.trigger = trigger\n\n return () => {\n if (canRender.value === true) {\n return h('object', {\n style: resizeProps.style,\n tabindex: -1, // fix for Firefox\n type: 'text/html',\n data: resizeProps.url,\n 'aria-hidden': 'true',\n onLoad: onObjLoad\n })\n }\n }\n }\n }\n})\n","import { h, ref, computed, watch, withDirectives, onActivated, onDeactivated, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\nimport QScrollObserver from '../scroll-observer/QScrollObserver.js'\n\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { between } from '../../utils/format.js'\nimport { setVerticalScrollPosition, setHorizontalScrollPosition } from '../../utils/scroll.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport debounce from '../../utils/debounce.js'\n\nconst axisList = [ 'vertical', 'horizontal' ]\nconst dirProps = {\n vertical: { offset: 'offsetY', scroll: 'scrollTop', dir: 'down', dist: 'y' },\n horizontal: { offset: 'offsetX', scroll: 'scrollLeft', dir: 'right', dist: 'x' }\n}\nconst panOpts = {\n prevent: true,\n mouse: true,\n mouseAllDir: true\n}\n\nconst getMinThumbSize = size => (size >= 250 ? 50 : Math.ceil(size / 5))\n\nexport default createComponent({\n name: 'QScrollArea',\n\n props: {\n ...useDarkProps,\n\n thumbStyle: Object,\n verticalThumbStyle: Object,\n horizontalThumbStyle: Object,\n\n barStyle: [ Array, String, Object ],\n verticalBarStyle: [ Array, String, Object ],\n horizontalBarStyle: [ Array, String, Object ],\n\n contentStyle: [ Array, String, Object ],\n contentActiveStyle: [ Array, String, Object ],\n\n delay: {\n type: [ String, Number ],\n default: 1000\n },\n\n visible: {\n type: Boolean,\n default: null\n },\n\n tabindex: [ String, Number ],\n\n onScroll: Function\n },\n\n setup (props, { slots, emit }) {\n // state management\n const tempShowing = ref(false)\n const panning = ref(false)\n const hover = ref(false)\n\n // other...\n const container = {\n vertical: ref(0),\n horizontal: ref(0)\n }\n\n const scroll = {\n vertical: {\n ref: ref(null),\n position: ref(0),\n size: ref(0)\n },\n\n horizontal: {\n ref: ref(null),\n position: ref(0),\n size: ref(0)\n }\n }\n\n const { proxy } = getCurrentInstance()\n\n const isDark = useDark(props, proxy.$q)\n\n let timer = null, panRefPos\n\n const targetRef = ref(null)\n\n const classes = computed(() =>\n 'q-scrollarea'\n + (isDark.value === true ? ' q-scrollarea--dark' : '')\n )\n\n scroll.vertical.percentage = computed(() => {\n const diff = scroll.vertical.size.value - container.vertical.value\n if (diff <= 0) { return 0 }\n const p = between(scroll.vertical.position.value / diff, 0, 1)\n return Math.round(p * 10000) / 10000\n })\n scroll.vertical.thumbHidden = computed(() =>\n (\n (props.visible === null ? hover.value : props.visible) !== true\n && tempShowing.value === false\n && panning.value === false\n ) || scroll.vertical.size.value <= container.vertical.value + 1\n )\n scroll.vertical.thumbStart = computed(() =>\n scroll.vertical.percentage.value * (container.vertical.value - scroll.vertical.thumbSize.value)\n )\n scroll.vertical.thumbSize = computed(() =>\n Math.round(\n between(\n container.vertical.value * container.vertical.value / scroll.vertical.size.value,\n getMinThumbSize(container.vertical.value),\n container.vertical.value\n )\n )\n )\n scroll.vertical.style = computed(() => {\n return {\n ...props.thumbStyle,\n ...props.verticalThumbStyle,\n top: `${ scroll.vertical.thumbStart.value }px`,\n height: `${ scroll.vertical.thumbSize.value }px`\n }\n })\n scroll.vertical.thumbClass = computed(() =>\n 'q-scrollarea__thumb q-scrollarea__thumb--v absolute-right'\n + (scroll.vertical.thumbHidden.value === true ? ' q-scrollarea__thumb--invisible' : '')\n )\n scroll.vertical.barClass = computed(() =>\n 'q-scrollarea__bar q-scrollarea__bar--v absolute-right'\n + (scroll.vertical.thumbHidden.value === true ? ' q-scrollarea__bar--invisible' : '')\n )\n\n scroll.horizontal.percentage = computed(() => {\n const diff = scroll.horizontal.size.value - container.horizontal.value\n if (diff <= 0) { return 0 }\n const p = between(Math.abs(scroll.horizontal.position.value) / diff, 0, 1)\n return Math.round(p * 10000) / 10000\n })\n scroll.horizontal.thumbHidden = computed(() =>\n (\n (props.visible === null ? hover.value : props.visible) !== true\n && tempShowing.value === false\n && panning.value === false\n ) || scroll.horizontal.size.value <= container.horizontal.value + 1\n )\n scroll.horizontal.thumbStart = computed(() =>\n scroll.horizontal.percentage.value * (container.horizontal.value - scroll.horizontal.thumbSize.value)\n )\n scroll.horizontal.thumbSize = computed(() =>\n Math.round(\n between(\n container.horizontal.value * container.horizontal.value / scroll.horizontal.size.value,\n getMinThumbSize(container.horizontal.value),\n container.horizontal.value\n )\n )\n )\n scroll.horizontal.style = computed(() => {\n return {\n ...props.thumbStyle,\n ...props.horizontalThumbStyle,\n [ proxy.$q.lang.rtl === true ? 'right' : 'left' ]: `${ scroll.horizontal.thumbStart.value }px`,\n width: `${ scroll.horizontal.thumbSize.value }px`\n }\n })\n scroll.horizontal.thumbClass = computed(() =>\n 'q-scrollarea__thumb q-scrollarea__thumb--h absolute-bottom'\n + (scroll.horizontal.thumbHidden.value === true ? ' q-scrollarea__thumb--invisible' : '')\n )\n scroll.horizontal.barClass = computed(() =>\n 'q-scrollarea__bar q-scrollarea__bar--h absolute-bottom'\n + (scroll.horizontal.thumbHidden.value === true ? ' q-scrollarea__bar--invisible' : '')\n )\n\n const mainStyle = computed(() => (\n scroll.vertical.thumbHidden.value === true && scroll.horizontal.thumbHidden.value === true\n ? props.contentStyle\n : props.contentActiveStyle\n ))\n\n const thumbVertDir = [ [\n TouchPan,\n e => { onPanThumb(e, 'vertical') },\n void 0,\n { vertical: true, ...panOpts }\n ] ]\n\n const thumbHorizDir = [ [\n TouchPan,\n e => { onPanThumb(e, 'horizontal') },\n void 0,\n { horizontal: true, ...panOpts }\n ] ]\n\n function getScroll () {\n const info = {}\n\n axisList.forEach(axis => {\n const data = scroll[ axis ]\n\n info[ axis + 'Position' ] = data.position.value\n info[ axis + 'Percentage' ] = data.percentage.value\n info[ axis + 'Size' ] = data.size.value\n info[ axis + 'ContainerSize' ] = container[ axis ].value\n })\n\n return info\n }\n\n // we have lots of listeners, so\n // ensure we're not emitting same info\n // multiple times\n const emitScroll = debounce(() => {\n const info = getScroll()\n info.ref = proxy\n emit('scroll', info)\n }, 0)\n\n function localSetScrollPosition (axis, offset, duration) {\n if (axisList.includes(axis) === false) {\n console.error('[QScrollArea]: wrong first param of setScrollPosition (vertical/horizontal)')\n return\n }\n\n const fn = axis === 'vertical'\n ? setVerticalScrollPosition\n : setHorizontalScrollPosition\n\n fn(targetRef.value, offset, duration)\n }\n\n function updateContainer ({ height, width }) {\n let change = false\n\n if (container.vertical.value !== height) {\n container.vertical.value = height\n change = true\n }\n\n if (container.horizontal.value !== width) {\n container.horizontal.value = width\n change = true\n }\n\n change === true && startTimer()\n }\n\n function updateScroll ({ position }) {\n let change = false\n\n if (scroll.vertical.position.value !== position.top) {\n scroll.vertical.position.value = position.top\n change = true\n }\n\n if (scroll.horizontal.position.value !== position.left) {\n scroll.horizontal.position.value = position.left\n change = true\n }\n\n change === true && startTimer()\n }\n\n function updateScrollSize ({ height, width }) {\n if (scroll.horizontal.size.value !== width) {\n scroll.horizontal.size.value = width\n startTimer()\n }\n\n if (scroll.vertical.size.value !== height) {\n scroll.vertical.size.value = height\n startTimer()\n }\n }\n\n function onPanThumb (e, axis) {\n const data = scroll[ axis ]\n\n if (e.isFirst === true) {\n if (data.thumbHidden.value === true) {\n return\n }\n\n panRefPos = data.position.value\n panning.value = true\n }\n else if (panning.value !== true) {\n return\n }\n\n if (e.isFinal === true) {\n panning.value = false\n }\n\n const dProp = dirProps[ axis ]\n const containerSize = container[ axis ].value\n\n const multiplier = (data.size.value - containerSize) / (containerSize - data.thumbSize.value)\n const distance = e.distance[ dProp.dist ]\n const pos = panRefPos + (e.direction === dProp.dir ? 1 : -1) * distance * multiplier\n\n setScroll(pos, axis)\n }\n\n function onMousedown (evt, axis) {\n const data = scroll[ axis ]\n\n if (data.thumbHidden.value !== true) {\n const offset = evt[ dirProps[ axis ].offset ]\n if (offset < data.thumbStart.value || offset > data.thumbStart.value + data.thumbSize.value) {\n const pos = offset - data.thumbSize.value / 2\n setScroll(pos / container[ axis ].value * data.size.value, axis)\n }\n\n // activate thumb pan\n if (data.ref.value !== null) {\n data.ref.value.dispatchEvent(new MouseEvent(evt.type, evt))\n }\n }\n }\n\n function onVerticalMousedown (evt) {\n onMousedown(evt, 'vertical')\n }\n\n function onHorizontalMousedown (evt) {\n onMousedown(evt, 'horizontal')\n }\n\n function startTimer () {\n tempShowing.value = true\n\n timer !== null && clearTimeout(timer)\n timer = setTimeout(() => {\n timer = null\n tempShowing.value = false\n }, props.delay)\n\n props.onScroll !== void 0 && emitScroll()\n }\n\n function setScroll (offset, axis) {\n targetRef.value[ dirProps[ axis ].scroll ] = offset\n }\n\n function onMouseenter () {\n hover.value = true\n }\n\n function onMouseleave () {\n hover.value = false\n }\n\n let scrollPosition = null\n\n watch(() => proxy.$q.lang.rtl, rtl => {\n if (targetRef.value !== null) {\n setHorizontalScrollPosition(\n targetRef.value,\n Math.abs(scroll.horizontal.position.value) * (rtl === true ? -1 : 1)\n )\n }\n })\n\n onDeactivated(() => {\n scrollPosition = {\n top: scroll.vertical.position.value,\n left: scroll.horizontal.position.value\n }\n })\n\n onActivated(() => {\n if (scrollPosition === null) { return }\n\n const scrollTarget = targetRef.value\n\n if (scrollTarget !== null) {\n setHorizontalScrollPosition(scrollTarget, scrollPosition.left)\n setVerticalScrollPosition(scrollTarget, scrollPosition.top)\n }\n })\n\n onBeforeUnmount(emitScroll.cancel)\n\n // expose public methods\n Object.assign(proxy, {\n getScrollTarget: () => targetRef.value,\n getScroll,\n getScrollPosition: () => ({\n top: scroll.vertical.position.value,\n left: scroll.horizontal.position.value\n }),\n getScrollPercentage: () => ({\n top: scroll.vertical.percentage.value,\n left: scroll.horizontal.percentage.value\n }),\n setScrollPosition: localSetScrollPosition,\n setScrollPercentage (axis, percentage, duration) {\n localSetScrollPosition(\n axis,\n percentage\n * (scroll[ axis ].size.value - container[ axis ].value)\n * (axis === 'horizontal' && proxy.$q.lang.rtl === true ? -1 : 1),\n duration\n )\n }\n })\n\n return () => {\n return h('div', {\n class: classes.value,\n onMouseenter,\n onMouseleave\n }, [\n h('div', {\n ref: targetRef,\n class: 'q-scrollarea__container scroll relative-position fit hide-scrollbar',\n tabindex: props.tabindex !== void 0 ? props.tabindex : void 0\n }, [\n h('div', {\n class: 'q-scrollarea__content absolute',\n style: mainStyle.value\n }, hMergeSlot(slots.default, [\n h(QResizeObserver, {\n debounce: 0,\n onResize: updateScrollSize\n })\n ])),\n\n h(QScrollObserver, {\n axis: 'both',\n onScroll: updateScroll\n })\n ]),\n\n h(QResizeObserver, {\n debounce: 0,\n onResize: updateContainer\n }),\n\n h('div', {\n class: scroll.vertical.barClass.value,\n style: [ props.barStyle, props.verticalBarStyle ],\n 'aria-hidden': 'true',\n onMousedown: onVerticalMousedown\n }),\n\n h('div', {\n class: scroll.horizontal.barClass.value,\n style: [ props.barStyle, props.horizontalBarStyle ],\n 'aria-hidden': 'true',\n onMousedown: onHorizontalMousedown\n }),\n\n withDirectives(\n h('div', {\n ref: scroll.vertical.ref,\n class: scroll.vertical.thumbClass.value,\n style: scroll.vertical.style.value,\n 'aria-hidden': 'true'\n }),\n thumbVertDir\n ),\n\n withDirectives(\n h('div', {\n ref: scroll.horizontal.ref,\n class: scroll.horizontal.thumbClass.value,\n style: scroll.horizontal.style.value,\n 'aria-hidden': 'true'\n }),\n thumbHorizDir\n )\n ])\n }\n }\n})\n","import { watch, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { getScrollTarget, getVerticalScrollPosition, getHorizontalScrollPosition } from '../../utils/scroll.js'\nimport { listenOpts, noop } from '../../utils/event.js'\n\nconst { passive } = listenOpts\nconst axisValues = [ 'both', 'horizontal', 'vertical' ]\n\nexport default createComponent({\n name: 'QScrollObserver',\n\n props: {\n axis: {\n type: String,\n validator: v => axisValues.includes(v),\n default: 'vertical'\n },\n\n debounce: [ String, Number ],\n\n scrollTarget: {\n default: void 0\n }\n },\n\n emits: [ 'scroll' ],\n\n setup (props, { emit }) {\n const scroll = {\n position: {\n top: 0,\n left: 0\n },\n\n direction: 'down',\n directionChanged: false,\n\n delta: {\n top: 0,\n left: 0\n },\n\n inflectionPoint: {\n top: 0,\n left: 0\n }\n }\n\n let clearTimer = null, localScrollTarget, parentEl\n\n watch(() => props.scrollTarget, () => {\n unconfigureScrollTarget()\n configureScrollTarget()\n })\n\n function emitEvent () {\n clearTimer !== null && clearTimer()\n\n const top = Math.max(0, getVerticalScrollPosition(localScrollTarget))\n const left = getHorizontalScrollPosition(localScrollTarget)\n\n const delta = {\n top: top - scroll.position.top,\n left: left - scroll.position.left\n }\n\n if (\n (props.axis === 'vertical' && delta.top === 0)\n || (props.axis === 'horizontal' && delta.left === 0)\n ) {\n return\n }\n\n const curDir = Math.abs(delta.top) >= Math.abs(delta.left)\n ? (delta.top < 0 ? 'up' : 'down')\n : (delta.left < 0 ? 'left' : 'right')\n\n scroll.position = { top, left }\n scroll.directionChanged = scroll.direction !== curDir\n scroll.delta = delta\n\n if (scroll.directionChanged === true) {\n scroll.direction = curDir\n scroll.inflectionPoint = scroll.position\n }\n\n emit('scroll', { ...scroll })\n }\n\n function configureScrollTarget () {\n localScrollTarget = getScrollTarget(parentEl, props.scrollTarget)\n localScrollTarget.addEventListener('scroll', trigger, passive)\n trigger(true)\n }\n\n function unconfigureScrollTarget () {\n if (localScrollTarget !== void 0) {\n localScrollTarget.removeEventListener('scroll', trigger, passive)\n localScrollTarget = void 0\n }\n }\n\n function trigger (immediately) {\n if (immediately === true || props.debounce === 0 || props.debounce === '0') {\n emitEvent()\n }\n else if (clearTimer === null) {\n const [ timer, fn ] = props.debounce\n ? [ setTimeout(emitEvent, props.debounce), clearTimeout ]\n : [ requestAnimationFrame(emitEvent), cancelAnimationFrame ]\n\n clearTimer = () => {\n fn(timer)\n clearTimer = null\n }\n }\n }\n\n const { proxy } = getCurrentInstance()\n\n watch(() => proxy.$q.lang.rtl, emitEvent)\n\n onMounted(() => {\n parentEl = proxy.$el.parentNode\n configureScrollTarget()\n })\n\n onBeforeUnmount(() => {\n clearTimer !== null && clearTimer()\n unconfigureScrollTarget()\n })\n\n // expose public methods\n Object.assign(proxy, {\n trigger,\n getPosition: () => scroll\n })\n\n return noop\n }\n})\n","import { h, ref, computed, watch, onBeforeUpdate, onUpdated, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport QField from '../field/QField.js'\nimport QIcon from '../icon/QIcon.js'\nimport QChip from '../chip/QChip.js'\n\nimport QItem from '../item/QItem.js'\nimport QItemSection from '../item/QItemSection.js'\nimport QItemLabel from '../item/QItemLabel.js'\n\nimport QMenu from '../menu/QMenu.js'\nimport QDialog from '../dialog/QDialog.js'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits, fieldValueIsFilled } from '../../composables/private/use-field.js'\nimport { useVirtualScroll, useVirtualScrollProps } from '../virtual-scroll/use-virtual-scroll.js'\nimport { useFormProps, useFormInputNameAttr } from '../../composables/private/use-form.js'\nimport useKeyComposition from '../../composables/private/use-key-composition.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { isDeepEqual } from '../../utils/is.js'\nimport { stop, prevent, stopAndPrevent } from '../../utils/event.js'\nimport { normalizeToInterval } from '../../utils/format.js'\nimport { shouldIgnoreKey, isKeyCode } from '../../utils/private/key-composition.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\n\nconst validateNewValueMode = v => [ 'add', 'add-unique', 'toggle' ].includes(v)\nconst reEscapeList = '.*+?^${}()|[]\\\\'\nconst fieldPropsList = Object.keys(useFieldProps)\n\nexport default createComponent({\n name: 'QSelect',\n\n inheritAttrs: false,\n\n props: {\n ...useVirtualScrollProps,\n ...useFormProps,\n ...useFieldProps,\n\n modelValue: {\n required: true\n },\n\n multiple: Boolean,\n\n displayValue: [ String, Number ],\n displayValueHtml: Boolean,\n dropdownIcon: String,\n\n options: {\n type: Array,\n default: () => []\n },\n\n optionValue: [ Function, String ],\n optionLabel: [ Function, String ],\n optionDisable: [ Function, String ],\n\n hideSelected: Boolean,\n hideDropdownIcon: Boolean,\n fillInput: Boolean,\n\n maxValues: [ Number, String ],\n\n optionsDense: Boolean,\n optionsDark: {\n type: Boolean,\n default: null\n },\n optionsSelectedClass: String,\n optionsHtml: Boolean,\n\n optionsCover: Boolean,\n\n menuShrink: Boolean,\n menuAnchor: String,\n menuSelf: String,\n menuOffset: Array,\n\n popupContentClass: String,\n popupContentStyle: [ String, Array, Object ],\n\n useInput: Boolean,\n useChips: Boolean,\n\n newValueMode: {\n type: String,\n validator: validateNewValueMode\n },\n\n mapOptions: Boolean,\n emitValue: Boolean,\n\n inputDebounce: {\n type: [ Number, String ],\n default: 500\n },\n\n inputClass: [ Array, String, Object ],\n inputStyle: [ Array, String, Object ],\n\n tabindex: {\n type: [ String, Number ],\n default: 0\n },\n\n autocomplete: String,\n\n transitionShow: String,\n transitionHide: String,\n transitionDuration: [ String, Number ],\n\n behavior: {\n type: String,\n validator: v => [ 'default', 'menu', 'dialog' ].includes(v),\n default: 'default'\n },\n\n virtualScrollItemSize: {\n type: [ Number, String ],\n default: void 0\n },\n\n onNewValue: Function,\n onFilter: Function\n },\n\n emits: [\n ...useFieldEmits,\n 'add', 'remove', 'inputValue', 'newValue',\n 'keyup', 'keypress', 'keydown',\n 'filterAbort'\n ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const menu = ref(false)\n const dialog = ref(false)\n const optionIndex = ref(-1)\n const inputValue = ref('')\n const dialogFieldFocused = ref(false)\n const innerLoadingIndicator = ref(false)\n\n let inputTimer = null, innerValueCache,\n hasDialog, userInputValue, filterId = null, defaultInputValue,\n transitionShowComputed, searchBuffer, searchBufferExp\n\n const inputRef = ref(null)\n const targetRef = ref(null)\n const menuRef = ref(null)\n const dialogRef = ref(null)\n const menuContentRef = ref(null)\n\n const nameProp = useFormInputNameAttr(props)\n\n const onComposition = useKeyComposition(onInput)\n\n const virtualScrollLength = computed(() => (\n Array.isArray(props.options)\n ? props.options.length\n : 0\n ))\n\n const virtualScrollItemSizeComputed = computed(() => (\n props.virtualScrollItemSize === void 0\n ? (props.optionsDense === true ? 24 : 48)\n : props.virtualScrollItemSize\n ))\n\n const {\n virtualScrollSliceRange,\n virtualScrollSliceSizeComputed,\n localResetVirtualScroll,\n padVirtualScroll,\n onVirtualScrollEvt,\n scrollTo,\n setVirtualScrollSize\n } = useVirtualScroll({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl,\n virtualScrollItemSizeComputed\n })\n\n const state = useFieldState()\n\n const innerValue = computed(() => {\n const\n mapNull = props.mapOptions === true && props.multiple !== true,\n val = props.modelValue !== void 0 && (props.modelValue !== null || mapNull === true)\n ? (props.multiple === true && Array.isArray(props.modelValue) ? props.modelValue : [ props.modelValue ])\n : []\n\n if (props.mapOptions === true && Array.isArray(props.options) === true) {\n const cache = props.mapOptions === true && innerValueCache !== void 0\n ? innerValueCache\n : []\n const values = val.map(v => getOption(v, cache))\n\n return props.modelValue === null && mapNull === true\n ? values.filter(v => v !== null)\n : values\n }\n\n return val\n })\n\n const innerFieldProps = computed(() => {\n const acc = {}\n fieldPropsList.forEach(key => {\n const val = props[ key ]\n if (val !== void 0) {\n acc[ key ] = val\n }\n })\n return acc\n })\n\n const isOptionsDark = computed(() => (\n props.optionsDark === null\n ? state.isDark.value\n : props.optionsDark\n ))\n\n const hasValue = computed(() => fieldValueIsFilled(innerValue.value))\n\n const computedInputClass = computed(() => {\n let cls = 'q-field__input q-placeholder col'\n\n if (props.hideSelected === true || innerValue.value.length === 0) {\n return [ cls, props.inputClass ]\n }\n\n cls += ' q-field__input--padding'\n\n return props.inputClass === void 0\n ? cls\n : [ cls, props.inputClass ]\n })\n\n const menuContentClass = computed(() =>\n (props.virtualScrollHorizontal === true ? 'q-virtual-scroll--horizontal' : '')\n + (props.popupContentClass ? ' ' + props.popupContentClass : '')\n )\n\n const noOptions = computed(() => virtualScrollLength.value === 0)\n\n const selectedString = computed(() =>\n innerValue.value\n .map(opt => getOptionLabel.value(opt))\n .join(', ')\n )\n\n const ariaCurrentValue = computed(() => (props.displayValue !== void 0\n ? props.displayValue\n : selectedString.value\n ))\n\n const needsHtmlFn = computed(() => (\n props.optionsHtml === true\n ? () => true\n : opt => opt !== void 0 && opt !== null && opt.html === true\n ))\n\n const valueAsHtml = computed(() => (\n props.displayValueHtml === true || (\n props.displayValue === void 0 && (\n props.optionsHtml === true\n || innerValue.value.some(needsHtmlFn.value)\n )\n )\n ))\n\n const tabindex = computed(() => (state.focused.value === true ? props.tabindex : -1))\n\n const comboboxAttrs = computed(() => {\n const attrs = {\n tabindex: props.tabindex,\n role: 'combobox',\n 'aria-label': props.label,\n 'aria-readonly': props.readonly === true ? 'true' : 'false',\n 'aria-autocomplete': props.useInput === true ? 'list' : 'none',\n 'aria-expanded': menu.value === true ? 'true' : 'false',\n 'aria-controls': `${ state.targetUid.value }_lb`\n }\n\n if (optionIndex.value >= 0) {\n attrs[ 'aria-activedescendant' ] = `${ state.targetUid.value }_${ optionIndex.value }`\n }\n\n return attrs\n })\n\n const listboxAttrs = computed(() => ({\n id: `${ state.targetUid.value }_lb`,\n role: 'listbox',\n 'aria-multiselectable': props.multiple === true ? 'true' : 'false'\n }))\n\n const selectedScope = computed(() => {\n return innerValue.value.map((opt, i) => ({\n index: i,\n opt,\n html: needsHtmlFn.value(opt),\n selected: true,\n removeAtIndex: removeAtIndexAndFocus,\n toggleOption,\n tabindex: tabindex.value\n }))\n })\n\n const optionScope = computed(() => {\n if (virtualScrollLength.value === 0) {\n return []\n }\n\n const { from, to } = virtualScrollSliceRange.value\n\n return props.options.slice(from, to).map((opt, i) => {\n const disable = isOptionDisabled.value(opt) === true\n const index = from + i\n\n const itemProps = {\n clickable: true,\n active: false,\n activeClass: computedOptionsSelectedClass.value,\n manualFocus: true,\n focused: false,\n disable,\n tabindex: -1,\n dense: props.optionsDense,\n dark: isOptionsDark.value,\n role: 'option',\n id: `${ state.targetUid.value }_${ index }`,\n onClick: () => { toggleOption(opt) }\n }\n\n if (disable !== true) {\n isOptionSelected(opt) === true && (itemProps.active = true)\n optionIndex.value === index && (itemProps.focused = true)\n\n itemProps[ 'aria-selected' ] = itemProps.active === true ? 'true' : 'false'\n\n if ($q.platform.is.desktop === true) {\n itemProps.onMousemove = () => { menu.value === true && setOptionIndex(index) }\n }\n }\n\n return {\n index,\n opt,\n html: needsHtmlFn.value(opt),\n label: getOptionLabel.value(opt),\n selected: itemProps.active,\n focused: itemProps.focused,\n toggleOption,\n setOptionIndex,\n itemProps\n }\n })\n })\n\n const dropdownArrowIcon = computed(() => (\n props.dropdownIcon !== void 0\n ? props.dropdownIcon\n : $q.iconSet.arrow.dropdown\n ))\n\n const squaredMenu = computed(() =>\n props.optionsCover === false\n && props.outlined !== true\n && props.standout !== true\n && props.borderless !== true\n && props.rounded !== true\n )\n\n const computedOptionsSelectedClass = computed(() => (\n props.optionsSelectedClass !== void 0\n ? props.optionsSelectedClass\n : (props.color !== void 0 ? `text-${ props.color }` : '')\n ))\n\n // returns method to get value of an option;\n // takes into account 'option-value' prop\n const getOptionValue = computed(() => getPropValueFn(props.optionValue, 'value'))\n\n // returns method to get label of an option;\n // takes into account 'option-label' prop\n const getOptionLabel = computed(() => getPropValueFn(props.optionLabel, 'label'))\n\n // returns method to tell if an option is disabled;\n // takes into account 'option-disable' prop\n const isOptionDisabled = computed(() => getPropValueFn(props.optionDisable, 'disable'))\n\n const innerOptionsValue = computed(() => innerValue.value.map(opt => getOptionValue.value(opt)))\n\n const inputControlEvents = computed(() => {\n const evt = {\n onInput,\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n onChange: onComposition,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetAutocomplete,\n onKeypress: onTargetKeypress,\n onFocus: selectInputText,\n onClick (e) { hasDialog === true && stop(e) }\n }\n\n evt.onCompositionstart = evt.onCompositionupdate = evt.onCompositionend = onComposition\n\n return evt\n })\n\n watch(innerValue, val => {\n innerValueCache = val\n\n if (\n props.useInput === true\n && props.fillInput === true\n && props.multiple !== true\n // Prevent re-entering in filter while filtering\n // Also prevent clearing inputValue while filtering\n && state.innerLoading.value !== true\n && ((dialog.value !== true && menu.value !== true) || hasValue.value !== true)\n ) {\n userInputValue !== true && resetInputValue()\n if (dialog.value === true || menu.value === true) {\n filter('')\n }\n }\n }, { immediate: true })\n\n watch(() => props.fillInput, resetInputValue)\n\n watch(menu, updateMenu)\n\n watch(virtualScrollLength, rerenderMenu)\n\n function getEmittingOptionValue (opt) {\n return props.emitValue === true\n ? getOptionValue.value(opt)\n : opt\n }\n\n function removeAtIndex (index) {\n if (index > -1 && index < innerValue.value.length) {\n if (props.multiple === true) {\n const model = props.modelValue.slice()\n emit('remove', { index, value: model.splice(index, 1)[ 0 ] })\n emit('update:modelValue', model)\n }\n else {\n emit('update:modelValue', null)\n }\n }\n }\n\n function removeAtIndexAndFocus (index) {\n removeAtIndex(index)\n state.focus()\n }\n\n function add (opt, unique) {\n const val = getEmittingOptionValue(opt)\n\n if (props.multiple !== true) {\n props.fillInput === true && updateInputValue(\n getOptionLabel.value(opt),\n true,\n true\n )\n\n emit('update:modelValue', val)\n return\n }\n\n if (innerValue.value.length === 0) {\n emit('add', { index: 0, value: val })\n emit('update:modelValue', props.multiple === true ? [ val ] : val)\n return\n }\n\n if (unique === true && isOptionSelected(opt) === true) {\n return\n }\n\n if (props.maxValues !== void 0 && props.modelValue.length >= props.maxValues) {\n return\n }\n\n const model = props.modelValue.slice()\n\n emit('add', { index: model.length, value: val })\n model.push(val)\n emit('update:modelValue', model)\n }\n\n function toggleOption (opt, keepOpen) {\n if (state.editable.value !== true || opt === void 0 || isOptionDisabled.value(opt) === true) {\n return\n }\n\n const optValue = getOptionValue.value(opt)\n\n if (props.multiple !== true) {\n if (keepOpen !== true) {\n updateInputValue(\n props.fillInput === true ? getOptionLabel.value(opt) : '',\n true,\n true\n )\n\n hidePopup()\n }\n\n targetRef.value !== null && targetRef.value.focus()\n\n if (\n innerValue.value.length === 0\n || isDeepEqual(getOptionValue.value(innerValue.value[ 0 ]), optValue) !== true\n ) {\n emit('update:modelValue', props.emitValue === true ? optValue : opt)\n }\n return\n }\n\n (hasDialog !== true || dialogFieldFocused.value === true) && state.focus()\n\n selectInputText()\n\n if (innerValue.value.length === 0) {\n const val = props.emitValue === true ? optValue : opt\n emit('add', { index: 0, value: val })\n emit('update:modelValue', props.multiple === true ? [ val ] : val)\n return\n }\n\n const\n model = props.modelValue.slice(),\n index = innerOptionsValue.value.findIndex(v => isDeepEqual(v, optValue))\n\n if (index > -1) {\n emit('remove', { index, value: model.splice(index, 1)[ 0 ] })\n }\n else {\n if (props.maxValues !== void 0 && model.length >= props.maxValues) {\n return\n }\n\n const val = props.emitValue === true ? optValue : opt\n\n emit('add', { index: model.length, value: val })\n model.push(val)\n }\n\n emit('update:modelValue', model)\n }\n\n function setOptionIndex (index) {\n if ($q.platform.is.desktop !== true) { return }\n\n const val = index > -1 && index < virtualScrollLength.value\n ? index\n : -1\n\n if (optionIndex.value !== val) {\n optionIndex.value = val\n }\n }\n\n function moveOptionSelection (offset = 1, skipInputValue) {\n if (menu.value === true) {\n let index = optionIndex.value\n do {\n index = normalizeToInterval(\n index + offset,\n -1,\n virtualScrollLength.value - 1\n )\n }\n while (index !== -1 && index !== optionIndex.value && isOptionDisabled.value(props.options[ index ]) === true)\n\n if (optionIndex.value !== index) {\n setOptionIndex(index)\n scrollTo(index)\n\n if (skipInputValue !== true && props.useInput === true && props.fillInput === true) {\n setInputValue(index >= 0\n ? getOptionLabel.value(props.options[ index ])\n : defaultInputValue\n )\n }\n }\n }\n }\n\n function getOption (value, valueCache) {\n const fn = opt => isDeepEqual(getOptionValue.value(opt), value)\n return props.options.find(fn) || valueCache.find(fn) || value\n }\n\n function getPropValueFn (propValue, defaultVal) {\n const val = propValue !== void 0\n ? propValue\n : defaultVal\n\n return typeof val === 'function'\n ? val\n : opt => (opt !== null && typeof opt === 'object' && val in opt ? opt[ val ] : opt)\n }\n\n function isOptionSelected (opt) {\n const val = getOptionValue.value(opt)\n return innerOptionsValue.value.find(v => isDeepEqual(v, val)) !== void 0\n }\n\n function selectInputText (e) {\n if (\n props.useInput === true\n && targetRef.value !== null\n && (e === void 0 || (targetRef.value === e.target && e.target.value === selectedString.value))\n ) {\n targetRef.value.select()\n }\n }\n\n function onTargetKeyup (e) {\n // if ESC and we have an opened menu\n // then stop propagation (might be caught by a QDialog\n // and so it will also close the QDialog, which is wrong)\n if (isKeyCode(e, 27) === true && menu.value === true) {\n stop(e)\n // on ESC we need to close the dialog also\n hidePopup()\n resetInputValue()\n }\n\n emit('keyup', e)\n }\n\n function onTargetAutocomplete (e) {\n const { value } = e.target\n\n if (e.keyCode !== void 0) {\n onTargetKeyup(e)\n return\n }\n\n e.target.value = ''\n\n if (inputTimer !== null) {\n clearTimeout(inputTimer)\n inputTimer = null\n }\n\n resetInputValue()\n\n if (typeof value === 'string' && value.length !== 0) {\n const needle = value.toLocaleLowerCase()\n const findFn = extractFn => {\n const option = props.options.find(opt => extractFn.value(opt).toLocaleLowerCase() === needle)\n\n if (option === void 0) {\n return false\n }\n\n if (innerValue.value.indexOf(option) === -1) {\n toggleOption(option)\n }\n else {\n hidePopup()\n }\n\n return true\n }\n const fillFn = afterFilter => {\n if (findFn(getOptionValue) === true) {\n return\n }\n if (findFn(getOptionLabel) === true || afterFilter === true) {\n return\n }\n\n filter(value, true, () => fillFn(true))\n }\n\n fillFn()\n }\n else {\n state.clearValue(e)\n }\n }\n\n function onTargetKeypress (e) {\n emit('keypress', e)\n }\n\n function onTargetKeydown (e) {\n emit('keydown', e)\n\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const newValueModeValid = inputValue.value.length !== 0\n && (props.newValueMode !== void 0 || props.onNewValue !== void 0)\n\n const tabShouldSelect = e.shiftKey !== true\n && props.multiple !== true\n && (optionIndex.value > -1 || newValueModeValid === true)\n\n // escape\n if (e.keyCode === 27) {\n prevent(e) // prevent clearing the inputValue\n return\n }\n\n // tab\n if (e.keyCode === 9 && tabShouldSelect === false) {\n closeMenu()\n return\n }\n\n if (e.target === void 0 || e.target.id !== state.targetUid.value) { return }\n\n // down\n if (\n e.keyCode === 40\n && state.innerLoading.value !== true\n && menu.value === false\n ) {\n stopAndPrevent(e)\n showPopup()\n return\n }\n\n // backspace\n if (\n e.keyCode === 8\n && props.hideSelected !== true\n && inputValue.value.length === 0\n ) {\n if (props.multiple === true && Array.isArray(props.modelValue) === true) {\n removeAtIndex(props.modelValue.length - 1)\n }\n else if (props.multiple !== true && props.modelValue !== null) {\n emit('update:modelValue', null)\n }\n return\n }\n\n // home, end - 36, 35\n if (\n (e.keyCode === 35 || e.keyCode === 36)\n && (typeof inputValue.value !== 'string' || inputValue.value.length === 0)\n ) {\n stopAndPrevent(e)\n optionIndex.value = -1\n moveOptionSelection(e.keyCode === 36 ? 1 : -1, props.multiple)\n }\n\n // pg up, pg down - 33, 34\n if (\n (e.keyCode === 33 || e.keyCode === 34)\n && virtualScrollSliceSizeComputed.value !== void 0\n ) {\n stopAndPrevent(e)\n optionIndex.value = Math.max(\n -1,\n Math.min(\n virtualScrollLength.value,\n optionIndex.value + (e.keyCode === 33 ? -1 : 1) * virtualScrollSliceSizeComputed.value.view\n )\n )\n moveOptionSelection(e.keyCode === 33 ? 1 : -1, props.multiple)\n }\n\n // up, down\n if (e.keyCode === 38 || e.keyCode === 40) {\n stopAndPrevent(e)\n moveOptionSelection(e.keyCode === 38 ? -1 : 1, props.multiple)\n }\n\n const optionsLength = virtualScrollLength.value\n\n // clear search buffer if expired\n if (searchBuffer === void 0 || searchBufferExp < Date.now()) {\n searchBuffer = ''\n }\n\n // keyboard search when not having use-input\n if (\n optionsLength > 0\n && props.useInput !== true\n && e.key !== void 0\n && e.key.length === 1 // printable char\n && e.altKey === false // not kbd shortcut\n && e.ctrlKey === false // not kbd shortcut\n && e.metaKey === false // not kbd shortcut, especially on macOS with Command key\n && (e.keyCode !== 32 || searchBuffer.length !== 0) // space in middle of search\n ) {\n menu.value !== true && showPopup(e)\n\n const\n char = e.key.toLocaleLowerCase(),\n keyRepeat = searchBuffer.length === 1 && searchBuffer[ 0 ] === char\n\n searchBufferExp = Date.now() + 1500\n if (keyRepeat === false) {\n stopAndPrevent(e)\n searchBuffer += char\n }\n\n const searchRe = new RegExp('^' + searchBuffer.split('').map(l => (reEscapeList.indexOf(l) > -1 ? '\\\\' + l : l)).join('.*'), 'i')\n\n let index = optionIndex.value\n\n if (keyRepeat === true || index < 0 || searchRe.test(getOptionLabel.value(props.options[ index ])) !== true) {\n do {\n index = normalizeToInterval(index + 1, -1, optionsLength - 1)\n }\n while (index !== optionIndex.value && (\n isOptionDisabled.value(props.options[ index ]) === true\n || searchRe.test(getOptionLabel.value(props.options[ index ])) !== true\n ))\n }\n\n if (optionIndex.value !== index) {\n nextTick(() => {\n setOptionIndex(index)\n scrollTo(index)\n\n if (index >= 0 && props.useInput === true && props.fillInput === true) {\n setInputValue(getOptionLabel.value(props.options[ index ]))\n }\n })\n }\n\n return\n }\n\n // enter, space (when not using use-input and not in search), or tab (when not using multiple and option selected)\n // same target is checked above\n if (\n e.keyCode !== 13\n && (e.keyCode !== 32 || props.useInput === true || searchBuffer !== '')\n && (e.keyCode !== 9 || tabShouldSelect === false)\n ) { return }\n\n e.keyCode !== 9 && stopAndPrevent(e)\n\n if (optionIndex.value > -1 && optionIndex.value < optionsLength) {\n toggleOption(props.options[ optionIndex.value ])\n return\n }\n\n if (newValueModeValid === true) {\n const done = (val, mode) => {\n if (mode) {\n if (validateNewValueMode(mode) !== true) {\n return\n }\n }\n else {\n mode = props.newValueMode\n }\n\n if (val === void 0 || val === null) {\n return\n }\n\n updateInputValue('', props.multiple !== true, true)\n\n const fn = mode === 'toggle' ? toggleOption : add\n fn(val, mode === 'add-unique')\n\n if (props.multiple !== true) {\n targetRef.value !== null && targetRef.value.focus()\n hidePopup()\n }\n }\n\n if (props.onNewValue !== void 0) {\n emit('newValue', inputValue.value, done)\n }\n else {\n done(inputValue.value)\n }\n\n if (props.multiple !== true) {\n return\n }\n }\n\n if (menu.value === true) {\n closeMenu()\n }\n else if (state.innerLoading.value !== true) {\n showPopup()\n }\n }\n\n function getVirtualScrollEl () {\n return hasDialog === true\n ? menuContentRef.value\n : (\n menuRef.value !== null && menuRef.value.contentEl !== null\n ? menuRef.value.contentEl\n : void 0\n )\n }\n\n function getVirtualScrollTarget () {\n return getVirtualScrollEl()\n }\n\n function getSelection () {\n if (props.hideSelected === true) {\n return []\n }\n\n if (slots[ 'selected-item' ] !== void 0) {\n return selectedScope.value.map(scope => slots[ 'selected-item' ](scope)).slice()\n }\n\n if (slots.selected !== void 0) {\n return [].concat(slots.selected())\n }\n\n if (props.useChips === true) {\n return selectedScope.value.map((scope, i) => h(QChip, {\n key: 'option-' + i,\n removable: state.editable.value === true && isOptionDisabled.value(scope.opt) !== true,\n dense: true,\n textColor: props.color,\n tabindex: tabindex.value,\n onRemove () { scope.removeAtIndex(i) }\n }, () => h('span', {\n class: 'ellipsis',\n [ scope.html === true ? 'innerHTML' : 'textContent' ]: getOptionLabel.value(scope.opt)\n })))\n }\n\n return [\n h('span', {\n [ valueAsHtml.value === true ? 'innerHTML' : 'textContent' ]: ariaCurrentValue.value\n })\n ]\n }\n\n function getAllOptions () {\n if (noOptions.value === true) {\n return slots[ 'no-option' ] !== void 0\n ? slots[ 'no-option' ]({ inputValue: inputValue.value })\n : void 0\n }\n\n const fn = slots.option !== void 0\n ? slots.option\n : scope => {\n return h(QItem, {\n key: scope.index,\n ...scope.itemProps\n }, () => {\n return h(\n QItemSection,\n () => h(\n QItemLabel,\n () => h('span', {\n [ scope.html === true ? 'innerHTML' : 'textContent' ]: scope.label\n })\n )\n )\n })\n }\n\n let options = padVirtualScroll('div', optionScope.value.map(fn))\n\n if (slots[ 'before-options' ] !== void 0) {\n options = slots[ 'before-options' ]().concat(options)\n }\n\n return hMergeSlot(slots[ 'after-options' ], options)\n }\n\n function getInput (fromDialog, isTarget) {\n const attrs = isTarget === true ? { ...comboboxAttrs.value, ...state.splitAttrs.attributes.value } : void 0\n\n const data = {\n ref: isTarget === true ? targetRef : void 0,\n key: 'i_t',\n class: computedInputClass.value,\n style: props.inputStyle,\n value: inputValue.value !== void 0 ? inputValue.value : '',\n // required for Android in order to show ENTER key when in form\n type: 'search',\n ...attrs,\n id: isTarget === true ? state.targetUid.value : void 0,\n maxlength: props.maxlength,\n autocomplete: props.autocomplete,\n 'data-autofocus': fromDialog === true || props.autofocus === true || void 0,\n disabled: props.disable === true,\n readonly: props.readonly === true,\n ...inputControlEvents.value\n }\n\n if (fromDialog !== true && hasDialog === true) {\n if (Array.isArray(data.class) === true) {\n data.class = [ ...data.class, 'no-pointer-events' ]\n }\n else {\n data.class += ' no-pointer-events'\n }\n }\n\n return h('input', data)\n }\n\n function onInput (e) {\n if (inputTimer !== null) {\n clearTimeout(inputTimer)\n inputTimer = null\n }\n\n if (e && e.target && e.target.qComposing === true) {\n return\n }\n\n setInputValue(e.target.value || '')\n // mark it here as user input so that if updateInputValue is called\n // before filter is called the indicator is reset\n userInputValue = true\n defaultInputValue = inputValue.value\n\n if (\n state.focused.value !== true\n && (hasDialog !== true || dialogFieldFocused.value === true)\n ) {\n state.focus()\n }\n\n if (props.onFilter !== void 0) {\n inputTimer = setTimeout(() => {\n inputTimer = null\n filter(inputValue.value)\n }, props.inputDebounce)\n }\n }\n\n function setInputValue (val) {\n if (inputValue.value !== val) {\n inputValue.value = val\n emit('inputValue', val)\n }\n }\n\n function updateInputValue (val, noFiltering, internal) {\n userInputValue = internal !== true\n\n if (props.useInput === true) {\n setInputValue(val)\n\n if (noFiltering === true || internal !== true) {\n defaultInputValue = val\n }\n\n noFiltering !== true && filter(val)\n }\n }\n\n function filter (val, keepClosed, afterUpdateFn) {\n if (props.onFilter === void 0 || (keepClosed !== true && state.focused.value !== true)) {\n return\n }\n\n if (state.innerLoading.value === true) {\n emit('filterAbort')\n }\n else {\n state.innerLoading.value = true\n innerLoadingIndicator.value = true\n }\n\n if (\n val !== ''\n && props.multiple !== true\n && innerValue.value.length !== 0\n && userInputValue !== true\n && val === getOptionLabel.value(innerValue.value[ 0 ])\n ) {\n val = ''\n }\n\n const localFilterId = setTimeout(() => {\n menu.value === true && (menu.value = false)\n }, 10)\n\n filterId !== null && clearTimeout(filterId)\n filterId = localFilterId\n\n emit(\n 'filter',\n val,\n (fn, afterFn) => {\n if ((keepClosed === true || state.focused.value === true) && filterId === localFilterId) {\n clearTimeout(filterId)\n\n typeof fn === 'function' && fn()\n\n // hide indicator to allow arrow to animate\n innerLoadingIndicator.value = false\n\n nextTick(() => {\n state.innerLoading.value = false\n\n if (state.editable.value === true) {\n if (keepClosed === true) {\n menu.value === true && hidePopup()\n }\n else if (menu.value === true) {\n updateMenu(true)\n }\n else {\n menu.value = true\n }\n }\n\n typeof afterFn === 'function' && nextTick(() => { afterFn(proxy) })\n typeof afterUpdateFn === 'function' && nextTick(() => { afterUpdateFn(proxy) })\n })\n }\n },\n () => {\n if (state.focused.value === true && filterId === localFilterId) {\n clearTimeout(filterId)\n state.innerLoading.value = false\n innerLoadingIndicator.value = false\n }\n menu.value === true && (menu.value = false)\n }\n )\n }\n\n function getMenu () {\n return h(QMenu, {\n ref: menuRef,\n class: menuContentClass.value,\n style: props.popupContentStyle,\n modelValue: menu.value,\n fit: props.menuShrink !== true,\n cover: props.optionsCover === true && noOptions.value !== true && props.useInput !== true,\n anchor: props.menuAnchor,\n self: props.menuSelf,\n offset: props.menuOffset,\n dark: isOptionsDark.value,\n noParentEvent: true,\n noRefocus: true,\n noFocus: true,\n square: squaredMenu.value,\n transitionShow: props.transitionShow,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n separateClosePopup: true,\n ...listboxAttrs.value,\n onScrollPassive: onVirtualScrollEvt,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onMenuBeforeHide,\n onShow: onMenuShow\n }, getAllOptions)\n }\n\n function onMenuBeforeHide (e) {\n onControlPopupHide(e)\n closeMenu()\n }\n\n function onMenuShow () {\n setVirtualScrollSize()\n }\n\n function onDialogFieldFocus (e) {\n stop(e)\n targetRef.value !== null && targetRef.value.focus()\n dialogFieldFocused.value = true\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, 0)\n }\n\n function onDialogFieldBlur (e) {\n stop(e)\n nextTick(() => {\n dialogFieldFocused.value = false\n })\n }\n\n function getDialog () {\n const content = [\n h(QField, {\n class: `col-auto ${ state.fieldClass.value }`,\n ...innerFieldProps.value,\n for: state.targetUid.value,\n dark: isOptionsDark.value,\n square: true,\n loading: innerLoadingIndicator.value,\n itemAligned: false,\n filled: true,\n stackLabel: inputValue.value.length !== 0,\n ...state.splitAttrs.listeners.value,\n onFocus: onDialogFieldFocus,\n onBlur: onDialogFieldBlur\n }, {\n ...slots,\n rawControl: () => state.getControl(true),\n before: void 0,\n after: void 0\n })\n ]\n\n menu.value === true && content.push(\n h('div', {\n ref: menuContentRef,\n class: menuContentClass.value + ' scroll',\n style: props.popupContentStyle,\n ...listboxAttrs.value,\n onClick: prevent,\n onScrollPassive: onVirtualScrollEvt\n }, getAllOptions())\n )\n\n return h(QDialog, {\n ref: dialogRef,\n modelValue: dialog.value,\n position: props.useInput === true ? 'top' : void 0,\n transitionShow: transitionShowComputed,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onDialogBeforeHide,\n onHide: onDialogHide,\n onShow: onDialogShow\n }, () => h('div', {\n class: 'q-select__dialog'\n + (isOptionsDark.value === true ? ' q-select__dialog--dark q-dark' : '')\n + (dialogFieldFocused.value === true ? ' q-select__dialog--focused' : '')\n }, content))\n }\n\n function onDialogBeforeHide (e) {\n onControlPopupHide(e)\n\n if (dialogRef.value !== null) {\n dialogRef.value.__updateRefocusTarget(\n state.rootRef.value.querySelector('.q-field__native > [tabindex]:last-child')\n )\n }\n\n state.focused.value = false\n }\n\n function onDialogHide (e) {\n hidePopup()\n state.focused.value === false && emit('blur', e)\n resetInputValue()\n }\n\n function onDialogShow () {\n const el = document.activeElement\n if (\n (el === null || el.id !== state.targetUid.value)\n && targetRef.value !== null\n && targetRef.value !== el\n ) {\n targetRef.value.focus()\n }\n\n setVirtualScrollSize()\n }\n\n function closeMenu () {\n if (dialog.value === true) {\n return\n }\n\n optionIndex.value = -1\n\n if (menu.value === true) {\n menu.value = false\n }\n\n if (state.focused.value === false) {\n if (filterId !== null) {\n clearTimeout(filterId)\n filterId = null\n }\n\n if (state.innerLoading.value === true) {\n emit('filterAbort')\n state.innerLoading.value = false\n innerLoadingIndicator.value = false\n }\n }\n }\n\n function showPopup (e) {\n if (state.editable.value !== true) {\n return\n }\n\n if (hasDialog === true) {\n state.onControlFocusin(e)\n dialog.value = true\n nextTick(() => {\n state.focus()\n })\n }\n else {\n state.focus()\n }\n\n if (props.onFilter !== void 0) {\n filter(inputValue.value)\n }\n else if (noOptions.value !== true || slots[ 'no-option' ] !== void 0) {\n menu.value = true\n }\n }\n\n function hidePopup () {\n dialog.value = false\n closeMenu()\n }\n\n function resetInputValue () {\n props.useInput === true && updateInputValue(\n props.multiple !== true && props.fillInput === true && innerValue.value.length !== 0\n ? getOptionLabel.value(innerValue.value[ 0 ]) || ''\n : '',\n true,\n true\n )\n }\n\n function updateMenu (show) {\n let optionIndex = -1\n\n if (show === true) {\n if (innerValue.value.length !== 0) {\n const val = getOptionValue.value(innerValue.value[ 0 ])\n optionIndex = props.options.findIndex(v => isDeepEqual(getOptionValue.value(v), val))\n }\n\n localResetVirtualScroll(optionIndex)\n }\n\n setOptionIndex(optionIndex)\n }\n\n function rerenderMenu (newLength, oldLength) {\n if (menu.value === true && state.innerLoading.value === false) {\n localResetVirtualScroll(-1, true)\n\n nextTick(() => {\n if (menu.value === true && state.innerLoading.value === false) {\n if (newLength > oldLength) {\n localResetVirtualScroll()\n }\n else {\n updateMenu(true)\n }\n }\n })\n }\n }\n\n function updateMenuPosition () {\n if (dialog.value === false && menuRef.value !== null) {\n menuRef.value.updatePosition()\n }\n }\n\n function onControlPopupShow (e) {\n e !== void 0 && stop(e)\n emit('popupShow', e)\n state.hasPopupOpen = true\n state.onControlFocusin(e)\n }\n\n function onControlPopupHide (e) {\n e !== void 0 && stop(e)\n emit('popupHide', e)\n state.hasPopupOpen = false\n state.onControlFocusout(e)\n }\n\n function updatePreState () {\n hasDialog = $q.platform.is.mobile !== true && props.behavior !== 'dialog'\n ? false\n : props.behavior !== 'menu' && (\n props.useInput === true\n ? slots[ 'no-option' ] !== void 0 || props.onFilter !== void 0 || noOptions.value === false\n : true\n )\n\n transitionShowComputed = $q.platform.is.ios === true && hasDialog === true && props.useInput === true\n ? 'fade'\n : props.transitionShow\n }\n\n onBeforeUpdate(updatePreState)\n onUpdated(updateMenuPosition)\n\n updatePreState()\n\n onBeforeUnmount(() => {\n inputTimer !== null && clearTimeout(inputTimer)\n })\n\n // expose public methods\n Object.assign(proxy, {\n showPopup, hidePopup,\n removeAtIndex, add, toggleOption,\n getOptionIndex: () => optionIndex.value,\n setOptionIndex, moveOptionSelection,\n filter, updateMenuPosition, updateInputValue,\n isOptionSelected,\n getEmittingOptionValue,\n isOptionDisabled: (...args) => isOptionDisabled.value.apply(null, args) === true,\n getOptionValue: (...args) => getOptionValue.value.apply(null, args),\n getOptionLabel: (...args) => getOptionLabel.value.apply(null, args)\n })\n\n Object.assign(state, {\n innerValue,\n\n fieldClass: computed(() =>\n `q-select q-field--auto-height q-select--with${ props.useInput !== true ? 'out' : '' }-input`\n + ` q-select--with${ props.useChips !== true ? 'out' : '' }-chips`\n + ` q-select--${ props.multiple === true ? 'multiple' : 'single' }`\n ),\n\n inputRef,\n targetRef,\n hasValue,\n showPopup,\n\n floatingLabel: computed(() =>\n (props.hideSelected !== true && hasValue.value === true)\n || typeof inputValue.value === 'number'\n || inputValue.value.length !== 0\n || fieldValueIsFilled(props.displayValue)\n ),\n\n getControlChild: () => {\n if (\n state.editable.value !== false && (\n dialog.value === true // dialog always has menu displayed, so need to render it\n || noOptions.value !== true\n || slots[ 'no-option' ] !== void 0\n )\n ) {\n return hasDialog === true ? getDialog() : getMenu()\n }\n else if (state.hasPopupOpen === true) {\n // explicitly set it otherwise TAB will not blur component\n state.hasPopupOpen = false\n }\n },\n\n controlEvents: {\n onFocusin (e) { state.onControlFocusin(e) },\n onFocusout (e) {\n state.onControlFocusout(e, () => {\n resetInputValue()\n closeMenu()\n })\n },\n onClick (e) {\n // label from QField will propagate click on the input\n prevent(e)\n\n if (hasDialog !== true && menu.value === true) {\n closeMenu()\n targetRef.value !== null && targetRef.value.focus()\n return\n }\n\n showPopup(e)\n }\n },\n\n getControl: fromDialog => {\n const child = getSelection()\n const isTarget = fromDialog === true || dialog.value !== true || hasDialog !== true\n\n if (props.useInput === true) {\n child.push(getInput(fromDialog, isTarget))\n }\n // there can be only one (when dialog is opened the control in dialog should be target)\n else if (state.editable.value === true) {\n const attrs = isTarget === true ? comboboxAttrs.value : void 0\n\n child.push(\n h('input', {\n ref: isTarget === true ? targetRef : void 0,\n key: 'd_t',\n class: 'q-select__focus-target',\n id: isTarget === true ? state.targetUid.value : void 0,\n value: ariaCurrentValue.value,\n readonly: true,\n 'data-autofocus': fromDialog === true || props.autofocus === true || void 0,\n ...attrs,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetKeyup,\n onKeypress: onTargetKeypress\n })\n )\n\n if (isTarget === true && typeof props.autocomplete === 'string' && props.autocomplete.length !== 0) {\n child.push(\n h('input', {\n class: 'q-select__autocomplete-input',\n autocomplete: props.autocomplete,\n tabindex: -1,\n onKeyup: onTargetAutocomplete\n })\n )\n }\n }\n\n if (nameProp.value !== void 0 && props.disable !== true && innerOptionsValue.value.length !== 0) {\n const opts = innerOptionsValue.value.map(value => h('option', { value, selected: true }))\n\n child.push(\n h('select', {\n class: 'hidden',\n name: nameProp.value,\n multiple: props.multiple\n }, opts)\n )\n }\n\n const attrs = props.useInput === true || isTarget !== true ? void 0 : state.splitAttrs.attributes.value\n\n return h('div', {\n class: 'q-field__native row items-center',\n ...attrs,\n ...state.splitAttrs.listeners.value\n }, child)\n },\n\n getInnerAppend: () => (\n props.loading !== true && innerLoadingIndicator.value !== true && props.hideDropdownIcon !== true\n ? [\n h(QIcon, {\n class: 'q-select__dropdown-icon' + (menu.value === true ? ' rotate-180' : ''),\n name: dropdownArrowIcon.value\n })\n ]\n : null\n )\n })\n\n return useField(state)\n }\n})\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nconst insetMap = {\n true: 'inset',\n item: 'item-inset',\n 'item-thumbnail': 'item-thumbnail-inset'\n}\n\nexport const margins = {\n xs: 2,\n sm: 4,\n md: 8,\n lg: 16,\n xl: 24\n}\n\nexport default createComponent({\n name: 'QSeparator',\n\n props: {\n ...useDarkProps,\n\n spaced: [ Boolean, String ],\n inset: [ Boolean, String ],\n vertical: Boolean,\n color: String,\n size: String\n },\n\n setup (props) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const orientation = computed(() => (\n props.vertical === true\n ? 'vertical'\n : 'horizontal'\n ))\n\n const orientClass = computed(() => ` q-separator--${ orientation.value }`)\n\n const insetClass = computed(() => (\n props.inset !== false\n ? `${ orientClass.value }-${ insetMap[ props.inset ] }`\n : ''\n ))\n\n const classes = computed(() =>\n `q-separator${ orientClass.value }${ insetClass.value }`\n + (props.color !== void 0 ? ` bg-${ props.color }` : '')\n + (isDark.value === true ? ' q-separator--dark' : '')\n )\n\n const style = computed(() => {\n const acc = {}\n\n if (props.size !== void 0) {\n acc[ props.vertical === true ? 'width' : 'height' ] = props.size\n }\n\n if (props.spaced !== false) {\n const size = props.spaced === true\n ? `${ margins.md }px`\n : props.spaced in margins ? `${ margins[ props.spaced ] }px` : props.spaced\n\n const dir = props.vertical === true\n ? [ 'Left', 'Right' ]\n : [ 'Top', 'Bottom' ]\n\n acc[ `margin${ dir[ 0 ] }` ] = acc[ `margin${ dir[ 1 ] }` ] = size\n }\n\n return acc\n })\n\n return () => h('hr', {\n class: classes.value,\n style: style.value,\n 'aria-orientation': orientation.value\n })\n }\n})\n","import { h } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nconst space = h('div', { class: 'q-space' })\n\nexport default createComponent({\n name: 'QSpace',\n\n setup () {\n return () => space\n }\n})\n","import { h } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'QSpinner',\n\n props: {\n ...useSpinnerProps,\n\n thickness: {\n type: Number,\n default: 5\n }\n },\n\n setup (props) {\n const { cSize, classes } = useSpinner(props)\n\n return () => h('svg', {\n class: classes.value + ' q-spinner-mat',\n width: cSize.value,\n height: cSize.value,\n viewBox: '25 25 50 50'\n }, [\n h('circle', {\n class: 'path',\n cx: '50',\n cy: '50',\n r: '20',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': props.thickness,\n 'stroke-miterlimit': '10'\n })\n ])\n }\n})\n","import { h } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nconst svg = [\n h('circle', {\n cx: '15',\n cy: '15',\n r: '15'\n }, [\n h('animate', {\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 h('animate', {\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 h('circle', {\n cx: '60',\n cy: '15',\n r: '9',\n 'fill-opacity': '.3'\n }, [\n h('animate', {\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 h('animate', {\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 h('circle', {\n cx: '105',\n cy: '15',\n r: '15'\n }, [\n h('animate', {\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 h('animate', {\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\nexport default createComponent({\n name: 'QSpinnerDots',\n\n props: useSpinnerProps,\n\n setup (props) {\n const { cSize, classes } = useSpinner(props)\n\n return () => h('svg', {\n class: classes.value,\n fill: 'currentColor',\n width: cSize.value,\n height: cSize.value,\n viewBox: '0 0 120 30',\n xmlns: 'http://www.w3.org/2000/svg'\n }, svg)\n }\n})\n","import { h } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nconst svg = [\n h('g', {\n 'stroke-width': '4',\n 'stroke-linecap': 'round'\n }, [\n h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(180)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(210)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(240)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(270)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(300)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(330)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(0)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(30)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(60)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(90)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(120)'\n }, [\n h('animate', {\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 h('line', {\n y1: '17',\n y2: '29',\n transform: 'translate(32,32) rotate(150)'\n }, [\n h('animate', {\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\nexport default createComponent({\n name: 'QSpinnerIos',\n\n props: useSpinnerProps,\n\n setup (props) {\n const { cSize, classes } = useSpinner(props)\n\n return () => h('svg', {\n class: classes.value,\n width: cSize.value,\n height: cSize.value,\n stroke: 'currentColor',\n fill: 'currentColor',\n viewBox: '0 0 64 64'\n }, svg)\n }\n})\n","import { computed } from 'vue'\nimport { useSizeDefaults } from '../../composables/private/use-size.js'\n\nexport const useSpinnerProps = {\n size: {\n type: [ Number, String ],\n default: '1em'\n },\n color: String\n}\n\nexport default function useSpinner (props) {\n return {\n cSize: computed(() => (\n props.size in useSizeDefaults\n ? `${ useSizeDefaults[ props.size ] }px`\n : props.size\n )),\n\n classes: computed(() =>\n 'q-spinner' + (props.color ? ` text-${ props.color }` : '')\n )\n }\n}\n","import { h, onBeforeUnmount, Transition } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'QSlideTransition',\n\n props: {\n appear: Boolean,\n duration: {\n type: Number,\n default: 300\n }\n },\n\n emits: [ 'show', 'hide' ],\n\n setup (props, { slots, emit }) {\n let animating = false, doneFn, element\n let timer = null, timerFallback = null, animListener, lastEvent\n\n function cleanup () {\n doneFn && doneFn()\n doneFn = null\n animating = false\n\n if (timer !== null) {\n clearTimeout(timer)\n timer = null\n }\n\n if (timerFallback !== null) {\n clearTimeout(timerFallback)\n timerFallback = null\n }\n\n element !== void 0 && element.removeEventListener('transitionend', animListener)\n animListener = null\n }\n\n function begin (el, height, done) {\n // here overflowY is 'hidden'\n if (height !== void 0) {\n el.style.height = `${ height }px`\n }\n el.style.transition = `height ${ props.duration }ms cubic-bezier(.25, .8, .50, 1)`\n\n animating = true\n doneFn = done\n }\n\n function end (el, event) {\n el.style.overflowY = null\n el.style.height = null\n el.style.transition = null\n cleanup()\n event !== lastEvent && emit(event)\n }\n\n function onEnter (el, done) {\n let pos = 0\n element = el\n\n // if animationg overflowY is already 'hidden'\n if (animating === true) {\n cleanup()\n pos = el.offsetHeight === el.scrollHeight ? 0 : void 0\n }\n else {\n lastEvent = 'hide'\n el.style.overflowY = 'hidden'\n }\n\n begin(el, pos, done)\n\n timer = setTimeout(() => {\n timer = null\n el.style.height = `${ el.scrollHeight }px`\n animListener = evt => {\n timerFallback = null\n\n if (Object(evt) !== evt || evt.target === el) {\n end(el, 'show')\n }\n }\n el.addEventListener('transitionend', animListener)\n timerFallback = setTimeout(animListener, props.duration * 1.1)\n }, 100)\n }\n\n function onLeave (el, done) {\n let pos\n element = el\n\n if (animating === true) {\n cleanup()\n }\n else {\n lastEvent = 'show'\n // we need to set overflowY 'hidden' before calculating the height\n // or else we get small differences\n el.style.overflowY = 'hidden'\n pos = el.scrollHeight\n }\n\n begin(el, pos, done)\n\n timer = setTimeout(() => {\n timer = null\n el.style.height = 0\n animListener = evt => {\n timerFallback = null\n\n if (Object(evt) !== evt || evt.target === el) {\n end(el, 'hide')\n }\n }\n el.addEventListener('transitionend', animListener)\n timerFallback = setTimeout(animListener, props.duration * 1.1)\n }, 100)\n }\n\n onBeforeUnmount(() => {\n animating === true && cleanup()\n })\n\n return () => h(Transition, {\n css: false,\n appear: props.appear,\n onEnter,\n onLeave\n }, slots.default)\n }\n})\n","import { h, ref, computed, inject, getCurrentInstance, KeepAlive } from 'vue'\n\nimport QSlideTransition from '../slide-transition/QSlideTransition.js'\nimport StepHeader from './StepHeader.js'\n\nimport { usePanelChildProps } from '../../composables/private/use-panel.js'\nimport useCache from '../../composables/private/use-cache.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stepperKey, emptyRenderFn } from '../../utils/private/symbols.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nfunction getStepWrapper (slots) {\n return h('div', {\n class: 'q-stepper__step-content'\n }, [\n h('div', {\n class: 'q-stepper__step-inner'\n }, hSlot(slots.default))\n ])\n}\n\nconst PanelWrapper = {\n setup (_, { slots }) {\n return () => getStepWrapper(slots)\n }\n}\n\nexport default createComponent({\n name: 'QStep',\n\n props: {\n ...usePanelChildProps,\n\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 onScroll: [ Function, Array ]\n },\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const $stepper = inject(stepperKey, emptyRenderFn)\n if ($stepper === emptyRenderFn) {\n console.error('QStep needs to be a child of QStepper')\n return emptyRenderFn\n }\n\n const { getCacheWithFn } = useCache()\n\n const rootRef = ref(null)\n\n const isActive = computed(() => $stepper.value.modelValue === props.name)\n\n const scrollEvent = computed(() => (\n ($q.platform.is.ios !== true && $q.platform.is.chrome === true)\n || isActive.value !== true\n || $stepper.value.vertical !== true\n ? {}\n : {\n onScroll (e) {\n const { target } = e\n if (target.scrollTop > 0) {\n target.scrollTop = 0\n }\n props.onScroll !== void 0 && emit('scroll', e)\n }\n }\n ))\n\n const contentKey = computed(() => (\n typeof props.name === 'string' || typeof props.name === 'number'\n ? props.name\n : String(props.name)\n ))\n\n function getStepContent () {\n const vertical = $stepper.value.vertical\n\n if (vertical === true && $stepper.value.keepAlive === true) {\n return h(\n KeepAlive,\n $stepper.value.keepAliveProps.value,\n isActive.value === true\n ? [\n h(\n $stepper.value.needsUniqueKeepAliveWrapper.value === true\n ? getCacheWithFn(contentKey.value, () => ({ ...PanelWrapper, name: contentKey.value }))\n : PanelWrapper,\n { key: contentKey.value },\n slots.default\n )\n ]\n : void 0\n )\n }\n\n return vertical !== true || isActive.value === true\n ? getStepWrapper(slots)\n : void 0\n }\n\n return () => h(\n 'div',\n { ref: rootRef, class: 'q-stepper__step', role: 'tabpanel', ...scrollEvent.value },\n $stepper.value.vertical === true\n ? [\n h(StepHeader, {\n stepper: $stepper.value,\n step: props,\n goToPanel: $stepper.value.goToPanel\n }),\n\n $stepper.value.animated === true\n ? h(QSlideTransition, getStepContent)\n : getStepContent()\n ]\n : [ getStepContent() ]\n )\n }\n})\n","import { h, computed, provide, getCurrentInstance } from 'vue'\n\nimport StepHeader from './StepHeader.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport usePanel, { usePanelProps, usePanelEmits } from '../../composables/private/use-panel.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { stepperKey } from '../../utils/private/symbols.js'\nimport { hSlot, hMergeSlot, hDir } from '../../utils/private/render.js'\n\nconst camelRE = /(-\\w)/g\n\nfunction camelizeProps (props) {\n const acc = {}\n for (const key in props) {\n const newKey = key.replace(camelRE, m => m[ 1 ].toUpperCase())\n acc[ newKey ] = props[ key ]\n }\n return acc\n}\n\nexport default createComponent({\n name: 'QStepper',\n\n props: {\n ...useDarkProps,\n ...usePanelProps,\n\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 emits: usePanelEmits,\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const {\n updatePanelsList, isValidPanelName,\n updatePanelIndex, getPanelContent,\n getPanels, panelDirectives, goToPanel,\n keepAliveProps, needsUniqueKeepAliveWrapper\n } = usePanel()\n\n provide(stepperKey, computed(() => ({\n goToPanel,\n keepAliveProps,\n needsUniqueKeepAliveWrapper,\n ...props\n })))\n\n const classes = computed(() =>\n `q-stepper q-stepper--${ props.vertical === true ? 'vertical' : 'horizontal' }`\n + (props.flat === true ? ' q-stepper--flat' : '')\n + (props.bordered === true ? ' q-stepper--bordered' : '')\n + (isDark.value === true ? ' q-stepper--dark q-dark' : '')\n )\n\n const headerClasses = computed(() =>\n 'q-stepper__header row items-stretch justify-between'\n + ` q-stepper__header--${ props.alternativeLabels === true ? 'alternative' : 'standard' }-labels`\n + (props.flat === false || props.bordered === true ? ' q-stepper__header--border' : '')\n + (props.contracted === true ? ' q-stepper__header--contracted' : '')\n + (props.headerClass !== void 0 ? ` ${ props.headerClass }` : '')\n )\n\n function getContent () {\n const top = hSlot(slots.message, [])\n\n if (props.vertical === true) {\n isValidPanelName(props.modelValue) && updatePanelIndex()\n\n const content = h('div', {\n class: 'q-stepper__content'\n }, hSlot(slots.default))\n\n return top === void 0\n ? [ content ]\n : top.concat(content)\n }\n\n return [\n h(\n 'div',\n { class: headerClasses.value },\n getPanels().map(panel => {\n const step = camelizeProps(panel.props)\n\n return h(StepHeader, {\n key: step.name,\n stepper: props,\n step,\n goToPanel\n })\n })\n ),\n\n top,\n\n hDir(\n 'div',\n { class: 'q-stepper__content q-panel-parent' },\n getPanelContent(),\n 'cont',\n props.swipeable,\n () => panelDirectives.value\n )\n ]\n }\n\n return () => {\n updatePanelsList(slots)\n\n return h('div', {\n class: classes.value\n }, hMergeSlot(slots.navigation, getContent()))\n }\n }\n})\n","import { h } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QStepperNavigation',\n\n setup (_, { slots }) {\n return () => h('div', { class: 'q-stepper__nav' }, hSlot(slots.default))\n }\n})\n","import { h, ref, computed, withDirectives, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport Ripple from '../../directives/Ripple.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'StepHeader',\n\n props: {\n stepper: {},\n step: {},\n goToPanel: Function\n },\n\n setup (props, { attrs }) {\n const { proxy: { $q } } = getCurrentInstance()\n const blurRef = ref(null)\n\n const isActive = computed(() => props.stepper.modelValue === props.step.name)\n\n const isDisable = computed(() => {\n const opt = props.step.disable\n return opt === true || opt === ''\n })\n\n const isError = computed(() => {\n const opt = props.step.error\n return opt === true || opt === ''\n })\n\n const isDone = computed(() => {\n const opt = props.step.done\n return isDisable.value === false && (opt === true || opt === '')\n })\n\n const headerNav = computed(() => {\n const\n opt = props.step.headerNav,\n nav = opt === true || opt === '' || opt === void 0\n\n return isDisable.value === false\n && props.stepper.headerNav\n && nav\n })\n\n const hasPrefix = computed(() => {\n return props.step.prefix\n && (isActive.value === false || props.stepper.activeIcon === 'none')\n && (isError.value === false || props.stepper.errorIcon === 'none')\n && (isDone.value === false || props.stepper.doneIcon === 'none')\n })\n\n const icon = computed(() => {\n const defaultIcon = props.step.icon || props.stepper.inactiveIcon\n\n if (isActive.value === true) {\n const icon = props.step.activeIcon || props.stepper.activeIcon\n return icon === 'none'\n ? defaultIcon\n : icon || $q.iconSet.stepper.active\n }\n\n if (isError.value === true) {\n const icon = props.step.errorIcon || props.stepper.errorIcon\n return icon === 'none'\n ? defaultIcon\n : icon || $q.iconSet.stepper.error\n }\n\n if (isDisable.value === false && isDone.value === true) {\n const icon = props.step.doneIcon || props.stepper.doneIcon\n return icon === 'none'\n ? defaultIcon\n : icon || $q.iconSet.stepper.done\n }\n\n return defaultIcon\n })\n\n const color = computed(() => {\n const errorColor = isError.value === true\n ? props.step.errorColor || props.stepper.errorColor\n : void 0\n\n if (isActive.value === true) {\n const color = props.step.activeColor || props.stepper.activeColor || props.step.color\n return color !== void 0\n ? color\n : errorColor\n }\n if (errorColor !== void 0) {\n return errorColor\n }\n if (isDisable.value === false && isDone.value === true) {\n return props.step.doneColor || props.stepper.doneColor || props.step.color || props.stepper.inactiveColor\n }\n\n return props.step.color || props.stepper.inactiveColor\n })\n\n const classes = computed(() => {\n return 'q-stepper__tab col-grow flex items-center no-wrap relative-position'\n + (color.value !== void 0 ? ` text-${ color.value }` : '')\n + (isError.value === true\n ? ' q-stepper__tab--error q-stepper__tab--error-with-' + (hasPrefix.value === true ? 'prefix' : 'icon')\n : '')\n + (isActive.value === true ? ' q-stepper__tab--active' : '')\n + (isDone.value === true ? ' q-stepper__tab--done' : '')\n + (headerNav.value === true ? ' q-stepper__tab--navigation q-focusable q-hoverable' : '')\n + (isDisable.value === true ? ' q-stepper__tab--disabled' : '')\n })\n\n const ripple = computed(() => (\n props.stepper.headerNav !== true\n ? false\n : headerNav.value\n ))\n\n function onActivate () {\n blurRef.value !== null && blurRef.value.focus()\n isActive.value === false && props.goToPanel(props.step.name)\n }\n\n function onKeyup (e) {\n if (e.keyCode === 13 && isActive.value === false) {\n props.goToPanel(props.step.name)\n }\n }\n\n return () => {\n const data = { class: classes.value }\n\n if (headerNav.value === true) {\n data.onClick = onActivate\n data.onKeyup = onKeyup\n\n Object.assign(data,\n isDisable.value === true\n ? { tabindex: -1, 'aria-disabled': 'true' }\n : { tabindex: attrs.tabindex || 0 }\n )\n }\n\n const child = [\n h('div', { class: 'q-focus-helper', tabindex: -1, ref: blurRef }),\n\n h('div', { class: 'q-stepper__dot row flex-center q-stepper__line relative-position' }, [\n h('span', { class: 'row flex-center' }, [\n hasPrefix.value === true\n ? props.step.prefix\n : h(QIcon, { name: icon.value })\n ])\n ])\n ]\n\n if (props.step.title !== void 0 && props.step.title !== null) {\n const content = [\n h('div', { class: 'q-stepper__title' }, props.step.title)\n ]\n\n if (props.step.caption !== void 0 && props.step.caption !== null) {\n content.push(\n h('div', { class: 'q-stepper__caption' }, props.step.caption)\n )\n }\n\n child.push(\n h('div', {\n class: 'q-stepper__label q-stepper__line relative-position'\n }, content)\n )\n }\n\n return withDirectives(\n h('div', data, child),\n [ [ Ripple, ripple.value ] ]\n )\n }\n }\n})\n","import { h } from 'vue'\n\nimport { usePanelChildProps } from '../../composables/private/use-panel.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QTabPanel',\n\n props: usePanelChildProps,\n\n setup (_, { slots }) {\n return () => h('div', { class: 'q-tab-panel', role: 'tabpanel' }, hSlot(slots.default))\n }\n})\n","import { computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport usePanel, { usePanelProps, usePanelEmits } from '../../composables/private/use-panel.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hDir } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QTabPanels',\n\n props: {\n ...usePanelProps,\n ...useDarkProps\n },\n\n emits: usePanelEmits,\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const { updatePanelsList, getPanelContent, panelDirectives } = usePanel()\n\n const classes = computed(() =>\n 'q-tab-panels q-panel-parent'\n + (isDark.value === true ? ' q-tab-panels--dark q-dark' : '')\n )\n\n return () => {\n updatePanelsList(slots)\n\n return hDir(\n 'div',\n { class: classes.value },\n getPanelContent(),\n 'pan',\n props.swipeable,\n () => panelDirectives.value\n )\n }\n }\n})\n","import { h, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot, hUniqueSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QTh',\n\n props: {\n props: Object,\n autoWidth: Boolean\n },\n\n emits: [ 'click' ],\n\n setup (props, { slots, emit }) {\n const vm = getCurrentInstance()\n const { proxy: { $q } } = vm\n\n const onClick = evt => { emit('click', evt) }\n\n return () => {\n if (props.props === void 0) {\n return h('th', {\n class: props.autoWidth === true ? 'q-table--col-auto-width' : '',\n onClick\n }, hSlot(slots.default))\n }\n\n let col, child\n const name = vm.vnode.key\n\n if (name) {\n col = props.props.colsMap[ name ]\n if (col === void 0) { return }\n }\n else {\n col = props.props.col\n }\n\n if (col.sortable === true) {\n const action = col.align === 'right'\n ? 'unshift'\n : 'push'\n\n child = hUniqueSlot(slots.default, [])\n child[ action ](\n h(QIcon, {\n class: col.__iconClass,\n name: $q.iconSet.table.arrowUp\n })\n )\n }\n else {\n child = hSlot(slots.default)\n }\n\n const data = {\n class: col.__thClass\n + (props.autoWidth === true ? ' q-table--col-auto-width' : ''),\n style: col.headerStyle,\n onClick: evt => {\n col.sortable === true && props.props.sort(col) // eslint-disable-line\n onClick(evt)\n }\n }\n\n return h('th', data, child)\n }\n }\n})\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nconst separatorValues = [ 'horizontal', 'vertical', 'cell', 'none' ]\n\nexport default createComponent({\n name: 'QMarkupTable',\n\n props: {\n ...useDarkProps,\n\n dense: Boolean,\n flat: Boolean,\n bordered: Boolean,\n square: Boolean,\n wrapCells: Boolean,\n\n separator: {\n type: String,\n default: 'horizontal',\n validator: v => separatorValues.includes(v)\n }\n },\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const classes = computed(() =>\n 'q-markup-table q-table__container q-table__card'\n + ` q-table--${ props.separator }-separator`\n + (isDark.value === true ? ' q-table--dark q-table__card--dark q-dark' : '')\n + (props.dense === true ? ' q-table--dense' : '')\n + (props.flat === true ? ' q-table--flat' : '')\n + (props.bordered === true ? ' q-table--bordered' : '')\n + (props.square === true ? ' q-table--square' : '')\n + (props.wrapCells === false ? ' q-table--no-wrap' : '')\n )\n\n return () => h('div', {\n class: classes.value\n }, [\n h('table', { class: 'q-table' }, hSlot(slots.default))\n ])\n }\n})\n","import { h } from 'vue'\n\nexport default function (props, content) {\n return h('div', props, [\n h('table', { class: 'q-table' }, content)\n ])\n}\n","import { h, ref, computed, watch, onBeforeMount, onMounted, onBeforeUnmount, onActivated, onDeactivated } 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 { useVirtualScroll, useVirtualScrollProps } from './use-virtual-scroll.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { listenOpts } from '../../utils/event.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\n\nconst comps = {\n list: QList,\n table: QMarkupTable\n}\n\nconst typeOptions = [ 'list', 'table', '__qtable' ]\n\nexport default createComponent({\n name: 'QVirtualScroll',\n\n props: {\n ...useVirtualScrollProps,\n\n type: {\n type: String,\n default: 'list',\n validator: v => typeOptions.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 setup (props, { slots, attrs }) {\n let localScrollTarget\n const rootRef = ref(null)\n\n const virtualScrollLength = computed(() => (\n props.itemsSize >= 0 && props.itemsFn !== void 0\n ? parseInt(props.itemsSize, 10)\n : (Array.isArray(props.items) ? props.items.length : 0)\n ))\n\n const {\n virtualScrollSliceRange,\n localResetVirtualScroll,\n padVirtualScroll,\n onVirtualScrollEvt\n } = useVirtualScroll({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl\n })\n\n const virtualScrollScope = computed(() => {\n if (virtualScrollLength.value === 0) {\n return []\n }\n\n const mapFn = (item, i) => ({\n index: virtualScrollSliceRange.value.from + i,\n item\n })\n\n return props.itemsFn === void 0\n ? props.items.slice(virtualScrollSliceRange.value.from, virtualScrollSliceRange.value.to).map(mapFn)\n : props.itemsFn(virtualScrollSliceRange.value.from, virtualScrollSliceRange.value.to - virtualScrollSliceRange.value.from).map(mapFn)\n })\n\n const classes = computed(() =>\n 'q-virtual-scroll q-virtual-scroll' + (props.virtualScrollHorizontal === true ? '--horizontal' : '--vertical')\n + (props.scrollTarget !== void 0 ? '' : ' scroll')\n )\n\n const attributes = computed(() => (\n props.scrollTarget !== void 0 ? {} : { tabindex: 0 }\n ))\n\n watch(virtualScrollLength, () => {\n localResetVirtualScroll()\n })\n\n watch(() => props.scrollTarget, () => {\n unconfigureScrollTarget()\n configureScrollTarget()\n })\n\n function getVirtualScrollEl () {\n return rootRef.value.$el || rootRef.value\n }\n\n function getVirtualScrollTarget () {\n return localScrollTarget\n }\n\n function configureScrollTarget () {\n localScrollTarget = getScrollTarget(getVirtualScrollEl(), props.scrollTarget)\n localScrollTarget.addEventListener('scroll', onVirtualScrollEvt, listenOpts.passive)\n }\n\n function unconfigureScrollTarget () {\n if (localScrollTarget !== void 0) {\n localScrollTarget.removeEventListener('scroll', onVirtualScrollEvt, listenOpts.passive)\n localScrollTarget = void 0\n }\n }\n\n function __getVirtualChildren () {\n let child = padVirtualScroll(\n props.type === 'list' ? 'div' : 'tbody',\n virtualScrollScope.value.map(slots.default)\n )\n\n if (slots.before !== void 0) {\n child = slots.before().concat(child)\n }\n\n return hMergeSlot(slots.after, child)\n }\n\n onBeforeMount(() => {\n localResetVirtualScroll()\n })\n\n onMounted(() => {\n configureScrollTarget()\n })\n\n onActivated(() => {\n configureScrollTarget()\n })\n\n onDeactivated(() => {\n unconfigureScrollTarget()\n })\n\n onBeforeUnmount(() => {\n unconfigureScrollTarget()\n })\n\n return () => {\n if (slots.default === void 0) {\n console.error('QVirtualScroll: default scoped slot is required for rendering')\n return\n }\n\n return props.type === '__qtable'\n ? getTableMiddle(\n { ref: rootRef, class: 'q-table__middle ' + classes.value },\n __getVirtualChildren()\n )\n : h(comps[ props.type ], {\n ...attrs,\n ref: rootRef,\n class: [ attrs.class, classes.value ],\n ...attributes.value\n }, __getVirtualChildren)\n }\n }\n})\n","export 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 { computed } from 'vue'\n\nimport { sortDate } from '../../utils/private/sort.js'\nimport { isNumber, isDate, isObject } from '../../utils/is.js'\n\nexport const useTableSortProps = {\n sortMethod: Function,\n binaryStateSort: Boolean,\n columnSortOrder: {\n type: String,\n validator: v => v === 'ad' || v === 'da',\n default: 'ad'\n }\n}\n\nexport function useTableSort (props, computedPagination, colList, setPagination) {\n const columnToSort = computed(() => {\n const { sortBy } = computedPagination.value\n\n return sortBy\n ? colList.value.find(def => def.name === sortBy) || null\n : null\n })\n\n const computedSortMethod = computed(() => (\n props.sortMethod !== void 0\n ? props.sortMethod\n : (data, sortBy, descending) => {\n const col = colList.value.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 function sort (col /* String(col name) or Object(col definition) */) {\n let sortOrder = props.columnSortOrder\n\n if (isObject(col) === true) {\n if (col.sortOrder) {\n sortOrder = col.sortOrder\n }\n\n col = col.name\n }\n else {\n const def = colList.value.find(def => def.name === col)\n if (def !== void 0 && def.sortOrder) {\n sortOrder = def.sortOrder\n }\n }\n\n let { sortBy, descending } = computedPagination.value\n\n if (sortBy !== col) {\n sortBy = col\n descending = sortOrder === 'da'\n }\n else if (props.binaryStateSort === true) {\n descending = !descending\n }\n else if (descending === true) {\n if (sortOrder === 'ad') {\n sortBy = null\n }\n else {\n descending = false\n }\n }\n else { // ascending\n if (sortOrder === 'ad') {\n descending = true\n }\n else {\n sortBy = null\n }\n }\n\n setPagination({ sortBy, descending, page: 1 })\n }\n\n return {\n columnToSort,\n computedSortMethod,\n sort\n }\n}\n","import { computed, watch, nextTick } from 'vue'\n\nexport const useTableFilterProps = {\n filter: [ String, Object ],\n filterMethod: Function\n}\n\nexport function useTableFilter (props, setPagination) {\n const computedFilterMethod = computed(() => (\n props.filterMethod !== void 0\n ? props.filterMethod\n : (rows, terms, cols, cellValue) => {\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 watch(\n () => props.filter,\n () => {\n nextTick(() => {\n setPagination({ page: 1 }, true)\n })\n },\n { deep: true }\n )\n\n return { computedFilterMethod }\n}\n","import { ref, computed, watch, nextTick } from 'vue'\n\nfunction 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 const useTablePaginationProps = {\n pagination: Object,\n rowsPerPageOptions: {\n type: Array,\n default: () => [ 5, 7, 10, 15, 20, 25, 50, 0 ]\n },\n\n 'onUpdate:pagination': [ Function, Array ]\n}\n\nexport function useTablePaginationState (vm, getCellValue) {\n const { props, emit } = vm\n\n const innerPagination = ref(\n Object.assign({\n sortBy: null,\n descending: false,\n page: 1,\n rowsPerPage: props.rowsPerPageOptions.length !== 0\n ? props.rowsPerPageOptions[ 0 ]\n : 5\n }, props.pagination)\n )\n\n const computedPagination = computed(() => {\n const pag = props[ 'onUpdate:pagination' ] !== void 0\n ? { ...innerPagination.value, ...props.pagination }\n : innerPagination.value\n\n return fixPagination(pag)\n })\n\n const isServerSide = computed(() => computedPagination.value.rowsNumber !== void 0)\n\n function sendServerRequest (pagination) {\n requestServerInteraction({\n pagination,\n filter: props.filter\n })\n }\n\n function requestServerInteraction (prop = {}) {\n nextTick(() => {\n emit('request', {\n pagination: prop.pagination || computedPagination.value,\n filter: prop.filter || props.filter,\n getCellValue\n })\n })\n }\n\n function setPagination (val, forceServerRequest) {\n const newPagination = fixPagination({\n ...computedPagination.value,\n ...val\n })\n\n if (samePagination(computedPagination.value, newPagination) === true) {\n if (isServerSide.value === true && forceServerRequest === true) {\n sendServerRequest(newPagination)\n }\n return\n }\n\n if (isServerSide.value === true) {\n sendServerRequest(newPagination)\n return\n }\n\n if (\n props.pagination !== void 0\n && props[ 'onUpdate:pagination' ] !== void 0\n ) {\n emit('update:pagination', newPagination)\n }\n else {\n innerPagination.value = newPagination\n }\n }\n\n return {\n innerPagination,\n computedPagination,\n isServerSide,\n\n requestServerInteraction,\n setPagination\n }\n}\n\nexport function useTablePagination (vm, innerPagination, computedPagination, isServerSide, setPagination, filteredSortedRowsNumber) {\n const { props, emit, proxy: { $q } } = vm\n\n const computedRowsNumber = computed(() => (\n isServerSide.value === true\n ? computedPagination.value.rowsNumber || 0\n : filteredSortedRowsNumber.value\n ))\n\n const firstRowIndex = computed(() => {\n const { page, rowsPerPage } = computedPagination.value\n return (page - 1) * rowsPerPage\n })\n\n const lastRowIndex = computed(() => {\n const { page, rowsPerPage } = computedPagination.value\n return page * rowsPerPage\n })\n\n const isFirstPage = computed(() => computedPagination.value.page === 1)\n\n const pagesNumber = computed(() => (\n computedPagination.value.rowsPerPage === 0\n ? 1\n : Math.max(\n 1,\n Math.ceil(computedRowsNumber.value / computedPagination.value.rowsPerPage)\n )\n ))\n\n const isLastPage = computed(() => (\n lastRowIndex.value === 0\n ? true\n : computedPagination.value.page >= pagesNumber.value\n ))\n\n const computedRowsPerPageOptions = computed(() => {\n const opts = props.rowsPerPageOptions.includes(innerPagination.value.rowsPerPage)\n ? props.rowsPerPageOptions\n : [ innerPagination.value.rowsPerPage ].concat(props.rowsPerPageOptions)\n\n return opts.map(count => ({\n label: count === 0 ? $q.lang.table.allRows : '' + count,\n value: count\n }))\n })\n\n watch(pagesNumber, (lastPage, oldLastPage) => {\n if (lastPage === oldLastPage) {\n return\n }\n\n const currentPage = computedPagination.value.page\n if (lastPage && !currentPage) {\n setPagination({ page: 1 })\n }\n else if (lastPage < currentPage) {\n setPagination({ page: lastPage })\n }\n })\n\n function firstPage () {\n setPagination({ page: 1 })\n }\n\n function prevPage () {\n const { page } = computedPagination.value\n if (page > 1) {\n setPagination({ page: page - 1 })\n }\n }\n\n function nextPage () {\n const { page, rowsPerPage } = computedPagination.value\n if (lastRowIndex.value > 0 && page * rowsPerPage < computedRowsNumber.value) {\n setPagination({ page: page + 1 })\n }\n }\n\n function lastPage () {\n setPagination({ page: pagesNumber.value })\n }\n\n if (props[ 'onUpdate:pagination' ] !== void 0) {\n emit('update:pagination', { ...computedPagination.value })\n }\n\n return {\n firstRowIndex,\n lastRowIndex,\n isFirstPage,\n isLastPage,\n pagesNumber,\n computedRowsPerPageOptions,\n computedRowsNumber,\n\n firstPage,\n prevPage,\n nextPage,\n lastPage\n }\n}\n","import { computed } from 'vue'\n\nexport const useTableRowSelectionProps = {\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\nexport const useTableRowSelectionEmits = [ 'update:selected', 'selection' ]\n\nexport function useTableRowSelection (props, emit, computedRows, getRowKey) {\n const selectedKeys = computed(() => {\n const keys = {}\n props.selected.map(getRowKey.value).forEach(key => {\n keys[ key ] = true\n })\n return keys\n })\n\n const hasSelectionMode = computed(() => {\n return props.selection !== 'none'\n })\n\n const singleSelection = computed(() => {\n return props.selection === 'single'\n })\n\n const multipleSelection = computed(() => {\n return props.selection === 'multiple'\n })\n\n const allRowsSelected = computed(() =>\n computedRows.value.length !== 0 && computedRows.value.every(\n row => selectedKeys.value[ getRowKey.value(row) ] === true\n )\n )\n\n const someRowsSelected = computed(() =>\n allRowsSelected.value !== true\n && computedRows.value.some(row => selectedKeys.value[ getRowKey.value(row) ] === true)\n )\n\n const rowsSelectedNumber = computed(() => props.selected.length)\n\n function isRowSelected (key) {\n return selectedKeys.value[ key ] === true\n }\n\n function clearSelection () {\n emit('update:selected', [])\n }\n\n function updateSelection (keys, rows, added, evt) {\n emit('selection', { rows, added, keys, evt })\n\n const payload = singleSelection.value === true\n ? (added === true ? rows : [])\n : (\n added === true\n ? props.selected.concat(rows)\n : props.selected.filter(\n row => keys.includes(getRowKey.value(row)) === false\n )\n )\n\n emit('update:selected', payload)\n }\n\n return {\n hasSelectionMode,\n singleSelection,\n multipleSelection,\n allRowsSelected,\n someRowsSelected,\n rowsSelectedNumber,\n\n isRowSelected,\n clearSelection,\n updateSelection\n }\n}\n","import { ref, watch } from 'vue'\n\nfunction getVal (val) {\n return Array.isArray(val)\n ? val.slice()\n : []\n}\n\nexport const useTableRowExpandProps = {\n expanded: Array // v-model:expanded\n}\n\nexport const useTableRowExpandEmits = [ 'update:expanded' ]\n\nexport function useTableRowExpand (props, emit) {\n const innerExpanded = ref(getVal(props.expanded))\n\n watch(() => props.expanded, val => {\n innerExpanded.value = getVal(val)\n })\n\n function isRowExpanded (key) {\n return innerExpanded.value.includes(key)\n }\n\n function setExpanded (val) {\n if (props.expanded !== void 0) {\n emit('update:expanded', val)\n }\n else {\n innerExpanded.value = val\n }\n }\n\n function updateExpanded (key, add) {\n const target = innerExpanded.value.slice()\n const index = target.indexOf(key)\n\n if (add === true) {\n if (index === -1) {\n target.push(key)\n setExpanded(target)\n }\n }\n else if (index !== -1) {\n target.splice(index, 1)\n setExpanded(target)\n }\n }\n\n return {\n isRowExpanded,\n setExpanded,\n updateExpanded\n }\n}\n","import { computed } from 'vue'\n\nimport { isNumber } from '../../utils/is.js'\n\nexport const useTableColumnSelectionProps = {\n visibleColumns: Array\n}\n\nexport function useTableColumnSelection (props, computedPagination, hasSelectionMode) {\n const colList = computed(() => {\n if (props.columns !== void 0) {\n return props.columns\n }\n\n // we infer columns from first row\n const row = props.rows[ 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 const computedCols = computed(() => {\n const { sortBy, descending } = computedPagination.value\n\n const cols = props.visibleColumns !== void 0\n ? colList.value.filter(col => col.required === true || props.visibleColumns.includes(col.name) === true)\n : colList.value\n\n return cols.map(col => {\n const align = col.align || 'right'\n const alignClass = `text-${ align }`\n\n return {\n ...col,\n align,\n __iconClass: `q-table__sort-icon q-table__sort-icon--${ align }`,\n __thClass: alignClass\n + (col.headerClasses !== void 0 ? ' ' + col.headerClasses : '')\n + (col.sortable === true ? ' sortable' : '')\n + (col.name === sortBy ? ` sorted ${ descending === true ? 'sort-desc' : '' }` : ''),\n\n __tdStyle: col.style !== void 0\n ? (\n typeof col.style !== 'function'\n ? () => col.style\n : col.style\n )\n : () => null,\n\n __tdClass: col.classes !== void 0\n ? (\n typeof col.classes !== 'function'\n ? () => alignClass + ' ' + col.classes\n : row => alignClass + ' ' + col.classes(row)\n )\n : () => alignClass\n }\n })\n })\n\n const computedColsMap = computed(() => {\n const names = {}\n computedCols.value.forEach(col => {\n names[ col.name ] = col\n })\n return names\n })\n\n const computedColspan = computed(() => {\n return props.tableColspan !== void 0\n ? props.tableColspan\n : computedCols.value.length + (hasSelectionMode.value === true ? 1 : 0)\n })\n\n return {\n colList,\n computedCols,\n computedColsMap,\n computedColspan\n }\n}\n","import { h, ref, computed, watch, getCurrentInstance } from 'vue'\n\nimport QTh from './QTh.js'\n\nimport QSeparator from '../separator/QSeparator.js'\nimport QIcon from '../icon/QIcon.js'\nimport QVirtualScroll from '../virtual-scroll/QVirtualScroll.js'\nimport QSelect from '../select/QSelect.js'\nimport QLinearProgress from '../linear-progress/QLinearProgress.js'\nimport QCheckbox from '../checkbox/QCheckbox.js'\nimport QBtn from '../btn/QBtn.js'\n\nimport getTableMiddle from './get-table-middle.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport { commonVirtPropsList } from '../virtual-scroll/use-virtual-scroll.js'\nimport useFullscreen, { useFullscreenProps, useFullscreenEmits } from '../../composables/private/use-fullscreen.js'\n\nimport { useTableSort, useTableSortProps } from './table-sort.js'\nimport { useTableFilter, useTableFilterProps } from './table-filter.js'\nimport { useTablePaginationState, useTablePagination, useTablePaginationProps } from './table-pagination.js'\nimport { useTableRowSelection, useTableRowSelectionProps, useTableRowSelectionEmits } from './table-row-selection.js'\nimport { useTableRowExpand, useTableRowExpandProps, useTableRowExpandEmits } from './table-row-expand.js'\nimport { useTableColumnSelection, useTableColumnSelectionProps } from './table-column-selection.js'\n\nimport { injectProp, injectMultipleProps } from '../../utils/private/inject-obj-prop.js'\nimport { createComponent } from '../../utils/private/create.js'\n\nconst bottomClass = 'q-table__bottom row items-center'\n\nconst commonVirtPropsObj = {}\ncommonVirtPropsList.forEach(p => { commonVirtPropsObj[ p ] = {} })\n\nexport default createComponent({\n name: 'QTable',\n\n props: {\n rows: {\n type: Array,\n default: () => []\n },\n rowKey: {\n type: [ String, Function ],\n default: 'id'\n },\n\n columns: Array,\n loading: 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 virtualScrollTarget: {\n default: void 0\n },\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 hideBottom: Boolean,\n hideSelectedBanner: Boolean,\n hideNoData: Boolean,\n hidePagination: Boolean,\n\n onRowClick: Function,\n onRowDblclick: Function,\n onRowContextmenu: Function,\n\n ...useDarkProps,\n ...useFullscreenProps,\n\n ...useTableColumnSelectionProps,\n ...useTableFilterProps,\n ...useTablePaginationProps,\n ...useTableRowExpandProps,\n ...useTableRowSelectionProps,\n ...useTableSortProps\n },\n\n emits: [\n 'request', 'virtualScroll',\n ...useFullscreenEmits,\n ...useTableRowExpandEmits,\n ...useTableRowSelectionEmits\n ],\n\n setup (props, { slots, emit }) {\n const vm = getCurrentInstance()\n const { proxy: { $q } } = vm\n\n const isDark = useDark(props, $q)\n const { inFullscreen, toggleFullscreen } = useFullscreen()\n\n const getRowKey = computed(() => (\n typeof props.rowKey === 'function'\n ? props.rowKey\n : row => row[ props.rowKey ]\n ))\n\n const rootRef = ref(null)\n const virtScrollRef = ref(null)\n const hasVirtScroll = computed(() => props.grid !== true && props.virtualScroll === true)\n\n const cardDefaultClass = computed(() =>\n ' q-table__card'\n + (isDark.value === true ? ' q-table__card--dark q-dark' : '')\n + (props.square === true ? ' q-table--square' : '')\n + (props.flat === true ? ' q-table--flat' : '')\n + (props.bordered === true ? ' q-table--bordered' : '')\n )\n\n const __containerClass = computed(() =>\n `q-table__container q-table--${ props.separator }-separator column no-wrap`\n + (props.grid === true ? ' q-table--grid' : cardDefaultClass.value)\n + (isDark.value === true ? ' q-table--dark' : '')\n + (props.dense === true ? ' q-table--dense' : '')\n + (props.wrapCells === false ? ' q-table--no-wrap' : '')\n + (inFullscreen.value === true ? ' fullscreen scroll' : '')\n )\n\n const containerClass = computed(() =>\n __containerClass.value + (props.loading === true ? ' q-table--loading' : '')\n )\n\n watch(\n () => props.tableStyle + props.tableClass + props.tableHeaderStyle + props.tableHeaderClass + __containerClass.value,\n () => { hasVirtScroll.value === true && virtScrollRef.value !== null && virtScrollRef.value.reset() }\n )\n\n const {\n innerPagination,\n computedPagination,\n isServerSide,\n\n requestServerInteraction,\n setPagination\n } = useTablePaginationState(vm, getCellValue)\n\n const { computedFilterMethod } = useTableFilter(props, setPagination)\n const { isRowExpanded, setExpanded, updateExpanded } = useTableRowExpand(props, emit)\n\n const filteredSortedRows = computed(() => {\n let rows = props.rows\n\n if (isServerSide.value === true || rows.length === 0) {\n return rows\n }\n\n const { sortBy, descending } = computedPagination.value\n\n if (props.filter) {\n rows = computedFilterMethod.value(rows, props.filter, computedCols.value, getCellValue)\n }\n\n if (columnToSort.value !== null) {\n rows = computedSortMethod.value(\n props.rows === rows ? rows.slice() : rows,\n sortBy,\n descending\n )\n }\n\n return rows\n })\n\n const filteredSortedRowsNumber = computed(() => filteredSortedRows.value.length)\n\n const computedRows = computed(() => {\n let rows = filteredSortedRows.value\n\n if (isServerSide.value === true) {\n return rows\n }\n\n const { rowsPerPage } = computedPagination.value\n\n if (rowsPerPage !== 0) {\n if (firstRowIndex.value === 0 && props.rows !== rows) {\n if (rows.length > lastRowIndex.value) {\n rows = rows.slice(0, lastRowIndex.value)\n }\n }\n else {\n rows = rows.slice(firstRowIndex.value, lastRowIndex.value)\n }\n }\n\n return rows\n })\n\n const {\n hasSelectionMode,\n singleSelection,\n multipleSelection,\n allRowsSelected,\n someRowsSelected,\n rowsSelectedNumber,\n\n isRowSelected,\n clearSelection,\n updateSelection\n } = useTableRowSelection(props, emit, computedRows, getRowKey)\n\n const { colList, computedCols, computedColsMap, computedColspan } = useTableColumnSelection(props, computedPagination, hasSelectionMode)\n\n const { columnToSort, computedSortMethod, sort } = useTableSort(props, computedPagination, colList, setPagination)\n\n const {\n firstRowIndex,\n lastRowIndex,\n isFirstPage,\n isLastPage,\n pagesNumber,\n computedRowsPerPageOptions,\n computedRowsNumber,\n\n firstPage,\n prevPage,\n nextPage,\n lastPage\n } = useTablePagination(vm, innerPagination, computedPagination, isServerSide, setPagination, filteredSortedRowsNumber)\n\n const nothingToDisplay = computed(() => computedRows.value.length === 0)\n\n const virtProps = computed(() => {\n const acc = {}\n\n commonVirtPropsList\n .forEach(p => { acc[ p ] = props[ p ] })\n\n if (acc.virtualScrollItemSize === void 0) {\n acc.virtualScrollItemSize = props.dense === true ? 28 : 48\n }\n\n return acc\n })\n\n function resetVirtualScroll () {\n hasVirtScroll.value === true && virtScrollRef.value.reset()\n }\n\n function getBody () {\n if (props.grid === true) {\n return getGridBody()\n }\n\n const header = props.hideHeader !== true ? getTHead : null\n\n if (hasVirtScroll.value === true) {\n const topRow = slots[ 'top-row' ]\n const bottomRow = slots[ 'bottom-row' ]\n\n const virtSlots = {\n default: props => getTBodyTR(props.item, slots.body, props.index)\n }\n\n if (topRow !== void 0) {\n const topContent = h('tbody', topRow({ cols: computedCols.value }))\n\n virtSlots.before = header === null\n ? () => topContent\n : () => [ header() ].concat(topContent)\n }\n else if (header !== null) {\n virtSlots.before = header\n }\n\n if (bottomRow !== void 0) {\n virtSlots.after = () => h('tbody', bottomRow({ cols: computedCols.value }))\n }\n\n return h(QVirtualScroll, {\n ref: virtScrollRef,\n class: props.tableClass,\n style: props.tableStyle,\n ...virtProps.value,\n scrollTarget: props.virtualScrollTarget,\n items: computedRows.value,\n type: '__qtable',\n tableColspan: computedColspan.value,\n onVirtualScroll: onVScroll\n }, virtSlots)\n }\n\n const child = [\n getTBody()\n ]\n\n if (header !== null) {\n child.unshift(header())\n }\n\n return getTableMiddle({\n class: [ 'q-table__middle scroll', props.tableClass ],\n style: props.tableStyle\n }, child)\n }\n\n function scrollTo (toIndex, edge) {\n if (virtScrollRef.value !== null) {\n virtScrollRef.value.scrollTo(toIndex, edge)\n return\n }\n\n toIndex = parseInt(toIndex, 10)\n const rowEl = rootRef.value.querySelector(`tbody tr:nth-of-type(${ toIndex + 1 })`)\n\n if (rowEl !== null) {\n const scrollTarget = rootRef.value.querySelector('.q-table__middle.scroll')\n const offsetTop = rowEl.offsetTop - props.virtualScrollStickySizeStart\n const direction = offsetTop < scrollTarget.scrollTop ? 'decrease' : 'increase'\n\n scrollTarget.scrollTop = offsetTop\n\n emit('virtualScroll', {\n index: toIndex,\n from: 0,\n to: innerPagination.value.rowsPerPage - 1,\n direction\n })\n }\n }\n\n function onVScroll (info) {\n emit('virtualScroll', info)\n }\n\n function getProgress () {\n return [\n h(QLinearProgress, {\n class: 'q-table__linear-progress',\n color: props.color,\n dark: isDark.value,\n indeterminate: true,\n trackColor: 'transparent'\n })\n ]\n }\n\n function getTBodyTR (row, bodySlot, pageIndex) {\n const\n key = getRowKey.value(row),\n selected = isRowSelected(key)\n\n if (bodySlot !== void 0) {\n return bodySlot(\n getBodyScope({\n key,\n row,\n pageIndex,\n __trClass: selected ? 'selected' : ''\n })\n )\n }\n\n const\n bodyCell = slots[ 'body-cell' ],\n child = computedCols.value.map(col => {\n const\n bodyCellCol = slots[ `body-cell-${ col.name }` ],\n slot = bodyCellCol !== void 0 ? bodyCellCol : bodyCell\n\n return slot !== void 0\n ? slot(getBodyCellScope({ key, row, pageIndex, col }))\n : h('td', {\n class: col.__tdClass(row),\n style: col.__tdStyle(row)\n }, getCellValue(col, row))\n })\n\n if (hasSelectionMode.value === true) {\n const slot = slots[ 'body-selection' ]\n const content = slot !== void 0\n ? slot(getBodySelectionScope({ key, row, pageIndex }))\n : [\n h(QCheckbox, {\n modelValue: selected,\n color: props.color,\n dark: isDark.value,\n dense: props.dense,\n 'onUpdate:modelValue': (adding, evt) => {\n updateSelection([ key ], [ row ], adding, evt)\n }\n })\n ]\n\n child.unshift(\n h('td', { class: 'q-table--col-auto-width' }, content)\n )\n }\n\n const data = { key, class: { selected } }\n\n if (props.onRowClick !== void 0) {\n data.class[ 'cursor-pointer' ] = true\n data.onClick = evt => {\n emit('RowClick', evt, row, pageIndex)\n }\n }\n\n if (props.onRowDblclick !== void 0) {\n data.class[ 'cursor-pointer' ] = true\n data.onDblclick = evt => {\n emit('RowDblclick', evt, row, pageIndex)\n }\n }\n\n if (props.onRowContextmenu !== void 0) {\n data.class[ 'cursor-pointer' ] = true\n data.onContextmenu = evt => {\n emit('RowContextmenu', evt, row, pageIndex)\n }\n }\n\n return h('tr', data, child)\n }\n\n function getTBody () {\n const\n body = slots.body,\n topRow = slots[ 'top-row' ],\n bottomRow = slots[ 'bottom-row' ]\n\n let child = computedRows.value.map(\n (row, pageIndex) => getTBodyTR(row, body, pageIndex)\n )\n\n if (topRow !== void 0) {\n child = topRow({ cols: computedCols.value }).concat(child)\n }\n if (bottomRow !== void 0) {\n child = child.concat(bottomRow({ cols: computedCols.value }))\n }\n\n return h('tbody', child)\n }\n\n function getBodyScope (data) {\n injectBodyCommonScope(data)\n\n data.cols = data.cols.map(\n col => injectProp({ ...col }, 'value', () => getCellValue(col, data.row))\n )\n\n return data\n }\n\n function getBodyCellScope (data) {\n injectBodyCommonScope(data)\n injectProp(data, 'value', () => getCellValue(data.col, data.row))\n return data\n }\n\n function getBodySelectionScope (data) {\n injectBodyCommonScope(data)\n return data\n }\n\n function injectBodyCommonScope (data) {\n Object.assign(data, {\n cols: computedCols.value,\n colsMap: computedColsMap.value,\n sort,\n rowIndex: firstRowIndex.value + data.pageIndex,\n color: props.color,\n dark: isDark.value,\n dense: props.dense\n })\n\n hasSelectionMode.value === true && injectProp(\n data,\n 'selected',\n () => isRowSelected(data.key),\n (adding, evt) => {\n updateSelection([ data.key ], [ data.row ], adding, evt)\n }\n )\n\n injectProp(\n data,\n 'expand',\n () => isRowExpanded(data.key),\n adding => { updateExpanded(data.key, adding) }\n )\n }\n\n function 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 const marginalsScope = computed(() => ({\n pagination: computedPagination.value,\n pagesNumber: pagesNumber.value,\n isFirstPage: isFirstPage.value,\n isLastPage: isLastPage.value,\n firstPage,\n prevPage,\n nextPage,\n lastPage,\n\n inFullscreen: inFullscreen.value,\n toggleFullscreen\n }))\n\n function getTopDiv () {\n const\n top = slots.top,\n topLeft = slots[ 'top-left' ],\n topRight = slots[ 'top-right' ],\n topSelection = slots[ 'top-selection' ],\n hasSelection = hasSelectionMode.value === true\n && topSelection !== void 0\n && rowsSelectedNumber.value > 0,\n topClass = 'q-table__top relative-position row items-center'\n\n if (top !== void 0) {\n return h('div', { class: topClass }, [ top(marginalsScope.value) ])\n }\n\n let child\n\n if (hasSelection === true) {\n child = topSelection(marginalsScope.value).slice()\n }\n else {\n child = []\n\n if (topLeft !== void 0) {\n child.push(\n h('div', { class: 'q-table__control' }, [\n topLeft(marginalsScope.value)\n ])\n )\n }\n else if (props.title) {\n child.push(\n h('div', { class: 'q-table__control' }, [\n h('div', {\n class: [ 'q-table__title', props.titleClass ]\n }, props.title)\n ])\n )\n }\n }\n\n if (topRight !== void 0) {\n child.push(\n h('div', { class: 'q-table__separator col' })\n )\n child.push(\n h('div', { class: 'q-table__control' }, [\n topRight(marginalsScope.value)\n ])\n )\n }\n\n if (child.length === 0) {\n return\n }\n\n return h('div', { class: topClass }, child)\n }\n\n const headerSelectedValue = computed(() => (\n someRowsSelected.value === true\n ? null\n : allRowsSelected.value\n ))\n\n function getTHead () {\n const child = getTHeadTR()\n\n if (props.loading === true && slots.loading === void 0) {\n child.push(\n h('tr', { class: 'q-table__progress' }, [\n h('th', {\n class: 'relative-position',\n colspan: computedColspan.value\n }, getProgress())\n ])\n )\n }\n\n return h('thead', child)\n }\n\n function getTHeadTR () {\n const\n header = slots.header,\n headerCell = slots[ 'header-cell' ]\n\n if (header !== void 0) {\n return header(\n getHeaderScope({ header: true })\n ).slice()\n }\n\n const child = computedCols.value.map(col => {\n const\n headerCellCol = slots[ `header-cell-${ col.name }` ],\n slot = headerCellCol !== void 0 ? headerCellCol : headerCell,\n props = getHeaderScope({ col })\n\n return slot !== void 0\n ? slot(props)\n : h(QTh, {\n key: col.name,\n props\n }, () => col.label)\n })\n\n if (singleSelection.value === true && props.grid !== true) {\n child.unshift(\n h('th', { class: 'q-table--col-auto-width' }, ' ')\n )\n }\n else if (multipleSelection.value === true) {\n const slot = slots[ 'header-selection' ]\n const content = slot !== void 0\n ? slot(getHeaderScope({}))\n : [\n h(QCheckbox, {\n color: props.color,\n modelValue: headerSelectedValue.value,\n dark: isDark.value,\n dense: props.dense,\n 'onUpdate:modelValue': onMultipleSelectionSet\n })\n ]\n\n child.unshift(\n h('th', { class: 'q-table--col-auto-width' }, content)\n )\n }\n\n return [\n h('tr', {\n class: props.tableHeaderClass,\n style: props.tableHeaderStyle\n }, child)\n ]\n }\n\n function getHeaderScope (data) {\n Object.assign(data, {\n cols: computedCols.value,\n sort,\n colsMap: computedColsMap.value,\n color: props.color,\n dark: isDark.value,\n dense: props.dense\n })\n\n if (multipleSelection.value === true) {\n injectProp(\n data,\n 'selected',\n () => headerSelectedValue.value,\n onMultipleSelectionSet\n )\n }\n\n return data\n }\n\n function onMultipleSelectionSet (val) {\n if (someRowsSelected.value === true) {\n val = false\n }\n\n updateSelection(\n computedRows.value.map(getRowKey.value),\n computedRows.value,\n val\n )\n }\n\n const navIcon = computed(() => {\n const ico = [\n props.iconFirstPage || $q.iconSet.table.firstPage,\n props.iconPrevPage || $q.iconSet.table.prevPage,\n props.iconNextPage || $q.iconSet.table.nextPage,\n props.iconLastPage || $q.iconSet.table.lastPage\n ]\n return $q.lang.rtl === true ? ico.reverse() : ico\n })\n\n function getBottomDiv () {\n if (props.hideBottom === true) {\n return\n }\n\n if (nothingToDisplay.value === true) {\n if (props.hideNoData === true) {\n return\n }\n\n const message = props.loading === true\n ? props.loadingLabel || $q.lang.table.loading\n : (props.filter ? props.noResultsLabel || $q.lang.table.noResults : props.noDataLabel || $q.lang.table.noData)\n\n const noData = slots[ 'no-data' ]\n const children = noData !== void 0\n ? [ noData({ message, icon: $q.iconSet.table.warning, filter: props.filter }) ]\n : [\n h(QIcon, {\n class: 'q-table__bottom-nodata-icon',\n name: $q.iconSet.table.warning\n }),\n message\n ]\n\n return h('div', { class: bottomClass + ' q-table__bottom--nodata' }, children)\n }\n\n const bottom = slots.bottom\n\n if (bottom !== void 0) {\n return h('div', { class: bottomClass }, [ bottom(marginalsScope.value) ])\n }\n\n const child = props.hideSelectedBanner !== true && hasSelectionMode.value === true && rowsSelectedNumber.value > 0\n ? [\n h('div', { class: 'q-table__control' }, [\n h('div', [\n (props.selectedRowsLabel || $q.lang.table.selectedRecords)(rowsSelectedNumber.value)\n ])\n ])\n ]\n : []\n\n if (props.hidePagination !== true) {\n return h('div', {\n class: bottomClass + ' justify-end'\n }, getPaginationDiv(child))\n }\n\n if (child.length !== 0) {\n return h('div', { class: bottomClass }, child)\n }\n }\n\n function onPagSelection (pag) {\n setPagination({\n page: 1,\n rowsPerPage: pag.value\n })\n }\n\n function getPaginationDiv (child) {\n let control\n const\n { rowsPerPage } = computedPagination.value,\n paginationLabel = props.paginationLabel || $q.lang.table.pagination,\n paginationSlot = slots.pagination,\n hasOpts = props.rowsPerPageOptions.length > 1\n\n child.push(\n h('div', { class: 'q-table__separator col' })\n )\n\n if (hasOpts === true) {\n child.push(\n h('div', { class: 'q-table__control' }, [\n h('span', { class: 'q-table__bottom-item' }, [\n props.rowsPerPageLabel || $q.lang.table.recordsPerPage\n ]),\n h(QSelect, {\n class: 'q-table__select inline q-table__bottom-item',\n color: props.color,\n modelValue: rowsPerPage,\n options: computedRowsPerPageOptions.value,\n displayValue: rowsPerPage === 0\n ? $q.lang.table.allRows\n : rowsPerPage,\n dark: isDark.value,\n borderless: true,\n dense: true,\n optionsDense: true,\n optionsCover: true,\n 'onUpdate:modelValue': onPagSelection\n })\n ])\n )\n }\n\n if (paginationSlot !== void 0) {\n control = paginationSlot(marginalsScope.value)\n }\n else {\n control = [\n h('span', rowsPerPage !== 0 ? { class: 'q-table__bottom-item' } : {}, [\n rowsPerPage\n ? paginationLabel(firstRowIndex.value + 1, Math.min(lastRowIndex.value, computedRowsNumber.value), computedRowsNumber.value)\n : paginationLabel(1, filteredSortedRowsNumber.value, computedRowsNumber.value)\n ])\n ]\n\n if (rowsPerPage !== 0 && pagesNumber.value > 1) {\n const btnProps = {\n color: props.color,\n round: true,\n dense: true,\n flat: true\n }\n\n if (props.dense === true) {\n btnProps.size = 'sm'\n }\n\n pagesNumber.value > 2 && control.push(\n h(QBtn, {\n key: 'pgFirst',\n ...btnProps,\n icon: navIcon.value[ 0 ],\n disable: isFirstPage.value,\n onClick: firstPage\n })\n )\n\n control.push(\n h(QBtn, {\n key: 'pgPrev',\n ...btnProps,\n icon: navIcon.value[ 1 ],\n disable: isFirstPage.value,\n onClick: prevPage\n }),\n\n h(QBtn, {\n key: 'pgNext',\n ...btnProps,\n icon: navIcon.value[ 2 ],\n disable: isLastPage.value,\n onClick: nextPage\n })\n )\n\n pagesNumber.value > 2 && control.push(\n h(QBtn, {\n key: 'pgLast',\n ...btnProps,\n icon: navIcon.value[ 3 ],\n disable: isLastPage.value,\n onClick: lastPage\n })\n )\n }\n }\n\n child.push(\n h('div', { class: 'q-table__control' }, control)\n )\n\n return child\n }\n\n function getGridHeader () {\n const child = props.gridHeader === true\n ? [\n h('table', { class: 'q-table' }, [\n getTHead(h)\n ])\n ]\n : (\n props.loading === true && slots.loading === void 0\n ? getProgress(h)\n : void 0\n )\n\n return h('div', { class: 'q-table__middle' }, child)\n }\n\n function getGridBody () {\n const item = slots.item !== void 0\n ? slots.item\n : scope => {\n const child = scope.cols.map(\n col => h('div', { class: 'q-table__grid-item-row' }, [\n h('div', { class: 'q-table__grid-item-title' }, [ col.label ]),\n h('div', { class: 'q-table__grid-item-value' }, [ col.value ])\n ])\n )\n\n if (hasSelectionMode.value === true) {\n const slot = slots[ 'body-selection' ]\n const content = slot !== void 0\n ? slot(scope)\n : [\n h(QCheckbox, {\n modelValue: scope.selected,\n color: props.color,\n dark: isDark.value,\n dense: props.dense,\n 'onUpdate:modelValue': (adding, evt) => {\n updateSelection([ scope.key ], [ scope.row ], adding, evt)\n }\n })\n ]\n\n child.unshift(\n h('div', { class: 'q-table__grid-item-row' }, content),\n h(QSeparator, { dark: isDark.value })\n )\n }\n\n const data = {\n class: [\n 'q-table__grid-item-card' + cardDefaultClass.value,\n props.cardClass\n ],\n style: props.cardStyle\n }\n\n if (\n props.onRowClick !== void 0\n || props.onRowDblclick !== void 0\n ) {\n data.class[ 0 ] += ' cursor-pointer'\n\n if (props.onRowClick !== void 0) {\n data.onClick = evt => {\n emit('RowClick', evt, scope.row, scope.pageIndex)\n }\n }\n\n if (props.onRowDblclick !== void 0) {\n data.onDblclick = evt => {\n emit('RowDblclick', evt, scope.row, scope.pageIndex)\n }\n }\n }\n\n return h('div', {\n class: 'q-table__grid-item col-xs-12 col-sm-6 col-md-4 col-lg-3'\n + (scope.selected === true ? ' q-table__grid-item--selected' : '')\n }, [\n h('div', data, child)\n ])\n }\n\n return h('div', {\n class: [\n 'q-table__grid-content row',\n props.cardContainerClass\n ],\n style: props.cardContainerStyle\n }, computedRows.value.map((row, pageIndex) => {\n return item(getBodyScope({\n key: getRowKey.value(row),\n row,\n pageIndex\n }))\n }))\n }\n\n // expose public methods and needed computed props\n Object.assign(vm.proxy, {\n requestServerInteraction,\n setPagination,\n firstPage,\n prevPage,\n nextPage,\n lastPage,\n isRowSelected,\n clearSelection,\n isRowExpanded,\n setExpanded,\n sort,\n resetVirtualScroll,\n scrollTo,\n getCellValue\n })\n\n injectMultipleProps(vm.proxy, {\n filteredSortedRows: () => filteredSortedRows.value,\n computedRows: () => computedRows.value,\n computedRowsNumber: () => computedRowsNumber.value\n })\n\n return () => {\n const child = [ getTopDiv() ]\n const data = { ref: rootRef, class: containerClass.value }\n\n if (props.grid === true) {\n child.push(getGridHeader())\n }\n else {\n Object.assign(data, {\n class: [ data.class, props.cardClass ],\n style: props.cardStyle\n })\n }\n\n child.push(\n getBody(),\n getBottomDiv()\n )\n\n if (props.loading === true && slots.loading !== void 0) {\n child.push(\n slots.loading()\n )\n }\n\n return h('div', data, child)\n }\n }\n})\n","import { h, ref, computed, inject, onBeforeUnmount, onMounted, withDirectives, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport Ripple from '../../directives/Ripple.js'\n\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport { isKeyCode, shouldIgnoreKey } from '../../utils/private/key-composition.js'\nimport { tabsKey, emptyRenderFn } from '../../utils/private/symbols.js'\nimport { stopAndPrevent } from '../../utils/event.js'\nimport uid from '../../utils/uid.js'\nimport { isDeepEqual } from '../../utils/is.js'\n\nlet id = 0\n\nexport const useTabEmits = [ 'click', 'keydown' ]\n\nexport const useTabProps = {\n icon: String,\n label: [ Number, String ],\n\n alert: [ Boolean, String ],\n alertIcon: String,\n\n name: {\n type: [ Number, String ],\n default: () => `t_${ id++ }`\n },\n\n noCaps: Boolean,\n\n tabindex: [ String, Number ],\n disable: Boolean,\n\n contentClass: String,\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n }\n}\n\nexport default function (props, slots, emit, routeData) {\n const $tabs = inject(tabsKey, emptyRenderFn)\n if ($tabs === emptyRenderFn) {\n console.error('QTab/QRouteTab component needs to be child of QTabs')\n return emptyRenderFn\n }\n\n const { proxy } = getCurrentInstance()\n\n const blurTargetRef = ref(null)\n const rootRef = ref(null)\n const tabIndicatorRef = ref(null)\n\n const ripple = computed(() => (\n props.disable === true || props.ripple === false\n ? false\n : Object.assign(\n { keyCodes: [ 13, 32 ], early: true },\n props.ripple === true ? {} : props.ripple\n )\n ))\n\n const isActive = computed(() => $tabs.currentModel.value === props.name)\n\n const classes = computed(() =>\n 'q-tab relative-position self-stretch flex flex-center text-center'\n + (\n isActive.value === true\n ? (\n ' q-tab--active'\n + ($tabs.tabProps.value.activeClass ? ' ' + $tabs.tabProps.value.activeClass : '')\n + ($tabs.tabProps.value.activeColor ? ` text-${ $tabs.tabProps.value.activeColor }` : '')\n + ($tabs.tabProps.value.activeBgColor ? ` bg-${ $tabs.tabProps.value.activeBgColor }` : '')\n )\n : ' q-tab--inactive'\n )\n + (props.icon && props.label && $tabs.tabProps.value.inlineLabel === false ? ' q-tab--full' : '')\n + (props.noCaps === true || $tabs.tabProps.value.noCaps === true ? ' q-tab--no-caps' : '')\n + (props.disable === true ? ' disabled' : ' q-focusable q-hoverable cursor-pointer')\n + (routeData !== void 0 ? routeData.linkClass.value : '')\n )\n\n const innerClass = computed(() =>\n 'q-tab__content self-stretch flex-center relative-position q-anchor--skip non-selectable '\n + ($tabs.tabProps.value.inlineLabel === true ? 'row no-wrap q-tab__content--inline' : 'column')\n + (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')\n )\n\n const tabIndex = computed(() => (\n (\n props.disable === true\n || $tabs.hasFocus.value === true\n || (isActive.value === false && $tabs.hasActiveTab.value === true)\n )\n ? -1\n : props.tabindex || 0\n ))\n\n function onClick (e, keyboard) {\n if (keyboard !== true && blurTargetRef.value !== null) {\n blurTargetRef.value.focus()\n }\n\n if (props.disable === true) {\n // we should hinder native navigation though\n if (routeData !== void 0 && routeData.hasRouterLink.value === true) {\n stopAndPrevent(e)\n }\n return\n }\n\n // do we have a QTab?\n if (routeData === void 0) {\n $tabs.updateModel({ name: props.name })\n emit('click', e)\n return\n }\n\n if (routeData.hasRouterLink.value === true) {\n const go = (opts = {}) => {\n // if requiring to go to another route, then we\n // let the QTabs route watcher do its job,\n // otherwise directly select this\n let hardError\n const reqId = opts.to === void 0 || isDeepEqual(opts.to, props.to) === true\n ? ($tabs.avoidRouteWatcher = uid())\n : null\n\n return routeData.navigateToRouterLink(e, { ...opts, returnRouterError: true })\n .catch(err => { hardError = err })\n .then(softError => {\n if (reqId === $tabs.avoidRouteWatcher) {\n $tabs.avoidRouteWatcher = false\n\n // if we don't have any hard errors or any soft errors, except for\n // when navigating to the same route (on all other soft errors,\n // like when navigation was aborted in a nav guard, we don't activate this tab)\n if (\n hardError === void 0 && (\n softError === void 0\n || softError.message.startsWith('Avoided redundant navigation') === true\n )\n ) {\n $tabs.updateModel({ name: props.name })\n }\n }\n\n if (opts.returnRouterError === true) {\n return hardError !== void 0 ? Promise.reject(hardError) : softError\n }\n })\n }\n\n emit('click', e, go)\n e.defaultPrevented !== true && go()\n\n return\n }\n\n emit('click', e)\n }\n\n function onKeydown (e) {\n if (isKeyCode(e, [ 13, 32 ])) {\n onClick(e, true)\n }\n else if (\n shouldIgnoreKey(e) !== true\n && e.keyCode >= 35\n && e.keyCode <= 40\n && e.altKey !== true\n && e.metaKey !== true\n ) {\n $tabs.onKbdNavigate(e.keyCode, proxy.$el) === true && stopAndPrevent(e)\n }\n\n emit('keydown', e)\n }\n\n function getContent () {\n const\n narrow = $tabs.tabProps.value.narrowIndicator,\n content = [],\n indicator = h('div', {\n ref: tabIndicatorRef,\n class: [\n 'q-tab__indicator',\n $tabs.tabProps.value.indicatorClass\n ]\n })\n\n props.icon !== void 0 && content.push(\n h(QIcon, {\n class: 'q-tab__icon',\n name: props.icon\n })\n )\n\n props.label !== void 0 && content.push(\n h('div', { class: 'q-tab__label' }, props.label)\n )\n\n props.alert !== false && content.push(\n props.alertIcon !== void 0\n ? h(QIcon, {\n class: 'q-tab__alert-icon',\n color: props.alert !== true\n ? props.alert\n : void 0,\n name: props.alertIcon\n })\n : h('div', {\n class: 'q-tab__alert'\n + (props.alert !== true ? ` text-${ props.alert }` : '')\n })\n )\n\n narrow === true && content.push(indicator)\n\n const node = [\n h('div', { class: 'q-focus-helper', tabindex: -1, ref: blurTargetRef }),\n h('div', { class: innerClass.value }, hMergeSlot(slots.default, content))\n ]\n\n narrow === false && node.push(indicator)\n\n return node\n }\n\n const tabData = {\n name: computed(() => props.name),\n rootRef,\n tabIndicatorRef,\n routeData\n }\n\n onBeforeUnmount(() => {\n $tabs.unregisterTab(tabData)\n })\n\n onMounted(() => {\n $tabs.registerTab(tabData)\n })\n\n function renderTab (tag, customData) {\n const data = {\n ref: rootRef,\n class: classes.value,\n tabindex: tabIndex.value,\n role: 'tab',\n 'aria-selected': isActive.value === true ? 'true' : 'false',\n 'aria-disabled': props.disable === true ? 'true' : void 0,\n onClick,\n onKeydown,\n ...customData\n }\n\n return withDirectives(\n h(tag, data, getContent()),\n [ [ Ripple, ripple.value ] ]\n )\n }\n\n return { renderTab, $tabs }\n}\n","import useTab, { useTabProps, useTabEmits } from './use-tab.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'QTab',\n\n props: useTabProps,\n\n emits: useTabEmits,\n\n setup (props, { slots, emit }) {\n const { renderTab } = useTab(props, slots, emit)\n return () => renderTab('div')\n }\n})\n","import { h, ref, computed, watch, onBeforeUnmount, onActivated, onDeactivated, getCurrentInstance, provide } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QResizeObserver from '../resize-observer/QResizeObserver.js'\n\nimport useTick from '../../composables/private/use-tick.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { tabsKey } from '../../utils/private/symbols.js'\nimport { rtlHasScrollBug } from '../../utils/private/rtl.js'\n\nfunction getIndicatorClass (color, top, vertical) {\n const pos = vertical === true\n ? [ 'left', 'right' ]\n : [ 'top', 'bottom' ]\n\n return `absolute-${ top === true ? pos[ 0 ] : pos[ 1 ] }${ color ? ` text-${ color }` : '' }`\n}\n\nconst alignValues = [ 'left', 'center', 'right', 'justify' ]\n\nexport default createComponent({\n name: 'QTabs',\n\n props: {\n modelValue: [ Number, String ],\n\n align: {\n type: String,\n default: 'center',\n validator: v => alignValues.includes(v)\n },\n breakpoint: {\n type: [ String, Number ],\n default: 600\n },\n\n vertical: Boolean,\n shrink: Boolean,\n stretch: Boolean,\n\n activeClass: String,\n activeColor: String,\n activeBgColor: String,\n indicatorColor: String,\n leftIcon: String,\n rightIcon: String,\n\n outsideArrows: Boolean,\n mobileArrows: Boolean,\n\n switchIndicator: Boolean,\n\n narrowIndicator: Boolean,\n inlineLabel: Boolean,\n noCaps: Boolean,\n\n dense: Boolean,\n\n contentClass: String,\n\n 'onUpdate:modelValue': [ Function, Array ]\n },\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const { registerTick: registerScrollTick } = useTick()\n const { registerTick: registerUpdateArrowsTick } = useTick()\n const { registerTick: registerAnimateTick } = useTick()\n\n const { registerTimeout: registerFocusTimeout, removeTimeout: removeFocusTimeout } = useTimeout()\n const { registerTimeout: registerScrollToTabTimeout, removeTimeout: removeScrollToTabTimeout } = useTimeout()\n\n const rootRef = ref(null)\n const contentRef = ref(null)\n\n const currentModel = ref(props.modelValue)\n const scrollable = ref(false)\n const leftArrow = ref(true)\n const rightArrow = ref(false)\n const justify = ref(false)\n\n const tabDataList = []\n const tabDataListLen = ref(0)\n const hasFocus = ref(false)\n\n let animateTimer = null, scrollTimer = null, unwatchRoute\n\n const tabProps = computed(() => ({\n activeClass: props.activeClass,\n activeColor: props.activeColor,\n activeBgColor: props.activeBgColor,\n indicatorClass: getIndicatorClass(\n props.indicatorColor,\n props.switchIndicator,\n props.vertical\n ),\n narrowIndicator: props.narrowIndicator,\n inlineLabel: props.inlineLabel,\n noCaps: props.noCaps\n }))\n\n const hasActiveTab = computed(() => {\n const len = tabDataListLen.value\n const val = currentModel.value\n\n for (let i = 0; i < len; i++) {\n if (tabDataList[ i ].name.value === val) {\n return true\n }\n }\n\n return false\n })\n\n const alignClass = computed(() => {\n const align = scrollable.value === true\n ? 'left'\n : (justify.value === true ? 'justify' : props.align)\n\n return `q-tabs__content--align-${ align }`\n })\n\n const classes = computed(() =>\n 'q-tabs row no-wrap items-center'\n + ` q-tabs--${ scrollable.value === true ? '' : 'not-' }scrollable`\n + ` q-tabs--${ props.vertical === true ? 'vertical' : 'horizontal' }`\n + ` q-tabs__arrows--${ props.outsideArrows === true ? 'outside' : 'inside' }`\n + ` q-tabs--mobile-with${ props.mobileArrows === true ? '' : 'out' }-arrows`\n + (props.dense === true ? ' q-tabs--dense' : '')\n + (props.shrink === true ? ' col-shrink' : '')\n + (props.stretch === true ? ' self-stretch' : '')\n )\n\n const innerClass = computed(() =>\n 'q-tabs__content scroll--mobile row no-wrap items-center self-stretch hide-scrollbar relative-position '\n + alignClass.value\n + (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')\n )\n\n const domProps = computed(() => (\n props.vertical === true\n ? { container: 'height', content: 'offsetHeight', scroll: 'scrollHeight' }\n : { container: 'width', content: 'offsetWidth', scroll: 'scrollWidth' }\n ))\n\n const isRTL = computed(() => props.vertical !== true && $q.lang.rtl === true)\n const rtlPosCorrection = computed(() => rtlHasScrollBug === false && isRTL.value === true)\n\n watch(isRTL, updateArrows)\n\n watch(() => props.modelValue, name => {\n updateModel({ name, setCurrent: true, skipEmit: true })\n })\n\n watch(() => props.outsideArrows, recalculateScroll)\n\n function updateModel ({ name, setCurrent, skipEmit }) {\n if (currentModel.value !== name) {\n if (skipEmit !== true && props[ 'onUpdate:modelValue' ] !== void 0) {\n emit('update:modelValue', name)\n }\n\n if (\n setCurrent === true\n || props[ 'onUpdate:modelValue' ] === void 0\n ) {\n animate(currentModel.value, name)\n currentModel.value = name\n }\n }\n }\n\n function recalculateScroll () {\n registerScrollTick(() => {\n updateContainer({\n width: rootRef.value.offsetWidth,\n height: rootRef.value.offsetHeight\n })\n })\n }\n\n function updateContainer (domSize) {\n // it can be called faster than component being initialized\n // so we need to protect against that case\n // (one example of such case is the docs release notes page)\n if (domProps.value === void 0 || contentRef.value === null) { return }\n\n const\n size = domSize[ domProps.value.container ],\n scrollSize = Math.min(\n contentRef.value[ domProps.value.scroll ],\n Array.prototype.reduce.call(\n contentRef.value.children,\n (acc, el) => acc + (el[ domProps.value.content ] || 0),\n 0\n )\n ),\n scroll = size > 0 && scrollSize > size // when there is no tab, in Chrome, size === 0 and scrollSize === 1\n\n scrollable.value = scroll\n\n // Arrows need to be updated even if the scroll status was already true\n scroll === true && registerUpdateArrowsTick(updateArrows)\n\n justify.value = size < parseInt(props.breakpoint, 10)\n }\n\n function animate (oldName, newName) {\n const\n oldTab = oldName !== void 0 && oldName !== null && oldName !== ''\n ? tabDataList.find(tab => tab.name.value === oldName)\n : null,\n newTab = newName !== void 0 && newName !== null && newName !== ''\n ? tabDataList.find(tab => tab.name.value === newName)\n : null\n\n if (oldTab && newTab) {\n const\n oldEl = oldTab.tabIndicatorRef.value,\n newEl = newTab.tabIndicatorRef.value\n\n if (animateTimer !== null) {\n clearTimeout(animateTimer)\n animateTimer = null\n }\n\n oldEl.style.transition = 'none'\n oldEl.style.transform = 'none'\n newEl.style.transition = 'none'\n newEl.style.transform = 'none'\n\n const\n oldPos = oldEl.getBoundingClientRect(),\n newPos = newEl.getBoundingClientRect()\n\n newEl.style.transform = props.vertical === true\n ? `translate3d(0,${ oldPos.top - newPos.top }px,0) scale3d(1,${ newPos.height ? oldPos.height / newPos.height : 1 },1)`\n : `translate3d(${ oldPos.left - newPos.left }px,0,0) scale3d(${ newPos.width ? oldPos.width / newPos.width : 1 },1,1)`\n\n // allow scope updates to kick in (QRouteTab needs more time)\n registerAnimateTick(() => {\n animateTimer = setTimeout(() => {\n animateTimer = null\n newEl.style.transition = 'transform .25s cubic-bezier(.4, 0, .2, 1)'\n newEl.style.transform = 'none'\n }, 70)\n })\n }\n\n if (newTab && scrollable.value === true) {\n scrollToTabEl(newTab.rootRef.value)\n }\n }\n\n function scrollToTabEl (el) {\n const\n { left, width, top, height } = contentRef.value.getBoundingClientRect(),\n newPos = el.getBoundingClientRect()\n\n let offset = props.vertical === true ? newPos.top - top : newPos.left - left\n\n if (offset < 0) {\n contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.floor(offset)\n updateArrows()\n return\n }\n\n offset += props.vertical === true ? newPos.height - height : newPos.width - width\n if (offset > 0) {\n contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.ceil(offset)\n updateArrows()\n }\n }\n\n function updateArrows () {\n const content = contentRef.value\n if (content === null) { return }\n\n const\n rect = content.getBoundingClientRect(),\n pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft)\n\n if (isRTL.value === true) {\n leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1\n rightArrow.value = pos > 0\n }\n else {\n leftArrow.value = pos > 0\n rightArrow.value = props.vertical === true\n ? Math.ceil(pos + rect.height) < content.scrollHeight\n : Math.ceil(pos + rect.width) < content.scrollWidth\n }\n }\n\n function animScrollTo (value) {\n scrollTimer !== null && clearInterval(scrollTimer)\n scrollTimer = setInterval(() => {\n if (scrollTowards(value) === true) {\n stopAnimScroll()\n }\n }, 5)\n }\n\n function scrollToStart () {\n animScrollTo(rtlPosCorrection.value === true ? Number.MAX_SAFE_INTEGER : 0)\n }\n\n function scrollToEnd () {\n animScrollTo(rtlPosCorrection.value === true ? 0 : Number.MAX_SAFE_INTEGER)\n }\n\n function stopAnimScroll () {\n if (scrollTimer !== null) {\n clearInterval(scrollTimer)\n scrollTimer = null\n }\n }\n\n function onKbdNavigate (keyCode, fromEl) {\n const tabs = Array.prototype.filter.call(\n contentRef.value.children,\n el => el === fromEl || (el.matches && el.matches('.q-tab.q-focusable') === true)\n )\n\n const len = tabs.length\n if (len === 0) { return }\n\n if (keyCode === 36) { // Home\n scrollToTabEl(tabs[ 0 ])\n tabs[ 0 ].focus()\n return true\n }\n if (keyCode === 35) { // End\n scrollToTabEl(tabs[ len - 1 ])\n tabs[ len - 1 ].focus()\n return true\n }\n\n const dirPrev = keyCode === (props.vertical === true ? 38 /* ArrowUp */ : 37 /* ArrowLeft */)\n const dirNext = keyCode === (props.vertical === true ? 40 /* ArrowDown */ : 39 /* ArrowRight */)\n\n const dir = dirPrev === true ? -1 : (dirNext === true ? 1 : void 0)\n\n if (dir !== void 0) {\n const rtlDir = isRTL.value === true ? -1 : 1\n const index = tabs.indexOf(fromEl) + dir * rtlDir\n\n if (index >= 0 && index < len) {\n scrollToTabEl(tabs[ index ])\n tabs[ index ].focus({ preventScroll: true })\n }\n\n return true\n }\n }\n\n // let's speed up execution of time-sensitive scrollTowards()\n // with a computed variable by directly applying the minimal\n // number of instructions on get/set functions\n const posFn = computed(() => (\n rtlPosCorrection.value === true\n ? { get: content => Math.abs(content.scrollLeft), set: (content, pos) => { content.scrollLeft = -pos } }\n : (\n props.vertical === true\n ? { get: content => content.scrollTop, set: (content, pos) => { content.scrollTop = pos } }\n : { get: content => content.scrollLeft, set: (content, pos) => { content.scrollLeft = pos } }\n )\n ))\n\n function scrollTowards (value) {\n const\n content = contentRef.value,\n { get, set } = posFn.value\n\n let\n done = false,\n pos = get(content)\n\n const direction = value < pos ? -1 : 1\n\n pos += direction * 5\n\n if (pos < 0) {\n done = true\n pos = 0\n }\n else if (\n (direction === -1 && pos <= value)\n || (direction === 1 && pos >= value)\n ) {\n done = true\n pos = value\n }\n\n set(content, pos)\n updateArrows()\n\n return done\n }\n\n function hasQueryIncluded (targetQuery, matchingQuery) {\n for (const key in targetQuery) {\n if (targetQuery[ key ] !== matchingQuery[ key ]) {\n return false\n }\n }\n\n return true\n }\n\n // do not use directly; use verifyRouteModel() instead\n function updateActiveRoute () {\n let name = null, bestScore = { matchedLen: 0, queryDiff: 9999, hrefLen: 0 }\n\n const list = tabDataList.filter(tab => tab.routeData !== void 0 && tab.routeData.hasRouterLink.value === true)\n const { hash: currentHash, query: currentQuery } = proxy.$route\n const currentQueryLen = Object.keys(currentQuery).length\n\n // Vue Router does not keep account of hash & query when matching\n // so we're doing this as well\n\n for (const tab of list) {\n const exact = tab.routeData.exact.value === true\n\n if (tab.routeData[ exact === true ? 'linkIsExactActive' : 'linkIsActive' ].value !== true) {\n // it cannot match anything as it's not active nor exact-active\n continue\n }\n\n const { hash, query, matched, href } = tab.routeData.resolvedLink.value\n const queryLen = Object.keys(query).length\n\n if (exact === true) {\n if (hash !== currentHash) {\n // it's set to exact but it doesn't matches the hash\n continue\n }\n\n if (\n queryLen !== currentQueryLen\n || hasQueryIncluded(currentQuery, query) === false\n ) {\n // it's set to exact but it doesn't matches the query\n continue\n }\n\n // yey, we found the perfect match (route + hash + query)\n name = tab.name.value\n break\n }\n\n if (hash !== '' && hash !== currentHash) {\n // it has hash and it doesn't matches\n continue\n }\n\n if (\n queryLen !== 0\n && hasQueryIncluded(query, currentQuery) === false\n ) {\n // it has query and it doesn't includes the current one\n continue\n }\n\n const newScore = {\n matchedLen: matched.length,\n queryDiff: currentQueryLen - queryLen,\n hrefLen: href.length - hash.length\n }\n\n if (newScore.matchedLen > bestScore.matchedLen) {\n // it matches more routes so it's more specific so we set it as current champion\n name = tab.name.value\n bestScore = newScore\n continue\n }\n else if (newScore.matchedLen !== bestScore.matchedLen) {\n // it matches less routes than the current champion so we discard it\n continue\n }\n\n if (newScore.queryDiff < bestScore.queryDiff) {\n // query is closer to the current one so we set it as current champion\n name = tab.name.value\n bestScore = newScore\n }\n else if (newScore.queryDiff !== bestScore.queryDiff) {\n // it matches less routes than the current champion so we discard it\n continue\n }\n\n if (newScore.hrefLen > bestScore.hrefLen) {\n // href is lengthier so it's more specific so we set it as current champion\n name = tab.name.value\n bestScore = newScore\n }\n }\n\n if (\n name === null\n && tabDataList.some(tab => tab.routeData === void 0 && tab.name.value === currentModel.value) === true\n ) {\n // we shouldn't interfere if non-route tab is active\n return\n }\n\n updateModel({ name, setCurrent: true })\n }\n\n function onFocusin (e) {\n removeFocusTimeout()\n\n if (\n hasFocus.value !== true\n && rootRef.value !== null\n && e.target\n && typeof e.target.closest === 'function'\n ) {\n const tab = e.target.closest('.q-tab')\n\n // if the target is contained by a QTab/QRouteTab\n // (it might be other elements focused, like additional QBtn)\n if (tab && rootRef.value.contains(tab) === true) {\n hasFocus.value = true\n scrollable.value === true && scrollToTabEl(tab)\n }\n }\n }\n\n function onFocusout () {\n registerFocusTimeout(() => { hasFocus.value = false }, 30)\n }\n\n function verifyRouteModel () {\n if ($tabs.avoidRouteWatcher === false) {\n registerScrollToTabTimeout(updateActiveRoute)\n }\n else {\n removeScrollToTabTimeout()\n }\n }\n\n function watchRoute () {\n if (unwatchRoute === void 0) {\n const unwatch = watch(() => proxy.$route.fullPath, verifyRouteModel)\n unwatchRoute = () => {\n unwatch()\n unwatchRoute = void 0\n }\n }\n }\n\n function registerTab (tabData) {\n tabDataList.push(tabData)\n tabDataListLen.value++\n\n recalculateScroll()\n\n // if it's a QTab or we don't have Vue Router\n if (tabData.routeData === void 0 || proxy.$route === void 0) {\n // we should position to the currently active tab (if any)\n registerScrollToTabTimeout(() => {\n if (scrollable.value === true) {\n const value = currentModel.value\n const newTab = value !== void 0 && value !== null && value !== ''\n ? tabDataList.find(tab => tab.name.value === value)\n : null\n\n newTab && scrollToTabEl(newTab.rootRef.value)\n }\n })\n }\n // else if it's a QRouteTab with a valid link\n else {\n // start watching route\n watchRoute()\n\n if (tabData.routeData.hasRouterLink.value === true) {\n verifyRouteModel()\n }\n }\n }\n\n function unregisterTab (tabData) {\n tabDataList.splice(tabDataList.indexOf(tabData), 1)\n tabDataListLen.value--\n\n recalculateScroll()\n\n if (unwatchRoute !== void 0 && tabData.routeData !== void 0) {\n // unwatch route if we don't have any QRouteTabs left\n if (tabDataList.every(tab => tab.routeData === void 0) === true) {\n unwatchRoute()\n }\n\n // then update model\n verifyRouteModel()\n }\n }\n\n const $tabs = {\n currentModel,\n tabProps,\n hasFocus,\n hasActiveTab,\n\n registerTab,\n unregisterTab,\n\n verifyRouteModel,\n updateModel,\n onKbdNavigate,\n\n avoidRouteWatcher: false // false | string (uid)\n }\n\n provide(tabsKey, $tabs)\n\n function cleanup () {\n animateTimer !== null && clearTimeout(animateTimer)\n stopAnimScroll()\n unwatchRoute !== void 0 && unwatchRoute()\n }\n\n let hadRouteWatcher\n\n onBeforeUnmount(cleanup)\n\n onDeactivated(() => {\n hadRouteWatcher = unwatchRoute !== void 0\n cleanup()\n })\n\n onActivated(() => {\n hadRouteWatcher === true && watchRoute()\n recalculateScroll()\n })\n\n return () => {\n return h('div', {\n ref: rootRef,\n class: classes.value,\n role: 'tablist',\n onFocusin,\n onFocusout\n }, [\n h(QResizeObserver, { onResize: updateContainer }),\n\n h('div', {\n ref: contentRef,\n class: innerClass.value,\n onScroll: updateArrows\n }, hSlot(slots.default)),\n\n h(QIcon, {\n class: 'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon'\n + (leftArrow.value === true ? '' : ' q-tabs__arrow--faded'),\n name: props.leftIcon || $q.iconSet.tabs[ props.vertical === true ? 'up' : 'left' ],\n onMousedownPassive: scrollToStart,\n onTouchstartPassive: scrollToStart,\n onMouseupPassive: stopAnimScroll,\n onMouseleavePassive: stopAnimScroll,\n onTouchendPassive: stopAnimScroll\n }),\n\n h(QIcon, {\n class: 'q-tabs__arrow q-tabs__arrow--right absolute q-tab__icon'\n + (rightArrow.value === true ? '' : ' q-tabs__arrow--faded'),\n name: props.rightIcon || $q.iconSet.tabs[ props.vertical === true ? 'down' : 'right' ],\n onMousedownPassive: scrollToEnd,\n onTouchstartPassive: scrollToEnd,\n onMouseupPassive: stopAnimScroll,\n onMouseleavePassive: stopAnimScroll,\n onTouchendPassive: stopAnimScroll\n })\n ])\n }\n }\n})\n","import { h, ref, computed, watch, withDirectives, Transition, nextTick, getCurrentInstance } from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport TouchPan from '../../directives/TouchPan.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport { useFormProps, useFormAttrs, useFormInject } from '../../composables/private/use-form.js'\nimport useDatetime, { useDatetimeProps, useDatetimeEmits, getDayHash } from '../date/use-datetime.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { formatDate, __splitDate } from '../../utils/date.js'\nimport { position } from '../../utils/event.js'\nimport { pad } from '../../utils/format.js'\nimport { vmIsDestroyed } from '../../utils/private/vm.js'\n\nfunction getViewByModel (model, withSeconds) {\n if (model.hour !== null) {\n if (model.minute === null) {\n return 'minute'\n }\n else if (withSeconds === true && model.second === null) {\n return 'second'\n }\n }\n\n return 'hour'\n}\n\nfunction 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\nexport default createComponent({\n name: 'QTime',\n\n props: {\n ...useDarkProps,\n ...useFormProps,\n ...useDatetimeProps,\n\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 emits: useDatetimeEmits,\n\n setup (props, { slots, emit }) {\n const vm = getCurrentInstance()\n const { $q } = vm.proxy\n\n const isDark = useDark(props, $q)\n const { tabindex, headerClass, getLocale, getCurrentDate } = useDatetime(props, $q)\n\n const formAttrs = useFormAttrs(props)\n const injectFormInput = useFormInject(formAttrs)\n\n let draggingClockRect, dragCache\n\n const clockRef = ref(null)\n\n const mask = computed(() => getMask())\n const locale = computed(() => getLocale())\n\n const defaultDateModel = computed(() => getDefaultDateModel())\n\n const model = __splitDate(\n props.modelValue,\n mask.value, // initial mask\n locale.value, // initial locale\n props.calendar,\n defaultDateModel.value\n )\n\n const view = ref(getViewByModel(model))\n const innerModel = ref(model)\n const isAM = ref(model.hour === null || model.hour < 12)\n\n const classes = computed(() =>\n `q-time q-time--${ props.landscape === true ? 'landscape' : 'portrait' }`\n + (isDark.value === true ? ' q-time--dark q-dark' : '')\n + (props.disable === true ? ' disabled' : (props.readonly === true ? ' q-time--readonly' : ''))\n + (props.bordered === true ? ' q-time--bordered' : '')\n + (props.square === true ? ' q-time--square no-border-radius' : '')\n + (props.flat === true ? ' q-time--flat no-shadow' : '')\n )\n\n const stringModel = computed(() => {\n const time = innerModel.value\n\n return {\n hour: time.hour === null\n ? '--'\n : (\n computedFormat24h.value === true\n ? pad(time.hour)\n : String(\n isAM.value === 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 const computedFormat24h = computed(() => (\n props.format24h !== null\n ? props.format24h\n : $q.lang.date.format24h\n ))\n\n const pointerStyle = computed(() => {\n const\n forHour = view.value === 'hour',\n divider = forHour === true ? 12 : 60,\n amount = innerModel.value[ view.value ],\n degrees = Math.round(amount * (360 / divider)) - 180\n\n let transform = `rotate(${ degrees }deg) translateX(-50%)`\n\n if (\n forHour === true\n && computedFormat24h.value === true\n && innerModel.value.hour >= 12\n ) {\n transform += ' scale(.7)'\n }\n\n return { transform }\n })\n\n const minLink = computed(() => innerModel.value.hour !== null)\n const secLink = computed(() => minLink.value === true && innerModel.value.minute !== null)\n\n const hourInSelection = computed(() => (\n props.hourOptions !== void 0\n ? val => props.hourOptions.includes(val)\n : (\n props.options !== void 0\n ? val => props.options(val, null, null)\n : null\n )\n ))\n\n const minuteInSelection = computed(() => (\n props.minuteOptions !== void 0\n ? val => props.minuteOptions.includes(val)\n : (\n props.options !== void 0\n ? val => props.options(innerModel.value.hour, val, null)\n : null\n )\n ))\n\n const secondInSelection = computed(() => (\n props.secondOptions !== void 0\n ? val => props.secondOptions.includes(val)\n : (\n props.options !== void 0\n ? val => props.options(innerModel.value.hour, innerModel.value.minute, val)\n : null\n )\n ))\n\n const validHours = computed(() => {\n if (hourInSelection.value === null) {\n return null\n }\n\n const am = getValidValues(0, 11, hourInSelection.value)\n const pm = getValidValues(12, 11, hourInSelection.value)\n return { am, pm, values: am.values.concat(pm.values) }\n })\n\n const validMinutes = computed(() => (\n minuteInSelection.value !== null\n ? getValidValues(0, 59, minuteInSelection.value)\n : null\n ))\n\n const validSeconds = computed(() => (\n secondInSelection.value !== null\n ? getValidValues(0, 59, secondInSelection.value)\n : null\n ))\n\n const viewValidOptions = computed(() => {\n switch (view.value) {\n case 'hour':\n return validHours.value\n case 'minute':\n return validMinutes.value\n case 'second':\n return validSeconds.value\n }\n })\n\n const positions = computed(() => {\n let start, end, offset = 0, step = 1\n const values = viewValidOptions.value !== null\n ? viewValidOptions.value.values\n : void 0\n\n if (view.value === 'hour') {\n if (computedFormat24h.value === true) {\n start = 0\n end = 23\n }\n else {\n start = 0\n end = 11\n\n if (isAM.value === false) {\n offset = 12\n }\n }\n }\n else {\n start = 0\n end = 55\n step = 5\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 = values !== void 0 && values.includes(actualVal) === false,\n label = view.value === 'hour' && val === 0\n ? (computedFormat24h.value === true ? '00' : '12')\n : val\n\n pos.push({ val: actualVal, index, disable, label })\n }\n\n return pos\n })\n\n const clockDirectives = computed(() => {\n return [ [\n TouchPan,\n onPan,\n void 0,\n {\n stop: true,\n prevent: true,\n mouse: true\n }\n ] ]\n })\n\n watch(() => props.modelValue, v => {\n const model = __splitDate(\n v,\n mask.value,\n locale.value,\n props.calendar,\n defaultDateModel.value\n )\n\n if (\n model.dateHash !== innerModel.value.dateHash\n || model.timeHash !== innerModel.value.timeHash\n ) {\n innerModel.value = model\n\n if (model.hour === null) {\n view.value = 'hour'\n }\n else {\n isAM.value = model.hour < 12\n }\n }\n })\n\n watch([ mask, locale ], () => {\n nextTick(() => {\n updateValue()\n })\n })\n\n function setNow () {\n const date = {\n ...getCurrentDate(),\n ...getCurrentTime()\n }\n\n updateValue(date)\n Object.assign(innerModel.value, date) // reset any pending changes to innerModel\n\n view.value = 'hour'\n }\n\n function getValidValues (start, count, testFn) {\n const values = Array.apply(null, { length: count + 1 })\n .map((_, index) => {\n const i = index + start\n return {\n index: i,\n val: testFn(i) === true // force boolean\n }\n })\n .filter(v => v.val === true)\n .map(v => v.index)\n\n return {\n min: values[ 0 ],\n max: values[ values.length - 1 ],\n values,\n threshold: count + 1\n }\n }\n\n function getWheelDist (a, b, threshold) {\n const diff = Math.abs(a - b)\n return Math.min(diff, threshold - diff)\n }\n\n function getNormalizedClockValue (val, { min, max, values, threshold }) {\n if (val === min) {\n return min\n }\n\n if (val < min || val > max) {\n return getWheelDist(val, min, threshold) <= getWheelDist(val, max, threshold)\n ? min\n : max\n }\n\n const\n index = values.findIndex(v => val <= v),\n before = values[ index - 1 ],\n after = values[ index ]\n\n return val - before <= after - val\n ? before\n : after\n }\n\n function getMask () {\n return props.calendar !== 'persian' && props.mask !== null\n ? props.mask\n : `HH:mm${ props.withSeconds === true ? ':ss' : '' }`\n }\n\n function getDefaultDateModel () {\n if (typeof props.defaultDate !== 'string') {\n const date = getCurrentDate(true)\n date.dateHash = getDayHash(date)\n return date\n }\n\n return __splitDate(props.defaultDate, 'YYYY/MM/DD', void 0, props.calendar)\n }\n\n function shouldAbortInteraction () {\n return vmIsDestroyed(vm) === true\n // if we have limited options, can we actually set any?\n || (\n viewValidOptions.value !== null\n && (\n viewValidOptions.value.values.length === 0\n || (\n view.value === 'hour' && computedFormat24h.value !== true\n && validHours.value[ isAM.value === true ? 'am' : 'pm' ].values.length === 0\n )\n )\n )\n }\n\n function getClockRect () {\n const\n clock = clockRef.value,\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 function onPan (event) {\n if (shouldAbortInteraction() === true) {\n return\n }\n\n if (event.isFirst === true) {\n draggingClockRect = getClockRect()\n dragCache = updateClock(event.evt, draggingClockRect)\n return\n }\n\n dragCache = updateClock(event.evt, draggingClockRect, dragCache)\n\n if (event.isFinal === true) {\n draggingClockRect = false\n dragCache = null\n goToNextView()\n }\n }\n\n function goToNextView () {\n if (view.value === 'hour') {\n view.value = 'minute'\n }\n else if (props.withSeconds && view.value === 'minute') {\n view.value = 'second'\n }\n }\n\n function 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\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 (view.value === 'hour') {\n val = angle / 30\n\n if (validHours.value !== null) {\n const am = computedFormat24h.value !== true\n ? isAM.value === true\n : (\n validHours.value.am.values.length !== 0 && validHours.value.pm.values.length !== 0\n ? distance >= clockRect.dist\n : validHours.value.am.values.length !== 0\n )\n\n val = getNormalizedClockValue(\n val + (am === true ? 0 : 12),\n validHours.value[ am === true ? 'am' : 'pm' ]\n )\n }\n else {\n val = Math.round(val)\n\n if (computedFormat24h.value === 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 }\n else if (isAM.value === true && val === 12) {\n val = 0\n }\n else if (isAM.value === false && val !== 12) {\n val += 12\n }\n }\n\n if (computedFormat24h.value === true) {\n isAM.value = val < 12\n }\n }\n else {\n val = Math.round(angle / 6) % 60\n\n if (view.value === 'minute' && validMinutes.value !== null) {\n val = getNormalizedClockValue(val, validMinutes.value)\n }\n else if (view.value === 'second' && validSeconds.value !== null) {\n val = getNormalizedClockValue(val, validSeconds.value)\n }\n }\n\n if (cacheVal !== val) {\n setModel[ view.value ](val)\n }\n\n return val\n }\n\n const setView = {\n hour () { view.value = 'hour' },\n minute () { view.value = 'minute' },\n second () { view.value = 'second' }\n }\n\n function setAmOnKey (e) {\n e.keyCode === 13 && setAm()\n }\n\n function setPmOnKey (e) {\n e.keyCode === 13 && setPm()\n }\n\n function onClick (evt) {\n if (shouldAbortInteraction() !== true) {\n // onMousedown() has already updated the offset\n // (on desktop only, through mousedown event)\n if ($q.platform.is.desktop !== true) {\n updateClock(evt, getClockRect())\n }\n\n goToNextView()\n }\n }\n\n function onMousedown (evt) {\n if (shouldAbortInteraction() !== true) {\n updateClock(evt, getClockRect())\n }\n }\n\n function onKeyupHour (e) {\n if (e.keyCode === 13) { // ENTER\n view.value = 'hour'\n }\n else if ([ 37, 39 ].includes(e.keyCode)) {\n const payload = e.keyCode === 37 ? -1 : 1\n\n if (validHours.value !== null) {\n const values = computedFormat24h.value === true\n ? validHours.value.values\n : validHours.value[ isAM.value === true ? 'am' : 'pm' ].values\n\n if (values.length === 0) { return }\n\n if (innerModel.value.hour === null) {\n setHour(values[ 0 ])\n }\n else {\n const index = (\n values.length\n + values.indexOf(innerModel.value.hour)\n + payload\n ) % values.length\n\n setHour(values[ index ])\n }\n }\n else {\n const\n wrap = computedFormat24h.value === true ? 24 : 12,\n offset = computedFormat24h.value !== true && isAM.value === false ? 12 : 0,\n val = innerModel.value.hour === null ? -payload : innerModel.value.hour\n\n setHour(offset + (24 + val + payload) % wrap)\n }\n }\n }\n\n function onKeyupMinute (e) {\n if (e.keyCode === 13) { // ENTER\n view.value = 'minute'\n }\n else if ([ 37, 39 ].includes(e.keyCode)) {\n const payload = e.keyCode === 37 ? -1 : 1\n\n if (validMinutes.value !== null) {\n const values = validMinutes.value.values\n\n if (values.length === 0) { return }\n\n if (innerModel.value.minute === null) {\n setMinute(values[ 0 ])\n }\n else {\n const index = (\n values.length\n + values.indexOf(innerModel.value.minute)\n + payload\n ) % values.length\n\n setMinute(values[ index ])\n }\n }\n else {\n const val = innerModel.value.minute === null ? -payload : innerModel.value.minute\n setMinute((60 + val + payload) % 60)\n }\n }\n }\n\n function onKeyupSecond (e) {\n if (e.keyCode === 13) { // ENTER\n view.value = 'second'\n }\n else if ([ 37, 39 ].includes(e.keyCode)) {\n const payload = e.keyCode === 37 ? -1 : 1\n\n if (validSeconds.value !== null) {\n const values = validSeconds.value.values\n\n if (values.length === 0) { return }\n\n if (innerModel.value.seconds === null) {\n setSecond(values[ 0 ])\n }\n else {\n const index = (\n values.length\n + values.indexOf(innerModel.value.second)\n + payload\n ) % values.length\n\n setSecond(values[ index ])\n }\n }\n else {\n const val = innerModel.value.second === null ? -payload : innerModel.value.second\n setSecond((60 + val + payload) % 60)\n }\n }\n }\n\n function setHour (hour) {\n if (innerModel.value.hour !== hour) {\n innerModel.value.hour = hour\n verifyAndUpdate()\n }\n }\n\n function setMinute (minute) {\n if (innerModel.value.minute !== minute) {\n innerModel.value.minute = minute\n verifyAndUpdate()\n }\n }\n\n function setSecond (second) {\n if (innerModel.value.second !== second) {\n innerModel.value.second = second\n verifyAndUpdate()\n }\n }\n\n const setModel = {\n hour: setHour,\n minute: setMinute,\n second: setSecond\n }\n\n function setAm () {\n if (isAM.value === false) {\n isAM.value = true\n\n if (innerModel.value.hour !== null) {\n innerModel.value.hour -= 12\n verifyAndUpdate()\n }\n }\n }\n\n function setPm () {\n if (isAM.value === true) {\n isAM.value = false\n\n if (innerModel.value.hour !== null) {\n innerModel.value.hour += 12\n verifyAndUpdate()\n }\n }\n }\n\n function verifyAndUpdate () {\n if (hourInSelection.value !== null && hourInSelection.value(innerModel.value.hour) !== true) {\n innerModel.value = __splitDate()\n view.value = 'hour'\n return\n }\n\n if (minuteInSelection.value !== null && minuteInSelection.value(innerModel.value.minute) !== true) {\n innerModel.value.minute = null\n innerModel.value.second = null\n view.value = 'minute'\n return\n }\n\n if (props.withSeconds === true && secondInSelection.value !== null && secondInSelection.value(innerModel.value.second) !== true) {\n innerModel.value.second = null\n view.value = 'second'\n return\n }\n\n if (innerModel.value.hour === null || innerModel.value.minute === null || (props.withSeconds === true && innerModel.value.second === null)) {\n return\n }\n\n updateValue()\n }\n\n function updateValue (obj) {\n const date = Object.assign({ ...innerModel.value }, obj)\n\n const val = props.calendar === 'persian'\n ? pad(date.hour) + ':'\n + pad(date.minute)\n + (props.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 mask.value,\n locale.value,\n date.year,\n date.timezoneOffset\n )\n\n date.changed = val !== props.modelValue\n emit('update:modelValue', val, date)\n }\n\n function getHeader () {\n const label = [\n h('div', {\n class: 'q-time__link '\n + (view.value === 'hour' ? 'q-time__link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n onClick: setView.hour,\n onKeyup: onKeyupHour\n }, stringModel.value.hour),\n\n h('div', ':'),\n\n h(\n 'div',\n minLink.value === true\n ? {\n class: 'q-time__link '\n + (view.value === 'minute' ? 'q-time__link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n onKeyup: onKeyupMinute,\n onClick: setView.minute\n }\n : { class: 'q-time__link' },\n stringModel.value.minute\n )\n ]\n\n if (props.withSeconds === true) {\n label.push(\n h('div', ':'),\n\n h(\n 'div',\n secLink.value === true\n ? {\n class: 'q-time__link '\n + (view.value === 'second' ? 'q-time__link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n onKeyup: onKeyupSecond,\n onClick: setView.second\n }\n : { class: 'q-time__link' },\n stringModel.value.second\n )\n )\n }\n\n const child = [\n h('div', {\n class: 'q-time__header-label row items-center no-wrap',\n dir: 'ltr'\n }, label)\n ]\n\n computedFormat24h.value === false && child.push(\n h('div', {\n class: 'q-time__header-ampm column items-between no-wrap'\n }, [\n h('div', {\n class: 'q-time__link '\n + (isAM.value === true ? 'q-time__link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n onClick: setAm,\n onKeyup: setAmOnKey\n }, 'AM'),\n\n h('div', {\n class: 'q-time__link '\n + (isAM.value !== true ? 'q-time__link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n onClick: setPm,\n onKeyup: setPmOnKey\n }, 'PM')\n ])\n )\n\n return h('div', {\n class: 'q-time__header flex flex-center no-wrap ' + headerClass.value\n }, child)\n }\n\n function getClock () {\n const current = innerModel.value[ view.value ]\n\n return h('div', {\n class: 'q-time__content col relative-position'\n }, [\n h(Transition, {\n name: 'q-transition--scale'\n }, () => h('div', {\n key: 'clock' + view.value,\n class: 'q-time__container-parent absolute-full'\n }, [\n h('div', {\n ref: clockRef,\n class: 'q-time__container-child fit overflow-hidden'\n }, [\n withDirectives(\n h('div', {\n class: 'q-time__clock cursor-pointer non-selectable',\n onClick,\n onMousedown\n }, [\n h('div', { class: 'q-time__clock-circle fit' }, [\n h('div', {\n class: 'q-time__clock-pointer'\n + (innerModel.value[ view.value ] === null ? ' hidden' : (props.color !== void 0 ? ` text-${ props.color }` : '')),\n style: pointerStyle.value\n }),\n\n positions.value.map(pos => h('div', {\n class: `q-time__clock-position row flex-center q-time__clock-pos-${ pos.index }`\n + (pos.val === current\n ? ' q-time__clock-position--active ' + headerClass.value\n : (pos.disable === true ? ' q-time__clock-position--disable' : ''))\n }, [ h('span', pos.label) ]))\n ])\n ]),\n clockDirectives.value\n )\n ])\n ])),\n\n props.nowBtn === true ? h(QBtn, {\n class: 'q-time__now-button absolute',\n icon: $q.iconSet.datetime.now,\n unelevated: true,\n size: 'sm',\n round: true,\n color: props.color,\n textColor: props.textColor,\n tabindex: tabindex.value,\n onClick: setNow\n }) : null\n ])\n }\n\n // expose public method\n vm.proxy.setNow = setNow\n\n return () => {\n const child = [ getClock() ]\n\n const def = hSlot(slots.default)\n def !== void 0 && child.push(\n h('div', { class: 'q-time__actions' }, def)\n )\n\n if (props.name !== void 0 && props.disable !== true) {\n injectFormInput(child, 'push')\n }\n\n return h('div', {\n class: classes.value,\n tabindex: -1\n }, [\n getHeader(),\n h('div', { class: 'q-time__main col overflow-auto' }, child)\n ])\n }\n }\n})\n","import { h, computed, provide, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { timelineKey } from '../../utils/private/symbols.js'\n\nexport default createComponent({\n name: 'QTimeline',\n\n props: {\n ...useDarkProps,\n\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 setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n provide(timelineKey, props)\n\n const classes = computed(() =>\n `q-timeline q-timeline--${ props.layout } q-timeline--${ props.layout }--${ props.side }`\n + (isDark.value === true ? ' q-timeline--dark' : '')\n )\n\n return () => h('ul', { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, computed, inject } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot, hUniqueSlot } from '../../utils/private/render.js'\nimport { timelineKey, emptyRenderFn } from '../../utils/private/symbols.js'\n\nexport default createComponent({\n name: 'QTimelineEntry',\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 setup (props, { slots }) {\n const $timeline = inject(timelineKey, emptyRenderFn)\n if ($timeline === emptyRenderFn) {\n console.error('QTimelineEntry needs to be child of QTimeline')\n return emptyRenderFn\n }\n\n const classes = computed(() =>\n `q-timeline__entry q-timeline__entry--${ props.side }`\n + (props.icon !== void 0 || props.avatar !== void 0 ? ' q-timeline__entry--icon' : '')\n )\n\n const dotClass = computed(() =>\n `q-timeline__dot text-${ props.color || $timeline.color }`\n )\n\n const reverse = computed(() =>\n $timeline.layout === 'comfortable' && $timeline.side === 'left'\n )\n\n return () => {\n const child = hUniqueSlot(slots.default, [])\n\n if (props.body !== void 0) {\n child.unshift(props.body)\n }\n\n if (props.heading === true) {\n const content = [\n h('div'),\n h('div'),\n h(\n props.tag,\n { class: 'q-timeline__heading-title' },\n child\n )\n ]\n\n return h('div', {\n class: 'q-timeline__heading'\n }, reverse.value === true ? content.reverse() : content)\n }\n\n let dot\n\n if (props.icon !== void 0) {\n dot = [\n h(QIcon, {\n class: 'row items-center justify-center',\n name: props.icon\n })\n ]\n }\n else if (props.avatar !== void 0) {\n dot = [\n h('img', {\n class: 'q-timeline__dot-img',\n src: props.avatar\n })\n ]\n }\n\n const content = [\n h('div', { class: 'q-timeline__subtitle' }, [\n h('span', {}, hSlot(slots.subtitle, [ props.subtitle ]))\n ]),\n\n h('div', { class: dotClass.value }, dot),\n\n h('div', { class: 'q-timeline__content' }, [\n h('h6', { class: 'q-timeline__title' }, hSlot(slots.title, [ props.title ]))\n ].concat(child))\n ]\n\n return h('li', {\n class: classes.value\n }, reverse.value === true ? content.reverse() : content)\n }\n }\n})\n","import { h, computed } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport useCheckbox, { useCheckboxProps, useCheckboxEmits } from '../checkbox/use-checkbox.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nexport default createComponent({\n name: 'QToggle',\n\n props: {\n ...useCheckboxProps,\n\n icon: String,\n iconColor: String\n },\n\n emits: useCheckboxEmits,\n\n setup (props) {\n function getInner (isTrue, isIndeterminate) {\n const icon = computed(() =>\n (isTrue.value === true\n ? props.checkedIcon\n : (isIndeterminate.value === true ? props.indeterminateIcon : props.uncheckedIcon)\n ) || props.icon\n )\n\n const color = computed(() => (isTrue.value === true ? props.iconColor : null))\n\n return () => [\n h('div', { class: 'q-toggle__track' }),\n\n h('div', {\n class: 'q-toggle__thumb absolute flex flex-center no-wrap'\n }, icon.value !== void 0\n ? [\n h(QIcon, {\n name: icon.value,\n color: color.value\n })\n ]\n : void 0\n )\n ]\n }\n\n return useCheckbox('toggle', getInner)\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QToolbar',\n\n props: {\n inset: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() =>\n 'q-toolbar row no-wrap items-center'\n + (props.inset === true ? ' q-toolbar--inset' : '')\n )\n\n return () => h('div', { class: classes.value, role: 'toolbar' }, hSlot(slots.default))\n }\n})\n","import { h, computed } from 'vue'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default createComponent({\n name: 'QToolbarTitle',\n\n props: {\n shrink: Boolean\n },\n\n setup (props, { slots }) {\n const classes = computed(() =>\n 'q-toolbar__title ellipsis'\n + (props.shrink === true ? ' col-shrink' : '')\n )\n\n return () => h('div', { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, ref, computed, watch, onBeforeUnmount, Transition, getCurrentInstance } from 'vue'\n\nimport useAnchor, { useAnchorProps } from '../../composables/private/use-anchor.js'\nimport useScrollTarget from '../../composables/private/use-scroll-target.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport usePortal from '../../composables/private/use-portal.js'\nimport useTransition, { useTransitionProps } from '../../composables/private/use-transition.js'\nimport useTick from '../../composables/private/use-tick.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { stopAndPrevent, addEvt, cleanEvt } from '../../utils/event.js'\nimport { clearSelection } from '../../utils/private/selection.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { addClickOutside, removeClickOutside } from '../../utils/private/click-outside.js'\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/private/position-engine.js'\n\nexport default createComponent({\n name: 'QTooltip',\n\n inheritAttrs: false,\n\n props: {\n ...useAnchorProps,\n ...useModelToggleProps,\n ...useTransitionProps,\n\n maxHeight: {\n type: String,\n default: null\n },\n maxWidth: {\n type: String,\n default: null\n },\n\n transitionShow: {\n default: 'jump-down'\n },\n transitionHide: {\n default: 'jump-up'\n },\n\n anchor: {\n type: String,\n default: 'bottom middle',\n validator: validatePosition\n },\n self: {\n type: String,\n default: 'top middle',\n validator: validatePosition\n },\n offset: {\n type: Array,\n default: () => [ 14, 14 ],\n validator: validateOffset\n },\n\n scrollTarget: {\n default: void 0\n },\n\n delay: {\n type: Number,\n default: 0\n },\n\n hideDelay: {\n type: Number,\n default: 0\n }\n },\n\n emits: [\n ...useModelToggleEmits\n ],\n\n setup (props, { slots, emit, attrs }) {\n let unwatchPosition, observer\n\n const vm = getCurrentInstance()\n const { proxy: { $q } } = vm\n\n const innerRef = ref(null)\n const showing = ref(false)\n\n const anchorOrigin = computed(() => parsePosition(props.anchor, $q.lang.rtl))\n const selfOrigin = computed(() => parsePosition(props.self, $q.lang.rtl))\n const hideOnRouteChange = computed(() => props.persistent !== true)\n\n const { registerTick, removeTick } = useTick()\n const { registerTimeout } = useTimeout()\n const { transitionProps, transitionStyle } = useTransition(props)\n const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget)\n\n const { anchorEl, canShow, anchorEvents } = useAnchor({ showing, configureAnchorEl })\n\n const { show, hide } = useModelToggle({\n showing, canShow, handleShow, handleHide,\n hideOnRouteChange,\n processOnMount: true\n })\n\n Object.assign(anchorEvents, { delayShow, delayHide })\n\n const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent, 'tooltip')\n\n // if we're on mobile, let's improve the experience\n // by closing it when user taps outside of it\n if ($q.platform.is.mobile === true) {\n const clickOutsideProps = {\n anchorEl,\n innerRef,\n onClickOutside (e) {\n hide(e)\n\n // prevent click if it's on a dialog backdrop\n if (e.target.classList.contains('q-dialog__backdrop')) {\n stopAndPrevent(e)\n }\n\n return true\n }\n }\n\n const hasClickOutside = computed(() =>\n // it doesn't has external model\n // (null is the default value)\n props.modelValue === null\n // and it's not persistent\n && props.persistent !== true\n && showing.value === true\n )\n\n watch(hasClickOutside, val => {\n const fn = val === true ? addClickOutside : removeClickOutside\n fn(clickOutsideProps)\n })\n\n onBeforeUnmount(() => {\n removeClickOutside(clickOutsideProps)\n })\n }\n\n function handleShow (evt) {\n showPortal()\n\n // should removeTick() if this gets removed\n registerTick(() => {\n observer = new MutationObserver(() => updatePosition())\n observer.observe(innerRef.value, { attributes: false, childList: true, characterData: true, subtree: true })\n updatePosition()\n configureScrollTarget()\n })\n\n if (unwatchPosition === void 0) {\n unwatchPosition = watch(\n () => $q.screen.width + '|' + $q.screen.height + '|' + props.self + '|' + props.anchor + '|' + $q.lang.rtl,\n updatePosition\n )\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n showPortal(true) // done showing portal\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTick()\n hidePortal()\n\n anchorCleanup()\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n hidePortal(true) // done hiding, now destroy\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function anchorCleanup () {\n if (observer !== void 0) {\n observer.disconnect()\n observer = void 0\n }\n\n if (unwatchPosition !== void 0) {\n unwatchPosition()\n unwatchPosition = void 0\n }\n\n unconfigureScrollTarget()\n cleanEvt(anchorEvents, 'tooltipTemp')\n }\n\n function updatePosition () {\n const el = innerRef.value\n\n if (anchorEl.value === null || !el) {\n return\n }\n\n setPosition({\n el,\n offset: props.offset,\n anchorEl: anchorEl.value,\n anchorOrigin: anchorOrigin.value,\n selfOrigin: selfOrigin.value,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth\n })\n }\n\n function delayShow (evt) {\n if ($q.platform.is.mobile === true) {\n clearSelection()\n document.body.classList.add('non-selectable')\n\n const target = anchorEl.value\n const evts = [ 'touchmove', 'touchcancel', 'touchend', 'click' ]\n .map(e => ([ target, e, 'delayHide', 'passiveCapture' ]))\n\n addEvt(anchorEvents, 'tooltipTemp', evts)\n }\n\n registerTimeout(() => { show(evt) }, props.delay)\n }\n\n function delayHide (evt) {\n if ($q.platform.is.mobile === true) {\n cleanEvt(anchorEvents, 'tooltipTemp')\n clearSelection()\n // delay needed otherwise selection still occurs\n setTimeout(() => {\n document.body.classList.remove('non-selectable')\n }, 10)\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => { hide(evt) }, props.hideDelay)\n }\n\n function configureAnchorEl () {\n if (props.noParentEvent === true || anchorEl.value === null) { return }\n\n const evts = $q.platform.is.mobile === true\n ? [\n [ anchorEl.value, 'touchstart', 'delayShow', 'passive' ]\n ]\n : [\n [ anchorEl.value, 'mouseenter', 'delayShow', 'passive' ],\n [ anchorEl.value, 'mouseleave', 'delayHide', 'passive' ]\n ]\n\n addEvt(anchorEvents, 'anchor', evts)\n }\n\n function configureScrollTarget () {\n if (anchorEl.value !== null || props.scrollTarget !== void 0) {\n localScrollTarget.value = getScrollTarget(anchorEl.value, props.scrollTarget)\n const fn = props.noParentEvent === true\n ? updatePosition\n : hide\n\n changeScrollEvent(localScrollTarget.value, fn)\n }\n }\n\n function getTooltipContent () {\n return showing.value === true\n ? h('div', {\n ...attrs,\n ref: innerRef,\n class: [\n 'q-tooltip q-tooltip--style q-position-engine no-pointer-events',\n attrs.class\n ],\n style: [\n attrs.style,\n transitionStyle.value\n ],\n role: 'tooltip'\n }, hSlot(slots.default))\n : null\n }\n\n function renderPortalContent () {\n return h(Transition, transitionProps.value, getTooltipContent)\n }\n\n onBeforeUnmount(anchorCleanup)\n\n // expose public methods\n Object.assign(vm.proxy, { updatePosition })\n\n return renderPortal\n }\n})\n","import { h, ref, computed, watch, onActivated, onDeactivated, onBeforeMount, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport debounce from '../../utils/debounce.js'\nimport { noop } from '../../utils/event.js'\nimport { rtlHasScrollBug } from '../../utils/private/rtl.js'\n\nconst aggBucketSize = 1000\n\nconst scrollToEdges = [\n 'start',\n 'center',\n 'end',\n 'start-force',\n 'center-force',\n 'end-force'\n]\n\nconst filterProto = Array.prototype.filter\n\nconst setOverflowAnchor = __QUASAR_SSR__ || window.getComputedStyle(document.body).overflowAnchor === void 0\n ? noop\n : function (contentEl, index) {\n if (contentEl === null) {\n return\n }\n\n if (contentEl._qOverflowAnimationFrame !== void 0) {\n cancelAnimationFrame(contentEl._qOverflowAnimationFrame)\n }\n\n contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {\n if (contentEl === null) {\n return\n }\n\n contentEl._qOverflowAnimationFrame = void 0\n const children = contentEl.children || []\n\n filterProto\n .call(children, el => el.dataset && el.dataset.qVsAnchor !== void 0)\n .forEach(el => {\n delete el.dataset.qVsAnchor\n })\n\n const el = children[ index ]\n\n if (el && el.dataset) {\n el.dataset.qVsAnchor = ''\n }\n })\n }\n\nfunction sumFn (acc, h) {\n return acc + h\n}\n\nfunction getScrollDetails (\n parent,\n child,\n beforeRef,\n afterRef,\n horizontal,\n rtl,\n stickyStart,\n stickyEnd\n) {\n const\n parentCalc = parent === window ? document.scrollingElement || document.documentElement : parent,\n propElSize = horizontal === true ? 'offsetWidth' : 'offsetHeight',\n details = {\n scrollStart: 0,\n scrollViewSize: -stickyStart - stickyEnd,\n scrollMaxSize: 0,\n offsetStart: -stickyStart,\n offsetEnd: -stickyEnd\n }\n\n if (horizontal === true) {\n if (parent === window) {\n details.scrollStart = window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n details.scrollViewSize += document.documentElement.clientWidth\n }\n else {\n details.scrollStart = parentCalc.scrollLeft\n details.scrollViewSize += parentCalc.clientWidth\n }\n details.scrollMaxSize = parentCalc.scrollWidth\n\n if (rtl === true) {\n details.scrollStart = (rtlHasScrollBug === true ? details.scrollMaxSize - details.scrollViewSize : 0) - details.scrollStart\n }\n }\n else {\n if (parent === window) {\n details.scrollStart = window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n details.scrollViewSize += document.documentElement.clientHeight\n }\n else {\n details.scrollStart = parentCalc.scrollTop\n details.scrollViewSize += parentCalc.clientHeight\n }\n details.scrollMaxSize = parentCalc.scrollHeight\n }\n\n if (beforeRef !== null) {\n for (let el = beforeRef.previousElementSibling; el !== null; el = el.previousElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetStart += el[ propElSize ]\n }\n }\n }\n\n if (afterRef !== null) {\n for (let el = afterRef.nextElementSibling; el !== null; el = el.nextElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetEnd += el[ propElSize ]\n }\n }\n }\n\n if (child !== parent) {\n const\n parentRect = parentCalc.getBoundingClientRect(),\n childRect = child.getBoundingClientRect()\n\n if (horizontal === true) {\n details.offsetStart += childRect.left - parentRect.left\n details.offsetEnd -= childRect.width\n }\n else {\n details.offsetStart += childRect.top - parentRect.top\n details.offsetEnd -= childRect.height\n }\n\n if (parent !== window) {\n details.offsetStart += details.scrollStart\n }\n details.offsetEnd += details.scrollMaxSize - details.offsetStart\n }\n\n return details\n}\n\nfunction setScroll (parent, scroll, horizontal, rtl) {\n if (scroll === 'end') {\n scroll = (parent === window ? document.body : parent)[\n horizontal === true ? 'scrollWidth' : 'scrollHeight'\n ]\n }\n\n if (parent === window) {\n if (horizontal === true) {\n if (rtl === true) {\n scroll = (rtlHasScrollBug === true ? document.body.scrollWidth - document.documentElement.clientWidth : 0) - scroll\n }\n window.scrollTo(scroll, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n }\n else {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, scroll)\n }\n }\n else if (horizontal === true) {\n if (rtl === true) {\n scroll = (rtlHasScrollBug === true ? parent.scrollWidth - parent.offsetWidth : 0) - scroll\n }\n parent.scrollLeft = scroll\n }\n else {\n parent.scrollTop = scroll\n }\n}\n\nfunction sumSize (sizeAgg, size, from, to) {\n if (from >= to) { return 0 }\n\n const\n lastTo = size.length,\n fromAgg = Math.floor(from / aggBucketSize),\n toAgg = Math.floor((to - 1) / aggBucketSize) + 1\n\n let total = sizeAgg.slice(fromAgg, toAgg).reduce(sumFn, 0)\n\n if (from % aggBucketSize !== 0) {\n total -= size.slice(fromAgg * aggBucketSize, from).reduce(sumFn, 0)\n }\n if (to % aggBucketSize !== 0 && to !== lastTo) {\n total -= size.slice(to, toAgg * aggBucketSize).reduce(sumFn, 0)\n }\n\n return total\n}\n\nconst commonVirtScrollProps = {\n virtualScrollSliceSize: {\n type: [ Number, String ],\n default: null\n },\n\n virtualScrollSliceRatioBefore: {\n type: [ Number, String ],\n default: 1\n },\n\n virtualScrollSliceRatioAfter: {\n type: [ Number, String ],\n default: 1\n },\n\n virtualScrollItemSize: {\n type: [ Number, String ],\n default: 24\n },\n\n virtualScrollStickySizeStart: {\n type: [ Number, String ],\n default: 0\n },\n\n virtualScrollStickySizeEnd: {\n type: [ Number, String ],\n default: 0\n },\n\n tableColspan: [ Number, String ]\n}\n\nexport const commonVirtPropsList = Object.keys(commonVirtScrollProps)\n\nexport const useVirtualScrollProps = {\n virtualScrollHorizontal: Boolean,\n onVirtualScroll: Function,\n ...commonVirtScrollProps\n}\n\nexport function useVirtualScroll ({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl,\n virtualScrollItemSizeComputed // optional\n}) {\n const vm = getCurrentInstance()\n\n const { props, emit, proxy } = vm\n const { $q } = proxy\n\n let prevScrollStart, prevToIndex, localScrollViewSize, virtualScrollSizesAgg = [], virtualScrollSizes\n\n const virtualScrollPaddingBefore = ref(0)\n const virtualScrollPaddingAfter = ref(0)\n const virtualScrollSliceSizeComputed = ref({})\n\n const beforeRef = ref(null)\n const afterRef = ref(null)\n const contentRef = ref(null)\n\n const virtualScrollSliceRange = ref({ from: 0, to: 0 })\n\n const colspanAttr = computed(() => (props.tableColspan !== void 0 ? props.tableColspan : 100))\n\n if (virtualScrollItemSizeComputed === void 0) {\n virtualScrollItemSizeComputed = computed(() => props.virtualScrollItemSize)\n }\n\n const needsReset = computed(() => virtualScrollItemSizeComputed.value + ';' + props.virtualScrollHorizontal)\n\n const needsSliceRecalc = computed(() =>\n needsReset.value + ';' + props.virtualScrollSliceRatioBefore + ';' + props.virtualScrollSliceRatioAfter\n )\n\n watch(needsSliceRecalc, () => { setVirtualScrollSize() })\n watch(needsReset, reset)\n\n function reset () {\n localResetVirtualScroll(prevToIndex, true)\n }\n\n function refresh (toIndex) {\n localResetVirtualScroll(toIndex === void 0 ? prevToIndex : toIndex)\n }\n\n function scrollTo (toIndex, edge) {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const scrollDetails = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n )\n\n localScrollViewSize !== scrollDetails.scrollViewSize && setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n Math.min(virtualScrollLength.value - 1, Math.max(0, parseInt(toIndex, 10) || 0)),\n 0,\n scrollToEdges.indexOf(edge) > -1 ? edge : (prevToIndex > -1 && toIndex > prevToIndex ? 'end' : 'start')\n )\n }\n\n function localOnVirtualScrollEvt () {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const\n scrollDetails = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n ),\n listLastIndex = virtualScrollLength.value - 1,\n listEndOffset = scrollDetails.scrollMaxSize - scrollDetails.offsetStart - scrollDetails.offsetEnd - virtualScrollPaddingAfter.value\n\n if (prevScrollStart === scrollDetails.scrollStart) {\n return\n }\n\n if (scrollDetails.scrollMaxSize <= 0) {\n setVirtualScrollSliceRange(scrollEl, scrollDetails, 0, 0)\n return\n }\n\n localScrollViewSize !== scrollDetails.scrollViewSize && setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n updateVirtualScrollSizes(virtualScrollSliceRange.value.from)\n\n const scrollMaxStart = Math.floor(scrollDetails.scrollMaxSize\n - Math.max(scrollDetails.scrollViewSize, scrollDetails.offsetEnd)\n - Math.min(virtualScrollSizes[ listLastIndex ], scrollDetails.scrollViewSize / 2))\n\n if (scrollMaxStart > 0 && Math.ceil(scrollDetails.scrollStart) >= scrollMaxStart) {\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n listLastIndex,\n scrollDetails.scrollMaxSize - scrollDetails.offsetEnd - virtualScrollSizesAgg.reduce(sumFn, 0)\n )\n\n return\n }\n\n let\n toIndex = 0,\n listOffset = scrollDetails.scrollStart - scrollDetails.offsetStart,\n offset = listOffset\n\n if (listOffset <= listEndOffset && listOffset + scrollDetails.scrollViewSize >= virtualScrollPaddingBefore.value) {\n listOffset -= virtualScrollPaddingBefore.value\n toIndex = virtualScrollSliceRange.value.from\n offset = listOffset\n }\n else {\n for (let j = 0; listOffset >= virtualScrollSizesAgg[ j ] && toIndex < listLastIndex; j++) {\n listOffset -= virtualScrollSizesAgg[ j ]\n toIndex += aggBucketSize\n }\n }\n\n while (listOffset > 0 && toIndex < listLastIndex) {\n listOffset -= virtualScrollSizes[ toIndex ]\n if (listOffset > -scrollDetails.scrollViewSize) {\n toIndex++\n offset = listOffset\n }\n else {\n offset = virtualScrollSizes[ toIndex ] + listOffset\n }\n }\n\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n toIndex,\n offset\n )\n }\n\n function setVirtualScrollSliceRange (scrollEl, scrollDetails, toIndex, offset, align) {\n const alignForce = typeof align === 'string' && align.indexOf('-force') > -1\n const alignEnd = alignForce === true ? align.replace('-force', '') : align\n const alignRange = alignEnd !== void 0 ? alignEnd : 'start'\n\n let\n from = Math.max(0, toIndex - virtualScrollSliceSizeComputed.value[ alignRange ]),\n to = from + virtualScrollSliceSizeComputed.value.total\n\n if (to > virtualScrollLength.value) {\n to = virtualScrollLength.value\n from = Math.max(0, to - virtualScrollSliceSizeComputed.value.total)\n }\n\n prevScrollStart = scrollDetails.scrollStart\n\n const rangeChanged = from !== virtualScrollSliceRange.value.from || to !== virtualScrollSliceRange.value.to\n\n if (rangeChanged === false && alignEnd === void 0) {\n emitScroll(toIndex)\n return\n }\n\n const { activeElement } = document\n const contentEl = contentRef.value\n if (\n rangeChanged === true\n && contentEl !== null\n && contentEl !== activeElement\n && contentEl.contains(activeElement) === true\n ) {\n contentEl.addEventListener('focusout', onBlurRefocusFn)\n\n setTimeout(() => {\n contentEl !== null && contentEl.removeEventListener('focusout', onBlurRefocusFn)\n })\n }\n\n setOverflowAnchor(contentEl, toIndex - from)\n\n const sizeBefore = alignEnd !== void 0 ? virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0) : 0\n\n if (rangeChanged === true) {\n // vue key matching algorithm works only if\n // the array of VNodes changes on only one of the ends\n // so we first change one end and then the other\n\n const tempTo = to >= virtualScrollSliceRange.value.from && from <= virtualScrollSliceRange.value.to\n ? virtualScrollSliceRange.value.to\n : to\n\n virtualScrollSliceRange.value = { from, to: tempTo }\n virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, from)\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, to, virtualScrollLength.value)\n\n requestAnimationFrame(() => {\n if (virtualScrollSliceRange.value.to !== to && prevScrollStart === scrollDetails.scrollStart) {\n virtualScrollSliceRange.value = { from: virtualScrollSliceRange.value.from, to }\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, to, virtualScrollLength.value)\n }\n })\n }\n\n requestAnimationFrame(() => {\n // if the scroll was changed give up\n // (another call to setVirtualScrollSliceRange before animation frame)\n if (prevScrollStart !== scrollDetails.scrollStart) {\n return\n }\n\n if (rangeChanged === true) {\n updateVirtualScrollSizes(from)\n }\n\n const\n sizeAfter = virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0),\n posStart = sizeAfter + scrollDetails.offsetStart + virtualScrollPaddingBefore.value,\n posEnd = posStart + virtualScrollSizes[ toIndex ]\n\n let scrollPosition = posStart + offset\n\n if (alignEnd !== void 0) {\n const sizeDiff = sizeAfter - sizeBefore\n const scrollStart = scrollDetails.scrollStart + sizeDiff\n\n scrollPosition = alignForce !== true && scrollStart < posStart && posEnd < scrollStart + scrollDetails.scrollViewSize\n ? scrollStart\n : (\n alignEnd === 'end'\n ? posEnd - scrollDetails.scrollViewSize\n : posStart - (alignEnd === 'start' ? 0 : Math.round((scrollDetails.scrollViewSize - virtualScrollSizes[ toIndex ]) / 2))\n )\n }\n\n prevScrollStart = scrollPosition\n\n setScroll(\n scrollEl,\n scrollPosition,\n props.virtualScrollHorizontal,\n $q.lang.rtl\n )\n\n emitScroll(toIndex)\n })\n }\n\n function updateVirtualScrollSizes (from) {\n const contentEl = contentRef.value\n\n if (contentEl) {\n const\n children = filterProto.call(\n contentEl.children,\n el => el.classList && el.classList.contains('q-virtual-scroll--skip') === false\n ),\n childrenLength = children.length,\n sizeFn = props.virtualScrollHorizontal === true\n ? el => el.getBoundingClientRect().width\n : el => el.offsetHeight\n\n let\n index = from,\n size, diff\n\n for (let i = 0; i < childrenLength;) {\n size = sizeFn(children[ i ])\n i++\n\n while (i < childrenLength && children[ i ].classList.contains('q-virtual-scroll--with-prev') === true) {\n size += sizeFn(children[ i ])\n i++\n }\n\n diff = size - virtualScrollSizes[ index ]\n\n if (diff !== 0) {\n virtualScrollSizes[ index ] += diff\n virtualScrollSizesAgg[ Math.floor(index / aggBucketSize) ] += diff\n }\n\n index++\n }\n }\n }\n\n function onBlurRefocusFn () {\n contentRef.value !== null && contentRef.value !== void 0 && contentRef.value.focus()\n }\n\n function localResetVirtualScroll (toIndex, fullReset) {\n const defaultSize = 1 * virtualScrollItemSizeComputed.value\n\n if (fullReset === true || Array.isArray(virtualScrollSizes) === false) {\n virtualScrollSizes = []\n }\n\n const oldVirtualScrollSizesLength = virtualScrollSizes.length\n\n virtualScrollSizes.length = virtualScrollLength.value\n\n for (let i = virtualScrollLength.value - 1; i >= oldVirtualScrollSizesLength; i--) {\n virtualScrollSizes[ i ] = defaultSize\n }\n\n const jMax = Math.floor((virtualScrollLength.value - 1) / aggBucketSize)\n virtualScrollSizesAgg = []\n for (let j = 0; j <= jMax; j++) {\n let size = 0\n const iMax = Math.min((j + 1) * aggBucketSize, virtualScrollLength.value)\n for (let i = j * aggBucketSize; i < iMax; i++) {\n size += virtualScrollSizes[ i ]\n }\n virtualScrollSizesAgg.push(size)\n }\n\n prevToIndex = -1\n prevScrollStart = void 0\n\n virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, virtualScrollSliceRange.value.from)\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, virtualScrollSliceRange.value.to, virtualScrollLength.value)\n\n if (toIndex >= 0) {\n updateVirtualScrollSizes(virtualScrollSliceRange.value.from)\n nextTick(() => { scrollTo(toIndex) })\n }\n else {\n onVirtualScrollEvt()\n }\n }\n\n function setVirtualScrollSize (scrollViewSize) {\n if (scrollViewSize === void 0 && typeof window !== 'undefined') {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {\n scrollViewSize = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n ).scrollViewSize\n }\n }\n\n localScrollViewSize = scrollViewSize\n\n const virtualScrollSliceRatioBefore = parseFloat(props.virtualScrollSliceRatioBefore) || 0\n const virtualScrollSliceRatioAfter = parseFloat(props.virtualScrollSliceRatioAfter) || 0\n const multiplier = 1 + virtualScrollSliceRatioBefore + virtualScrollSliceRatioAfter\n const view = scrollViewSize === void 0 || scrollViewSize <= 0\n ? 1\n : Math.ceil(scrollViewSize / virtualScrollItemSizeComputed.value)\n\n const baseSize = Math.max(\n 1,\n view,\n Math.ceil((props.virtualScrollSliceSize > 0 ? props.virtualScrollSliceSize : 10) / multiplier)\n )\n\n virtualScrollSliceSizeComputed.value = {\n total: Math.ceil(baseSize * multiplier),\n start: Math.ceil(baseSize * virtualScrollSliceRatioBefore),\n center: Math.ceil(baseSize * (0.5 + virtualScrollSliceRatioBefore)),\n end: Math.ceil(baseSize * (1 + virtualScrollSliceRatioBefore)),\n view\n }\n }\n\n function padVirtualScroll (tag, content) {\n const paddingSize = props.virtualScrollHorizontal === true ? 'width' : 'height'\n const style = {\n [ '--q-virtual-scroll-item-' + paddingSize ]: virtualScrollItemSizeComputed.value + 'px'\n }\n\n return [\n tag === 'tbody'\n ? h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'before',\n ref: beforeRef\n }, [\n h('tr', [\n h('td', {\n style: { [ paddingSize ]: `${ virtualScrollPaddingBefore.value }px`, ...style },\n colspan: colspanAttr.value\n })\n ])\n ])\n : h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'before',\n ref: beforeRef,\n style: { [ paddingSize ]: `${ virtualScrollPaddingBefore.value }px`, ...style }\n }),\n\n h(tag, {\n class: 'q-virtual-scroll__content',\n key: 'content',\n ref: contentRef,\n tabindex: -1\n }, content.flat()),\n\n tag === 'tbody'\n ? h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'after',\n ref: afterRef\n }, [\n h('tr', [\n h('td', {\n style: { [ paddingSize ]: `${ virtualScrollPaddingAfter.value }px`, ...style },\n colspan: colspanAttr.value\n })\n ])\n ])\n : h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'after',\n ref: afterRef,\n style: { [ paddingSize ]: `${ virtualScrollPaddingAfter.value }px`, ...style }\n })\n ]\n }\n\n function emitScroll (index) {\n if (prevToIndex !== index) {\n props.onVirtualScroll !== void 0 && emit('virtualScroll', {\n index,\n from: virtualScrollSliceRange.value.from,\n to: virtualScrollSliceRange.value.to - 1,\n direction: index < prevToIndex ? 'decrease' : 'increase',\n ref: proxy\n })\n\n prevToIndex = index\n }\n }\n\n setVirtualScrollSize()\n const onVirtualScrollEvt = debounce(\n localOnVirtualScrollEvt,\n $q.platform.is.ios === true ? 120 : 35\n )\n\n onBeforeMount(() => {\n setVirtualScrollSize()\n })\n\n let shouldActivate = false\n\n onDeactivated(() => {\n shouldActivate = true\n })\n\n onActivated(() => {\n if (shouldActivate !== true) { return }\n\n const scrollEl = getVirtualScrollTarget()\n\n if (prevScrollStart !== void 0 && scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {\n setScroll(\n scrollEl,\n prevScrollStart,\n props.virtualScrollHorizontal,\n $q.lang.rtl\n )\n }\n else {\n scrollTo(prevToIndex)\n }\n })\n\n __QUASAR_SSR__ || onBeforeUnmount(() => {\n onVirtualScrollEvt.cancel()\n })\n\n // expose public methods\n Object.assign(proxy, { scrollTo, reset, refresh })\n\n return {\n virtualScrollSliceRange,\n virtualScrollSliceSizeComputed,\n\n setVirtualScrollSize,\n onVirtualScrollEvt,\n localResetVirtualScroll,\n padVirtualScroll,\n\n scrollTo,\n reset,\n refresh\n }\n}\n","import { computed } from 'vue'\n\nexport const alignMap = {\n left: 'start',\n center: 'center',\n right: 'end',\n between: 'between',\n around: 'around',\n evenly: 'evenly',\n stretch: 'stretch'\n}\n\nexport const alignValues = Object.keys(alignMap)\n\nexport const useAlignProps = {\n align: {\n type: String,\n validator: v => alignValues.includes(v)\n }\n}\n\nexport default function (props) {\n // return alignClass\n return computed(() => {\n const align = props.align === void 0\n ? props.vertical === true ? 'stretch' : 'left'\n : props.align\n\n return `${ props.vertical === true ? 'items' : 'justify' }-${ alignMap[ align ] }`\n })\n}\n","import { ref, watch, onMounted, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport { clearSelection } from '../../utils/private/selection.js'\nimport { addEvt, cleanEvt, prevent } from '../../utils/event.js'\nimport { isKeyCode } from '../../utils/private/key-composition.js'\n\nexport const useAnchorProps = {\n target: {\n default: true\n },\n noParentEvent: Boolean,\n contextMenu: Boolean\n}\n\nexport default function ({\n showing,\n avoidEmit, // required for QPopupProxy (true)\n configureAnchorEl // optional\n}) {\n const { props, proxy, emit } = getCurrentInstance()\n\n const anchorEl = ref(null)\n\n let touchTimer = null\n\n function canShow (evt) {\n // abort with no parent configured or on multi-touch\n return anchorEl.value === null\n ? false\n : (evt === void 0 || evt.touches === void 0 || evt.touches.length <= 1)\n }\n\n const anchorEvents = {}\n\n if (configureAnchorEl === void 0) {\n // default configureAnchorEl is designed for\n // QMenu & QPopupProxy (which is why it's handled here)\n\n Object.assign(anchorEvents, {\n hide (evt) {\n proxy.hide(evt)\n },\n\n toggle (evt) {\n proxy.toggle(evt)\n evt.qAnchorHandled = true\n },\n\n toggleKey (evt) {\n isKeyCode(evt, 13) === true && anchorEvents.toggle(evt)\n },\n\n contextClick (evt) {\n proxy.hide(evt)\n prevent(evt)\n nextTick(() => {\n proxy.show(evt)\n evt.qAnchorHandled = true\n })\n },\n\n prevent,\n\n mobileTouch (evt) {\n anchorEvents.mobileCleanup(evt)\n\n if (canShow(evt) !== true) {\n return\n }\n\n proxy.hide(evt)\n anchorEl.value.classList.add('non-selectable')\n\n const target = evt.target\n addEvt(anchorEvents, 'anchor', [\n [ target, 'touchmove', 'mobileCleanup', 'passive' ],\n [ target, 'touchend', 'mobileCleanup', 'passive' ],\n [ target, 'touchcancel', 'mobileCleanup', 'passive' ],\n [ anchorEl.value, 'contextmenu', 'prevent', 'notPassive' ]\n ])\n\n touchTimer = setTimeout(() => {\n touchTimer = null\n proxy.show(evt)\n evt.qAnchorHandled = true\n }, 300)\n },\n\n mobileCleanup (evt) {\n anchorEl.value.classList.remove('non-selectable')\n\n if (touchTimer !== null) {\n clearTimeout(touchTimer)\n touchTimer = null\n }\n\n if (showing.value === true && evt !== void 0) {\n clearSelection()\n }\n }\n })\n\n configureAnchorEl = function (context = props.contextMenu) {\n if (props.noParentEvent === true || anchorEl.value === null) { return }\n\n let evts\n\n if (context === true) {\n if (proxy.$q.platform.is.mobile === true) {\n evts = [\n [ anchorEl.value, 'touchstart', 'mobileTouch', 'passive' ]\n ]\n }\n else {\n evts = [\n [ anchorEl.value, 'mousedown', 'hide', 'passive' ],\n [ anchorEl.value, 'contextmenu', 'contextClick', 'notPassive' ]\n ]\n }\n }\n else {\n evts = [\n [ anchorEl.value, 'click', 'toggle', 'passive' ],\n [ anchorEl.value, 'keyup', 'toggleKey', 'passive' ]\n ]\n }\n\n addEvt(anchorEvents, 'anchor', evts)\n }\n }\n\n function unconfigureAnchorEl () {\n cleanEvt(anchorEvents, 'anchor')\n }\n\n function setAnchorEl (el) {\n anchorEl.value = el\n while (anchorEl.value.classList.contains('q-anchor--skip')) {\n anchorEl.value = anchorEl.value.parentNode\n }\n configureAnchorEl()\n }\n\n function pickAnchorEl () {\n if (props.target === false || props.target === '' || proxy.$el.parentNode === null) {\n anchorEl.value = null\n }\n else if (props.target === true) {\n setAnchorEl(proxy.$el.parentNode)\n }\n else {\n let el = props.target\n\n if (typeof props.target === 'string') {\n try {\n el = document.querySelector(props.target)\n }\n catch (err) {\n el = void 0\n }\n }\n\n if (el !== void 0 && el !== null) {\n anchorEl.value = el.$el || el\n configureAnchorEl()\n }\n else {\n anchorEl.value = null\n console.error(`Anchor: target \"${ props.target }\" not found`)\n }\n }\n }\n\n watch(() => props.contextMenu, val => {\n if (anchorEl.value !== null) {\n unconfigureAnchorEl()\n configureAnchorEl(val)\n }\n })\n\n watch(() => props.target, () => {\n if (anchorEl.value !== null) {\n unconfigureAnchorEl()\n }\n\n pickAnchorEl()\n })\n\n watch(() => props.noParentEvent, val => {\n if (anchorEl.value !== null) {\n if (val === true) {\n unconfigureAnchorEl()\n }\n else {\n configureAnchorEl()\n }\n }\n })\n\n onMounted(() => {\n pickAnchorEl()\n\n if (avoidEmit !== true && props.modelValue === true && anchorEl.value === null) {\n emit('update:modelValue', false)\n }\n })\n\n onBeforeUnmount(() => {\n touchTimer !== null && clearTimeout(touchTimer)\n unconfigureAnchorEl()\n })\n\n return {\n anchorEl,\n canShow,\n anchorEvents\n }\n}\n","export default function () {\n const cache = new Map()\n\n return {\n getCache: __QUASAR_SSR_SERVER__\n ? function (_, obj) { return obj }\n : function (key, obj) {\n return cache[ key ] === void 0\n ? (cache[ key ] = obj)\n : cache[ key ]\n },\n\n getCacheWithFn: __QUASAR_SSR_SERVER__\n ? function (_, fn) { return fn() }\n : function (key, fn) {\n return cache[ key ] === void 0\n ? (cache[ key ] = fn())\n : cache[ key ]\n }\n }\n}\n","import { computed } from 'vue'\n\nexport const useDarkProps = {\n dark: {\n type: Boolean,\n default: null\n }\n}\n\nexport default function (props, $q) {\n // return isDark\n return computed(() => (\n props.dark === null\n ? $q.dark.isActive\n : props.dark\n ))\n}\n","// file referenced from docs\n\nconst\n hex = /^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,\n hexa = /^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,\n hexOrHexa = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,\n rgb = /^rgb\\(((0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),){2}(0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5])\\)$/,\n rgba = /^rgba\\(((0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),){2}(0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),(0|0\\.[0-9]+[1-9]|0\\.[1-9]+|1)\\)$/\n\n// Keep in sync with ui/types/api/validation.d.ts\nexport const testPattern = {\n date: v => /^-?[\\d]+\\/[0-1]\\d\\/[0-3]\\d$/.test(v),\n time: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d$/.test(v),\n fulltime: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/.test(v),\n timeOrFulltime: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$/.test(v),\n\n // -- RFC 5322 --\n // -- Added in v2.6.6 --\n // This is a basic helper validation.\n // For something more complex (like RFC 822) you should write and use your own rule.\n // We won't be accepting PRs to enhance the one below because of the reason above.\n // eslint-disable-next-line\n email: v => /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(v),\n\n hexColor: v => hex.test(v),\n hexaColor: v => hexa.test(v),\n hexOrHexaColor: v => hexOrHexa.test(v),\n\n rgbColor: v => rgb.test(v),\n rgbaColor: v => rgba.test(v),\n rgbOrRgbaColor: v => rgb.test(v) || rgba.test(v),\n\n hexOrRgbColor: v => hex.test(v) || rgb.test(v),\n hexaOrRgbaColor: v => hexa.test(v) || rgba.test(v),\n anyColor: v => hexOrHexa.test(v) || rgb.test(v) || rgba.test(v)\n}\n\nexport default {\n testPattern\n}\n","import { ref, computed, watch, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useFormChild from '../use-form-child.js'\nimport { testPattern } from '../../utils/patterns.js'\nimport debounce from '../../utils/debounce.js'\nimport { injectProp } from '../../utils/private/inject-obj-prop.js'\n\nconst lazyRulesValues = [ true, false, 'ondemand' ]\n\nexport const useValidateProps = {\n modelValue: {},\n\n error: {\n type: Boolean,\n default: null\n },\n errorMessage: String,\n noErrorIcon: Boolean,\n\n rules: Array,\n reactiveRules: Boolean,\n lazyRules: {\n type: [ Boolean, String ],\n validator: v => lazyRulesValues.includes(v)\n }\n}\n\nexport default function (focused, innerLoading) {\n const { props, proxy } = getCurrentInstance()\n\n const innerError = ref(false)\n const innerErrorMessage = ref(null)\n const isDirtyModel = ref(null)\n\n useFormChild({ validate, resetValidation })\n\n let validateIndex = 0, unwatchRules\n\n const hasRules = computed(() =>\n props.rules !== void 0\n && props.rules !== null\n && props.rules.length !== 0\n )\n\n const hasActiveRules = computed(() =>\n props.disable !== true\n && hasRules.value === true\n )\n\n const hasError = computed(() =>\n props.error === true || innerError.value === true\n )\n\n const errorMessage = computed(() => (\n typeof props.errorMessage === 'string' && props.errorMessage.length !== 0\n ? props.errorMessage\n : innerErrorMessage.value\n ))\n\n watch(() => props.modelValue, () => {\n validateIfNeeded()\n })\n\n watch(() => props.reactiveRules, val => {\n if (val === true) {\n if (unwatchRules === void 0) {\n unwatchRules = watch(() => props.rules, () => {\n validateIfNeeded(true)\n })\n }\n }\n else if (unwatchRules !== void 0) {\n unwatchRules()\n unwatchRules = void 0\n }\n }, { immediate: true })\n\n watch(focused, val => {\n if (val === true) {\n if (isDirtyModel.value === null) {\n isDirtyModel.value = false\n }\n }\n else if (isDirtyModel.value === false) {\n isDirtyModel.value = true\n\n if (\n hasActiveRules.value === true\n && props.lazyRules !== 'ondemand'\n // Don't re-trigger if it's already in progress;\n // It might mean that focus switched to submit btn and\n // QForm's submit() has been called already (ENTER key)\n && innerLoading.value === false\n ) {\n debouncedValidate()\n }\n }\n })\n\n function resetValidation () {\n validateIndex++\n innerLoading.value = false\n isDirtyModel.value = null\n innerError.value = false\n innerErrorMessage.value = null\n debouncedValidate.cancel()\n }\n\n /*\n * Return value\n * - true (validation succeeded)\n * - false (validation failed)\n * - Promise (pending async validation)\n */\n function validate (val = props.modelValue) {\n if (hasActiveRules.value !== true) {\n return true\n }\n\n const index = ++validateIndex\n\n const setDirty = innerLoading.value !== true\n ? () => { isDirtyModel.value = true }\n : () => {}\n\n const update = (err, msg) => {\n err === true && setDirty()\n\n innerError.value = err\n innerErrorMessage.value = msg || null\n innerLoading.value = false\n }\n\n const promises = []\n\n for (let i = 0; i < props.rules.length; i++) {\n const rule = props.rules[ i ]\n let res\n\n if (typeof rule === 'function') {\n res = rule(val, testPattern)\n }\n else if (typeof rule === 'string' && testPattern[ rule ] !== void 0) {\n res = testPattern[ rule ](val)\n }\n\n if (res === false || typeof res === 'string') {\n update(true, res)\n return false\n }\n else if (res !== true && res !== void 0) {\n promises.push(res)\n }\n }\n\n if (promises.length === 0) {\n update(false)\n return true\n }\n\n innerLoading.value = true\n\n return Promise.all(promises).then(\n res => {\n if (res === void 0 || Array.isArray(res) === false || res.length === 0) {\n index === validateIndex && update(false)\n return true\n }\n\n const msg = res.find(r => r === false || typeof r === 'string')\n index === validateIndex && update(msg !== void 0, msg)\n return msg === void 0\n },\n e => {\n if (index === validateIndex) {\n console.error(e)\n update(true)\n }\n\n return false\n }\n )\n }\n\n function validateIfNeeded (changedRules) {\n if (\n hasActiveRules.value === true\n && props.lazyRules !== 'ondemand'\n && (isDirtyModel.value === true || (props.lazyRules !== true && changedRules !== true))\n ) {\n debouncedValidate()\n }\n }\n\n const debouncedValidate = debounce(validate, 0)\n\n onBeforeUnmount(() => {\n unwatchRules !== void 0 && unwatchRules()\n debouncedValidate.cancel()\n })\n\n // expose public methods & props\n Object.assign(proxy, { resetValidation, validate })\n injectProp(proxy, 'hasError', () => hasError.value)\n\n return {\n isDirtyModel,\n hasRules,\n hasError,\n errorMessage,\n\n validate,\n resetValidation\n }\n}\n","import { h, ref, computed, watch, Transition, nextTick, onActivated, onDeactivated, onBeforeUnmount, onMounted, getCurrentInstance } from 'vue'\n\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nimport QIcon from '../../components/icon/QIcon.js'\nimport QSpinner from '../../components/spinner/QSpinner.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useValidate, { useValidateProps } from './use-validate.js'\nimport useSplitAttrs from './use-split-attrs.js'\n\nimport { hSlot } from '../../utils/private/render.js'\nimport uid from '../../utils/uid.js'\nimport { prevent, stopAndPrevent } from '../../utils/event.js'\nimport { addFocusFn, removeFocusFn } from '../../utils/private/focus-manager.js'\n\nfunction getTargetUid (val) {\n return val === void 0 ? `f_${ uid() }` : val\n}\n\nexport function fieldValueIsFilled (val) {\n return val !== void 0\n && val !== null\n && ('' + val).length !== 0\n}\n\nexport const useFieldProps = {\n ...useDarkProps,\n ...useValidateProps,\n\n label: String,\n stackLabel: Boolean,\n hint: String,\n hideHint: Boolean,\n prefix: String,\n suffix: String,\n\n labelColor: String,\n color: String,\n bgColor: String,\n\n filled: Boolean,\n outlined: Boolean,\n borderless: Boolean,\n standout: [ Boolean, String ],\n\n square: Boolean,\n\n loading: Boolean,\n\n labelSlot: Boolean,\n\n bottomSlots: Boolean,\n hideBottomSpace: Boolean,\n\n rounded: Boolean,\n dense: Boolean,\n itemAligned: Boolean,\n\n counter: Boolean,\n\n clearable: Boolean,\n clearIcon: String,\n\n disable: Boolean,\n readonly: Boolean,\n\n autofocus: Boolean,\n\n for: String,\n\n maxlength: [ Number, String ]\n}\n\nexport const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popupShow', 'popupHide' ]\n\nexport function useFieldState () {\n const { props, attrs, proxy, vnode } = getCurrentInstance()\n\n const isDark = useDark(props, proxy.$q)\n\n return {\n isDark,\n\n editable: computed(() =>\n props.disable !== true && props.readonly !== true\n ),\n\n innerLoading: ref(false),\n focused: ref(false),\n hasPopupOpen: false,\n\n splitAttrs: useSplitAttrs(attrs, vnode),\n targetUid: ref(getTargetUid(props.for)),\n\n rootRef: ref(null),\n targetRef: ref(null),\n controlRef: ref(null)\n\n /**\n * user supplied additionals:\n\n * innerValue - computed\n * floatingLabel - computed\n * inputRef - computed\n\n * fieldClass - computed\n * hasShadow - computed\n\n * controlEvents - Object with fn(e)\n\n * getControl - fn\n * getInnerAppend - fn\n * getControlChild - fn\n * getShadowControl - fn\n * showPopup - fn\n */\n }\n}\n\nexport default function (state) {\n const { props, emit, slots, attrs, proxy } = getCurrentInstance()\n const { $q } = proxy\n\n let focusoutTimer = null\n\n if (state.hasValue === void 0) {\n state.hasValue = computed(() => fieldValueIsFilled(props.modelValue))\n }\n\n if (state.emitValue === void 0) {\n state.emitValue = value => {\n emit('update:modelValue', value)\n }\n }\n\n if (state.controlEvents === void 0) {\n state.controlEvents = {\n onFocusin: onControlFocusin,\n onFocusout: onControlFocusout\n }\n }\n\n Object.assign(state, {\n clearValue,\n onControlFocusin,\n onControlFocusout,\n focus\n })\n\n if (state.computedCounter === void 0) {\n state.computedCounter = computed(() => {\n if (props.counter !== false) {\n const len = typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? ('' + props.modelValue).length\n : (Array.isArray(props.modelValue) === true ? props.modelValue.length : 0)\n\n const max = props.maxlength !== void 0\n ? props.maxlength\n : props.maxValues\n\n return len + (max !== void 0 ? ' / ' + max : '')\n }\n })\n }\n\n const {\n isDirtyModel,\n hasRules,\n hasError,\n errorMessage,\n resetValidation\n } = useValidate(state.focused, state.innerLoading)\n\n const floatingLabel = state.floatingLabel !== void 0\n ? computed(() => props.stackLabel === true || state.focused.value === true || state.floatingLabel.value === true)\n : computed(() => props.stackLabel === true || state.focused.value === true || state.hasValue.value === true)\n\n const shouldRenderBottom = computed(() =>\n props.bottomSlots === true\n || props.hint !== void 0\n || hasRules.value === true\n || props.counter === true\n || props.error !== null\n )\n\n const styleType = computed(() => {\n if (props.filled === true) { return 'filled' }\n if (props.outlined === true) { return 'outlined' }\n if (props.borderless === true) { return 'borderless' }\n if (props.standout) { return 'standout' }\n return 'standard'\n })\n\n const classes = computed(() =>\n `q-field row no-wrap items-start q-field--${ styleType.value }`\n + (state.fieldClass !== void 0 ? ` ${ state.fieldClass.value }` : '')\n + (props.rounded === true ? ' q-field--rounded' : '')\n + (props.square === true ? ' q-field--square' : '')\n + (floatingLabel.value === true ? ' q-field--float' : '')\n + (hasLabel.value === true ? ' q-field--labeled' : '')\n + (props.dense === true ? ' q-field--dense' : '')\n + (props.itemAligned === true ? ' q-field--item-aligned q-item-type' : '')\n + (state.isDark.value === true ? ' q-field--dark' : '')\n + (state.getControl === void 0 ? ' q-field--auto-height' : '')\n + (state.focused.value === true ? ' q-field--focused' : '')\n + (hasError.value === true ? ' q-field--error' : '')\n + (hasError.value === true || state.focused.value === true ? ' q-field--highlighted' : '')\n + (props.hideBottomSpace !== true && shouldRenderBottom.value === true ? ' q-field--with-bottom' : '')\n + (props.disable === true ? ' q-field--disabled' : (props.readonly === true ? ' q-field--readonly' : ''))\n )\n\n const contentClass = computed(() =>\n 'q-field__control relative-position row no-wrap'\n + (props.bgColor !== void 0 ? ` bg-${ props.bgColor }` : '')\n + (\n hasError.value === true\n ? ' text-negative'\n : (\n typeof props.standout === 'string' && props.standout.length !== 0 && state.focused.value === true\n ? ` ${ props.standout }`\n : (props.color !== void 0 ? ` text-${ props.color }` : '')\n )\n )\n )\n\n const hasLabel = computed(() =>\n props.labelSlot === true || props.label !== void 0\n )\n\n const labelClass = computed(() =>\n 'q-field__label no-pointer-events absolute ellipsis'\n + (props.labelColor !== void 0 && hasError.value !== true ? ` text-${ props.labelColor }` : '')\n )\n\n const controlSlotScope = computed(() => ({\n id: state.targetUid.value,\n editable: state.editable.value,\n focused: state.focused.value,\n floatingLabel: floatingLabel.value,\n modelValue: props.modelValue,\n emitValue: state.emitValue\n }))\n\n const attributes = computed(() => {\n const acc = {\n for: state.targetUid.value\n }\n\n if (props.disable === true) {\n acc[ 'aria-disabled' ] = 'true'\n }\n else if (props.readonly === true) {\n acc[ 'aria-readonly' ] = 'true'\n }\n\n return acc\n })\n\n watch(() => props.for, val => {\n // don't transform targetUid into a computed\n // prop as it will break SSR\n state.targetUid.value = getTargetUid(val)\n })\n\n function focusHandler () {\n const el = document.activeElement\n let target = state.targetRef !== void 0 && state.targetRef.value\n\n if (target && (el === null || el.id !== state.targetUid.value)) {\n target.hasAttribute('tabindex') === true || (target = target.querySelector('[tabindex]'))\n if (target && target !== el) {\n target.focus({ preventScroll: true })\n }\n }\n }\n\n function focus () {\n addFocusFn(focusHandler)\n }\n\n function blur () {\n removeFocusFn(focusHandler)\n const el = document.activeElement\n if (el !== null && state.rootRef.value.contains(el)) {\n el.blur()\n }\n }\n\n function onControlFocusin (e) {\n if (focusoutTimer !== null) {\n clearTimeout(focusoutTimer)\n focusoutTimer = null\n }\n\n if (state.editable.value === true && state.focused.value === false) {\n state.focused.value = true\n emit('focus', e)\n }\n }\n\n function onControlFocusout (e, then) {\n focusoutTimer !== null && clearTimeout(focusoutTimer)\n focusoutTimer = setTimeout(() => {\n focusoutTimer = null\n\n if (\n document.hasFocus() === true && (\n state.hasPopupOpen === true\n || state.controlRef === void 0\n || state.controlRef.value === null\n || state.controlRef.value.contains(document.activeElement) !== false\n )\n ) {\n return\n }\n\n if (state.focused.value === true) {\n state.focused.value = false\n emit('blur', e)\n }\n\n then !== void 0 && then()\n })\n }\n\n function clearValue (e) {\n // prevent activating the field but keep focus on desktop\n stopAndPrevent(e)\n\n if ($q.platform.is.mobile !== true) {\n const el = (state.targetRef !== void 0 && state.targetRef.value) || state.rootRef.value\n el.focus()\n }\n else if (state.rootRef.value.contains(document.activeElement) === true) {\n document.activeElement.blur()\n }\n\n if (props.type === 'file') { // TODO vue3\n // do not let focus be triggered\n // as it will make the native file dialog\n // appear for another selection\n state.inputRef.value.value = null\n }\n\n emit('update:modelValue', null)\n emit('clear', props.modelValue)\n\n nextTick(() => {\n resetValidation()\n\n if ($q.platform.is.mobile !== true) {\n isDirtyModel.value = false\n }\n })\n }\n\n function getContent () {\n const node = []\n\n slots.prepend !== void 0 && node.push(\n h('div', {\n class: 'q-field__prepend q-field__marginal row no-wrap items-center',\n key: 'prepend',\n onClick: prevent\n }, slots.prepend())\n )\n\n node.push(\n h('div', {\n class: 'q-field__control-container col relative-position row no-wrap q-anchor--skip'\n }, getControlContainer())\n )\n\n hasError.value === true && props.noErrorIcon === false && node.push(\n getInnerAppendNode('error', [\n h(QIcon, { name: $q.iconSet.field.error, color: 'negative' })\n ])\n )\n\n if (props.loading === true || state.innerLoading.value === true) {\n node.push(\n getInnerAppendNode(\n 'inner-loading-append',\n slots.loading !== void 0\n ? slots.loading()\n : [ h(QSpinner, { color: props.color }) ]\n )\n )\n }\n else if (props.clearable === true && state.hasValue.value === true && state.editable.value === true) {\n node.push(\n getInnerAppendNode('inner-clearable-append', [\n h(QIcon, {\n class: 'q-field__focusable-action',\n tag: 'button',\n name: props.clearIcon || $q.iconSet.field.clear,\n tabindex: 0,\n type: 'button',\n 'aria-hidden': null,\n role: null,\n onClick: clearValue\n })\n ])\n )\n }\n\n slots.append !== void 0 && node.push(\n h('div', {\n class: 'q-field__append q-field__marginal row no-wrap items-center',\n key: 'append',\n onClick: prevent\n }, slots.append())\n )\n\n state.getInnerAppend !== void 0 && node.push(\n getInnerAppendNode('inner-append', state.getInnerAppend())\n )\n\n state.getControlChild !== void 0 && node.push(\n state.getControlChild()\n )\n\n return node\n }\n\n function getControlContainer () {\n const node = []\n\n props.prefix !== void 0 && props.prefix !== null && node.push(\n h('div', {\n class: 'q-field__prefix no-pointer-events row items-center'\n }, props.prefix)\n )\n\n if (state.getShadowControl !== void 0 && state.hasShadow.value === true) {\n node.push(\n state.getShadowControl()\n )\n }\n\n if (state.getControl !== void 0) {\n node.push(state.getControl())\n }\n // internal usage only:\n else if (slots.rawControl !== void 0) {\n node.push(slots.rawControl())\n }\n else if (slots.control !== void 0) {\n node.push(\n h('div', {\n ref: state.targetRef,\n class: 'q-field__native row',\n tabindex: -1,\n ...state.splitAttrs.attributes.value,\n 'data-autofocus': props.autofocus === true || void 0\n }, slots.control(controlSlotScope.value))\n )\n }\n\n hasLabel.value === true && node.push(\n h('div', {\n class: labelClass.value\n }, hSlot(slots.label, props.label))\n )\n\n props.suffix !== void 0 && props.suffix !== null && node.push(\n h('div', {\n class: 'q-field__suffix no-pointer-events row items-center'\n }, props.suffix)\n )\n\n return node.concat(hSlot(slots.default))\n }\n\n function getBottom () {\n let msg, key\n\n if (hasError.value === true) {\n if (errorMessage.value !== null) {\n msg = [ h('div', { role: 'alert' }, errorMessage.value) ]\n key = `q--slot-error-${ errorMessage.value }`\n }\n else {\n msg = hSlot(slots.error)\n key = 'q--slot-error'\n }\n }\n else if (props.hideHint !== true || state.focused.value === true) {\n if (props.hint !== void 0) {\n msg = [ h('div', props.hint) ]\n key = `q--slot-hint-${ props.hint }`\n }\n else {\n msg = hSlot(slots.hint)\n key = 'q--slot-hint'\n }\n }\n\n const hasCounter = props.counter === true || slots.counter !== void 0\n\n if (props.hideBottomSpace === true && hasCounter === false && msg === void 0) {\n return\n }\n\n const main = h('div', {\n key,\n class: 'q-field__messages col'\n }, msg)\n\n return h('div', {\n class: 'q-field__bottom row items-start q-field__bottom--'\n + (props.hideBottomSpace !== true ? 'animated' : 'stale'),\n onClick: prevent\n }, [\n props.hideBottomSpace === true\n ? main\n : h(Transition, { name: 'q-transition--field-message' }, () => main),\n\n hasCounter === true\n ? h('div', {\n class: 'q-field__counter'\n }, slots.counter !== void 0 ? slots.counter() : state.computedCounter.value)\n : null\n ])\n }\n\n function getInnerAppendNode (key, content) {\n return content === null\n ? null\n : h('div', {\n key,\n class: 'q-field__append q-field__marginal row no-wrap items-center q-anchor--skip'\n }, content)\n }\n\n let shouldActivate = false\n\n onDeactivated(() => {\n shouldActivate = true\n })\n\n onActivated(() => {\n shouldActivate === true && props.autofocus === true && proxy.focus()\n })\n\n onMounted(() => {\n if (isRuntimeSsrPreHydration.value === true && props.for === void 0) {\n state.targetUid.value = getTargetUid()\n }\n\n props.autofocus === true && proxy.focus()\n })\n\n onBeforeUnmount(() => {\n focusoutTimer !== null && clearTimeout(focusoutTimer)\n })\n\n // expose public methods\n Object.assign(proxy, { focus, blur })\n\n return function renderField () {\n const labelAttrs = state.getControl === void 0 && slots.control === void 0\n ? {\n ...state.splitAttrs.attributes.value,\n 'data-autofocus': props.autofocus === true || void 0,\n ...attributes.value\n }\n : attributes.value\n\n return h('label', {\n ref: state.rootRef,\n class: [\n classes.value,\n attrs.class\n ],\n style: attrs.style,\n ...labelAttrs\n }, [\n slots.before !== void 0\n ? h('div', {\n class: 'q-field__before q-field__marginal row no-wrap items-center',\n onClick: prevent\n }, slots.before())\n : null,\n\n h('div', {\n class: 'q-field__inner relative-position col self-stretch'\n }, [\n h('div', {\n ref: state.controlRef,\n class: contentClass.value,\n tabindex: -1,\n ...state.controlEvents\n }, getContent()),\n\n shouldRenderBottom.value === true\n ? getBottom()\n : null\n ]),\n\n slots.after !== void 0\n ? h('div', {\n class: 'q-field__after q-field__marginal row no-wrap items-center',\n onClick: prevent\n }, slots.after())\n : null\n ])\n }\n}\n","import { computed } from 'vue'\n\nexport default function (props, typeGuard) {\n function getFormDomProps () {\n const model = props.modelValue\n\n try {\n const dt = 'DataTransfer' in window\n ? new DataTransfer()\n : ('ClipboardEvent' in window\n ? new ClipboardEvent('').clipboardData\n : void 0\n )\n\n if (Object(model) === model) {\n ('length' in model\n ? Array.from(model)\n : [ model ]\n ).forEach(file => {\n dt.items.add(file)\n })\n }\n\n return {\n files: dt.files\n }\n }\n catch (e) {\n return {\n files: void 0\n }\n }\n }\n\n return typeGuard === true\n ? computed(() => {\n if (props.type !== 'file') {\n return\n }\n\n return getFormDomProps()\n })\n : computed(getFormDomProps)\n}\n","import { h, computed } from 'vue'\n\nexport const useFormProps = {\n name: String\n}\n\nexport function useFormAttrs (props) {\n return computed(() => ({\n type: 'hidden',\n name: props.name,\n value: props.modelValue\n }))\n}\n\nexport function useFormInject (formAttrs = {}) {\n return (child, action, className) => {\n child[ action ](\n h('input', {\n class: 'hidden' + (className || ''),\n ...formAttrs.value\n })\n )\n }\n}\n\nexport function useFormInputNameAttr (props) {\n return computed(() => props.name || props.for)\n}\n","import { ref, watch, onBeforeMount, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport History from '../../history.js'\nimport { vmHasRouter } from '../../utils/private/vm.js'\n\nlet counter = 0\n\nexport const useFullscreenProps = {\n fullscreen: Boolean,\n noRouteFullscreenExit: Boolean\n}\n\nexport const useFullscreenEmits = [ 'update:fullscreen', 'fullscreen' ]\n\nexport default function () {\n const vm = getCurrentInstance()\n const { props, emit, proxy } = vm\n\n let historyEntry, fullscreenFillerNode, container\n const inFullscreen = ref(false)\n\n vmHasRouter(vm) === true && watch(() => proxy.$route.fullPath, () => {\n props.noRouteFullscreenExit !== true && exitFullscreen()\n })\n\n watch(() => props.fullscreen, v => {\n if (inFullscreen.value !== v) {\n toggleFullscreen()\n }\n })\n\n watch(inFullscreen, v => {\n emit('update:fullscreen', v)\n emit('fullscreen', v)\n })\n\n function toggleFullscreen () {\n if (inFullscreen.value === true) {\n exitFullscreen()\n }\n else {\n setFullscreen()\n }\n }\n\n function setFullscreen () {\n if (inFullscreen.value === true) {\n return\n }\n\n inFullscreen.value = true\n container = proxy.$el.parentNode\n container.replaceChild(fullscreenFillerNode, proxy.$el)\n document.body.appendChild(proxy.$el)\n\n counter++\n if (counter === 1) {\n document.body.classList.add('q-body--fullscreen-mixin')\n }\n\n historyEntry = {\n handler: exitFullscreen\n }\n History.add(historyEntry)\n }\n\n function exitFullscreen () {\n if (inFullscreen.value !== true) {\n return\n }\n\n if (historyEntry !== void 0) {\n History.remove(historyEntry)\n historyEntry = void 0\n }\n\n container.replaceChild(proxy.$el, fullscreenFillerNode)\n inFullscreen.value = false\n\n counter = Math.max(0, counter - 1)\n\n if (counter === 0) {\n document.body.classList.remove('q-body--fullscreen-mixin')\n\n if (proxy.$el.scrollIntoView !== void 0) {\n setTimeout(() => { proxy.$el.scrollIntoView() })\n }\n }\n }\n\n onBeforeMount(() => {\n fullscreenFillerNode = document.createElement('span')\n })\n\n onMounted(() => {\n props.fullscreen === true && setFullscreen()\n })\n\n onBeforeUnmount(exitFullscreen)\n\n // expose public methods\n Object.assign(proxy, {\n toggleFullscreen,\n setFullscreen,\n exitFullscreen\n })\n\n return {\n inFullscreen,\n toggleFullscreen\n }\n}\n","import { onBeforeUnmount } from 'vue'\n\nimport History from '../../history.js'\n\nexport default function (showing, hide, hideOnRouteChange) {\n let historyEntry\n\n function removeFromHistory () {\n if (historyEntry !== void 0) {\n History.remove(historyEntry)\n historyEntry = void 0\n }\n }\n\n onBeforeUnmount(() => {\n showing.value === true && removeFromHistory()\n })\n\n return {\n removeFromHistory,\n\n addToHistory () {\n historyEntry = {\n condition: () => hideOnRouteChange.value === true,\n handler: hide\n }\n\n History.add(historyEntry)\n }\n }\n}\n","import { client } from '../../plugins/Platform.js'\n\nconst isJapanese = /[\\u3000-\\u303f\\u3040-\\u309f\\u30a0-\\u30ff\\uff00-\\uff9f\\u4e00-\\u9faf\\u3400-\\u4dbf]/\nconst isChinese = /[\\u4e00-\\u9fff\\u3400-\\u4dbf\\u{20000}-\\u{2a6df}\\u{2a700}-\\u{2b73f}\\u{2b740}-\\u{2b81f}\\u{2b820}-\\u{2ceaf}\\uf900-\\ufaff\\u3300-\\u33ff\\ufe30-\\ufe4f\\uf900-\\ufaff\\u{2f800}-\\u{2fa1f}]/u\nconst isKorean = /[\\u3131-\\u314e\\u314f-\\u3163\\uac00-\\ud7a3]/\nconst isPlainText = /[a-z0-9_ -]$/i\n\nexport default function (onInput) {\n return function onComposition (e) {\n if (e.type === 'compositionend' || e.type === 'change') {\n if (e.target.qComposing !== true) { return }\n e.target.qComposing = false\n onInput(e)\n }\n else if (\n e.type === 'compositionupdate'\n && e.target.qComposing !== true\n && typeof e.data === 'string'\n ) {\n const isComposing = client.is.firefox === true\n ? isPlainText.test(e.data) === false\n : isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true\n\n if (isComposing === true) {\n e.target.qComposing = true\n }\n }\n }\n}\n","import { watch, nextTick, onMounted, getCurrentInstance } from 'vue'\n\nimport { vmHasRouter } from '../../utils/private/vm.js'\n\nexport const useModelToggleProps = {\n modelValue: {\n type: Boolean,\n default: null\n },\n\n 'onUpdate:modelValue': [ Function, Array ]\n}\n\nexport const useModelToggleEmits = [\n 'beforeShow', 'show', 'beforeHide', 'hide'\n]\n\n// handleShow/handleHide -> removeTick(), self (& emit show)\n\nexport default function ({\n showing,\n canShow, // optional\n hideOnRouteChange, // optional\n handleShow, // optional\n handleHide, // optional\n processOnMount // optional\n}) {\n const vm = getCurrentInstance()\n const { props, emit, proxy } = vm\n\n let payload\n\n function toggle (evt) {\n if (showing.value === true) {\n hide(evt)\n }\n else {\n show(evt)\n }\n }\n\n function show (evt) {\n if (\n props.disable === true\n || (evt !== void 0 && evt.qAnchorHandled === true)\n || (canShow !== void 0 && canShow(evt) !== true)\n ) {\n return\n }\n\n const listener = props[ 'onUpdate:modelValue' ] !== void 0\n\n if (listener === true && __QUASAR_SSR_SERVER__ !== true) {\n emit('update:modelValue', true)\n payload = evt\n nextTick(() => {\n if (payload === evt) {\n payload = void 0\n }\n })\n }\n\n if (props.modelValue === null || listener === false || __QUASAR_SSR_SERVER__) {\n processShow(evt)\n }\n }\n\n function processShow (evt) {\n if (showing.value === true) {\n return\n }\n\n showing.value = true\n\n emit('beforeShow', evt)\n\n if (handleShow !== void 0) {\n handleShow(evt)\n }\n else {\n emit('show', evt)\n }\n }\n\n function hide (evt) {\n if (__QUASAR_SSR_SERVER__ || props.disable === true) {\n return\n }\n\n const listener = props[ 'onUpdate:modelValue' ] !== void 0\n\n if (listener === true && __QUASAR_SSR_SERVER__ !== true) {\n emit('update:modelValue', false)\n payload = evt\n nextTick(() => {\n if (payload === evt) {\n payload = void 0\n }\n })\n }\n\n if (props.modelValue === null || listener === false || __QUASAR_SSR_SERVER__) {\n processHide(evt)\n }\n }\n\n function processHide (evt) {\n if (showing.value === false) {\n return\n }\n\n showing.value = false\n\n emit('beforeHide', evt)\n\n if (handleHide !== void 0) {\n handleHide(evt)\n }\n else {\n emit('hide', evt)\n }\n }\n\n function processModelChange (val) {\n if (props.disable === true && val === true) {\n if (props[ 'onUpdate:modelValue' ] !== void 0) {\n emit('update:modelValue', false)\n }\n }\n else if ((val === true) !== showing.value) {\n const fn = val === true ? processShow : processHide\n fn(payload)\n }\n }\n\n watch(() => props.modelValue, processModelChange)\n\n if (hideOnRouteChange !== void 0 && vmHasRouter(vm) === true) {\n watch(() => proxy.$route.fullPath, () => {\n if (hideOnRouteChange.value === true && showing.value === true) {\n hide()\n }\n })\n }\n\n processOnMount === true && onMounted(() => {\n processModelChange(props.modelValue)\n })\n\n // expose public methods\n const publicMethods = { show, hide, toggle }\n Object.assign(proxy, publicMethods)\n\n return publicMethods\n}\n","import { client } from '../plugins/Platform.js'\n\nimport { createDirective } from '../utils/private/create.js'\nimport { getModifierDirections, shouldStart } from '../utils/private/touch.js'\nimport { addEvt, cleanEvt, position, leftClick, stopAndPrevent, preventDraggable, noop } from '../utils/event.js'\nimport { clearSelection } from '../utils/private/selection.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.js'\n\nfunction parseArg (arg) {\n // delta (min velocity -- dist / time)\n // mobile min distance on first move\n // desktop min distance until deciding if it's a swipe or not\n const data = [ 0.06, 6, 50 ]\n\n if (typeof arg === 'string' && arg.length) {\n arg.split(':').forEach((val, index) => {\n const v = parseFloat(val)\n v && (data[ index ] = v)\n })\n }\n\n return data\n}\n\nexport default createDirective(__QUASAR_SSR_SERVER__\n ? { name: 'touch-swipe', getSSRProps }\n : {\n name: 'touch-swipe',\n\n beforeMount (el, { value, arg, modifiers }) {\n // early return, we don't need to do anything\n if (modifiers.mouse !== true && client.has.touch !== true) {\n return\n }\n\n const mouseCapture = modifiers.mouseCapture === true ? 'Capture' : ''\n\n const ctx = {\n handler: value,\n sensitivity: parseArg(arg),\n direction: getModifierDirections(modifiers),\n\n noop,\n\n mouseStart (evt) {\n if (shouldStart(evt, ctx) && leftClick(evt)) {\n addEvt(ctx, 'temp', [\n [ document, 'mousemove', 'move', `notPassive${ mouseCapture }` ],\n [ document, 'mouseup', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt, true)\n }\n },\n\n touchStart (evt) {\n if (shouldStart(evt, ctx)) {\n const target = evt.target\n addEvt(ctx, 'temp', [\n [ target, 'touchmove', 'move', 'notPassiveCapture' ],\n [ target, 'touchcancel', 'end', 'notPassiveCapture' ],\n [ target, 'touchend', 'end', 'notPassiveCapture' ]\n ])\n ctx.start(evt)\n }\n },\n\n start (evt, mouseEvent) {\n client.is.firefox === true && preventDraggable(el, true)\n\n const pos = position(evt)\n\n ctx.event = {\n x: pos.left,\n y: pos.top,\n time: Date.now(),\n mouse: mouseEvent === true,\n dir: false\n }\n },\n\n move (evt) {\n if (ctx.event === void 0) {\n return\n }\n\n if (ctx.event.dir !== false) {\n stopAndPrevent(evt)\n return\n }\n\n const time = Date.now() - ctx.event.time\n\n if (time === 0) {\n return\n }\n\n const\n pos = position(evt),\n distX = pos.left - ctx.event.x,\n absX = Math.abs(distX),\n distY = pos.top - ctx.event.y,\n absY = Math.abs(distY)\n\n if (ctx.event.mouse !== true) {\n if (absX < ctx.sensitivity[ 1 ] && absY < ctx.sensitivity[ 1 ]) {\n ctx.end(evt)\n return\n }\n }\n // is user trying to select text?\n // if so, then something should be reported here\n // (previous selection, if any, was discarded when swipe started)\n else if (window.getSelection().toString() !== '') {\n ctx.end(evt)\n return\n }\n else if (absX < ctx.sensitivity[ 2 ] && absY < ctx.sensitivity[ 2 ]) {\n return\n }\n\n const\n velX = absX / time,\n velY = absY / time\n\n if (\n ctx.direction.vertical === true\n && absX < absY\n && absX < 100\n && velY > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = distY < 0 ? 'up' : 'down'\n }\n\n if (\n ctx.direction.horizontal === true\n && absX > absY\n && absY < 100\n && velX > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = distX < 0 ? 'left' : 'right'\n }\n\n if (\n ctx.direction.up === true\n && absX < absY\n && distY < 0\n && absX < 100\n && velY > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'up'\n }\n\n if (\n ctx.direction.down === true\n && absX < absY\n && distY > 0\n && absX < 100\n && velY > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'down'\n }\n\n if (\n ctx.direction.left === true\n && absX > absY\n && distX < 0\n && absY < 100\n && velX > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'left'\n }\n\n if (\n ctx.direction.right === true\n && absX > absY\n && distX > 0\n && absY < 100\n && velX > ctx.sensitivity[ 0 ]\n ) {\n ctx.event.dir = 'right'\n }\n\n if (ctx.event.dir !== false) {\n stopAndPrevent(evt)\n\n if (ctx.event.mouse === true) {\n document.body.classList.add('no-pointer-events--children')\n document.body.classList.add('non-selectable')\n clearSelection()\n\n ctx.styleCleanup = withDelay => {\n ctx.styleCleanup = void 0\n\n document.body.classList.remove('non-selectable')\n\n const remove = () => {\n document.body.classList.remove('no-pointer-events--children')\n }\n\n if (withDelay === true) { setTimeout(remove, 50) }\n else { remove() }\n }\n }\n\n ctx.handler({\n evt,\n touch: ctx.event.mouse !== true,\n mouse: ctx.event.mouse,\n direction: ctx.event.dir,\n duration: time,\n distance: {\n x: absX,\n y: absY\n }\n })\n }\n else {\n ctx.end(evt)\n }\n },\n\n end (evt) {\n if (ctx.event === void 0) {\n return\n }\n\n cleanEvt(ctx, 'temp')\n client.is.firefox === true && preventDraggable(el, false)\n ctx.styleCleanup !== void 0 && ctx.styleCleanup(true)\n evt !== void 0 && ctx.event.dir !== false && stopAndPrevent(evt)\n\n ctx.event = void 0\n }\n }\n\n el.__qtouchswipe = ctx\n\n if (modifiers.mouse === true) {\n // account for UMD too where modifiers will be lowercased to work\n const capture = modifiers.mouseCapture === true || modifiers.mousecapture === true\n ? 'Capture'\n : ''\n\n addEvt(ctx, 'main', [\n [ el, 'mousedown', 'mouseStart', `passive${ capture }` ]\n ])\n }\n\n client.has.touch === true && addEvt(ctx, 'main', [\n [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],\n [ el, 'touchmove', 'noop', 'notPassiveCapture' ] // cannot be passive (ex: iOS scroll)\n ])\n },\n\n updated (el, bindings) {\n const ctx = el.__qtouchswipe\n\n if (ctx !== void 0) {\n if (bindings.oldValue !== bindings.value) {\n typeof bindings.value !== 'function' && ctx.end()\n ctx.handler = bindings.value\n }\n\n ctx.direction = getModifierDirections(bindings.modifiers)\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qtouchswipe\n\n if (ctx !== void 0) {\n cleanEvt(ctx, 'main')\n cleanEvt(ctx, 'temp')\n\n client.is.firefox === true && preventDraggable(el, false)\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n delete el.__qtouchswipe\n }\n }\n }\n)\n","import { h, ref, computed, watch, nextTick, getCurrentInstance, Transition, KeepAlive } from 'vue'\n\nimport TouchSwipe from '../../directives/TouchSwipe.js'\n\nimport useCache from '../../composables/private/use-cache.js'\n\nimport { hSlot } from '../../utils/private/render.js'\nimport { getNormalizedVNodes } from '../../utils/private/vm.js'\n\nexport const usePanelChildProps = {\n name: { required: true },\n disable: Boolean\n}\n\nconst PanelWrapper = {\n setup (_, { slots }) {\n return () => h('div', {\n class: 'q-panel scroll',\n role: 'tabpanel'\n }, hSlot(slots.default))\n }\n}\n\nexport const usePanelProps = {\n modelValue: {\n required: true\n },\n\n animated: Boolean,\n infinite: Boolean,\n swipeable: Boolean,\n vertical: Boolean,\n\n transitionPrev: String,\n transitionNext: String,\n transitionDuration: {\n type: [ String, Number ],\n default: 300\n },\n\n keepAlive: Boolean,\n keepAliveInclude: [ String, Array, RegExp ],\n keepAliveExclude: [ String, Array, RegExp ],\n keepAliveMax: Number\n}\n\nexport const usePanelEmits = [ 'update:modelValue', 'beforeTransition', 'transition' ]\n\nexport default function () {\n const { props, emit, proxy } = getCurrentInstance()\n const { getCacheWithFn } = useCache()\n\n let panels, forcedPanelTransition\n\n const panelIndex = ref(null)\n const panelTransition = ref(null)\n\n function onSwipe (evt) {\n const dir = props.vertical === true ? 'up' : 'left'\n goToPanelByOffset((proxy.$q.lang.rtl === true ? -1 : 1) * (evt.direction === dir ? 1 : -1))\n }\n\n const panelDirectives = computed(() => {\n // if props.swipeable\n return [ [\n TouchSwipe,\n onSwipe,\n void 0,\n {\n horizontal: props.vertical !== true,\n vertical: props.vertical,\n mouse: true\n }\n ] ]\n })\n\n const transitionPrev = computed(() =>\n props.transitionPrev || `slide-${ props.vertical === true ? 'down' : 'right' }`\n )\n\n const transitionNext = computed(() =>\n props.transitionNext || `slide-${ props.vertical === true ? 'up' : 'left' }`\n )\n\n const transitionStyle = computed(\n () => `--q-transition-duration: ${ props.transitionDuration }ms`\n )\n\n const contentKey = computed(() => (\n typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? props.modelValue\n : String(props.modelValue)\n ))\n\n const keepAliveProps = computed(() => ({\n include: props.keepAliveInclude,\n exclude: props.keepAliveExclude,\n max: props.keepAliveMax\n }))\n\n const needsUniqueKeepAliveWrapper = computed(() =>\n props.keepAliveInclude !== void 0\n || props.keepAliveExclude !== void 0\n )\n\n watch(() => props.modelValue, (newVal, oldVal) => {\n const index = isValidPanelName(newVal) === true\n ? getPanelIndex(newVal)\n : -1\n\n if (forcedPanelTransition !== true) {\n updatePanelTransition(\n index === -1 ? 0 : (index < getPanelIndex(oldVal) ? -1 : 1)\n )\n }\n\n if (panelIndex.value !== index) {\n panelIndex.value = index\n emit('beforeTransition', newVal, oldVal)\n nextTick(() => {\n emit('transition', newVal, oldVal)\n })\n }\n })\n\n function nextPanel () { goToPanelByOffset(1) }\n function previousPanel () { goToPanelByOffset(-1) }\n\n function goToPanel (name) {\n emit('update:modelValue', name)\n }\n\n function isValidPanelName (name) {\n return name !== void 0 && name !== null && name !== ''\n }\n\n function getPanelIndex (name) {\n return panels.findIndex(panel => {\n return panel.props.name === name\n && panel.props.disable !== ''\n && panel.props.disable !== true\n })\n }\n\n function getEnabledPanels () {\n return panels.filter(panel => {\n return panel.props.disable !== ''\n && panel.props.disable !== true\n })\n }\n\n function updatePanelTransition (direction) {\n const val = direction !== 0 && props.animated === true && panelIndex.value !== -1\n ? 'q-transition--' + (direction === -1 ? transitionPrev.value : transitionNext.value)\n : null\n\n if (panelTransition.value !== val) {\n panelTransition.value = val\n }\n }\n\n function goToPanelByOffset (direction, startIndex = panelIndex.value) {\n let index = startIndex + direction\n\n while (index > -1 && index < panels.length) {\n const opt = panels[ index ]\n\n if (\n opt !== void 0\n && opt.props.disable !== ''\n && opt.props.disable !== true\n ) {\n updatePanelTransition(direction)\n forcedPanelTransition = true\n emit('update:modelValue', opt.props.name)\n setTimeout(() => {\n forcedPanelTransition = false\n })\n return\n }\n\n index += direction\n }\n\n if (props.infinite === true && panels.length !== 0 && startIndex !== -1 && startIndex !== panels.length) {\n goToPanelByOffset(direction, direction === -1 ? panels.length : -1)\n }\n }\n\n function updatePanelIndex () {\n const index = getPanelIndex(props.modelValue)\n\n if (panelIndex.value !== index) {\n panelIndex.value = index\n }\n\n return true\n }\n\n function getPanelContentChild () {\n const panel = isValidPanelName(props.modelValue) === true\n && updatePanelIndex()\n && panels[ panelIndex.value ]\n\n return props.keepAlive === true\n ? [\n h(KeepAlive, keepAliveProps.value, [\n h(\n needsUniqueKeepAliveWrapper.value === true\n ? getCacheWithFn(contentKey.value, () => ({ ...PanelWrapper, name: contentKey.value }))\n : PanelWrapper,\n { key: contentKey.value, style: transitionStyle.value },\n () => panel\n )\n ])\n ]\n : [\n h('div', {\n class: 'q-panel scroll',\n style: transitionStyle.value,\n key: contentKey.value,\n role: 'tabpanel'\n }, [ panel ])\n ]\n }\n\n function getPanelContent () {\n if (panels.length === 0) {\n return\n }\n\n return props.animated === true\n ? [ h(Transition, { name: panelTransition.value }, getPanelContentChild) ]\n : getPanelContentChild()\n }\n\n function updatePanelsList (slots) {\n panels = getNormalizedVNodes(\n hSlot(slots.default, [])\n ).filter(\n panel => panel.props !== null\n && panel.props.slot === void 0\n && isValidPanelName(panel.props.name) === true\n )\n\n return panels.length\n }\n\n function getPanels () {\n return panels\n }\n\n // expose public methods\n Object.assign(proxy, {\n next: nextPanel,\n previous: previousPanel,\n goTo: goToPanel\n })\n\n return {\n panelIndex,\n panelDirectives,\n\n updatePanelsList,\n updatePanelIndex,\n\n getPanelContent,\n getEnabledPanels,\n getPanels,\n\n isValidPanelName,\n\n keepAliveProps,\n needsUniqueKeepAliveWrapper,\n\n goToPanelByOffset,\n goToPanel,\n\n nextPanel,\n previousPanel\n }\n}\n","import { h, ref, onUnmounted, Teleport } from 'vue'\n\nimport { noop } from '../../utils/event.js'\nimport { addFocusWaitFlag, removeFocusWaitFlag } from '../../utils/private/focus-manager.js'\nimport { createGlobalNode, removeGlobalNode } from '../../utils/private/global-nodes.js'\nimport { portalProxyList } from '../../utils/private/portal.js'\nimport { injectProp } from '../../utils/private/inject-obj-prop.js'\n\nfunction isOnGlobalDialog (vm) {\n vm = vm.parent\n\n while (vm !== void 0 && vm !== null) {\n if (vm.type.name === 'QGlobalDialog') {\n return true\n }\n if (vm.type.name === 'QDialog' || vm.type.name === 'QMenu') {\n return false\n }\n\n vm = vm.parent\n }\n\n return false\n}\n\n// Warning!\n// You MUST specify \"inheritAttrs: false\" in your component\n\nexport default function (vm, innerRef, renderPortalContent, type) {\n // showing, including while in show/hide transition\n const portalIsActive = ref(false)\n\n // showing & not in any show/hide transition\n const portalIsAccessible = ref(false)\n\n if (__QUASAR_SSR_SERVER__) {\n return {\n portalIsActive,\n portalIsAccessible,\n\n showPortal: noop,\n hidePortal: noop,\n renderPortal: noop\n }\n }\n\n let portalEl = null\n const focusObj = {}\n const onGlobalDialog = type === 'dialog' && isOnGlobalDialog(vm)\n\n function showPortal (isReady) {\n if (isReady === true) {\n removeFocusWaitFlag(focusObj)\n portalIsAccessible.value = true\n return\n }\n\n portalIsAccessible.value = false\n\n if (portalIsActive.value === false) {\n if (onGlobalDialog === false && portalEl === null) {\n portalEl = createGlobalNode(false, type)\n }\n\n portalIsActive.value = true\n\n // register portal\n portalProxyList.push(vm.proxy)\n\n addFocusWaitFlag(focusObj)\n }\n }\n\n function hidePortal (isReady) {\n portalIsAccessible.value = false\n\n if (isReady !== true) { return }\n\n removeFocusWaitFlag(focusObj)\n portalIsActive.value = false\n\n // unregister portal\n const index = portalProxyList.indexOf(vm.proxy)\n if (index !== -1) {\n portalProxyList.splice(index, 1)\n }\n\n if (portalEl !== null) {\n removeGlobalNode(portalEl)\n portalEl = null\n }\n }\n\n onUnmounted(() => { hidePortal(true) })\n\n // needed for portal vm detection\n vm.proxy.__qPortal = true\n\n // public way of accessing the rendered content\n injectProp(vm.proxy, 'contentEl', () => innerRef.value)\n\n return {\n showPortal,\n hidePortal,\n\n portalIsActive,\n portalIsAccessible,\n\n renderPortal: () => (\n onGlobalDialog === true\n ? renderPortalContent()\n : (\n portalIsActive.value === true\n ? [ h(Teleport, { to: portalEl }, renderPortalContent()) ]\n : void 0\n )\n )\n }\n}\n","import preventScroll from '../../utils/prevent-scroll.js'\n\nexport default function () {\n let currentState\n\n return {\n preventBodyScroll (state) {\n if (\n state !== currentState\n && (currentState !== void 0 || state === true)\n ) {\n currentState = state\n preventScroll(state)\n }\n }\n }\n}\n","import { h, computed, ref } from 'vue'\n\nexport default function (props, rootRef) {\n const refocusRef = ref(null)\n\n const refocusTargetEl = computed(() => {\n if (props.disable === true) {\n return null\n }\n\n return h('span', {\n ref: refocusRef,\n class: 'no-outline',\n tabindex: -1\n })\n })\n\n function refocusTarget (e) {\n const root = rootRef.value\n\n if (e !== void 0 && e.type.indexOf('key') === 0) {\n if (\n root !== null\n && document.activeElement !== root\n && root.contains(document.activeElement) === true\n ) {\n root.focus()\n }\n }\n else if (\n refocusRef.value !== null\n && (e === void 0 || (root !== null && root.contains(e.target) === true))\n ) {\n refocusRef.value.focus()\n }\n }\n\n return {\n refocusTargetEl,\n refocusTarget\n }\n}\n","/*\n * Inspired by RouterLink from Vue Router\n * --> API should match!\n */\n\nimport { computed, getCurrentInstance } from 'vue'\n\nimport { vmHasRouter } from '../../utils/private/vm.js'\n\n// Get the original path value of a record by following its aliasOf\nfunction getOriginalPath (record) {\n return record\n ? (\n record.aliasOf\n ? record.aliasOf.path\n : record.path\n ) : ''\n}\n\nfunction isSameRouteRecord (a, b) {\n // since the original record has an undefined value for aliasOf\n // but all aliases point to the original record, this will always compare\n // the original record\n return (a.aliasOf || a) === (b.aliasOf || b)\n}\n\nfunction includesParams (outer, inner) {\n for (const key in inner) {\n const\n innerValue = inner[ key ],\n outerValue = outer[ key ]\n\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue) {\n return false\n }\n }\n else if (\n Array.isArray(outerValue) === false\n || outerValue.length !== innerValue.length\n || innerValue.some((value, i) => value !== outerValue[ i ])\n ) {\n return false\n }\n }\n\n return true\n}\n\nfunction isEquivalentArray (a, b) {\n return Array.isArray(b) === true\n ? a.length === b.length && a.every((value, i) => value === b[ i ])\n : a.length === 1 && a[ 0 ] === b\n}\n\nfunction isSameRouteLocationParamsValue (a, b) {\n return Array.isArray(a) === true\n ? isEquivalentArray(a, b)\n : (\n Array.isArray(b) === true\n ? isEquivalentArray(b, a)\n : a === b\n )\n}\n\nfunction isSameRouteLocationParams (a, b) {\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n\n for (const key in a) {\n if (isSameRouteLocationParamsValue(a[ key ], b[ key ]) === false) {\n return false\n }\n }\n\n return true\n}\n\nexport const useRouterLinkProps = {\n // router-link\n to: [ String, Object ],\n replace: Boolean,\n exact: Boolean,\n activeClass: {\n type: String,\n default: 'q-router-link--active'\n },\n exactActiveClass: {\n type: String,\n default: 'q-router-link--exact-active'\n },\n\n // regular
link\n href: String,\n target: String,\n\n // state\n disable: Boolean\n}\n\n// external props: type, tag\n\nexport default function ({ fallbackTag, useDisableForRouterLinkProps = true } = {}) {\n const vm = getCurrentInstance()\n const { props, proxy, emit } = vm\n\n const hasRouter = vmHasRouter(vm)\n const hasHrefLink = computed(() => props.disable !== true && props.href !== void 0)\n\n // for perf reasons, we use minimum amount of runtime work\n const hasRouterLinkProps = useDisableForRouterLinkProps === true\n ? computed(() =>\n hasRouter === true\n && props.disable !== true\n && hasHrefLink.value !== true\n && props.to !== void 0 && props.to !== null && props.to !== ''\n )\n : computed(() =>\n hasRouter === true\n && hasHrefLink.value !== true\n && props.to !== void 0 && props.to !== null && props.to !== ''\n )\n\n const resolvedLink = computed(() => (\n hasRouterLinkProps.value === true\n ? getLink(props.to)\n : null\n ))\n\n const hasRouterLink = computed(() => resolvedLink.value !== null)\n const hasLink = computed(() => hasHrefLink.value === true || hasRouterLink.value === true)\n\n const linkTag = computed(() => (\n props.type === 'a' || hasLink.value === true\n ? 'a'\n : (props.tag || fallbackTag || 'div')\n ))\n\n const linkAttrs = computed(() => (\n hasHrefLink.value === true\n ? {\n href: props.href,\n target: props.target\n }\n : (\n hasRouterLink.value === true\n ? {\n href: resolvedLink.value.href,\n target: props.target\n }\n : {}\n )\n ))\n\n const linkActiveIndex = computed(() => {\n if (hasRouterLink.value === false) {\n return -1\n }\n\n const\n { matched } = resolvedLink.value,\n { length } = matched,\n routeMatched = matched[ length - 1 ]\n\n if (routeMatched === void 0) {\n return -1\n }\n\n const currentMatched = proxy.$route.matched\n\n if (currentMatched.length === 0) {\n return -1\n }\n\n const index = currentMatched.findIndex(\n isSameRouteRecord.bind(null, routeMatched)\n )\n\n if (index > -1) {\n return index\n }\n\n // possible parent record\n const parentRecordPath = getOriginalPath(matched[ length - 2 ])\n\n return (\n // we are dealing with nested routes\n length > 1\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n && getOriginalPath(routeMatched) === parentRecordPath\n // avoid comparing the child with its parent\n && currentMatched[ currentMatched.length - 1 ].path !== parentRecordPath\n ? currentMatched.findIndex(\n isSameRouteRecord.bind(null, matched[ length - 2 ])\n )\n : index\n )\n })\n\n const linkIsActive = computed(() =>\n hasRouterLink.value === true\n && linkActiveIndex.value !== -1\n && includesParams(proxy.$route.params, resolvedLink.value.params)\n )\n\n const linkIsExactActive = computed(() =>\n linkIsActive.value === true\n && linkActiveIndex.value === proxy.$route.matched.length - 1\n && isSameRouteLocationParams(proxy.$route.params, resolvedLink.value.params)\n )\n\n const linkClass = computed(() => (\n hasRouterLink.value === true\n ? (\n linkIsExactActive.value === true\n ? ` ${ props.exactActiveClass } ${ props.activeClass }`\n : (\n props.exact === true\n ? ''\n : (linkIsActive.value === true ? ` ${ props.activeClass }` : '')\n )\n )\n : ''\n ))\n\n function getLink (to) {\n try { return proxy.$router.resolve(to) }\n catch (_) {}\n\n return null\n }\n\n /**\n * @returns Promise\n */\n function navigateToRouterLink (\n e,\n { returnRouterError, to = props.to, replace = props.replace } = {}\n ) {\n if (props.disable === true) {\n // ensure native navigation is prevented in all cases,\n // like when useDisableForRouterLinkProps === false (QRouteTab)\n e.preventDefault()\n return Promise.resolve(false)\n }\n\n if (\n // don't redirect with control keys;\n // should match RouterLink from Vue Router\n e.metaKey || e.altKey || e.ctrlKey || e.shiftKey\n\n // don't redirect on right click\n || (e.button !== void 0 && e.button !== 0)\n\n // don't redirect if it should open in a new window\n || props.target === '_blank'\n ) {\n return Promise.resolve(false)\n }\n\n // hinder the native navigation\n e.preventDefault()\n\n // then() can also return a \"soft\" router error (Vue Router behavior)\n const promise = proxy.$router[ replace === true ? 'replace' : 'push' ](to)\n\n return returnRouterError === true\n ? promise\n // else catching hard errors and also \"soft\" ones - then(err => ...)\n : promise.then(() => {}).catch(() => {})\n }\n\n // warning! ensure that the component using it has 'click' included in its 'emits' definition prop\n function navigateOnClick (e) {\n if (hasRouterLink.value === true) {\n const go = opts => navigateToRouterLink(e, opts)\n\n emit('click', e, go)\n e.defaultPrevented !== true && go()\n }\n else {\n emit('click', e)\n }\n }\n\n return {\n hasRouterLink,\n hasHrefLink,\n hasLink,\n\n linkTag,\n resolvedLink,\n linkIsActive,\n linkIsExactActive,\n linkClass,\n linkAttrs,\n\n getLink,\n navigateToRouterLink,\n navigateOnClick\n }\n}\n","import { ref, watch, onBeforeUnmount } from 'vue'\n\nimport { listenOpts } from '../../utils/event.js'\n\nexport default function (\n props,\n configureScrollTarget\n) {\n const localScrollTarget = ref(null)\n let scrollFn\n\n function changeScrollEvent (scrollTarget, fn) {\n const fnProp = `${ fn !== void 0 ? 'add' : 'remove' }EventListener`\n const fnHandler = fn !== void 0 ? fn : scrollFn\n\n if (scrollTarget !== window) {\n scrollTarget[ fnProp ]('scroll', fnHandler, listenOpts.passive)\n }\n\n window[ fnProp ]('scroll', fnHandler, listenOpts.passive)\n\n scrollFn = fn\n }\n\n function unconfigureScrollTarget () {\n if (localScrollTarget.value !== null) {\n changeScrollEvent(localScrollTarget.value)\n localScrollTarget.value = null\n }\n }\n\n const noParentEventWatcher = watch(() => props.noParentEvent, () => {\n if (localScrollTarget.value !== null) {\n unconfigureScrollTarget()\n configureScrollTarget()\n }\n })\n\n onBeforeUnmount(noParentEventWatcher)\n\n return {\n localScrollTarget,\n unconfigureScrollTarget,\n changeScrollEvent\n }\n}\n","import { computed } from 'vue'\n\nexport const useSizeDefaults = {\n xs: 18,\n sm: 24,\n md: 32,\n lg: 38,\n xl: 46\n}\n\nexport const useSizeProps = {\n size: String\n}\n\nexport default function (props, sizes = useSizeDefaults) {\n // return sizeStyle\n return computed(() => (\n props.size !== void 0\n ? { fontSize: props.size in sizes ? `${ sizes[ props.size ] }px` : props.size }\n : null\n ))\n}\n","import { ref, onBeforeUpdate } from 'vue'\n\nconst listenerRE = /^on[A-Z]/\n\nexport default function (attrs, vnode) {\n const acc = {\n listeners: ref({}),\n attributes: ref({})\n }\n\n function update () {\n const attributes = {}\n const listeners = {}\n\n for (const key in attrs) {\n if (key !== 'class' && key !== 'style' && listenerRE.test(key) === false) {\n attributes[ key ] = attrs[ key ]\n }\n }\n\n for (const key in vnode.props) {\n if (listenerRE.test(key) === true) {\n listeners[ key ] = vnode.props[ key ]\n }\n }\n\n acc.attributes.value = attributes\n acc.listeners.value = listeners\n }\n\n onBeforeUpdate(update)\n\n update()\n\n return acc\n}\n","import { nextTick, onDeactivated, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport { vmIsDestroyed } from '../../utils/private/vm'\n\n/*\n * Usage:\n * registerTick(fn)\n * removeTick()\n */\n\nexport default function () {\n let tickFn\n const vm = getCurrentInstance()\n\n function removeTick () {\n tickFn = void 0\n }\n\n onDeactivated(removeTick)\n onBeforeUnmount(removeTick)\n\n return {\n removeTick,\n\n registerTick (fn) {\n tickFn = fn\n\n nextTick(() => {\n if (tickFn === fn) {\n // we also check if VM is destroyed, since if it\n // got to trigger one nextTick() we cannot stop it\n vmIsDestroyed(vm) === false && tickFn()\n tickFn = void 0\n }\n })\n }\n }\n}\n","import { onDeactivated, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport { vmIsDestroyed } from '../../utils/private/vm.js'\n\n/*\n * Usage:\n * registerTimeout(fn[, delay])\n * removeTimeout()\n */\n\nexport default function () {\n let timer = null\n const vm = getCurrentInstance()\n\n function removeTimeout () {\n if (timer !== null) {\n clearTimeout(timer)\n timer = null\n }\n }\n\n onDeactivated(removeTimeout)\n onBeforeUnmount(removeTimeout)\n\n return {\n removeTimeout,\n\n registerTimeout (fn, delay) {\n removeTimeout(timer)\n\n if (vmIsDestroyed(vm) === false) {\n timer = setTimeout(fn, delay)\n }\n }\n }\n}\n","import { computed } from 'vue'\n\nexport const useTransitionProps = {\n transitionShow: {\n type: String,\n default: 'fade'\n },\n\n transitionHide: {\n type: String,\n default: 'fade'\n },\n\n transitionDuration: {\n type: [ String, Number ],\n default: 300\n }\n}\n\nexport default function (props, defaultShowFn = () => {}, defaultHideFn = () => {}) {\n return {\n transitionProps: computed(() => {\n const show = `q-transition--${ props.transitionShow || defaultShowFn() }`\n const hide = `q-transition--${ props.transitionHide || defaultHideFn() }`\n\n return {\n appear: true,\n\n enterFromClass: `${ show }-enter-from`,\n enterActiveClass: `${ show }-enter-active`,\n enterToClass: `${ show }-enter-to`,\n\n leaveFromClass: `${ hide }-leave-from`,\n leaveActiveClass: `${ hide }-leave-active`,\n leaveToClass: `${ hide }-leave-to`\n }\n }),\n\n transitionStyle: computed(() => `--q-transition-duration: ${ props.transitionDuration }ms`)\n }\n}\n","import { inject, watch, getCurrentInstance, onMounted, onBeforeUnmount } from 'vue'\n\nimport { formKey } from '../utils/private/symbols.js'\n\nexport default function ({ validate, resetValidation, requiresQForm }) {\n const $form = inject(formKey, false)\n\n if ($form !== false) {\n const { props, proxy } = getCurrentInstance()\n\n // export public method (so it can be used in QForm)\n Object.assign(proxy, { validate, resetValidation })\n\n watch(() => props.disable, val => {\n if (val === true) {\n typeof resetValidation === 'function' && resetValidation()\n $form.unbindComponent(proxy)\n }\n else {\n $form.bindComponent(proxy)\n }\n })\n\n onMounted(() => {\n // register to parent QForm\n props.disable !== true && $form.bindComponent(proxy)\n })\n\n onBeforeUnmount(() => {\n // un-register from parent QForm\n props.disable !== true && $form.unbindComponent(proxy)\n })\n }\n else if (requiresQForm === true) {\n console.error('Parent QForm not found on useFormChild()!')\n }\n}\n","import { createDirective } from '../utils/private/create.js'\nimport { closePortals, getPortalProxy } from '../utils/private/portal.js'\nimport { isKeyCode } from '../utils/private/key-composition.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.js'\n\n/*\n * depth\n * < 0 --> close all chain\n * 0 --> disabled\n * > 0 --> close chain up to N parent\n */\n\nfunction getDepth (value) {\n if (value === false) {\n return 0\n }\n if (value === true || value === void 0) {\n return 1\n }\n\n const depth = parseInt(value, 10)\n return isNaN(depth) ? 0 : depth\n}\n\nexport default createDirective(__QUASAR_SSR_SERVER__\n ? { name: 'close-popup', getSSRProps }\n : {\n name: 'close-popup',\n\n beforeMount (el, { value }) {\n const ctx = {\n depth: getDepth(value),\n\n handler (evt) {\n // allow @click to be emitted\n ctx.depth !== 0 && setTimeout(() => {\n const proxy = getPortalProxy(el)\n if (proxy !== void 0) {\n closePortals(proxy, evt, ctx.depth)\n }\n })\n },\n\n handlerKey (evt) {\n isKeyCode(evt, 13) === true && ctx.handler(evt)\n }\n }\n\n el.__qclosepopup = ctx\n\n el.addEventListener('click', ctx.handler)\n el.addEventListener('keyup', ctx.handlerKey)\n },\n\n updated (el, { value, oldValue }) {\n if (value !== oldValue) {\n el.__qclosepopup.depth = getDepth(value)\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qclosepopup\n el.removeEventListener('click', ctx.handler)\n el.removeEventListener('keyup', ctx.handlerKey)\n delete el.__qclosepopup\n }\n }\n)\n","import { createDirective } from '../utils/private/create.js'\nimport { isDeepEqual } from '../utils/is.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.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 && 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 createDirective(__QUASAR_SSR_SERVER__\n ? { name: 'intersection', getSSRProps }\n : {\n name: 'intersection',\n\n mounted (el, { modifiers, value }) {\n const ctx = {\n once: modifiers.once === true\n }\n\n update(el, ctx, value)\n\n el.__qvisible = ctx\n },\n\n updated (el, binding) {\n const ctx = el.__qvisible\n ctx !== void 0 && update(el, ctx, binding.value)\n },\n\n beforeUnmount: destroy\n }\n)\n","export default function (fn, limit = 250) {\n let wait = false, result\n\n return function (/* ...args */) {\n if (wait === false) {\n wait = true\n setTimeout(() => { wait = false }, limit)\n result = fn.apply(this, arguments)\n }\n\n return result\n }\n}\n","import { createDirective } from '../utils/private/create.js'\nimport { css } from '../utils/dom.js'\nimport { position, stop, addEvt, cleanEvt } from '../utils/event.js'\nimport { isKeyCode } from '../utils/private/key-composition.js'\nimport throttle from '../utils/throttle.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.js'\n\nfunction showRipple (evt, el, ctx, forceCenter) {\n ctx.modifiers.stop === true && stop(evt)\n\n const color = ctx.modifiers.color\n let center = ctx.modifiers.center\n center = center === true || forceCenter === true\n\n const\n node = document.createElement('span'),\n innerNode = document.createElement('span'),\n pos = position(evt),\n { left, top, width, height } = el.getBoundingClientRect(),\n diameter = Math.sqrt(width * width + height * height),\n radius = diameter / 2,\n centerX = `${ (width - diameter) / 2 }px`,\n x = center ? centerX : `${ pos.left - left - radius }px`,\n centerY = `${ (height - diameter) / 2 }px`,\n y = center ? centerY : `${ pos.top - top - radius }px`\n\n innerNode.className = 'q-ripple__inner'\n css(innerNode, {\n height: `${ diameter }px`,\n width: `${ diameter }px`,\n transform: `translate3d(${ x },${ y },0) scale3d(.2,.2,1)`,\n opacity: 0\n })\n\n node.className = `q-ripple${ color ? ' text-' + color : '' }`\n node.setAttribute('dir', 'ltr')\n node.appendChild(innerNode)\n el.appendChild(node)\n\n const abort = () => {\n node.remove()\n clearTimeout(timer)\n }\n ctx.abort.push(abort)\n\n let timer = setTimeout(() => {\n innerNode.classList.add('q-ripple__inner--enter')\n innerNode.style.transform = `translate3d(${ centerX },${ centerY },0) scale3d(1,1,1)`\n innerNode.style.opacity = 0.2\n\n timer = setTimeout(() => {\n innerNode.classList.remove('q-ripple__inner--enter')\n innerNode.classList.add('q-ripple__inner--leave')\n innerNode.style.opacity = 0\n\n timer = setTimeout(() => {\n node.remove()\n ctx.abort.splice(ctx.abort.indexOf(abort), 1)\n }, 275)\n }, 250)\n }, 50)\n}\n\nfunction updateModifiers (ctx, { modifiers, value, arg }) {\n const cfg = Object.assign({}, ctx.cfg.ripple, modifiers, value)\n ctx.modifiers = {\n early: cfg.early === true,\n stop: cfg.stop === true,\n center: cfg.center === true,\n color: cfg.color || arg,\n keyCodes: [].concat(cfg.keyCodes || 13)\n }\n}\n\nexport default createDirective(__QUASAR_SSR_SERVER__\n ? { name: 'ripple', getSSRProps }\n : {\n name: 'ripple',\n\n beforeMount (el, binding) {\n const cfg = binding.instance.$.appContext.config.globalProperties.$q.config || {}\n\n if (cfg.ripple === false) {\n return\n }\n\n const ctx = {\n cfg,\n enabled: binding.value !== false,\n modifiers: {},\n abort: [],\n\n start (evt) {\n if (\n ctx.enabled === true\n && evt.qSkipRipple !== true\n && evt.type === (ctx.modifiers.early === true ? 'pointerdown' : 'click')\n ) {\n showRipple(evt, el, ctx, evt.qKeyEvent === true)\n }\n },\n\n keystart: throttle(evt => {\n if (\n ctx.enabled === true\n && evt.qSkipRipple !== true\n && isKeyCode(evt, ctx.modifiers.keyCodes) === true\n && evt.type === `key${ ctx.modifiers.early === true ? 'down' : 'up' }`\n ) {\n showRipple(evt, el, ctx, true)\n }\n }, 300)\n }\n\n updateModifiers(ctx, binding)\n\n el.__qripple = ctx\n\n addEvt(ctx, 'main', [\n [ el, 'pointerdown', 'start', 'passive' ],\n [ el, 'click', 'start', 'passive' ],\n [ el, 'keydown', 'keystart', 'passive' ],\n [ el, 'keyup', 'keystart', 'passive' ]\n ])\n },\n\n updated (el, binding) {\n if (binding.oldValue !== binding.value) {\n const ctx = el.__qripple\n if (ctx !== void 0) {\n ctx.enabled = binding.value !== false\n\n if (ctx.enabled === true && Object(binding.value) === binding.value) {\n updateModifiers(ctx, binding)\n }\n }\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qripple\n if (ctx !== void 0) {\n ctx.abort.forEach(fn => { fn() })\n cleanEvt(ctx, 'main')\n delete el._qripple\n }\n }\n }\n)\n","import { client } from '../plugins/Platform.js'\n\nimport { createDirective } from '../utils/private/create.js'\nimport { getModifierDirections, shouldStart } from '../utils/private/touch.js'\nimport { addEvt, cleanEvt, position, leftClick, prevent, stop, stopAndPrevent, preventDraggable, noop } from '../utils/event.js'\nimport { clearSelection } from '../utils/private/selection.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.js'\n\nfunction getChanges (evt, ctx, isFinal) {\n const pos = position(evt)\n let\n dir,\n distX = pos.left - ctx.event.x,\n distY = pos.top - ctx.event.y,\n absX = Math.abs(distX),\n absY = Math.abs(distY)\n\n const direction = ctx.direction\n\n if (direction.horizontal === true && direction.vertical !== true) {\n dir = distX < 0 ? 'left' : 'right'\n }\n else if (direction.horizontal !== true && direction.vertical === true) {\n dir = distY < 0 ? 'up' : 'down'\n }\n else if (direction.up === true && distY < 0) {\n dir = 'up'\n if (absX > absY) {\n if (direction.left === true && distX < 0) {\n dir = 'left'\n }\n else if (direction.right === true && distX > 0) {\n dir = 'right'\n }\n }\n }\n else if (direction.down === true && distY > 0) {\n dir = 'down'\n if (absX > absY) {\n if (direction.left === true && distX < 0) {\n dir = 'left'\n }\n else if (direction.right === true && distX > 0) {\n dir = 'right'\n }\n }\n }\n else if (direction.left === true && distX < 0) {\n dir = 'left'\n if (absX < absY) {\n if (direction.up === true && distY < 0) {\n dir = 'up'\n }\n else if (direction.down === true && distY > 0) {\n dir = 'down'\n }\n }\n }\n else if (direction.right === true && distX > 0) {\n dir = 'right'\n if (absX < absY) {\n if (direction.up === true && distY < 0) {\n dir = 'up'\n }\n else if (direction.down === true && distY > 0) {\n dir = 'down'\n }\n }\n }\n\n let synthetic = false\n\n if (dir === void 0 && isFinal === false) {\n if (ctx.event.isFirst === true || ctx.event.lastDir === void 0) {\n return {}\n }\n\n dir = ctx.event.lastDir\n synthetic = true\n\n if (dir === 'left' || dir === 'right') {\n pos.left -= distX\n absX = 0\n distX = 0\n }\n else {\n pos.top -= distY\n absY = 0\n distY = 0\n }\n }\n\n return {\n synthetic,\n payload: {\n evt,\n touch: ctx.event.mouse !== true,\n mouse: ctx.event.mouse === true,\n position: pos,\n direction: dir,\n isFirst: ctx.event.isFirst,\n isFinal: isFinal === true,\n duration: Date.now() - ctx.event.time,\n distance: {\n x: absX,\n y: absY\n },\n offset: {\n x: distX,\n y: distY\n },\n delta: {\n x: pos.left - ctx.event.lastX,\n y: pos.top - ctx.event.lastY\n }\n }\n }\n}\n\nlet uid = 0\n\nexport default createDirective(__QUASAR_SSR_SERVER__\n ? { name: 'touch-pan', getSSRProps }\n : {\n name: 'touch-pan',\n\n beforeMount (el, { value, modifiers }) {\n // early return, we don't need to do anything\n if (modifiers.mouse !== true && client.has.touch !== true) {\n return\n }\n\n function handleEvent (evt, mouseEvent) {\n if (modifiers.mouse === true && mouseEvent === true) {\n stopAndPrevent(evt)\n }\n else {\n modifiers.stop === true && stop(evt)\n modifiers.prevent === true && prevent(evt)\n }\n }\n\n const ctx = {\n uid: 'qvtp_' + (uid++),\n handler: value,\n modifiers,\n direction: getModifierDirections(modifiers),\n\n noop,\n\n mouseStart (evt) {\n if (shouldStart(evt, ctx) && leftClick(evt)) {\n addEvt(ctx, 'temp', [\n [ document, 'mousemove', 'move', 'notPassiveCapture' ],\n [ document, 'mouseup', 'end', 'passiveCapture' ]\n ])\n\n ctx.start(evt, true)\n }\n },\n\n touchStart (evt) {\n if (shouldStart(evt, ctx)) {\n const target = evt.target\n\n addEvt(ctx, 'temp', [\n [ target, 'touchmove', 'move', 'notPassiveCapture' ],\n [ target, 'touchcancel', 'end', 'passiveCapture' ],\n [ target, 'touchend', 'end', 'passiveCapture' ]\n ])\n\n ctx.start(evt)\n }\n },\n\n start (evt, mouseEvent) {\n client.is.firefox === true && preventDraggable(el, true)\n ctx.lastEvt = evt\n\n /*\n * Stop propagation so possible upper v-touch-pan don't catch this as well;\n * If we're not the target (based on modifiers), we'll re-emit the event later\n */\n if (mouseEvent === true || modifiers.stop === true) {\n /*\n * are we directly switching to detected state?\n * clone event only otherwise\n */\n if (\n ctx.direction.all !== true\n // account for UMD too where modifiers will be lowercased to work\n && (mouseEvent !== true || (ctx.modifiers.mouseAllDir !== true && ctx.modifiers.mousealldir !== true))\n ) {\n const clone = evt.type.indexOf('mouse') > -1\n ? new MouseEvent(evt.type, evt)\n : new TouchEvent(evt.type, evt)\n\n evt.defaultPrevented === true && prevent(clone)\n evt.cancelBubble === true && stop(clone)\n\n Object.assign(clone, {\n qKeyEvent: evt.qKeyEvent,\n qClickOutside: evt.qClickOutside,\n qAnchorHandled: evt.qAnchorHandled,\n qClonedBy: evt.qClonedBy === void 0\n ? [ ctx.uid ]\n : evt.qClonedBy.concat(ctx.uid)\n })\n\n ctx.initialEvent = {\n target: evt.target,\n event: clone\n }\n }\n\n stop(evt)\n }\n\n const { left, top } = position(evt)\n\n ctx.event = {\n x: left,\n y: top,\n time: Date.now(),\n mouse: mouseEvent === true,\n detected: false,\n isFirst: true,\n isFinal: false,\n lastX: left,\n lastY: top\n }\n },\n\n move (evt) {\n if (ctx.event === void 0) {\n return\n }\n\n const\n pos = position(evt),\n distX = pos.left - ctx.event.x,\n distY = pos.top - ctx.event.y\n\n // prevent buggy browser behavior (like Blink-based engine ones on Windows)\n // where the mousemove event occurs even if there's no movement after mousedown\n // https://bugs.chromium.org/p/chromium/issues/detail?id=161464\n // https://bugs.chromium.org/p/chromium/issues/detail?id=721341\n // https://github.com/quasarframework/quasar/issues/10721\n if (distX === 0 && distY === 0) {\n return\n }\n\n ctx.lastEvt = evt\n\n const isMouseEvt = ctx.event.mouse === true\n const start = () => {\n handleEvent(evt, isMouseEvt)\n\n let cursor\n if (modifiers.preserveCursor !== true && modifiers.preservecursor !== true) {\n cursor = document.documentElement.style.cursor || ''\n document.documentElement.style.cursor = 'grabbing'\n }\n\n isMouseEvt === true && document.body.classList.add('no-pointer-events--children')\n document.body.classList.add('non-selectable')\n clearSelection()\n\n ctx.styleCleanup = withDelayedFn => {\n ctx.styleCleanup = void 0\n\n if (cursor !== void 0) {\n document.documentElement.style.cursor = cursor\n }\n\n document.body.classList.remove('non-selectable')\n\n if (isMouseEvt === true) {\n const remove = () => {\n document.body.classList.remove('no-pointer-events--children')\n }\n\n if (withDelayedFn !== void 0) {\n setTimeout(() => {\n remove()\n withDelayedFn()\n }, 50)\n }\n else { remove() }\n }\n else if (withDelayedFn !== void 0) {\n withDelayedFn()\n }\n }\n }\n\n if (ctx.event.detected === true) {\n ctx.event.isFirst !== true && handleEvent(evt, ctx.event.mouse)\n\n const { payload, synthetic } = getChanges(evt, ctx, false)\n\n if (payload !== void 0) {\n if (ctx.handler(payload) === false) {\n ctx.end(evt)\n }\n else {\n if (ctx.styleCleanup === void 0 && ctx.event.isFirst === true) {\n start()\n }\n\n ctx.event.lastX = payload.position.left\n ctx.event.lastY = payload.position.top\n ctx.event.lastDir = synthetic === true ? void 0 : payload.direction\n ctx.event.isFirst = false\n }\n }\n\n return\n }\n\n if (\n ctx.direction.all === true\n // account for UMD too where modifiers will be lowercased to work\n || (isMouseEvt === true && (ctx.modifiers.mouseAllDir === true || ctx.modifiers.mousealldir === true))\n ) {\n start()\n ctx.event.detected = true\n ctx.move(evt)\n return\n }\n\n const\n absX = Math.abs(distX),\n absY = Math.abs(distY)\n\n if (absX !== absY) {\n if (\n (ctx.direction.horizontal === true && absX > absY)\n || (ctx.direction.vertical === true && absX < absY)\n || (ctx.direction.up === true && absX < absY && distY < 0)\n || (ctx.direction.down === true && absX < absY && distY > 0)\n || (ctx.direction.left === true && absX > absY && distX < 0)\n || (ctx.direction.right === true && absX > absY && distX > 0)\n ) {\n ctx.event.detected = true\n ctx.move(evt)\n }\n else {\n ctx.end(evt, true)\n }\n }\n },\n\n end (evt, abort) {\n if (ctx.event === void 0) {\n return\n }\n\n cleanEvt(ctx, 'temp')\n client.is.firefox === true && preventDraggable(el, false)\n\n if (abort === true) {\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n if (ctx.event.detected !== true && ctx.initialEvent !== void 0) {\n ctx.initialEvent.target.dispatchEvent(ctx.initialEvent.event)\n }\n }\n else if (ctx.event.detected === true) {\n ctx.event.isFirst === true && ctx.handler(getChanges(evt === void 0 ? ctx.lastEvt : evt, ctx).payload)\n\n const { payload } = getChanges(evt === void 0 ? ctx.lastEvt : evt, ctx, true)\n const fn = () => { ctx.handler(payload) }\n\n if (ctx.styleCleanup !== void 0) {\n ctx.styleCleanup(fn)\n }\n else {\n fn()\n }\n }\n\n ctx.event = void 0\n ctx.initialEvent = void 0\n ctx.lastEvt = void 0\n }\n }\n\n el.__qtouchpan = ctx\n\n if (modifiers.mouse === true) {\n // account for UMD too where modifiers will be lowercased to work\n const capture = modifiers.mouseCapture === true || modifiers.mousecapture === true\n ? 'Capture'\n : ''\n\n addEvt(ctx, 'main', [\n [ el, 'mousedown', 'mouseStart', `passive${ capture }` ]\n ])\n }\n\n client.has.touch === true && addEvt(ctx, 'main', [\n [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],\n [ el, 'touchmove', 'noop', 'notPassiveCapture' ] // cannot be passive (ex: iOS scroll)\n ])\n },\n\n updated (el, bindings) {\n const ctx = el.__qtouchpan\n\n if (ctx !== void 0) {\n if (bindings.oldValue !== bindings.value) {\n typeof value !== 'function' && ctx.end()\n ctx.handler = bindings.value\n }\n\n ctx.direction = getModifierDirections(bindings.modifiers)\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qtouchpan\n\n if (ctx !== void 0) {\n // emit the end event when the directive is destroyed while active\n // this is only needed in TouchPan because the rest of the touch directives do not emit an end event\n // the condition is also checked in the start of function but we avoid the call\n ctx.event !== void 0 && ctx.end()\n\n cleanEvt(ctx, 'main')\n cleanEvt(ctx, 'temp')\n\n client.is.firefox === true && preventDraggable(el, false)\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n delete el.__qtouchpan\n }\n }\n }\n)\n","import { client } from './plugins/Platform.js'\nimport { noop } from './utils/event.js'\n\nconst getTrue = () => true\n\nfunction filterInvalidPath (path) {\n return typeof path === 'string'\n && path !== ''\n && path !== '/'\n && path !== '#/'\n}\n\nfunction normalizeExitPath (path) {\n path.startsWith('#') === true && (path = path.substring(1))\n path.startsWith('/') === false && (path = '/' + path)\n path.endsWith('/') === true && (path = path.substring(0, path.length - 1))\n return '#' + path\n}\n\nfunction getShouldExitFn (cfg) {\n if (cfg.backButtonExit === false) {\n return () => false\n }\n\n if (cfg.backButtonExit === '*') {\n return getTrue\n }\n\n // Add default root path\n const exitPaths = [ '#/' ]\n\n // Add custom exit paths\n Array.isArray(cfg.backButtonExit) === true && exitPaths.push(\n ...cfg.backButtonExit.filter(filterInvalidPath).map(normalizeExitPath)\n )\n\n return () => exitPaths.includes(window.location.hash)\n}\n\nexport default {\n __history: [],\n add: noop,\n remove: noop,\n\n install ({ $q }) {\n if (__QUASAR_SSR_SERVER__ || this.__installed === true) { return }\n\n const { cordova, capacitor } = client.is\n\n if (cordova !== true && capacitor !== true) {\n return\n }\n\n const qConf = $q.config[ cordova === true ? 'cordova' : 'capacitor' ]\n\n if (qConf !== void 0 && qConf.backButton === false) {\n return\n }\n\n // if the '@capacitor/app' plugin is not installed\n // then we got nothing to do\n if (\n // if we're on Capacitor mode\n capacitor === true\n // and it's also not in Capacitor's main instance\n && (window.Capacitor === void 0 || window.Capacitor.Plugins.App === void 0)\n ) {\n return\n }\n\n this.add = entry => {\n if (entry.condition === void 0) {\n entry.condition = getTrue\n }\n this.__history.push(entry)\n }\n\n this.remove = entry => {\n const index = this.__history.indexOf(entry)\n if (index >= 0) {\n this.__history.splice(index, 1)\n }\n }\n\n const shouldExit = getShouldExitFn(\n Object.assign(\n { backButtonExit: true },\n qConf\n )\n )\n\n const backHandler = () => {\n if (this.__history.length) {\n const entry = this.__history[ this.__history.length - 1 ]\n\n if (entry.condition() === true) {\n this.__history.pop()\n entry.handler()\n }\n }\n else if (shouldExit() === true) {\n navigator.app.exitApp()\n }\n else {\n window.history.back()\n }\n }\n\n if (cordova === true) {\n document.addEventListener('deviceready', () => {\n document.addEventListener('backbutton', backHandler, false)\n })\n }\n else {\n window.Capacitor.Plugins.App.addListener('backButton', backHandler)\n }\n }\n}\n","export default {\n name: 'material-icons',\n type: {\n positive: 'check_circle',\n negative: 'warning',\n info: 'info',\n warning: 'priority_high'\n },\n arrow: {\n up: 'arrow_upward',\n right: 'arrow_forward',\n down: 'arrow_downward',\n left: 'arrow_back',\n dropdown: 'arrow_drop_down'\n },\n chevron: {\n left: 'chevron_left',\n right: 'chevron_right'\n },\n colorPicker: {\n spectrum: 'gradient',\n tune: 'tune',\n palette: 'style'\n },\n pullToRefresh: {\n icon: 'refresh'\n },\n carousel: {\n left: 'chevron_left',\n right: 'chevron_right',\n up: 'keyboard_arrow_up',\n down: 'keyboard_arrow_down',\n navigationIcon: 'lens'\n },\n chip: {\n remove: 'cancel',\n selected: 'check'\n },\n datetime: {\n arrowLeft: 'chevron_left',\n arrowRight: 'chevron_right',\n now: 'access_time',\n today: 'today'\n },\n editor: {\n bold: 'format_bold',\n italic: 'format_italic',\n strikethrough: 'strikethrough_s',\n underline: 'format_underlined',\n unorderedList: 'format_list_bulleted',\n orderedList: 'format_list_numbered',\n subscript: 'vertical_align_bottom',\n superscript: 'vertical_align_top',\n hyperlink: 'link',\n toggleFullscreen: 'fullscreen',\n quote: 'format_quote',\n left: 'format_align_left',\n center: 'format_align_center',\n right: 'format_align_right',\n justify: 'format_align_justify',\n print: 'print',\n outdent: 'format_indent_decrease',\n indent: 'format_indent_increase',\n removeFormat: 'format_clear',\n formatting: 'text_format',\n fontSize: 'format_size',\n align: 'format_align_left',\n hr: 'remove',\n undo: 'undo',\n redo: 'redo',\n heading: 'format_size',\n code: 'code',\n size: 'format_size',\n font: 'font_download',\n viewSource: 'code'\n },\n expansionItem: {\n icon: 'keyboard_arrow_down',\n denseIcon: 'arrow_drop_down'\n },\n fab: {\n icon: 'add',\n activeIcon: 'close'\n },\n field: {\n clear: 'cancel',\n error: 'error'\n },\n pagination: {\n first: 'first_page',\n prev: 'keyboard_arrow_left',\n next: 'keyboard_arrow_right',\n last: 'last_page'\n },\n rating: {\n icon: 'grade'\n },\n stepper: {\n done: 'check',\n active: 'edit',\n error: 'warning'\n },\n tabs: {\n left: 'chevron_left',\n right: 'chevron_right',\n up: 'keyboard_arrow_up',\n down: 'keyboard_arrow_down'\n },\n table: {\n arrowUp: 'arrow_upward',\n warning: 'warning',\n firstPage: 'first_page',\n prevPage: 'chevron_left',\n nextPage: 'chevron_right',\n lastPage: 'last_page'\n },\n tree: {\n icon: 'play_arrow'\n },\n uploader: {\n done: 'done',\n clear: 'clear',\n add: 'add_box',\n upload: 'cloud_upload',\n removeQueue: 'clear_all',\n removeUploaded: 'done_all'\n }\n}\n","import defineReactivePlugin from './utils/private/define-reactive-plugin.js'\nimport { injectProp } from './utils/private/inject-obj-prop.js'\n// no extension on purpose for next one:\nimport materialIcons from '../icon-set/material-icons'\n\nconst Plugin = defineReactivePlugin({\n iconMapFn: null,\n __icons: {}\n}, {\n set (setObject, ssrContext) {\n const def = { ...setObject, rtl: setObject.rtl === true }\n\n if (__QUASAR_SSR_SERVER__) {\n if (ssrContext === void 0) {\n console.error('SSR ERROR: second param required: Quasar.iconSet.set(iconSet, ssrContext)')\n return\n }\n\n def.set = ssrContext.$q.iconSet.set\n Object.assign(ssrContext.$q.iconSet, def)\n }\n else {\n def.set = Plugin.set\n Object.assign(Plugin.__icons, def)\n }\n },\n\n install ({ $q, iconSet, ssrContext }) {\n if (__QUASAR_SSR_SERVER__) {\n const initialSet = iconSet || materialIcons\n\n $q.iconMapFn = ssrContext.$q.config.iconMapFn || this.iconMapFn || null\n $q.iconSet = {}\n $q.iconSet.set = setObject => {\n this.set(setObject, ssrContext)\n }\n\n $q.iconSet.set(initialSet)\n }\n else {\n if ($q.config.iconMapFn !== void 0) {\n this.iconMapFn = $q.config.iconMapFn\n }\n\n $q.iconSet = this.__icons\n\n injectProp($q, 'iconMapFn', () => this.iconMapFn, val => { this.iconMapFn = val })\n\n if (this.__installed === true) {\n iconSet !== void 0 && this.set(iconSet)\n }\n else {\n this.set(iconSet || materialIcons)\n }\n }\n }\n})\n\nexport default Plugin\n","import { isRuntimeSsrPreHydration, client } from './Platform.js'\n\nimport defineReactivePlugin from '../utils/private/define-reactive-plugin.js'\nimport { listenOpts, noop } from '../utils/event.js'\nimport debounce from '../utils/debounce.js'\n\nconst SIZE_LIST = [ 'sm', 'md', 'lg', 'xl' ]\nconst { passive } = listenOpts\n\nexport default defineReactivePlugin({\n width: 0,\n height: 0,\n name: 'xs',\n\n sizes: {\n sm: 600,\n md: 1024,\n lg: 1440,\n xl: 1920\n },\n\n lt: {\n sm: true,\n md: true,\n lg: true,\n xl: true\n },\n gt: {\n xs: false,\n sm: false,\n md: false,\n lg: false\n },\n\n xs: true,\n sm: false,\n md: false,\n lg: false,\n xl: false\n}, {\n setSizes: noop,\n setDebounce: noop,\n\n install ({ $q, onSSRHydrated }) {\n $q.screen = this\n\n if (__QUASAR_SSR_SERVER__) { return }\n\n if (this.__installed === true) {\n if ($q.config.screen !== void 0) {\n if ($q.config.screen.bodyClasses === false) {\n document.body.classList.remove(`screen--${ this.name }`)\n }\n else {\n this.__update(true)\n }\n }\n return\n }\n\n const { visualViewport } = window\n const target = visualViewport || window\n const scrollingElement = document.scrollingElement || document.documentElement\n const getSize = visualViewport === void 0 || client.is.mobile === true\n ? () => [\n Math.max(window.innerWidth, scrollingElement.clientWidth),\n Math.max(window.innerHeight, scrollingElement.clientHeight)\n ]\n : () => [\n visualViewport.width * visualViewport.scale + window.innerWidth - scrollingElement.clientWidth,\n visualViewport.height * visualViewport.scale + window.innerHeight - scrollingElement.clientHeight\n ]\n\n const classes = $q.config.screen !== void 0 && $q.config.screen.bodyClasses === true\n\n this.__update = force => {\n const [ w, h ] = getSize()\n\n if (h !== this.height) {\n this.height = h\n }\n\n if (w !== this.width) {\n this.width = w\n }\n else if (force !== true) {\n return\n }\n\n let s = this.sizes\n\n this.gt.xs = w >= s.sm\n this.gt.sm = w >= s.md\n this.gt.md = w >= s.lg\n this.gt.lg = w >= s.xl\n this.lt.sm = w < s.sm\n this.lt.md = w < s.md\n this.lt.lg = w < s.lg\n this.lt.xl = w < s.xl\n this.xs = this.lt.sm\n this.sm = this.gt.xs === true && this.lt.md === true\n this.md = this.gt.sm === true && this.lt.lg === true\n this.lg = this.gt.md === true && this.lt.xl === true\n this.xl = this.gt.lg\n\n s = (this.xs === true && 'xs')\n || (this.sm === true && 'sm')\n || (this.md === true && 'md')\n || (this.lg === true && 'lg')\n || 'xl'\n\n if (s !== this.name) {\n if (classes === true) {\n document.body.classList.remove(`screen--${ this.name }`)\n document.body.classList.add(`screen--${ s }`)\n }\n this.name = s\n }\n }\n\n let updateEvt, updateSizes = {}, updateDebounce = 16\n\n this.setSizes = sizes => {\n SIZE_LIST.forEach(name => {\n if (sizes[ name ] !== void 0) {\n updateSizes[ name ] = sizes[ name ]\n }\n })\n }\n this.setDebounce = deb => {\n updateDebounce = deb\n }\n\n const start = () => {\n const style = getComputedStyle(document.body)\n\n // if css props available\n if (style.getPropertyValue('--q-size-sm')) {\n SIZE_LIST.forEach(name => {\n this.sizes[ name ] = parseInt(style.getPropertyValue(`--q-size-${ name }`), 10)\n })\n }\n\n this.setSizes = sizes => {\n SIZE_LIST.forEach(name => {\n if (sizes[ name ]) {\n this.sizes[ name ] = sizes[ name ]\n }\n })\n this.__update(true)\n }\n\n this.setDebounce = delay => {\n updateEvt !== void 0 && target.removeEventListener('resize', updateEvt, passive)\n updateEvt = delay > 0\n ? debounce(this.__update, delay)\n : this.__update\n target.addEventListener('resize', updateEvt, passive)\n }\n\n this.setDebounce(updateDebounce)\n\n if (Object.keys(updateSizes).length !== 0) {\n this.setSizes(updateSizes)\n updateSizes = void 0 // free up memory\n }\n else {\n this.__update()\n }\n\n // due to optimizations, this would be left out otherwise\n classes === true && this.name === 'xs'\n && document.body.classList.add('screen--xs')\n }\n\n if (isRuntimeSsrPreHydration.value === true) {\n onSSRHydrated.push(start)\n }\n else {\n start()\n }\n }\n})\n","import defineReactivePlugin from '../utils/private/define-reactive-plugin.js'\nimport { isRuntimeSsrPreHydration } from './Platform.js'\n\nconst Plugin = defineReactivePlugin({\n isActive: false,\n mode: false\n}, {\n __media: void 0,\n\n set (val) {\n if (__QUASAR_SSR_SERVER__) { return }\n\n Plugin.mode = val\n\n if (val === 'auto') {\n if (Plugin.__media === void 0) {\n Plugin.__media = window.matchMedia('(prefers-color-scheme: dark)')\n Plugin.__updateMedia = () => { Plugin.set('auto') }\n Plugin.__media.addListener(Plugin.__updateMedia)\n }\n\n val = Plugin.__media.matches\n }\n else if (Plugin.__media !== void 0) {\n Plugin.__media.removeListener(Plugin.__updateMedia)\n Plugin.__media = void 0\n }\n\n Plugin.isActive = val === true\n\n document.body.classList.remove(`body--${ val === true ? 'light' : 'dark' }`)\n document.body.classList.add(`body--${ val === true ? 'dark' : 'light' }`)\n },\n\n toggle () {\n if (__QUASAR_SSR_SERVER__ !== true) {\n Plugin.set(Plugin.isActive === false)\n }\n },\n\n install ({ $q, onSSRHydrated, ssrContext }) {\n const { dark } = $q.config\n\n if (__QUASAR_SSR_SERVER__) {\n this.isActive = dark === true\n\n $q.dark = {\n isActive: false,\n mode: false,\n set: val => {\n ssrContext._meta.bodyClasses = ssrContext._meta.bodyClasses\n .replace(' body--light', '')\n .replace(' body--dark', '') + ` body--${ val === true ? 'dark' : 'light' }`\n\n $q.dark.isActive = val === true\n $q.dark.mode = val\n },\n toggle: () => {\n $q.dark.set($q.dark.isActive === false)\n }\n }\n\n $q.dark.set(dark)\n return\n }\n\n $q.dark = this\n\n if (this.__installed === true && dark === void 0) {\n return\n }\n\n this.isActive = dark === true\n\n const initialVal = dark !== void 0 ? dark : false\n\n if (isRuntimeSsrPreHydration.value === true) {\n const ssrSet = val => {\n this.__fromSSR = val\n }\n\n const originalSet = this.set\n\n this.set = ssrSet\n ssrSet(initialVal)\n\n onSSRHydrated.push(() => {\n this.set = originalSet\n this.set(this.__fromSSR)\n })\n }\n else {\n this.set(initialVal)\n }\n }\n})\n\nexport default Plugin\n","export default function setCssVar (propName, value, element = document.body) {\n if (typeof propName !== 'string') {\n throw new TypeError('Expected a string as propName')\n }\n if (typeof value !== 'string') {\n throw new TypeError('Expected a string as value')\n }\n if (!(element instanceof Element)) {\n throw new TypeError('Expected a DOM element')\n }\n\n element.style.setProperty(`--q-${ propName }`, value)\n}\n","import setCssVar from './utils/set-css-var.js'\nimport { noop } from './utils/event.js'\nimport { onKeyDownComposition } from './utils/private/key-composition.js'\nimport { isRuntimeSsrPreHydration, client, iosCorrection } from './plugins/Platform.js'\n\nfunction getMobilePlatform (is) {\n if (is.ios === true) return 'ios'\n if (is.android === true) return 'android'\n}\n\nfunction getBodyClasses ({ is, has, within }, cfg) {\n const cls = [\n is.desktop === true ? 'desktop' : 'mobile',\n `${ has.touch === false ? 'no-' : '' }touch`\n ]\n\n if (is.mobile === true) {\n const mobile = getMobilePlatform(is)\n mobile !== void 0 && cls.push('platform-' + mobile)\n }\n\n if (is.nativeMobile === true) {\n const type = is.nativeMobileWrapper\n\n cls.push(type)\n cls.push('native-mobile')\n\n if (\n is.ios === true\n && (cfg[ type ] === void 0 || cfg[ type ].iosStatusBarPadding !== false)\n ) {\n cls.push('q-ios-padding')\n }\n }\n else if (is.electron === true) {\n cls.push('electron')\n }\n else if (is.bex === true) {\n cls.push('bex')\n }\n\n within.iframe === true && cls.push('within-iframe')\n\n return cls\n}\n\nfunction applyClientSsrCorrections () {\n const { is } = client\n const classes = document.body.className\n\n const classList = new Set(classes.replace(/ {2}/g, ' ').split(' '))\n\n if (iosCorrection !== void 0) {\n classList.delete('desktop')\n classList.add('platform-ios')\n classList.add('mobile')\n }\n // else: is it SSG?\n else if (is.nativeMobile !== true && is.electron !== true && is.bex !== true) {\n if (is.desktop === true) {\n classList.delete('mobile')\n classList.delete('platform-ios')\n classList.delete('platform-android')\n classList.add('desktop')\n }\n else if (is.mobile === true) {\n classList.delete('desktop')\n classList.add('mobile')\n\n const mobile = getMobilePlatform(is)\n if (mobile !== void 0) {\n classList.add(`platform-${ mobile }`)\n classList.delete(`platform-${ mobile === 'ios' ? 'android' : 'ios' }`)\n }\n else {\n classList.delete('platform-ios')\n classList.delete('platform-android')\n }\n }\n }\n\n if (client.has.touch === true) {\n classList.delete('no-touch')\n classList.add('touch')\n }\n\n if (client.within.iframe === true) {\n classList.add('within-iframe')\n }\n\n const newCls = Array.from(classList).join(' ')\n\n if (classes !== newCls) {\n document.body.className = newCls\n }\n}\n\nfunction setColors (brand) {\n for (const color in brand) {\n setCssVar(color, brand[ color ])\n }\n}\n\nexport default {\n install (opts) {\n if (__QUASAR_SSR_SERVER__) {\n const { $q, ssrContext } = opts\n const cls = getBodyClasses($q.platform, $q.config)\n\n if ($q.config.screen !== void 0 && $q.config.screen.bodyClass === true) {\n cls.push('screen--xs')\n }\n\n ssrContext._meta.bodyClasses += cls.join(' ')\n\n const brand = $q.config.brand\n if (brand !== void 0) {\n const vars = Object.keys(brand)\n .map(key => `--q-${ key }:${ brand[ key ] };`)\n .join('')\n\n ssrContext._meta.endingHeadTags += ``\n }\n\n return\n }\n\n if (this.__installed === true) { return }\n\n if (isRuntimeSsrPreHydration.value === true) {\n applyClientSsrCorrections()\n }\n else {\n const { $q } = opts\n\n $q.config.brand !== void 0 && setColors($q.config.brand)\n\n const cls = getBodyClasses(client, $q.config)\n document.body.classList.add.apply(document.body.classList, cls)\n }\n\n if (client.is.ios === true) {\n // needed for iOS button active state\n document.body.addEventListener('touchstart', noop)\n }\n\n window.addEventListener('keydown', onKeyDownComposition, true)\n }\n}\n","import { createApp } from 'vue'\n\nimport Platform, { isRuntimeSsrPreHydration } from './plugins/Platform.js'\nimport Screen from './plugins/Screen.js'\nimport Dark from './plugins/Dark.js'\nimport History from './history.js'\nimport Lang from './lang.js'\nimport Body from './body.js'\nimport IconSet from './icon-set.js'\n\nimport { quasarKey } from './utils/private/symbols.js'\nimport { globalConfig, globalConfigIsFrozen, freezeGlobalConfig } from './utils/private/global-config.js'\nimport { isObject } from './utils/is.js'\n\nconst autoInstalledPlugins = [\n Platform,\n Body,\n Dark,\n Screen,\n History,\n Lang,\n IconSet\n]\n\nexport function createChildApp (appCfg, parentApp) {\n const app = createApp(appCfg)\n\n app.config.globalProperties = parentApp.config.globalProperties\n\n const { reload, ...appContext } = parentApp._context\n Object.assign(app._context, appContext)\n\n return app\n}\n\nfunction installPlugins (pluginOpts, pluginList) {\n pluginList.forEach(Plugin => {\n Plugin.install(pluginOpts)\n Plugin.__installed = true\n })\n}\n\nfunction prepareApp (app, uiOpts, pluginOpts) {\n app.config.globalProperties.$q = pluginOpts.$q\n app.provide(quasarKey, pluginOpts.$q)\n\n installPlugins(pluginOpts, autoInstalledPlugins)\n\n uiOpts.components !== void 0 && Object.values(uiOpts.components).forEach(c => {\n if (isObject(c) === true && c.name !== void 0) {\n app.component(c.name, c)\n }\n })\n\n uiOpts.directives !== void 0 && Object.values(uiOpts.directives).forEach(d => {\n if (isObject(d) === true && d.name !== void 0) {\n app.directive(d.name, d)\n }\n })\n\n uiOpts.plugins !== void 0 && installPlugins(\n pluginOpts,\n Object.values(uiOpts.plugins).filter(\n p => typeof p.install === 'function' && autoInstalledPlugins.includes(p) === false\n )\n )\n\n if (isRuntimeSsrPreHydration.value === true) {\n pluginOpts.$q.onSSRHydrated = () => {\n pluginOpts.onSSRHydrated.forEach(fn => { fn() })\n pluginOpts.$q.onSSRHydrated = () => {}\n }\n }\n}\n\nexport default __QUASAR_SSR_SERVER__\n ? function (parentApp, opts = {}, ssrContext) {\n const $q = {\n version: __QUASAR_VERSION__,\n config: opts.config || {}\n }\n\n Object.assign(ssrContext, {\n $q,\n _meta: {\n htmlAttrs: '',\n headTags: '',\n endingHeadTags: '',\n bodyClasses: '',\n bodyAttrs: 'data-server-rendered',\n bodyTags: ''\n }\n })\n\n if (ssrContext._modules === void 0) {\n // not OK. means the SSR build is not using @quasar/ssr-helpers,\n // but we shouldn't crash the app\n ssrContext._modules = []\n }\n\n if (ssrContext.onRendered === void 0) {\n // not OK. means the SSR build is not using @quasar/ssr-helpers,\n // but we shouldn't crash the app\n ssrContext.onRendered = () => {}\n }\n\n parentApp.config.globalProperties.ssrContext = ssrContext\n\n prepareApp(parentApp, opts, {\n parentApp,\n $q,\n lang: opts.lang,\n iconSet: opts.iconSet,\n ssrContext\n })\n }\n : function (parentApp, opts = {}) {\n const $q = { version: __QUASAR_VERSION__ }\n\n if (globalConfigIsFrozen === false) {\n if (opts.config !== void 0) {\n Object.assign(globalConfig, opts.config)\n }\n\n $q.config = { ...globalConfig }\n freezeGlobalConfig()\n }\n else {\n $q.config = opts.config || {}\n }\n\n prepareApp(parentApp, opts, {\n parentApp,\n $q,\n lang: opts.lang,\n iconSet: opts.iconSet,\n onSSRHydrated: []\n })\n }\n","export default {\n isoName: 'en-US',\n nativeName: 'English (US)',\n label: {\n clear: 'Clear',\n ok: 'OK',\n cancel: 'Cancel',\n close: 'Close',\n set: 'Set',\n select: 'Select',\n reset: 'Reset',\n remove: 'Remove',\n update: 'Update',\n create: 'Create',\n search: 'Search',\n filter: 'Filter',\n refresh: 'Refresh',\n expand: label => (label ? `Expand \"${ label }\"` : 'Expand'),\n collapse: label => (label ? `Collapse \"${ label }\"` : 'Collapse')\n },\n date: {\n days: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n daysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...\n format24h: false,\n pluralDay: 'days'\n },\n table: {\n noData: 'No data available',\n noResults: 'No matching records found',\n loading: 'Loading...',\n selectedRecords: rows => (\n rows === 1\n ? '1 record selected.'\n : (rows === 0 ? 'No' : rows) + ' records selected.'\n ),\n recordsPerPage: 'Records per page:',\n allRows: 'All',\n pagination: (start, end, total) => start + '-' + end + ' of ' + total,\n columns: 'Columns'\n },\n editor: {\n url: 'URL',\n bold: 'Bold',\n italic: 'Italic',\n strikethrough: 'Strikethrough',\n underline: 'Underline',\n unorderedList: 'Unordered List',\n orderedList: 'Ordered List',\n subscript: 'Subscript',\n superscript: 'Superscript',\n hyperlink: 'Hyperlink',\n toggleFullscreen: 'Toggle Fullscreen',\n quote: 'Quote',\n left: 'Left align',\n center: 'Center align',\n right: 'Right align',\n justify: 'Justify align',\n print: 'Print',\n outdent: 'Decrease indentation',\n indent: 'Increase indentation',\n removeFormat: 'Remove formatting',\n formatting: 'Formatting',\n fontSize: 'Font Size',\n align: 'Align',\n hr: 'Insert Horizontal Rule',\n undo: 'Undo',\n redo: 'Redo',\n heading1: 'Heading 1',\n heading2: 'Heading 2',\n heading3: 'Heading 3',\n heading4: 'Heading 4',\n heading5: 'Heading 5',\n heading6: 'Heading 6',\n paragraph: 'Paragraph',\n code: 'Code',\n size1: 'Very small',\n size2: 'A bit small',\n size3: 'Normal',\n size4: 'Medium-large',\n size5: 'Big',\n size6: 'Very big',\n size7: 'Maximum',\n defaultFont: 'Default Font',\n viewSource: 'View Source'\n },\n tree: {\n noNodes: 'No nodes available',\n noResults: 'No matching nodes found'\n }\n}\n","import defineReactivePlugin from './utils/private/define-reactive-plugin.js'\n// no extension on purpose for next one:\nimport defaultLang from '../lang/en-US'\n\nfunction getLocale () {\n if (__QUASAR_SSR_SERVER__) { return }\n\n const val = Array.isArray(navigator.languages) === true && navigator.languages.length !== 0\n ? navigator.languages[ 0 ]\n : navigator.language\n\n if (typeof val === 'string') {\n return val.split(/[-_]/).map((v, i) => (\n i === 0\n ? v.toLowerCase()\n : (\n i > 1 || v.length < 4\n ? v.toUpperCase()\n : (v[ 0 ].toUpperCase() + v.slice(1).toLowerCase())\n )\n )).join('-')\n }\n}\n\nconst Plugin = defineReactivePlugin({\n __langPack: {}\n}, {\n getLocale,\n\n set (langObject = defaultLang, ssrContext) {\n const lang = {\n ...langObject,\n rtl: langObject.rtl === true,\n getLocale\n }\n\n if (__QUASAR_SSR_SERVER__) {\n if (ssrContext === void 0) {\n console.error('SSR ERROR: second param required: Quasar.lang.set(lang, ssrContext)')\n return\n }\n\n lang.set = ssrContext.$q.lang.set\n\n if (ssrContext.$q.config.lang === void 0 || ssrContext.$q.config.lang.noHtmlAttrs !== true) {\n const dir = lang.rtl === true ? 'rtl' : 'ltr'\n const attrs = `lang=${ lang.isoName } dir=${ dir }`\n\n ssrContext._meta.htmlAttrs = ssrContext.__qPrevLang !== void 0\n ? ssrContext._meta.htmlAttrs.replace(ssrContext.__qPrevLang, attrs)\n : attrs\n\n ssrContext.__qPrevLang = attrs\n }\n\n ssrContext.$q.lang = lang\n }\n else {\n lang.set = Plugin.set\n\n if (Plugin.__langConfig === void 0 || Plugin.__langConfig.noHtmlAttrs !== true) {\n const el = document.documentElement\n el.setAttribute('dir', lang.rtl === true ? 'rtl' : 'ltr')\n el.setAttribute('lang', lang.isoName)\n }\n\n Object.assign(Plugin.__langPack, lang)\n\n Plugin.props = lang\n Plugin.isoName = lang.isoName\n Plugin.nativeName = lang.nativeName\n }\n },\n\n install ({ $q, lang, ssrContext }) {\n if (__QUASAR_SSR_SERVER__) {\n const initialLang = lang || defaultLang\n\n $q.lang = {}\n $q.lang.set = langObject => {\n this.set(langObject, ssrContext)\n }\n\n $q.lang.set(initialLang)\n\n // one-time SSR server operation\n if (this.isoName !== initialLang.isoName) {\n this.isoName = initialLang.isoName\n this.nativeName = initialLang.nativeName\n this.props = initialLang\n }\n }\n else {\n $q.lang = Plugin.__langPack\n Plugin.__langConfig = $q.config.lang\n\n if (this.__installed === true) {\n lang !== void 0 && this.set(lang)\n }\n else {\n this.set(lang || defaultLang)\n }\n }\n }\n})\n\nexport default Plugin\nexport { defaultLang }\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport QRadio from '../radio/QRadio.js'\nimport QCheckbox from '../checkbox/QCheckbox.js'\nimport QToggle from '../toggle/QToggle.js'\n\nimport { createComponent } from '../../utils/private/create.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nconst components = {\n radio: QRadio,\n checkbox: QCheckbox,\n toggle: QToggle\n}\n\nconst typeValues = Object.keys(components)\n\nexport default createComponent({\n name: 'QOptionGroup',\n\n props: {\n ...useDarkProps,\n\n modelValue: {\n required: true\n },\n options: {\n type: Array,\n validator: opts => opts.every(opt => 'value' in opt && 'label' in opt)\n },\n\n name: String,\n\n type: {\n default: 'radio',\n validator: v => typeValues.includes(v)\n },\n\n color: String,\n keepColor: Boolean,\n dense: Boolean,\n\n size: String,\n\n leftLabel: Boolean,\n inline: Boolean,\n disable: Boolean\n },\n\n emits: [ 'update:modelValue' ],\n\n setup (props, { emit, slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const arrayModel = Array.isArray(props.modelValue)\n\n if (props.type === 'radio') {\n if (arrayModel === true) {\n console.error('q-option-group: model should not be array')\n }\n }\n else if (arrayModel === false) {\n console.error('q-option-group: model should be array in your case')\n }\n\n const isDark = useDark(props, $q)\n\n const component = computed(() => components[ props.type ])\n\n const classes = computed(() =>\n 'q-option-group q-gutter-x-sm'\n + (props.inline === true ? ' q-option-group--inline' : '')\n )\n\n const attrs = computed(() => {\n const attrs = { role: 'group' }\n\n if (props.type === 'radio') {\n attrs.role = 'radiogroup'\n\n if (props.disable === true) {\n attrs[ 'aria-disabled' ] = 'true'\n }\n }\n\n return attrs\n })\n\n function onUpdateModelValue (value) {\n emit('update:modelValue', value)\n }\n\n return () => h('div', {\n class: classes.value,\n ...attrs.value\n }, props.options.map((opt, i) => {\n // TODO: (Qv3) Make the 'opt' a separate property instead of\n // the whole scope for consistency and flexibility\n // (e.g. { opt } instead of opt)\n const child = slots[ 'label-' + i ] !== void 0\n ? () => slots[ 'label-' + i ](opt)\n : (\n slots.label !== void 0\n ? () => slots.label(opt)\n : void 0\n )\n\n return h('div', [\n h(component.value, {\n modelValue: props.modelValue,\n val: opt.value,\n name: opt.name === void 0 ? props.name : opt.name,\n disable: props.disable || opt.disable,\n label: child === void 0 ? opt.label : null,\n leftLabel: opt.leftLabel === void 0 ? props.leftLabel : opt.leftLabel,\n color: opt.color === void 0 ? props.color : opt.color,\n checkedIcon: opt.checkedIcon,\n uncheckedIcon: opt.uncheckedIcon,\n dark: opt.dark || isDark.value,\n size: opt.size === void 0 ? props.size : opt.size,\n dense: props.dense,\n keepColor: opt.keepColor === void 0 ? props.keepColor : opt.keepColor,\n 'onUpdate:modelValue': onUpdateModelValue\n }, child)\n ])\n }))\n }\n})\n","import { h, ref, computed, watch, toRaw, getCurrentInstance } from 'vue'\n\nimport QDialog from '../dialog/QDialog.js'\nimport QBtn from '../btn/QBtn.js'\n\nimport QCard from '../card/QCard.js'\nimport QCardSection from '../card/QCardSection.js'\nimport QCardActions from '../card/QCardActions.js'\nimport QSeparator from '../separator/QSeparator.js'\n\nimport QInput from '../input/QInput.js'\nimport QOptionGroup from '../option-group/QOptionGroup.js'\n\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport { createComponent } from '../../utils/private/create.js'\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { isKeyCode } from '../../utils/private/key-composition.js'\nimport { isObject } from '../../utils/is.js'\n\nexport default createComponent({\n name: 'DialogPlugin',\n\n props: {\n ...useDarkProps,\n\n title: String,\n message: String,\n prompt: Object,\n options: Object,\n progress: [ Boolean, Object ],\n\n html: Boolean,\n\n ok: {\n type: [ String, Object, Boolean ],\n default: true\n },\n cancel: [ String, Object, Boolean ],\n focus: {\n type: String,\n default: 'ok',\n validator: v => [ 'ok', 'cancel', 'none' ].includes(v)\n },\n\n stackButtons: Boolean,\n color: String,\n\n cardClass: [ String, Array, Object ],\n cardStyle: [ String, Array, Object ]\n },\n\n emits: [ 'ok', 'hide' ],\n\n setup (props, { emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const isDark = useDark(props, $q)\n\n const dialogRef = ref(null)\n\n const model = ref(\n props.prompt !== void 0\n ? props.prompt.model\n : (props.options !== void 0 ? props.options.model : void 0)\n )\n\n const classes = computed(() =>\n 'q-dialog-plugin'\n + (isDark.value === true ? ' q-dialog-plugin--dark q-dark' : '')\n + (props.progress !== false ? ' q-dialog-plugin--progress' : '')\n )\n\n const vmColor = computed(() =>\n props.color || (isDark.value === true ? 'amber' : 'primary')\n )\n\n const spinner = computed(() => (\n props.progress === false\n ? null\n : (\n isObject(props.progress) === true\n ? {\n component: props.progress.spinner || QSpinner,\n props: { color: props.progress.color || vmColor.value }\n }\n : {\n component: QSpinner,\n props: { color: vmColor.value }\n }\n )\n ))\n\n const hasForm = computed(() =>\n props.prompt !== void 0 || props.options !== void 0\n )\n\n const formProps = computed(() => {\n if (hasForm.value !== true) {\n return {}\n }\n\n const { model, isValid, items, ...formProps } = props.prompt !== void 0\n ? props.prompt\n : props.options\n\n return formProps\n })\n\n const okLabel = computed(() => (\n isObject(props.ok) === true\n ? $q.lang.label.ok\n : (\n props.ok === true\n ? $q.lang.label.ok\n : props.ok\n )\n ))\n\n const cancelLabel = computed(() => (\n isObject(props.cancel) === true\n ? $q.lang.label.cancel\n : (\n props.cancel === true\n ? $q.lang.label.cancel\n : props.cancel\n )\n ))\n\n const okDisabled = computed(() => {\n if (props.prompt !== void 0) {\n return props.prompt.isValid !== void 0\n && props.prompt.isValid(model.value) !== true\n }\n if (props.options !== void 0) {\n return props.options.isValid !== void 0\n && props.options.isValid(model.value) !== true\n }\n return false\n })\n\n const okProps = computed(() => ({\n color: vmColor.value,\n label: okLabel.value,\n ripple: false,\n disable: okDisabled.value,\n ...(isObject(props.ok) === true ? props.ok : { flat: true }),\n 'data-autofocus': (props.focus === 'ok' && hasForm.value !== true) || void 0,\n onClick: onOk\n }))\n\n const cancelProps = computed(() => ({\n color: vmColor.value,\n label: cancelLabel.value,\n ripple: false,\n ...(isObject(props.cancel) === true ? props.cancel : { flat: true }),\n 'data-autofocus': (props.focus === 'cancel' && hasForm.value !== true) || void 0,\n onClick: onCancel\n }))\n\n watch(() => props.prompt && props.prompt.model, onUpdateModel)\n watch(() => props.options && props.options.model, onUpdateModel)\n\n function show () {\n dialogRef.value.show()\n }\n\n function hide () {\n dialogRef.value.hide()\n }\n\n function onOk () {\n emit('ok', toRaw(model.value))\n hide()\n }\n\n function onCancel () {\n hide()\n }\n\n function onDialogHide () {\n emit('hide')\n }\n\n function onUpdateModel (val) {\n model.value = val\n }\n\n function onInputKeyup (evt) {\n // if ENTER key\n if (\n okDisabled.value !== true\n && props.prompt.type !== 'textarea'\n && isKeyCode(evt, 13) === true\n ) {\n onOk()\n }\n }\n\n function getSection (classes, text) {\n return props.html === true\n ? h(QCardSection, {\n class: classes,\n innerHTML: text\n })\n : h(QCardSection, { class: classes }, () => text)\n }\n\n function getPrompt () {\n return [\n h(QInput, {\n color: vmColor.value,\n dense: true,\n autofocus: true,\n dark: isDark.value,\n ...formProps.value,\n modelValue: model.value,\n 'onUpdate:modelValue': onUpdateModel,\n onKeyup: onInputKeyup\n })\n ]\n }\n\n function getOptions () {\n return [\n h(QOptionGroup, {\n color: vmColor.value,\n options: props.options.items,\n dark: isDark.value,\n ...formProps.value,\n modelValue: model.value,\n 'onUpdate:modelValue': onUpdateModel\n })\n ]\n }\n\n function getButtons () {\n const child = []\n\n props.cancel && child.push(\n h(QBtn, cancelProps.value)\n )\n\n props.ok && child.push(\n h(QBtn, okProps.value)\n )\n\n return h(QCardActions, {\n class: props.stackButtons === true ? 'items-end' : '',\n vertical: props.stackButtons,\n align: 'right'\n }, () => child)\n }\n\n function getCardContent () {\n const child = []\n\n props.title && child.push(\n getSection('q-dialog__title', props.title)\n )\n\n props.progress !== false && child.push(\n h(\n QCardSection,\n { class: 'q-dialog__progress' },\n () => h(spinner.value.component, spinner.value.props)\n )\n )\n\n props.message && child.push(\n getSection('q-dialog__message', props.message)\n )\n\n if (props.prompt !== void 0) {\n child.push(\n h(\n QCardSection,\n { class: 'scroll q-dialog-plugin__form' },\n getPrompt\n )\n )\n }\n else if (props.options !== void 0) {\n child.push(\n h(QSeparator, { dark: isDark.value }),\n h(\n QCardSection,\n { class: 'scroll q-dialog-plugin__form' },\n getOptions\n ),\n h(QSeparator, { dark: isDark.value })\n )\n }\n\n if (props.ok || props.cancel) {\n child.push(getButtons())\n }\n\n return child\n }\n\n function getContent () {\n return [\n h(QCard, {\n class: [\n classes.value,\n props.cardClass\n ],\n style: props.cardStyle,\n dark: isDark.value\n }, getCardContent)\n ]\n }\n\n // expose public methods\n Object.assign(proxy, { show, hide })\n\n return () => h(QDialog, {\n ref: dialogRef,\n onHide: onDialogHide\n }, getContent)\n }\n})\n","import { h, ref, nextTick } from 'vue'\n\nimport { createChildApp } from '../../install-quasar.js'\nimport { createGlobalNode, removeGlobalNode } from './global-nodes.js'\n\nconst ssrAPI = {\n onOk: () => ssrAPI,\n onCancel: () => ssrAPI,\n onDismiss: () => ssrAPI,\n hide: () => ssrAPI,\n update: () => ssrAPI\n}\n\nexport function merge (target, source) {\n for (const key in source) {\n if (key !== 'spinner' && Object(source[ key ]) === source[ key ]) {\n target[ key ] = Object(target[ key ]) !== target[ key ]\n ? {}\n : { ...target[ key ] }\n\n merge(target[ key ], source[ key ])\n }\n else {\n target[ key ] = source[ key ]\n }\n }\n}\n\nexport default function (DefaultComponent, supportsCustomComponent, parentApp) {\n return pluginProps => {\n if (__QUASAR_SSR_SERVER__) { return ssrAPI }\n\n let DialogComponent, props\n const isCustom = supportsCustomComponent === true\n && pluginProps.component !== void 0\n\n if (isCustom === true) {\n const { component, componentProps } = pluginProps\n\n DialogComponent = (typeof component === 'string')\n ? parentApp.component(component)\n : component\n\n props = componentProps || {}\n }\n else {\n const { class: klass, style, ...otherProps } = pluginProps\n\n DialogComponent = DefaultComponent\n props = otherProps\n klass !== void 0 && (otherProps.cardClass = klass)\n style !== void 0 && (otherProps.cardStyle = style)\n }\n\n let vm, emittedOK = false\n const dialogRef = ref(null)\n const el = createGlobalNode(false, 'dialog')\n\n const applyState = cmd => {\n if (dialogRef.value !== null && dialogRef.value[ cmd ] !== void 0) {\n dialogRef.value[ cmd ]()\n return\n }\n\n const target = vm.$.subTree\n\n if (target && target.component) {\n // account for \"script setup\" way of declaring component\n if (target.component.proxy && target.component.proxy[ cmd ]) {\n target.component.proxy[ cmd ]()\n return\n }\n\n // account for \"script setup\" + async component way of declaring component\n if (\n target.component.subTree\n && target.component.subTree.component\n && target.component.subTree.component.proxy\n && target.component.subTree.component.proxy[ cmd ]\n ) {\n target.component.subTree.component.proxy[ cmd ]()\n return\n }\n }\n\n console.error('[Quasar] Incorrectly defined Dialog component')\n }\n\n const\n okFns = [],\n cancelFns = [],\n API = {\n onOk (fn) {\n okFns.push(fn)\n return API\n },\n onCancel (fn) {\n cancelFns.push(fn)\n return API\n },\n onDismiss (fn) {\n okFns.push(fn)\n cancelFns.push(fn)\n return API\n },\n hide () {\n applyState('hide')\n return API\n },\n update (componentProps) {\n if (vm !== null) {\n if (isCustom === true) {\n Object.assign(props, componentProps)\n }\n else {\n const { class: klass, style, ...cfg } = componentProps\n\n klass !== void 0 && (cfg.cardClass = klass)\n style !== void 0 && (cfg.cardStyle = style)\n merge(props, cfg)\n }\n\n vm.$forceUpdate()\n }\n\n return API\n }\n }\n\n const onOk = data => {\n emittedOK = true\n okFns.forEach(fn => { fn(data) })\n }\n\n const onHide = () => {\n app.unmount(el)\n removeGlobalNode(el)\n app = null\n vm = null\n\n if (emittedOK !== true) {\n cancelFns.forEach(fn => { fn() })\n }\n }\n\n let app = createChildApp({\n name: 'QGlobalDialog',\n setup: () => () => h(DialogComponent, {\n ...props,\n ref: dialogRef,\n onOk,\n onHide,\n onVnodeMounted (...args) {\n if (typeof props.onVnodeMounted === 'function') {\n props.onVnodeMounted(...args)\n }\n\n nextTick(() => applyState('show'))\n }\n })\n }, parentApp)\n\n vm = app.mount(el)\n\n return API\n }\n}\n","import DialogPlugin from '../components/dialog-plugin/DialogPlugin.js'\nimport globalDialog from '../utils/private/global-dialog.js'\n\nexport default {\n install ({ $q, parentApp }) {\n $q.dialog = globalDialog(DialogPlugin, true, parentApp)\n if (this.__installed !== true) {\n this.create = $q.dialog\n }\n }\n}\n","import { h, Transition, onMounted } from 'vue'\n\nimport QSpinner from '../components/spinner/QSpinner.js'\n\nimport { createChildApp } from '../install-quasar.js'\nimport defineReactivePlugin from '../utils/private/define-reactive-plugin.js'\nimport { createGlobalNode, removeGlobalNode } from '../utils/private/global-nodes.js'\nimport preventScroll from '../utils/prevent-scroll.js'\nimport { isObject } from '../utils/is.js'\n\nlet\n app,\n vm,\n uid = 0,\n timeout = null,\n props = {},\n activeGroups = {}\n\nconst originalDefaults = {\n group: '__default_quasar_group__',\n delay: 0,\n message: false,\n html: false,\n spinnerSize: 80,\n spinnerColor: '',\n messageColor: '',\n backgroundColor: '',\n boxClass: '',\n spinner: QSpinner,\n customClass: ''\n}\n\nconst defaults = { ...originalDefaults }\n\nfunction registerProps (opts) {\n if (opts && opts.group !== void 0 && activeGroups[ opts.group ] !== void 0) {\n return Object.assign(activeGroups[ opts.group ], opts)\n }\n\n const newProps = isObject(opts) === true && opts.ignoreDefaults === true\n ? { ...originalDefaults, ...opts }\n : { ...defaults, ...opts }\n\n activeGroups[ newProps.group ] = newProps\n return newProps\n}\n\nconst Plugin = defineReactivePlugin({\n isActive: false\n}, {\n show (opts) {\n if (__QUASAR_SSR_SERVER__) { return }\n\n props = registerProps(opts)\n const { group } = props\n\n Plugin.isActive = true\n\n if (app !== void 0) {\n props.uid = uid\n vm.$forceUpdate()\n }\n else {\n props.uid = ++uid\n timeout !== null && clearTimeout(timeout)\n\n timeout = setTimeout(() => {\n timeout = null\n\n const el = createGlobalNode('q-loading')\n\n app = createChildApp({\n name: 'QLoading',\n\n setup () {\n onMounted(() => {\n preventScroll(true)\n })\n\n function onAfterLeave () {\n // might be called to finalize\n // previous leave, even if it was cancelled\n if (Plugin.isActive !== true && app !== void 0) {\n preventScroll(false)\n app.unmount(el)\n removeGlobalNode(el)\n app = void 0\n vm = void 0\n }\n }\n\n function getContent () {\n if (Plugin.isActive !== true) {\n return null\n }\n\n const content = [\n h(props.spinner, {\n class: 'q-loading__spinner',\n color: props.spinnerColor,\n size: props.spinnerSize\n })\n ]\n\n props.message && content.push(\n h('div', {\n class: 'q-loading__message'\n + (props.messageColor ? ` text-${ props.messageColor }` : ''),\n [ props.html === true ? 'innerHTML' : 'textContent' ]: props.message\n })\n )\n\n return h('div', {\n class: 'q-loading fullscreen flex flex-center z-max ' + props.customClass.trim(),\n key: props.uid\n }, [\n h('div', {\n class: 'q-loading__backdrop'\n + (props.backgroundColor ? ` bg-${ props.backgroundColor }` : '')\n }),\n\n h('div', {\n class: 'q-loading__box column items-center ' + props.boxClass\n }, content)\n ])\n }\n\n return () => h(Transition, {\n name: 'q-transition--fade',\n appear: true,\n onAfterLeave\n }, getContent)\n }\n }, Plugin.__parentApp)\n\n vm = app.mount(el)\n }, props.delay)\n }\n\n return paramProps => {\n // if we don't have params (or not an Object param) then we need to hide this group\n if (paramProps === void 0 || Object(paramProps) !== paramProps) {\n Plugin.hide(group)\n return\n }\n\n // else we have params so we need to update this group\n Plugin.show({ ...paramProps, group })\n }\n },\n\n hide (group) {\n if (__QUASAR_SSR_SERVER__ !== true && Plugin.isActive === true) {\n if (group === void 0) {\n // clear out any active groups\n activeGroups = {}\n }\n else if (activeGroups[ group ] === void 0) {\n // we've already hidden it so nothing to do\n return\n }\n else {\n // remove active group\n delete activeGroups[ group ]\n\n const keys = Object.keys(activeGroups)\n\n // if there are other groups registered then\n // show last registered one since that one is still active\n if (keys.length !== 0) {\n // get last registered group\n const lastGroup = keys[ keys.length - 1 ]\n Plugin.show({ group: lastGroup })\n return\n }\n }\n\n if (timeout !== null) {\n clearTimeout(timeout)\n timeout = null\n }\n\n Plugin.isActive = false\n }\n },\n\n setDefaults (opts) {\n if (__QUASAR_SSR_SERVER__ !== true) {\n isObject(opts) === true && Object.assign(defaults, opts)\n }\n },\n\n install ({ $q, parentApp }) {\n $q.loading = this\n\n if (__QUASAR_SSR_SERVER__ !== true) {\n Plugin.__parentApp = parentApp\n\n if ($q.config.loading !== void 0) {\n this.setDefaults($q.config.loading)\n }\n }\n }\n})\n\nexport default Plugin\n","import { h, ref, markRaw, TransitionGroup } from 'vue'\n\nimport QAvatar from '../components/avatar/QAvatar.js'\nimport QIcon from '../components/icon/QIcon.js'\nimport QBtn from '../components/btn/QBtn.js'\nimport QSpinner from '../components/spinner/QSpinner.js'\n\nimport { createComponent } from '../utils/private/create.js'\nimport { noop } from '../utils/event.js'\nimport { createGlobalNode } from '../utils/private/global-nodes.js'\nimport { createChildApp } from '../install-quasar.js'\nimport { isObject } from '../utils/is.js'\n\nlet uid = 0\n\nconst defaults = {}\nconst groups = {}\nconst notificationsList = {}\nconst positionClass = {}\nconst emptyRE = /^\\s*$/\nconst notifRefs = []\n\nconst positionList = [\n 'top-left', 'top-right',\n 'bottom-left', 'bottom-right',\n 'top', 'bottom', 'left', 'right', 'center'\n]\n\nconst badgePositions = [\n 'top-left', 'top-right',\n 'bottom-left', 'bottom-right'\n]\n\nconst notifTypes = {\n positive: {\n icon: $q => $q.iconSet.type.positive,\n color: 'positive'\n },\n\n negative: {\n icon: $q => $q.iconSet.type.negative,\n color: 'negative'\n },\n\n warning: {\n icon: $q => $q.iconSet.type.warning,\n color: 'warning',\n textColor: 'dark'\n },\n\n info: {\n icon: $q => $q.iconSet.type.info,\n color: 'info'\n },\n\n ongoing: {\n group: false,\n timeout: 0,\n spinner: true,\n color: 'grey-8'\n }\n}\n\nfunction addNotification (config, $q, originalApi) {\n if (!config) {\n return logError('parameter required')\n }\n\n let Api\n const notif = { textColor: 'white' }\n\n if (config.ignoreDefaults !== true) {\n Object.assign(notif, defaults)\n }\n\n if (isObject(config) === false) {\n if (notif.type) {\n Object.assign(notif, notifTypes[ notif.type ])\n }\n\n config = { message: config }\n }\n\n Object.assign(notif, notifTypes[ config.type || notif.type ], config)\n\n if (typeof notif.icon === 'function') {\n notif.icon = notif.icon($q)\n }\n\n if (!notif.spinner) {\n notif.spinner = false\n }\n else {\n if (notif.spinner === true) {\n notif.spinner = QSpinner\n }\n\n notif.spinner = markRaw(notif.spinner)\n }\n\n notif.meta = {\n hasMedia: Boolean(notif.spinner !== false || notif.icon || notif.avatar),\n hasText: hasContent(notif.message) || hasContent(notif.caption)\n }\n\n if (notif.position) {\n if (positionList.includes(notif.position) === false) {\n return logError('wrong position', config)\n }\n }\n else {\n notif.position = 'bottom'\n }\n\n if (notif.timeout === void 0) {\n notif.timeout = 5000\n }\n else {\n const t = parseInt(notif.timeout, 10)\n if (isNaN(t) || t < 0) {\n return logError('wrong timeout', config)\n }\n notif.timeout = t\n }\n\n if (notif.timeout === 0) {\n notif.progress = false\n }\n else if (notif.progress === true) {\n notif.meta.progressClass = 'q-notification__progress' + (\n notif.progressClass\n ? ` ${ notif.progressClass }`\n : ''\n )\n\n notif.meta.progressStyle = {\n animationDuration: `${ notif.timeout + 1000 }ms`\n }\n }\n\n const actions = (\n Array.isArray(config.actions) === true\n ? config.actions\n : []\n ).concat(\n config.ignoreDefaults !== true && Array.isArray(defaults.actions) === true\n ? defaults.actions\n : []\n ).concat(\n notifTypes[ config.type ] !== void 0 && Array.isArray(notifTypes[ config.type ].actions) === true\n ? notifTypes[ config.type ].actions\n : []\n )\n\n const { closeBtn } = notif\n closeBtn && actions.push({\n label: typeof closeBtn === 'string'\n ? closeBtn\n : $q.lang.label.close\n })\n\n notif.actions = actions.map(({ handler, noDismiss, ...item }) => ({\n flat: true,\n ...item,\n onClick: typeof handler === 'function'\n ? () => {\n handler()\n noDismiss !== true && dismiss()\n }\n : () => { dismiss() }\n }))\n\n if (notif.multiLine === void 0) {\n notif.multiLine = notif.actions.length > 1\n }\n\n Object.assign(notif.meta, {\n class: 'q-notification row items-stretch'\n + ` q-notification--${ notif.multiLine === true ? 'multi-line' : 'standard' }`\n + (notif.color !== void 0 ? ` bg-${ notif.color }` : '')\n + (notif.textColor !== void 0 ? ` text-${ notif.textColor }` : '')\n + (notif.classes !== void 0 ? ` ${ notif.classes }` : ''),\n\n wrapperClass: 'q-notification__wrapper col relative-position border-radius-inherit '\n + (notif.multiLine === true ? 'column no-wrap justify-center' : 'row items-center'),\n\n contentClass: 'q-notification__content row items-center'\n + (notif.multiLine === true ? '' : ' col'),\n\n leftClass: notif.meta.hasText === true ? 'additional' : 'single',\n\n attrs: {\n role: 'alert',\n ...notif.attrs\n }\n })\n\n if (notif.group === false) {\n notif.group = void 0\n notif.meta.group = void 0\n }\n else {\n if (notif.group === void 0 || notif.group === true) {\n // do not replace notifications with different buttons\n notif.group = [\n notif.message,\n notif.caption,\n notif.multiline\n ].concat(\n notif.actions.map(props => `${ props.label }*${ props.icon }`)\n ).join('|')\n }\n\n notif.meta.group = notif.group + '|' + notif.position\n }\n\n if (notif.actions.length === 0) {\n notif.actions = void 0\n }\n else {\n notif.meta.actionsClass = 'q-notification__actions row items-center '\n + (notif.multiLine === true ? 'justify-end' : 'col-auto')\n + (notif.meta.hasMedia === true ? ' q-notification__actions--with-media' : '')\n }\n\n if (originalApi !== void 0) {\n // reset timeout if any\n if (originalApi.notif.meta.timer) {\n clearTimeout(originalApi.notif.meta.timer)\n originalApi.notif.meta.timer = void 0\n }\n\n // retain uid\n notif.meta.uid = originalApi.notif.meta.uid\n\n // replace notif\n const index = notificationsList[ notif.position ].value.indexOf(originalApi.notif)\n notificationsList[ notif.position ].value[ index ] = notif\n }\n else {\n const original = groups[ notif.meta.group ]\n\n // woohoo, it's a new notification\n if (original === void 0) {\n notif.meta.uid = uid++\n notif.meta.badge = 1\n\n if ([ 'left', 'right', 'center' ].indexOf(notif.position) !== -1) {\n notificationsList[ notif.position ].value.splice(\n Math.floor(notificationsList[ notif.position ].value.length / 2),\n 0,\n notif\n )\n }\n else {\n const action = notif.position.indexOf('top') > -1 ? 'unshift' : 'push'\n notificationsList[ notif.position ].value[ action ](notif)\n }\n\n if (notif.group !== void 0) {\n groups[ notif.meta.group ] = notif\n }\n }\n // ok, so it's NOT a new one\n else {\n // reset timeout if any\n if (original.meta.timer) {\n clearTimeout(original.meta.timer)\n original.meta.timer = void 0\n }\n\n if (notif.badgePosition !== void 0) {\n if (badgePositions.includes(notif.badgePosition) === false) {\n return logError('wrong badgePosition', config)\n }\n }\n else {\n notif.badgePosition = `top-${ notif.position.indexOf('left') > -1 ? 'right' : 'left' }`\n }\n\n notif.meta.uid = original.meta.uid\n notif.meta.badge = original.meta.badge + 1\n notif.meta.badgeClass = `q-notification__badge q-notification__badge--${ notif.badgePosition }`\n + (notif.badgeColor !== void 0 ? ` bg-${ notif.badgeColor }` : '')\n + (notif.badgeTextColor !== void 0 ? ` text-${ notif.badgeTextColor }` : '')\n + (notif.badgeClass ? ` ${ notif.badgeClass }` : '')\n\n const index = notificationsList[ notif.position ].value.indexOf(original)\n notificationsList[ notif.position ].value[ index ] = groups[ notif.meta.group ] = notif\n }\n }\n\n const dismiss = () => {\n removeNotification(notif)\n Api = void 0\n }\n\n if (notif.timeout > 0) {\n notif.meta.timer = setTimeout(() => {\n notif.meta.timer = void 0\n dismiss()\n }, notif.timeout + /* show duration */ 1000)\n }\n\n // only non-groupable can be updated\n if (notif.group !== void 0) {\n return props => {\n if (props !== void 0) {\n logError('trying to update a grouped one which is forbidden', config)\n }\n else {\n dismiss()\n }\n }\n }\n\n Api = {\n dismiss,\n config,\n notif\n }\n\n if (originalApi !== void 0) {\n Object.assign(originalApi, Api)\n return\n }\n\n return props => {\n // if notification wasn't previously dismissed\n if (Api !== void 0) {\n // if no params, then we must dismiss the notification\n if (props === void 0) {\n Api.dismiss()\n }\n // otherwise we're updating it\n else {\n const newNotif = Object.assign({}, Api.config, props, {\n group: false,\n position: notif.position\n })\n\n addNotification(newNotif, $q, Api)\n }\n }\n }\n}\n\nfunction removeNotification (notif) {\n if (notif.meta.timer) {\n clearTimeout(notif.meta.timer)\n notif.meta.timer = void 0\n }\n\n const index = notificationsList[ notif.position ].value.indexOf(notif)\n if (index !== -1) {\n if (notif.group !== void 0) {\n delete groups[ notif.meta.group ]\n }\n\n const el = notifRefs[ '' + notif.meta.uid ]\n\n if (el) {\n const { width, height } = getComputedStyle(el)\n\n el.style.left = `${ el.offsetLeft }px`\n el.style.width = width\n el.style.height = height\n }\n\n notificationsList[ notif.position ].value.splice(index, 1)\n\n if (typeof notif.onDismiss === 'function') {\n notif.onDismiss()\n }\n }\n}\n\nfunction hasContent (str) {\n return str !== void 0\n && str !== null\n && emptyRE.test(str) !== true\n}\n\nfunction logError (error, config) {\n console.error(`Notify: ${ error }`, config)\n return false\n}\n\nfunction getComponent () {\n return createComponent({\n name: 'QNotifications',\n\n // hide App from Vue devtools\n devtools: { hide: true },\n\n setup () {\n return () => h('div', { class: 'q-notifications' }, positionList.map(pos => {\n return h(TransitionGroup, {\n key: pos,\n class: positionClass[ pos ],\n tag: 'div',\n name: `q-notification--${ pos }`\n }, () => notificationsList[ pos ].value.map(notif => {\n const meta = notif.meta\n const mainChild = []\n\n if (meta.hasMedia === true) {\n if (notif.spinner !== false) {\n mainChild.push(\n h(notif.spinner, {\n class: 'q-notification__spinner q-notification__spinner--' + meta.leftClass,\n color: notif.spinnerColor,\n size: notif.spinnerSize\n })\n )\n }\n else if (notif.icon) {\n mainChild.push(\n h(QIcon, {\n class: 'q-notification__icon q-notification__icon--' + meta.leftClass,\n name: notif.icon,\n color: notif.iconColor,\n size: notif.iconSize,\n role: 'img'\n })\n )\n }\n else if (notif.avatar) {\n mainChild.push(\n h(QAvatar, {\n class: 'q-notification__avatar q-notification__avatar--' + meta.leftClass\n }, () => h('img', { src: notif.avatar, 'aria-hidden': 'true' }))\n )\n }\n }\n\n if (meta.hasText === true) {\n let msgChild\n const msgData = { class: 'q-notification__message col' }\n\n if (notif.html === true) {\n msgData.innerHTML = notif.caption\n ? `
${ notif.message }
${ notif.caption }
`\n : notif.message\n }\n else {\n const msgNode = [ notif.message ]\n msgChild = notif.caption\n ? [\n h('div', msgNode),\n h('div', { class: 'q-notification__caption' }, [ notif.caption ])\n ]\n : msgNode\n }\n\n mainChild.push(\n h('div', msgData, msgChild)\n )\n }\n\n const child = [\n h('div', { class: meta.contentClass }, mainChild)\n ]\n\n notif.progress === true && child.push(\n h('div', {\n key: `${ meta.uid }|p|${ meta.badge }`,\n class: meta.progressClass,\n style: meta.progressStyle\n })\n )\n\n notif.actions !== void 0 && child.push(\n h('div', {\n class: meta.actionsClass\n }, notif.actions.map(props => h(QBtn, props)))\n )\n\n meta.badge > 1 && child.push(\n h('div', {\n key: `${ meta.uid }|${ meta.badge }`,\n class: notif.meta.badgeClass,\n style: notif.badgeStyle\n }, [ meta.badge ])\n )\n\n return h('div', {\n ref: el => { notifRefs[ '' + meta.uid ] = el },\n key: meta.uid,\n class: meta.class,\n ...meta.attrs\n }, [\n h('div', { class: meta.wrapperClass }, child)\n ])\n }))\n }))\n }\n })\n}\n\nexport default {\n setDefaults (opts) {\n if (__QUASAR_SSR_SERVER__ !== true) {\n isObject(opts) === true && Object.assign(defaults, opts)\n }\n },\n\n registerType (typeName, typeOpts) {\n if (__QUASAR_SSR_SERVER__ !== true && isObject(typeOpts) === true) {\n notifTypes[ typeName ] = typeOpts\n }\n },\n\n install ({ $q, parentApp }) {\n $q.notify = this.create = __QUASAR_SSR_SERVER__\n ? noop\n : opts => addNotification(opts, $q)\n\n $q.notify.setDefaults = this.setDefaults\n $q.notify.registerType = this.registerType\n\n if ($q.config.notify !== void 0) {\n this.setDefaults($q.config.notify)\n }\n\n if (__QUASAR_SSR_SERVER__ !== true && this.__installed !== true) {\n positionList.forEach(pos => {\n notificationsList[ pos ] = ref([])\n\n const\n vert = [ 'left', 'center', 'right' ].includes(pos) === true ? 'center' : (pos.indexOf('top') > -1 ? 'top' : 'bottom'),\n align = pos.indexOf('left') > -1 ? 'start' : (pos.indexOf('right') > -1 ? 'end' : 'center'),\n classes = [ 'left', 'right' ].includes(pos) ? `items-${ pos === 'left' ? 'start' : 'end' } justify-center` : (pos === 'center' ? 'flex-center' : `items-${ align }`)\n\n positionClass[ pos ] = `q-notifications__list q-notifications__list--${ vert } fixed column no-wrap ${ classes }`\n })\n\n const el = createGlobalNode('q-notify')\n createChildApp(getComponent(), parentApp).mount(el)\n }\n }\n}\n","/* eslint-disable no-useless-escape */\n\nimport { ref, reactive } from 'vue'\nimport { injectProp } from '../utils/private/inject-obj-prop.js'\n\n/**\n * __ QUASAR_SSR __ -> runs on SSR on client or server\n * __ QUASAR_SSR_SERVER __ -> runs on SSR on server\n * __ QUASAR_SSR_CLIENT __ -> runs on SSR on client\n * __ QUASAR_SSR_PWA __ -> built with SSR+PWA; may run on SSR on client or on PWA client\n * (needs runtime detection)\n */\n\nexport const isRuntimeSsrPreHydration = __QUASAR_SSR_SERVER__\n ? { value: true }\n : ref(\n __QUASAR_SSR_CLIENT__ && (\n __QUASAR_SSR_PWA__ ? document.body.getAttribute('data-server-rendered') !== null : true\n )\n )\n\nexport let iosEmulated = false\nexport let iosCorrection\n\nfunction getMatch (userAgent, platformMatch) {\n const match = /(edg|edge|edga|edgios)\\/([\\w.]+)/.exec(userAgent)\n || /(opr)[\\/]([\\w.]+)/.exec(userAgent)\n || /(vivaldi)[\\/]([\\w.]+)/.exec(userAgent)\n || /(chrome|crios)[\\/]([\\w.]+)/.exec(userAgent)\n || /(version)(applewebkit)[\\/]([\\w.]+).*(safari)[\\/]([\\w.]+)/.exec(userAgent)\n || /(webkit)[\\/]([\\w.]+).*(version)[\\/]([\\w.]+).*(safari)[\\/]([\\w.]+)/.exec(userAgent)\n || /(firefox|fxios)[\\/]([\\w.]+)/.exec(userAgent)\n || /(webkit)[\\/]([\\w.]+)/.exec(userAgent)\n || /(opera)(?:.*version|)[\\/]([\\w.]+)/.exec(userAgent)\n || []\n\n return {\n browser: match[ 5 ] || match[ 3 ] || match[ 1 ] || '',\n version: match[ 2 ] || match[ 4 ] || '0',\n versionNumber: match[ 4 ] || match[ 2 ] || '0',\n platform: platformMatch[ 0 ] || ''\n }\n}\n\nfunction getPlatformMatch (userAgent) {\n return /(ipad)/.exec(userAgent)\n || /(ipod)/.exec(userAgent)\n || /(windows phone)/.exec(userAgent)\n || /(iphone)/.exec(userAgent)\n || /(kindle)/.exec(userAgent)\n || /(silk)/.exec(userAgent)\n || /(android)/.exec(userAgent)\n || /(win)/.exec(userAgent)\n || /(mac)/.exec(userAgent)\n || /(linux)/.exec(userAgent)\n || /(cros)/.exec(userAgent)\n // TODO: Remove BlackBerry detection. BlackBerry OS, BlackBerry 10, and BlackBerry PlayBook OS\n // is officially dead as of January 4, 2022 (https://www.blackberry.com/us/en/support/devices/end-of-life)\n || /(playbook)/.exec(userAgent)\n || /(bb)/.exec(userAgent)\n || /(blackberry)/.exec(userAgent)\n || []\n}\n\nconst hasTouch = __QUASAR_SSR_SERVER__\n ? false\n : 'ontouchstart' in window || window.navigator.maxTouchPoints > 0\n\nfunction applyIosCorrection (is) {\n iosCorrection = { is: { ...is } }\n\n delete is.mac\n delete is.desktop\n\n const platform = Math.min(window.innerHeight, window.innerWidth) > 414\n ? 'ipad'\n : 'iphone'\n\n Object.assign(is, {\n mobile: true,\n ios: true,\n platform,\n [ platform ]: true\n })\n}\n\nfunction getPlatform (UA) {\n const\n userAgent = UA.toLowerCase(),\n platformMatch = getPlatformMatch(userAgent),\n matched = getMatch(userAgent, platformMatch),\n browser = {}\n\n if (matched.browser) {\n browser[ matched.browser ] = true\n browser.version = matched.version\n browser.versionNumber = parseInt(matched.versionNumber, 10)\n }\n\n if (matched.platform) {\n browser[ matched.platform ] = true\n }\n\n const knownMobiles = browser.android\n || browser.ios\n || browser.bb\n || browser.blackberry\n || browser.ipad\n || browser.iphone\n || browser.ipod\n || browser.kindle\n || browser.playbook\n || browser.silk\n || browser[ 'windows phone' ]\n\n // These are all considered mobile platforms, meaning they run a mobile browser\n if (knownMobiles === true || userAgent.indexOf('mobile') > -1) {\n browser.mobile = true\n\n if (browser.edga || browser.edgios) {\n browser.edge = true\n matched.browser = 'edge'\n }\n else if (browser.crios) {\n browser.chrome = true\n matched.browser = 'chrome'\n }\n else if (browser.fxios) {\n browser.firefox = true\n matched.browser = 'firefox'\n }\n }\n // If it's not mobile we should consider it's desktop platform, meaning it runs a desktop browser\n // It's a workaround for anonymized user agents\n // (browser.cros || browser.mac || browser.linux || browser.win)\n else {\n browser.desktop = true\n }\n\n // Set iOS if on iPod, iPad or iPhone\n if (browser.ipod || browser.ipad || browser.iphone) {\n browser.ios = true\n }\n\n if (browser[ 'windows phone' ]) {\n browser.winphone = true\n delete browser[ 'windows phone' ]\n }\n\n // TODO: The assumption about WebKit based browsers below is not completely accurate.\n // Google released Blink(a fork of WebKit) engine on April 3, 2013, which is really different than WebKit today.\n // Today, one might want to check for WebKit to deal with its bugs, which is used on all browsers on iOS, and Safari browser on all platforms.\n\n // Chrome, Opera 15+, Vivaldi and Safari are webkit based browsers\n if (\n browser.chrome\n || browser.opr\n || browser.safari\n || browser.vivaldi\n // we expect unknown, non iOS mobile browsers to be webkit based\n || (\n browser.mobile === true\n && browser.ios !== true\n && knownMobiles !== true\n )\n ) {\n browser.webkit = true\n }\n\n // TODO: (Qv3) rename the terms 'edge' to 'edge legacy'(or remove it) then 'edge chromium' to 'edge' to match with the known up-to-date terms\n // Microsoft Edge is the new Chromium-based browser. Microsoft Edge Legacy is the old EdgeHTML-based browser (EOL: March 9, 2021).\n if (browser.edg) {\n matched.browser = 'edgechromium'\n browser.edgeChromium = true\n }\n\n // Blackberry browsers are marked as Safari on BlackBerry\n if ((browser.safari && browser.blackberry) || browser.bb) {\n matched.browser = 'blackberry'\n browser.blackberry = true\n }\n\n // Playbook browsers are marked as Safari on Playbook\n if (browser.safari && browser.playbook) {\n matched.browser = 'playbook'\n browser.playbook = true\n }\n\n // Opera 15+ are identified as opr\n if (browser.opr) {\n matched.browser = 'opera'\n browser.opera = true\n }\n\n // Stock Android browsers are marked as Safari on Android.\n if (browser.safari && browser.android) {\n matched.browser = 'android'\n browser.android = true\n }\n\n // Kindle browsers are marked as Safari on Kindle\n if (browser.safari && browser.kindle) {\n matched.browser = 'kindle'\n browser.kindle = true\n }\n\n // Kindle Silk browsers are marked as Safari on Kindle\n if (browser.safari && browser.silk) {\n matched.browser = 'silk'\n browser.silk = true\n }\n\n if (browser.vivaldi) {\n matched.browser = 'vivaldi'\n browser.vivaldi = true\n }\n\n // Assign the name and platform variable\n browser.name = matched.browser\n browser.platform = matched.platform\n\n if (__QUASAR_SSR_SERVER__ !== true) {\n if (userAgent.indexOf('electron') > -1) {\n browser.electron = true\n }\n else if (document.location.href.indexOf('-extension://') > -1) {\n browser.bex = true\n }\n else {\n if (window.Capacitor !== void 0) {\n browser.capacitor = true\n browser.nativeMobile = true\n browser.nativeMobileWrapper = 'capacitor'\n }\n else if (window._cordovaNative !== void 0 || window.cordova !== void 0) {\n browser.cordova = true\n browser.nativeMobile = true\n browser.nativeMobileWrapper = 'cordova'\n }\n\n if (\n hasTouch === true\n && browser.mac === true\n && (\n (browser.desktop === true && browser.safari === true)\n || (\n browser.nativeMobile === true\n && browser.android !== true\n && browser.ios !== true\n && browser.ipad !== true\n )\n )\n ) {\n /*\n * Correction needed for iOS since the default\n * setting on iPad is to request desktop view; if we have\n * touch support and the user agent says it's a\n * desktop, we infer that it's an iPhone/iPad with desktop view\n * so we must fix the false positives\n */\n applyIosCorrection(browser)\n }\n }\n }\n\n return browser\n}\n\nconst userAgent = __QUASAR_SSR_SERVER__\n ? ''\n : navigator.userAgent || navigator.vendor || window.opera\n\nconst ssrClient = {\n has: {\n touch: false,\n webStorage: false\n },\n within: { iframe: false }\n}\n\n// We export \"client\" for hydration error-free parts,\n// like touch directives who do not (and must NOT) wait\n// for the client takeover;\n// Do NOT import this directly in your app, unless you really know\n// what you are doing.\nexport const client = __QUASAR_SSR_SERVER__\n ? ssrClient\n : {\n userAgent,\n is: getPlatform(userAgent),\n has: {\n touch: hasTouch\n },\n within: {\n iframe: window.self !== window.top\n }\n }\n\nconst Platform = {\n install (opts) {\n const { $q } = opts\n\n if (__QUASAR_SSR_SERVER__) {\n $q.platform = this.parseSSR(opts.ssrContext)\n }\n else if (isRuntimeSsrPreHydration.value === true) {\n // takeover should increase accuracy for\n // the rest of the props; we also avoid\n // hydration errors\n opts.onSSRHydrated.push(() => {\n Object.assign($q.platform, client)\n isRuntimeSsrPreHydration.value = false\n iosCorrection = void 0\n })\n\n // we need to make platform reactive\n // for the takeover phase\n $q.platform = reactive(this)\n }\n else {\n $q.platform = this\n }\n }\n}\n\nif (__QUASAR_SSR_SERVER__) {\n Platform.parseSSR = (ssrContext) => {\n const userAgent = ssrContext.req.headers[ 'user-agent' ] || ssrContext.req.headers[ 'User-Agent' ] || ''\n return {\n ...client,\n userAgent,\n is: getPlatform(userAgent)\n }\n }\n}\nelse {\n // do not access window.localStorage without\n // devland actually using it as this will get\n // reported under \"Cookies\" in Google Chrome\n let hasWebStorage\n\n injectProp(client.has, 'webStorage', () => {\n if (hasWebStorage !== void 0) {\n return hasWebStorage\n }\n\n try {\n if (window.localStorage) {\n hasWebStorage = true\n return true\n }\n }\n catch (e) {}\n\n hasWebStorage = false\n return false\n })\n\n iosEmulated = client.is.ios === true\n && window.navigator.vendor.toLowerCase().indexOf('apple') === -1\n\n if (isRuntimeSsrPreHydration.value === true) {\n // must match with server-side before\n // client taking over in order to prevent\n // hydration errors\n Object.assign(Platform, client, iosCorrection, ssrClient)\n }\n else {\n Object.assign(Platform, client)\n }\n}\n\nexport default Platform\n","/* eslint no-fallthrough: 0 */\n\nimport { isDate } from './is.js'\nimport { pad, capitalize } from './format.js'\nimport { jalaaliMonthLength } from './private/date-persian.js'\nimport lang, { defaultLang } from '../lang.js'\n\nconst\n MILLISECONDS_IN_DAY = 86400000,\n MILLISECONDS_IN_HOUR = 3600000,\n MILLISECONDS_IN_MINUTE = 60000,\n defaultMask = 'YYYY-MM-DDTHH:mm:ss.SSSZ',\n token = /\\[((?:[^\\]\\\\]|\\\\]|\\\\)*)\\]|d{1,4}|M{1,4}|m{1,2}|w{1,2}|Qo|Do|D{1,4}|YY(?:YY)?|H{1,2}|h{1,2}|s{1,2}|S{1,3}|Z{1,2}|a{1,2}|[AQExX]/g,\n reverseToken = /(\\[[^\\]]*\\])|d{1,4}|M{1,4}|m{1,2}|w{1,2}|Qo|Do|D{1,4}|YY(?:YY)?|H{1,2}|h{1,2}|s{1,2}|S{1,3}|Z{1,2}|a{1,2}|[AQExX]|([.*+:?^,\\s${}()|\\\\]+)/g,\n regexStore = {}\n\nfunction getRegexData (mask, dateLocale) {\n const\n days = '(' + dateLocale.days.join('|') + ')',\n key = mask + days\n\n if (regexStore[ key ] !== void 0) {\n return regexStore[ key ]\n }\n\n const\n daysShort = '(' + dateLocale.daysShort.join('|') + ')',\n months = '(' + dateLocale.months.join('|') + ')',\n monthsShort = '(' + dateLocale.monthsShort.join('|') + ')'\n\n const map = {}\n let index = 0\n\n const regexText = mask.replace(reverseToken, match => {\n index++\n switch (match) {\n case 'YY':\n map.YY = index\n return '(-?\\\\d{1,2})'\n case 'YYYY':\n map.YYYY = index\n return '(-?\\\\d{1,4})'\n case 'M':\n map.M = index\n return '(\\\\d{1,2})'\n case 'MM':\n map.M = index // bumping to M\n return '(\\\\d{2})'\n case 'MMM':\n map.MMM = index\n return monthsShort\n case 'MMMM':\n map.MMMM = index\n return months\n case 'D':\n map.D = index\n return '(\\\\d{1,2})'\n case 'Do':\n map.D = index++ // bumping to D\n return '(\\\\d{1,2}(st|nd|rd|th))'\n case 'DD':\n map.D = index // bumping to D\n return '(\\\\d{2})'\n case 'H':\n map.H = index\n return '(\\\\d{1,2})'\n case 'HH':\n map.H = index // bumping to H\n return '(\\\\d{2})'\n case 'h':\n map.h = index\n return '(\\\\d{1,2})'\n case 'hh':\n map.h = index // bumping to h\n return '(\\\\d{2})'\n case 'm':\n map.m = index\n return '(\\\\d{1,2})'\n case 'mm':\n map.m = index // bumping to m\n return '(\\\\d{2})'\n case 's':\n map.s = index\n return '(\\\\d{1,2})'\n case 'ss':\n map.s = index // bumping to s\n return '(\\\\d{2})'\n case 'S':\n map.S = index\n return '(\\\\d{1})'\n case 'SS':\n map.S = index // bump to S\n return '(\\\\d{2})'\n case 'SSS':\n map.S = index // bump to S\n return '(\\\\d{3})'\n case 'A':\n map.A = index\n return '(AM|PM)'\n case 'a':\n map.a = index\n return '(am|pm)'\n case 'aa':\n map.aa = index\n return '(a\\\\.m\\\\.|p\\\\.m\\\\.)'\n\n case 'ddd':\n return daysShort\n case 'dddd':\n return days\n case 'Q':\n case 'd':\n case 'E':\n return '(\\\\d{1})'\n case 'Qo':\n return '(1st|2nd|3rd|4th)'\n case 'DDD':\n case 'DDDD':\n return '(\\\\d{1,3})'\n case 'w':\n return '(\\\\d{1,2})'\n case 'ww':\n return '(\\\\d{2})'\n\n case 'Z': // to split: (?:(Z)()()|([+-])?(\\\\d{2}):?(\\\\d{2}))\n map.Z = index\n return '(Z|[+-]\\\\d{2}:\\\\d{2})'\n case 'ZZ':\n map.ZZ = index\n return '(Z|[+-]\\\\d{2}\\\\d{2})'\n\n case 'X':\n map.X = index\n return '(-?\\\\d+)'\n case 'x':\n map.x = index\n return '(-?\\\\d{4,})'\n\n default:\n index--\n if (match[ 0 ] === '[') {\n match = match.substring(1, match.length - 1)\n }\n return match.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n })\n\n const res = { map, regex: new RegExp('^' + regexText) }\n regexStore[ key ] = res\n\n return res\n}\n\nfunction getDateLocale (paramDateLocale, langProps) {\n return paramDateLocale !== void 0\n ? paramDateLocale\n : (\n langProps !== void 0\n ? langProps.date\n : defaultLang.date\n )\n}\n\nfunction formatTimezone (offset, delimeter = '') {\n const\n sign = offset > 0 ? '-' : '+',\n absOffset = Math.abs(offset),\n hours = Math.floor(absOffset / 60),\n minutes = absOffset % 60\n\n return sign + pad(hours) + delimeter + pad(minutes)\n}\n\nfunction applyYearMonthDayChange (date, mod, sign) {\n let\n year = date.getFullYear(),\n month = date.getMonth()\n\n const day = date.getDate()\n\n if (mod.year !== void 0) {\n year += sign * mod.year\n delete mod.year\n }\n\n if (mod.month !== void 0) {\n month += sign * mod.month\n delete mod.month\n }\n\n date.setDate(1)\n date.setMonth(2)\n\n date.setFullYear(year)\n date.setMonth(month)\n date.setDate(Math.min(day, daysInMonth(date)))\n\n if (mod.date !== void 0) {\n date.setDate(date.getDate() + sign * mod.date)\n delete mod.date\n }\n\n return date\n}\n\nfunction applyYearMonthDay (date, mod, middle) {\n const\n year = mod.year !== void 0 ? mod.year : date[ `get${ middle }FullYear` ](),\n month = mod.month !== void 0 ? mod.month - 1 : date[ `get${ middle }Month` ](),\n maxDay = (new Date(year, month + 1, 0)).getDate(),\n day = Math.min(maxDay, mod.date !== void 0 ? mod.date : date[ `get${ middle }Date` ]())\n\n date[ `set${ middle }Date` ](1)\n date[ `set${ middle }Month` ](2)\n\n date[ `set${ middle }FullYear` ](year)\n date[ `set${ middle }Month` ](month)\n date[ `set${ middle }Date` ](day)\n\n delete mod.year\n delete mod.month\n delete mod.date\n\n return date\n}\n\nfunction getChange (date, rawMod, sign) {\n const\n mod = normalizeMod(rawMod),\n d = new Date(date),\n t = mod.year !== void 0 || mod.month !== void 0 || mod.date !== void 0\n ? applyYearMonthDayChange(d, mod, sign) // removes year/month/day\n : d\n\n for (const key in mod) {\n const op = capitalize(key)\n t[ `set${ op }` ](t[ `get${ op }` ]() + sign * mod[ key ])\n }\n\n return t\n}\n\nfunction normalizeMod (mod) {\n const acc = { ...mod }\n\n if (mod.years !== void 0) {\n acc.year = mod.years\n delete acc.years\n }\n\n if (mod.months !== void 0) {\n acc.month = mod.months\n delete acc.months\n }\n\n if (mod.days !== void 0) {\n acc.date = mod.days\n delete acc.days\n }\n if (mod.day !== void 0) {\n acc.date = mod.day\n delete acc.day\n }\n\n if (mod.hour !== void 0) {\n acc.hours = mod.hour\n delete acc.hour\n }\n\n if (mod.minute !== void 0) {\n acc.minutes = mod.minute\n delete acc.minute\n }\n\n if (mod.second !== void 0) {\n acc.seconds = mod.second\n delete acc.second\n }\n\n if (mod.millisecond !== void 0) {\n acc.milliseconds = mod.millisecond\n delete acc.millisecond\n }\n\n return acc\n}\n\nexport function adjustDate (date, rawMod, utc) {\n const\n mod = normalizeMod(rawMod),\n middle = utc === true ? 'UTC' : '',\n d = new Date(date),\n t = mod.year !== void 0 || mod.month !== void 0 || mod.date !== void 0\n ? applyYearMonthDay(d, mod, middle) // removes year/month/day\n : d\n\n for (const key in mod) {\n const op = key.charAt(0).toUpperCase() + key.slice(1)\n t[ `set${ middle }${ op }` ](mod[ key ])\n }\n\n return t\n}\n\nexport function extractDate (str, mask, dateLocale) {\n const d = __splitDate(str, mask, dateLocale)\n\n const date = new Date(\n d.year,\n d.month === null ? null : d.month - 1,\n d.day === null ? 1 : d.day,\n d.hour,\n d.minute,\n d.second,\n d.millisecond\n )\n\n const tzOffset = date.getTimezoneOffset()\n\n return d.timezoneOffset === null || d.timezoneOffset === tzOffset\n ? date\n : getChange(date, { minutes: d.timezoneOffset - tzOffset }, 1)\n}\n\nexport function __splitDate (str, mask, dateLocale, calendar, defaultModel) {\n const date = {\n year: null,\n month: null,\n day: null,\n hour: null,\n minute: null,\n second: null,\n millisecond: null,\n timezoneOffset: null,\n dateHash: null,\n timeHash: null\n }\n\n defaultModel !== void 0 && Object.assign(date, defaultModel)\n\n if (\n str === void 0\n || str === null\n || str === ''\n || typeof str !== 'string'\n ) {\n return date\n }\n\n if (mask === void 0) {\n mask = defaultMask\n }\n\n const\n langOpts = getDateLocale(dateLocale, lang.props),\n months = langOpts.months,\n monthsShort = langOpts.monthsShort\n\n const { regex, map } = getRegexData(mask, langOpts)\n\n const match = str.match(regex)\n\n if (match === null) {\n return date\n }\n\n let tzString = ''\n\n if (map.X !== void 0 || map.x !== void 0) {\n const stamp = parseInt(match[ map.X !== void 0 ? map.X : map.x ], 10)\n\n if (isNaN(stamp) === true || stamp < 0) {\n return date\n }\n\n const d = new Date(stamp * (map.X !== void 0 ? 1000 : 1))\n\n date.year = d.getFullYear()\n date.month = d.getMonth() + 1\n date.day = d.getDate()\n date.hour = d.getHours()\n date.minute = d.getMinutes()\n date.second = d.getSeconds()\n date.millisecond = d.getMilliseconds()\n }\n else {\n if (map.YYYY !== void 0) {\n date.year = parseInt(match[ map.YYYY ], 10)\n }\n else if (map.YY !== void 0) {\n const y = parseInt(match[ map.YY ], 10)\n date.year = y < 0 ? y : 2000 + y\n }\n\n if (map.M !== void 0) {\n date.month = parseInt(match[ map.M ], 10)\n if (date.month < 1 || date.month > 12) {\n return date\n }\n }\n else if (map.MMM !== void 0) {\n date.month = monthsShort.indexOf(match[ map.MMM ]) + 1\n }\n else if (map.MMMM !== void 0) {\n date.month = months.indexOf(match[ map.MMMM ]) + 1\n }\n\n if (map.D !== void 0) {\n date.day = parseInt(match[ map.D ], 10)\n\n if (date.year === null || date.month === null || date.day < 1) {\n return date\n }\n\n const maxDay = calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n\n if (date.day > maxDay) {\n return date\n }\n }\n\n if (map.H !== void 0) {\n date.hour = parseInt(match[ map.H ], 10) % 24\n }\n else if (map.h !== void 0) {\n date.hour = parseInt(match[ map.h ], 10) % 12\n if (\n (map.A && match[ map.A ] === 'PM')\n || (map.a && match[ map.a ] === 'pm')\n || (map.aa && match[ map.aa ] === 'p.m.')\n ) {\n date.hour += 12\n }\n date.hour = date.hour % 24\n }\n\n if (map.m !== void 0) {\n date.minute = parseInt(match[ map.m ], 10) % 60\n }\n\n if (map.s !== void 0) {\n date.second = parseInt(match[ map.s ], 10) % 60\n }\n\n if (map.S !== void 0) {\n date.millisecond = parseInt(match[ map.S ], 10) * 10 ** (3 - match[ map.S ].length)\n }\n\n if (map.Z !== void 0 || map.ZZ !== void 0) {\n tzString = (map.Z !== void 0 ? match[ map.Z ].replace(':', '') : match[ map.ZZ ])\n date.timezoneOffset = (tzString[ 0 ] === '+' ? -1 : 1) * (60 * tzString.slice(1, 3) + 1 * tzString.slice(3, 5))\n }\n }\n\n date.dateHash = pad(date.year, 6) + '/' + pad(date.month) + '/' + pad(date.day)\n date.timeHash = pad(date.hour) + ':' + pad(date.minute) + ':' + pad(date.second) + tzString\n\n return date\n}\n\nexport function isValid (date) {\n return typeof date === 'number'\n ? true\n : isNaN(Date.parse(date)) === false\n}\n\nexport function buildDate (mod, utc) {\n return adjustDate(new Date(), mod, utc)\n}\n\nexport function getDayOfWeek (date) {\n const dow = new Date(date).getDay()\n return dow === 0 ? 7 : dow\n}\n\nexport function getWeekOfYear (date) {\n // Remove time components of date\n const thursday = new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\n // Change date to Thursday same week\n thursday.setDate(thursday.getDate() - ((thursday.getDay() + 6) % 7) + 3)\n\n // Take January 4th as it is always in week 1 (see ISO 8601)\n const firstThursday = new Date(thursday.getFullYear(), 0, 4)\n\n // Change date to Thursday same week\n firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3)\n\n // Check if daylight-saving-time-switch occurred and correct for it\n const ds = thursday.getTimezoneOffset() - firstThursday.getTimezoneOffset()\n thursday.setHours(thursday.getHours() - ds)\n\n // Number of weeks between target Thursday and first Thursday\n const weekDiff = (thursday - firstThursday) / (MILLISECONDS_IN_DAY * 7)\n return 1 + Math.floor(weekDiff)\n}\n\nfunction getDayIdentifier (date) {\n return date.getFullYear() * 10000 + date.getMonth() * 100 + date.getDate()\n}\n\nfunction getDateIdentifier (date, onlyDate /* = false */) {\n const d = new Date(date)\n return onlyDate === true ? getDayIdentifier(d) : d.getTime()\n}\n\nexport function isBetweenDates (date, from, to, opts = {}) {\n const\n d1 = getDateIdentifier(from, opts.onlyDate),\n d2 = getDateIdentifier(to, opts.onlyDate),\n cur = getDateIdentifier(date, opts.onlyDate)\n\n return (cur > d1 || (opts.inclusiveFrom === true && cur === d1))\n && (cur < d2 || (opts.inclusiveTo === true && cur === d2))\n}\n\nexport function addToDate (date, mod) {\n return getChange(date, mod, 1)\n}\nexport function subtractFromDate (date, mod) {\n return getChange(date, mod, -1)\n}\n\nexport function startOfDate (date, unit, utc) {\n const\n t = new Date(date),\n prefix = `set${ utc === true ? 'UTC' : '' }`\n\n switch (unit) {\n case 'year':\n case 'years':\n t[ `${ prefix }Month` ](0)\n case 'month':\n case 'months':\n t[ `${ prefix }Date` ](1)\n case 'day':\n case 'days':\n case 'date':\n t[ `${ prefix }Hours` ](0)\n case 'hour':\n case 'hours':\n t[ `${ prefix }Minutes` ](0)\n case 'minute':\n case 'minutes':\n t[ `${ prefix }Seconds` ](0)\n case 'second':\n case 'seconds':\n t[ `${ prefix }Milliseconds` ](0)\n }\n return t\n}\n\nexport function endOfDate (date, unit, utc) {\n const\n t = new Date(date),\n prefix = `set${ utc === true ? 'UTC' : '' }`\n\n switch (unit) {\n case 'year':\n case 'years':\n t[ `${ prefix }Month` ](11)\n case 'month':\n case 'months':\n t[ `${ prefix }Date` ](daysInMonth(t))\n case 'day':\n case 'days':\n case 'date':\n t[ `${ prefix }Hours` ](23)\n case 'hour':\n case 'hours':\n t[ `${ prefix }Minutes` ](59)\n case 'minute':\n case 'minutes':\n t[ `${ prefix }Seconds` ](59)\n case 'second':\n case 'seconds':\n t[ `${ prefix }Milliseconds` ](999)\n }\n return t\n}\n\nexport function getMaxDate (date /* , ...args */) {\n let t = new Date(date)\n Array.prototype.slice.call(arguments, 1).forEach(d => {\n t = Math.max(t, new Date(d))\n })\n return t\n}\n\nexport function getMinDate (date /*, ...args */) {\n let t = new Date(date)\n Array.prototype.slice.call(arguments, 1).forEach(d => {\n t = Math.min(t, new Date(d))\n })\n return t\n}\n\nfunction getDiff (t, sub, interval) {\n return (\n (t.getTime() - t.getTimezoneOffset() * MILLISECONDS_IN_MINUTE)\n - (sub.getTime() - sub.getTimezoneOffset() * MILLISECONDS_IN_MINUTE)\n ) / interval\n}\n\nexport function getDateDiff (date, subtract, unit = 'days') {\n const\n t = new Date(date),\n sub = new Date(subtract)\n\n switch (unit) {\n case 'years':\n case 'year':\n return (t.getFullYear() - sub.getFullYear())\n\n case 'months':\n case 'month':\n return (t.getFullYear() - sub.getFullYear()) * 12 + t.getMonth() - sub.getMonth()\n\n case 'days':\n case 'day':\n case 'date':\n return getDiff(startOfDate(t, 'day'), startOfDate(sub, 'day'), MILLISECONDS_IN_DAY)\n\n case 'hours':\n case 'hour':\n return getDiff(startOfDate(t, 'hour'), startOfDate(sub, 'hour'), MILLISECONDS_IN_HOUR)\n\n case 'minutes':\n case 'minute':\n return getDiff(startOfDate(t, 'minute'), startOfDate(sub, 'minute'), MILLISECONDS_IN_MINUTE)\n\n case 'seconds':\n case 'second':\n return getDiff(startOfDate(t, 'second'), startOfDate(sub, 'second'), 1000)\n }\n}\n\nexport function getDayOfYear (date) {\n return getDateDiff(date, startOfDate(date, 'year'), 'days') + 1\n}\n\nexport function inferDateFormat (date) {\n return isDate(date) === true\n ? 'date'\n : (typeof date === 'number' ? 'number' : 'string')\n}\n\nexport function getDateBetween (date, min, max) {\n const t = new Date(date)\n\n if (min) {\n const low = new Date(min)\n if (t < low) {\n return low\n }\n }\n\n if (max) {\n const high = new Date(max)\n if (t > high) {\n return high\n }\n }\n\n return t\n}\n\nexport function isSameDate (date, date2, unit) {\n const\n t = new Date(date),\n d = new Date(date2)\n\n if (unit === void 0) {\n return t.getTime() === d.getTime()\n }\n\n switch (unit) {\n case 'second':\n case 'seconds':\n if (t.getSeconds() !== d.getSeconds()) {\n return false\n }\n case 'minute': // intentional fall-through\n case 'minutes':\n if (t.getMinutes() !== d.getMinutes()) {\n return false\n }\n case 'hour': // intentional fall-through\n case 'hours':\n if (t.getHours() !== d.getHours()) {\n return false\n }\n case 'day': // intentional fall-through\n case 'days':\n case 'date':\n if (t.getDate() !== d.getDate()) {\n return false\n }\n case 'month': // intentional fall-through\n case 'months':\n if (t.getMonth() !== d.getMonth()) {\n return false\n }\n case 'year': // intentional fall-through\n case 'years':\n if (t.getFullYear() !== d.getFullYear()) {\n return false\n }\n break\n default:\n throw new Error(`date isSameDate unknown unit ${ unit }`)\n }\n\n return true\n}\n\nexport function daysInMonth (date) {\n return (new Date(date.getFullYear(), date.getMonth() + 1, 0)).getDate()\n}\n\nfunction getOrdinal (n) {\n if (n >= 11 && n <= 13) {\n return `${ n }th`\n }\n switch (n % 10) {\n case 1: return `${ n }st`\n case 2: return `${ n }nd`\n case 3: return `${ n }rd`\n }\n return `${ n }th`\n}\n\nconst formatter = {\n // Year: 00, 01, ..., 99\n YY (date, dateLocale, forcedYear) {\n // workaround for < 1900 with new Date()\n const y = this.YYYY(date, dateLocale, forcedYear) % 100\n return y >= 0\n ? pad(y)\n : '-' + pad(Math.abs(y))\n },\n\n // Year: 1900, 1901, ..., 2099\n YYYY (date, _dateLocale, forcedYear) {\n // workaround for < 1900 with new Date()\n return forcedYear !== void 0 && forcedYear !== null\n ? forcedYear\n : date.getFullYear()\n },\n\n // Month: 1, 2, ..., 12\n M (date) {\n return date.getMonth() + 1\n },\n\n // Month: 01, 02, ..., 12\n MM (date) {\n return pad(date.getMonth() + 1)\n },\n\n // Month Short Name: Jan, Feb, ...\n MMM (date, dateLocale) {\n return dateLocale.monthsShort[ date.getMonth() ]\n },\n\n // Month Name: January, February, ...\n MMMM (date, dateLocale) {\n return dateLocale.months[ date.getMonth() ]\n },\n\n // Quarter: 1, 2, 3, 4\n Q (date) {\n return Math.ceil((date.getMonth() + 1) / 3)\n },\n\n // Quarter: 1st, 2nd, 3rd, 4th\n Qo (date) {\n return getOrdinal(this.Q(date))\n },\n\n // Day of month: 1, 2, ..., 31\n D (date) {\n return date.getDate()\n },\n\n // Day of month: 1st, 2nd, ..., 31st\n Do (date) {\n return getOrdinal(date.getDate())\n },\n\n // Day of month: 01, 02, ..., 31\n DD (date) {\n return pad(date.getDate())\n },\n\n // Day of year: 1, 2, ..., 366\n DDD (date) {\n return getDayOfYear(date)\n },\n\n // Day of year: 001, 002, ..., 366\n DDDD (date) {\n return pad(getDayOfYear(date), 3)\n },\n\n // Day of week: 0, 1, ..., 6\n d (date) {\n return date.getDay()\n },\n\n // Day of week: Su, Mo, ...\n dd (date, dateLocale) {\n return this.dddd(date, dateLocale).slice(0, 2)\n },\n\n // Day of week: Sun, Mon, ...\n ddd (date, dateLocale) {\n return dateLocale.daysShort[ date.getDay() ]\n },\n\n // Day of week: Sunday, Monday, ...\n dddd (date, dateLocale) {\n return dateLocale.days[ date.getDay() ]\n },\n\n // Day of ISO week: 1, 2, ..., 7\n E (date) {\n return date.getDay() || 7\n },\n\n // Week of Year: 1 2 ... 52 53\n w (date) {\n return getWeekOfYear(date)\n },\n\n // Week of Year: 01 02 ... 52 53\n ww (date) {\n return pad(getWeekOfYear(date))\n },\n\n // Hour: 0, 1, ... 23\n H (date) {\n return date.getHours()\n },\n\n // Hour: 00, 01, ..., 23\n HH (date) {\n return pad(date.getHours())\n },\n\n // Hour: 1, 2, ..., 12\n h (date) {\n const hours = date.getHours()\n return hours === 0\n ? 12\n : (hours > 12 ? hours % 12 : hours)\n },\n\n // Hour: 01, 02, ..., 12\n hh (date) {\n return pad(this.h(date))\n },\n\n // Minute: 0, 1, ..., 59\n m (date) {\n return date.getMinutes()\n },\n\n // Minute: 00, 01, ..., 59\n mm (date) {\n return pad(date.getMinutes())\n },\n\n // Second: 0, 1, ..., 59\n s (date) {\n return date.getSeconds()\n },\n\n // Second: 00, 01, ..., 59\n ss (date) {\n return pad(date.getSeconds())\n },\n\n // 1/10 of second: 0, 1, ..., 9\n S (date) {\n return Math.floor(date.getMilliseconds() / 100)\n },\n\n // 1/100 of second: 00, 01, ..., 99\n SS (date) {\n return pad(Math.floor(date.getMilliseconds() / 10))\n },\n\n // Millisecond: 000, 001, ..., 999\n SSS (date) {\n return pad(date.getMilliseconds(), 3)\n },\n\n // Meridiem: AM, PM\n A (date) {\n return this.H(date) < 12 ? 'AM' : 'PM'\n },\n\n // Meridiem: am, pm\n a (date) {\n return this.H(date) < 12 ? 'am' : 'pm'\n },\n\n // Meridiem: a.m., p.m.\n aa (date) {\n return this.H(date) < 12 ? 'a.m.' : 'p.m.'\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n Z (date, _dateLocale, _forcedYear, forcedTimezoneOffset) {\n const tzOffset = forcedTimezoneOffset === void 0 || forcedTimezoneOffset === null\n ? date.getTimezoneOffset()\n : forcedTimezoneOffset\n\n return formatTimezone(tzOffset, ':')\n },\n\n // Timezone: -0100, +0000, ... +1200\n ZZ (date, _dateLocale, _forcedYear, forcedTimezoneOffset) {\n const tzOffset = forcedTimezoneOffset === void 0 || forcedTimezoneOffset === null\n ? date.getTimezoneOffset()\n : forcedTimezoneOffset\n\n return formatTimezone(tzOffset)\n },\n\n // Seconds timestamp: 512969520\n X (date) {\n return Math.floor(date.getTime() / 1000)\n },\n\n // Milliseconds timestamp: 512969520900\n x (date) {\n return date.getTime()\n }\n}\n\nexport function formatDate (val, mask, dateLocale, __forcedYear, __forcedTimezoneOffset) {\n if (\n (val !== 0 && !val)\n || val === Infinity\n || val === -Infinity\n ) {\n return\n }\n\n const date = new Date(val)\n\n if (isNaN(date)) {\n return\n }\n\n if (mask === void 0) {\n mask = defaultMask\n }\n\n const locale = getDateLocale(dateLocale, lang.props)\n\n return mask.replace(\n token,\n (match, text) => (\n match in formatter\n ? formatter[ match ](date, locale, __forcedYear, __forcedTimezoneOffset)\n : (text === void 0 ? match : text.split('\\\\]').join(']'))\n )\n )\n}\n\nexport function clone (date) {\n return isDate(date) === true\n ? new Date(date.getTime())\n : date\n}\n\nexport default {\n isValid,\n extractDate,\n buildDate,\n getDayOfWeek,\n getWeekOfYear,\n isBetweenDates,\n addToDate,\n subtractFromDate,\n adjustDate,\n startOfDate,\n endOfDate,\n getMaxDate,\n getMinDate,\n getDateDiff,\n getDayOfYear,\n inferDateFormat,\n getDateBetween,\n isSameDate,\n daysInMonth,\n formatDate,\n clone\n}\n","export default function (fn, wait = 250, immediate) {\n let timer = null\n\n function debounced (/* ...args */) {\n const args = arguments\n\n const later = () => {\n timer = null\n if (immediate !== true) {\n fn.apply(this, args)\n }\n }\n\n if (timer !== null) {\n clearTimeout(timer)\n }\n else if (immediate === true) {\n fn.apply(this, args)\n }\n\n timer = setTimeout(later, wait)\n }\n\n debounced.cancel = () => {\n timer !== null && clearTimeout(timer)\n }\n\n return debounced\n}\n","import { unref } from 'vue'\n\nexport function offset (el) {\n if (el === window) {\n return { top: 0, left: 0 }\n }\n const { top, left } = el.getBoundingClientRect()\n return { top, left }\n}\n\nexport function style (el, property) {\n return window.getComputedStyle(el).getPropertyValue(property)\n}\n\nexport function height (el) {\n return el === window\n ? window.innerHeight\n : el.getBoundingClientRect().height\n}\n\nexport function width (el) {\n return el === window\n ? window.innerWidth\n : el.getBoundingClientRect().width\n}\n\nexport function css (element, css) {\n const style = element.style\n\n for (const prop in css) {\n style[ prop ] = css[ prop ]\n }\n}\n\nexport function cssBatch (elements, style) {\n elements.forEach(el => css(el, style))\n}\n\nexport function ready (fn) {\n if (typeof fn !== 'function') {\n return\n }\n\n if (document.readyState !== 'loading') {\n return fn()\n }\n\n document.addEventListener('DOMContentLoaded', fn, false)\n}\n\n// internal\nexport function getElement (el) {\n if (el === void 0 || el === null) {\n return void 0\n }\n\n if (typeof el === 'string') {\n try {\n return document.querySelector(el) || void 0\n }\n catch (err) {\n return void 0\n }\n }\n\n const target = unref(el)\n if (target) {\n return target.$el || target\n }\n}\n\n// internal\nexport function childHasFocus (el, focusedEl) {\n if (el === void 0 || el === null || el.contains(focusedEl) === true) {\n return true\n }\n\n for (let next = el.nextElementSibling; next !== null; next = next.nextElementSibling) {\n if (next.contains(focusedEl)) {\n return true\n }\n }\n\n return false\n}\n\nexport default {\n offset,\n style,\n height,\n width,\n css,\n cssBatch,\n ready\n}\n","export const listenOpts = {\n hasPassive: false,\n passiveCapture: true,\n notPassiveCapture: true\n}\n\ntry {\n const opts = Object.defineProperty({}, 'passive', {\n get () {\n Object.assign(listenOpts, {\n hasPassive: true,\n passive: { passive: true },\n notPassive: { passive: false },\n passiveCapture: { passive: true, capture: true },\n notPassiveCapture: { passive: false, capture: true }\n })\n }\n })\n window.addEventListener('qtest', null, opts)\n window.removeEventListener('qtest', null, opts)\n}\ncatch (e) {}\n\nexport function noop () {}\n\nexport function leftClick (e) {\n return e.button === 0\n}\n\nexport function middleClick (e) {\n return e.button === 1\n}\n\nexport function rightClick (e) {\n return e.button === 2\n}\n\nexport function position (e) {\n if (e.touches && e.touches[ 0 ]) {\n e = e.touches[ 0 ]\n }\n else if (e.changedTouches && e.changedTouches[ 0 ]) {\n e = e.changedTouches[ 0 ]\n }\n else if (e.targetTouches && e.targetTouches[ 0 ]) {\n e = e.targetTouches[ 0 ]\n }\n\n return {\n top: e.clientY,\n left: e.clientX\n }\n}\n\nexport function getEventPath (e) {\n if (e.path) {\n return e.path\n }\n if (e.composedPath) {\n return e.composedPath()\n }\n\n const path = []\n let el = e.target\n\n while (el) {\n path.push(el)\n\n if (el.tagName === 'HTML') {\n path.push(document)\n path.push(window)\n return path\n }\n\n el = el.parentElement\n }\n}\n\n// Reasonable defaults\nconst\n LINE_HEIGHT = 40,\n PAGE_HEIGHT = 800\n\nexport function getMouseWheelDistance (e) {\n let x = e.deltaX, y = e.deltaY\n\n if ((x || y) && e.deltaMode) {\n const multiplier = e.deltaMode === 1 ? LINE_HEIGHT : PAGE_HEIGHT\n x *= multiplier\n y *= multiplier\n }\n\n if (e.shiftKey && !x) {\n [ y, x ] = [ x, y ]\n }\n\n return { x, y }\n}\n\nexport function stop (e) {\n e.stopPropagation()\n}\n\nexport function prevent (e) {\n e.cancelable !== false && e.preventDefault()\n}\n\nexport function stopAndPrevent (e) {\n e.cancelable !== false && e.preventDefault()\n e.stopPropagation()\n}\n\nexport function preventDraggable (el, status) {\n if (el === void 0 || (status === true && el.__dragPrevented === true)) {\n return\n }\n\n const fn = status === true\n ? el => {\n el.__dragPrevented = true\n el.addEventListener('dragstart', prevent, listenOpts.notPassiveCapture)\n }\n : el => {\n delete el.__dragPrevented\n el.removeEventListener('dragstart', prevent, listenOpts.notPassiveCapture)\n }\n\n el.querySelectorAll('a, img').forEach(fn)\n}\n\nexport function addEvt (ctx, targetName, events) {\n const name = `__q_${ targetName }_evt`\n\n ctx[ name ] = ctx[ name ] !== void 0\n ? ctx[ name ].concat(events)\n : events\n\n events.forEach(evt => {\n evt[ 0 ].addEventListener(evt[ 1 ], ctx[ evt[ 2 ] ], listenOpts[ evt[ 3 ] ])\n })\n}\n\nexport function cleanEvt (ctx, targetName) {\n const name = `__q_${ targetName }_evt`\n\n if (ctx[ name ] !== void 0) {\n ctx[ name ].forEach(evt => {\n evt[ 0 ].removeEventListener(evt[ 1 ], ctx[ evt[ 2 ] ], listenOpts[ evt[ 3 ] ])\n })\n ctx[ name ] = void 0\n }\n}\n\n/*\n * also update /types/utils/event.d.ts\n */\n\nexport default {\n listenOpts,\n leftClick,\n middleClick,\n rightClick,\n position,\n getEventPath,\n getMouseWheelDistance,\n stop,\n prevent,\n stopAndPrevent,\n preventDraggable\n}\n","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","\nexport function isDeepEqual (a, b) {\n if (a === b) {\n return true\n }\n\n if (a !== null && b !== null && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false\n }\n\n let length, i\n\n if (a.constructor === Array) {\n length = a.length\n\n if (length !== b.length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n if (isDeepEqual(a[ i ], b[ i ]) !== true) {\n return false\n }\n }\n\n return true\n }\n\n if (a.constructor === Map) {\n if (a.size !== b.size) {\n return false\n }\n\n let iter = a.entries()\n\n i = iter.next()\n while (i.done !== true) {\n if (b.has(i.value[ 0 ]) !== true) {\n return false\n }\n i = iter.next()\n }\n\n iter = a.entries()\n i = iter.next()\n while (i.done !== true) {\n if (isDeepEqual(i.value[ 1 ], b.get(i.value[ 0 ])) !== true) {\n return false\n }\n i = iter.next()\n }\n\n return true\n }\n\n if (a.constructor === Set) {\n if (a.size !== b.size) {\n return false\n }\n\n const iter = a.entries()\n\n i = iter.next()\n while (i.done !== true) {\n if (b.has(i.value[ 0 ]) !== true) {\n return false\n }\n i = iter.next()\n }\n\n return true\n }\n\n if (a.buffer != null && a.buffer.constructor === ArrayBuffer) {\n length = a.length\n\n if (length !== b.length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n if (a[ i ] !== b[ i ]) {\n return false\n }\n }\n\n return true\n }\n\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags\n }\n\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf()\n }\n\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString()\n }\n\n const keys = Object.keys(a).filter(key => a[ key ] !== void 0)\n length = keys.length\n\n if (length !== Object.keys(b).filter(key => b[ key ] !== void 0).length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n const key = keys[ i ]\n if (isDeepEqual(a[ key ], b[ key ]) !== true) {\n return false\n }\n }\n\n return true\n }\n\n // true if both NaN, false otherwise\n return a !== a && b !== b // eslint-disable-line no-self-compare\n}\n\n// not perfect, but what we ARE interested is for Arrays not to slip in\n// as spread operator will mess things up in various areas\nexport function isObject (v) {\n return v !== null && typeof v === 'object' && Array.isArray(v) !== true\n}\n\nexport function isDate (v) {\n return Object.prototype.toString.call(v) === '[object Date]'\n}\n\nexport function isRegexp (v) {\n return Object.prototype.toString.call(v) === '[object RegExp]'\n}\n\nexport function isNumber (v) {\n return typeof v === 'number' && isFinite(v)\n}\n\nexport default {\n deepEqual: isDeepEqual,\n object: isObject,\n date: isDate,\n regexp: isRegexp,\n number: isNumber\n}\n","import { getEventPath, listenOpts, stopAndPrevent } from '../utils/event.js'\nimport { hasScrollbar, getVerticalScrollPosition, getHorizontalScrollPosition } from '../utils/scroll.js'\nimport { client } from '../plugins/Platform.js'\n\nlet\n registered = 0,\n scrollPositionX,\n scrollPositionY,\n maxScrollTop,\n vpPendingUpdate = false,\n bodyLeft,\n bodyTop,\n href,\n closeTimer = null\n\nfunction onWheel (e) {\n if (shouldPreventScroll(e)) {\n stopAndPrevent(e)\n }\n}\n\nfunction shouldPreventScroll (e) {\n if (e.target === document.body || e.target.classList.contains('q-layout__backdrop')) {\n return true\n }\n\n const\n path = getEventPath(e),\n shift = e.shiftKey && !e.deltaX,\n scrollY = !shift && Math.abs(e.deltaX) <= Math.abs(e.deltaY),\n delta = shift || scrollY ? e.deltaY : e.deltaX\n\n for (let index = 0; index < path.length; index++) {\n const el = path[ index ]\n\n if (hasScrollbar(el, scrollY)) {\n return scrollY\n ? (\n delta < 0 && el.scrollTop === 0\n ? true\n : delta > 0 && el.scrollTop + el.clientHeight === el.scrollHeight\n )\n : (\n delta < 0 && el.scrollLeft === 0\n ? true\n : delta > 0 && el.scrollLeft + el.clientWidth === el.scrollWidth\n )\n }\n }\n\n return true\n}\n\nfunction onAppleScroll (e) {\n if (e.target === document) {\n // required, otherwise iOS blocks further scrolling\n // until the mobile scrollbar dissappears\n document.scrollingElement.scrollTop = document.scrollingElement.scrollTop // eslint-disable-line\n }\n}\n\nfunction onAppleResize (evt) {\n if (vpPendingUpdate === true) {\n return\n }\n\n vpPendingUpdate = true\n\n requestAnimationFrame(() => {\n vpPendingUpdate = false\n\n const\n { height } = evt.target,\n { clientHeight, scrollTop } = document.scrollingElement\n\n if (maxScrollTop === void 0 || height !== window.innerHeight) {\n maxScrollTop = clientHeight - height\n document.scrollingElement.scrollTop = scrollTop\n }\n\n if (scrollTop > maxScrollTop) {\n document.scrollingElement.scrollTop -= Math.ceil((scrollTop - maxScrollTop) / 8)\n }\n })\n}\n\nfunction apply (action) {\n const\n body = document.body,\n hasViewport = window.visualViewport !== void 0\n\n if (action === 'add') {\n const { overflowY, overflowX } = window.getComputedStyle(body)\n\n scrollPositionX = getHorizontalScrollPosition(window)\n scrollPositionY = getVerticalScrollPosition(window)\n bodyLeft = body.style.left\n bodyTop = body.style.top\n\n href = window.location.href\n\n body.style.left = `-${ scrollPositionX }px`\n body.style.top = `-${ scrollPositionY }px`\n\n if (overflowX !== 'hidden' && (overflowX === 'scroll' || body.scrollWidth > window.innerWidth)) {\n body.classList.add('q-body--force-scrollbar-x')\n }\n if (overflowY !== 'hidden' && (overflowY === 'scroll' || body.scrollHeight > window.innerHeight)) {\n body.classList.add('q-body--force-scrollbar-y')\n }\n\n body.classList.add('q-body--prevent-scroll')\n document.qScrollPrevented = true\n\n if (client.is.ios === true) {\n if (hasViewport === true) {\n window.scrollTo(0, 0)\n window.visualViewport.addEventListener('resize', onAppleResize, listenOpts.passiveCapture)\n window.visualViewport.addEventListener('scroll', onAppleResize, listenOpts.passiveCapture)\n window.scrollTo(0, 0)\n }\n else {\n window.addEventListener('scroll', onAppleScroll, listenOpts.passiveCapture)\n }\n }\n }\n\n if (client.is.desktop === true && client.is.mac === true) {\n // ref. https://developers.google.com/web/updates/2017/01/scrolling-intervention\n window[ `${ action }EventListener` ]('wheel', onWheel, listenOpts.notPassive)\n }\n\n if (action === 'remove') {\n if (client.is.ios === true) {\n if (hasViewport === true) {\n window.visualViewport.removeEventListener('resize', onAppleResize, listenOpts.passiveCapture)\n window.visualViewport.removeEventListener('scroll', onAppleResize, listenOpts.passiveCapture)\n }\n else {\n window.removeEventListener('scroll', onAppleScroll, listenOpts.passiveCapture)\n }\n }\n\n body.classList.remove('q-body--prevent-scroll')\n body.classList.remove('q-body--force-scrollbar-x')\n body.classList.remove('q-body--force-scrollbar-y')\n\n document.qScrollPrevented = false\n\n body.style.left = bodyLeft\n body.style.top = bodyTop\n\n // scroll back only if route has not changed\n if (window.location.href === href) {\n window.scrollTo(scrollPositionX, scrollPositionY)\n }\n\n maxScrollTop = void 0\n }\n}\n\nexport default function (state) {\n let action = 'add'\n\n if (state === true) {\n registered++\n\n if (closeTimer !== null) {\n clearTimeout(closeTimer)\n closeTimer = null\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 closeTimer !== null && clearTimeout(closeTimer)\n closeTimer = setTimeout(() => {\n apply(action)\n closeTimer = null\n }, 100)\n return\n }\n }\n\n apply(action)\n}\n","import { listenOpts } from '../event.js'\nimport { portalProxyList } from '../private/portal.js'\n\nlet timer = null\n\nconst\n { notPassiveCapture } = listenOpts,\n registeredList = []\n\nfunction globalHandler (evt) {\n if (timer !== null) {\n clearTimeout(timer)\n timer = null\n }\n\n const target = evt.target\n\n if (\n target === void 0\n || target.nodeType === 8\n || target.classList.contains('no-pointer-events') === true\n ) {\n return\n }\n\n // check last portal vm if it's\n // a QDialog and not in seamless mode\n let portalIndex = portalProxyList.length - 1\n\n while (portalIndex >= 0) {\n const proxy = portalProxyList[ portalIndex ].$\n\n if (proxy.type.name !== 'QDialog') {\n break\n }\n\n if (proxy.props.seamless !== true) {\n return\n }\n\n portalIndex--\n }\n\n for (let i = registeredList.length - 1; i >= 0; i--) {\n const state = registeredList[ i ]\n\n if (\n (\n state.anchorEl.value === null\n || state.anchorEl.value.contains(target) === false\n )\n && (\n target === document.body\n || (\n state.innerRef.value !== null\n && state.innerRef.value.contains(target) === false\n )\n )\n ) {\n // mark the event as being processed by clickOutside\n // used to prevent refocus after menu close\n evt.qClickOutside = true\n state.onClickOutside(evt)\n }\n else {\n return\n }\n }\n}\n\nexport function addClickOutside (clickOutsideProps) {\n registeredList.push(clickOutsideProps)\n\n if (registeredList.length === 1) {\n document.addEventListener('mousedown', globalHandler, notPassiveCapture)\n document.addEventListener('touchstart', globalHandler, notPassiveCapture)\n }\n}\n\nexport function removeClickOutside (clickOutsideProps) {\n const index = registeredList.findIndex(h => h === clickOutsideProps)\n\n if (index > -1) {\n registeredList.splice(index, 1)\n\n if (registeredList.length === 0) {\n if (timer !== null) {\n clearTimeout(timer)\n timer = null\n }\n\n document.removeEventListener('mousedown', globalHandler, notPassiveCapture)\n document.removeEventListener('touchstart', globalHandler, notPassiveCapture)\n }\n }\n}\n","import { defineComponent, markRaw } from 'vue'\n\nexport const createComponent = raw => markRaw(defineComponent(raw))\nexport const createDirective = raw => markRaw(raw)\n","// taken from https://github.com/jalaali/jalaali-js\n\n/*\n Jalaali years starting the 33-year rule.\n*/\nconst breaks = [\n -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210,\n 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178\n]\n\n/*\n Converts a Gregorian date to Jalaali.\n*/\nexport function toJalaali (gy, gm, gd) {\n if (Object.prototype.toString.call(gy) === '[object Date]') {\n gd = gy.getDate()\n gm = gy.getMonth() + 1\n gy = gy.getFullYear()\n }\n return d2j(g2d(gy, gm, gd))\n}\n\n/*\n Converts a Jalaali date to Gregorian.\n*/\nexport function toGregorian (jy, jm, jd) {\n return d2g(j2d(jy, jm, jd))\n}\n\n/*\n Is this a leap year or not?\n*/\nfunction isLeapJalaaliYear (jy) {\n return jalCalLeap(jy) === 0\n}\n\n/*\n Number of days in a given month in a Jalaali year.\n*/\nexport function jalaaliMonthLength (jy, jm) {\n if (jm <= 6) return 31\n if (jm <= 11) return 30\n if (isLeapJalaaliYear(jy)) return 30\n return 29\n}\n\n/*\n This function determines if the Jalaali (Persian) year is\n leap (366-day long) or is the common year (365 days)\n\n @param jy Jalaali calendar year (-61 to 3177)\n @returns number of years since the last leap year (0 to 4)\n */\nfunction jalCalLeap (jy) {\n const bl = breaks.length\n let\n jp = breaks[ 0 ],\n jm,\n jump,\n leap,\n n,\n i\n\n if (jy < jp || jy >= breaks[ bl - 1 ]) { throw new Error('Invalid Jalaali year ' + jy) }\n\n for (i = 1; i < bl; i += 1) {\n jm = breaks[ i ]\n jump = jm - jp\n if (jy < jm) { break }\n jp = jm\n }\n n = jy - jp\n\n if (jump - n < 6) { n = n - jump + div(jump + 4, 33) * 33 }\n leap = mod(mod(n + 1, 33) - 1, 4)\n if (leap === -1) {\n leap = 4\n }\n\n return leap\n}\n\n/*\n This function determines if the Jalaali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalaali year (jy).\n\n @param jy Jalaali calendar year (-61 to 3177)\n @param withoutLeap when don't need leap (true or false) default is false\n @return\n leap: number of years since the last leap year (0 to 4)\n gy: Gregorian year of the beginning of Jalaali year\n march: the March day of Farvardin the 1st (1st day of jy)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n*/\nfunction jalCal (jy, withoutLeap) {\n const\n bl = breaks.length,\n gy = jy + 621\n let\n leapJ = -14,\n jp = breaks[ 0 ],\n jm,\n jump,\n leap,\n n,\n i\n\n if (jy < jp || jy >= breaks[ bl - 1 ]) { throw new Error('Invalid Jalaali year ' + jy) }\n\n // Find the limiting years for the Jalaali year jy.\n for (i = 1; i < bl; i += 1) {\n jm = breaks[ i ]\n jump = jm - jp\n if (jy < jm) { break }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4)\n jp = jm\n }\n n = jy - jp\n\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalaali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4)\n if (mod(jump, 33) === 4 && jump - n === 4) { leapJ += 1 }\n\n // And the same in the Gregorian calendar (until the year gy).\n const leapG = div(gy, 4) - div((div(gy, 100) + 1) * 3, 4) - 150\n\n // Determine the Gregorian date of Farvardin the 1st.\n const march = 20 + leapJ - leapG\n\n // Find how many years have passed since the last leap year.\n if (!withoutLeap) {\n if (jump - n < 6) { n = n - jump + div(jump + 4, 33) * 33 }\n leap = mod(mod(n + 1, 33) - 1, 4)\n if (leap === -1) {\n leap = 4\n }\n }\n\n return {\n leap,\n gy,\n march\n }\n}\n\n/*\n Converts a date of the Jalaali calendar to the Julian Day number.\n\n @param jy Jalaali year (1 to 3100)\n @param jm Jalaali month (1 to 12)\n @param jd Jalaali day (1 to 29/31)\n @return Julian Day number\n*/\nfunction j2d (jy, jm, jd) {\n const r = jalCal(jy, true)\n return g2d(r.gy, 3, r.march) + (jm - 1) * 31 - div(jm, 7) * (jm - 7) + jd - 1\n}\n\n/*\n Converts the Julian Day number to a date in the Jalaali calendar.\n\n @param jdn Julian Day number\n @return\n jy: Jalaali year (1 to 3100)\n jm: Jalaali month (1 to 12)\n jd: Jalaali day (1 to 29/31)\n*/\nfunction d2j (jdn) {\n const gy = d2g(jdn).gy // Calculate Gregorian year (gy).\n let\n jy = gy - 621,\n jd,\n jm,\n k\n const\n r = jalCal(jy, false),\n jdn1f = g2d(gy, 3, r.march)\n\n // Find number of days that passed since 1 Farvardin.\n k = jdn - jdn1f\n if (k >= 0) {\n if (k <= 185) {\n // The first 6 months.\n jm = 1 + div(k, 31)\n jd = mod(k, 31) + 1\n return {\n jy,\n jm,\n jd\n }\n }\n else {\n // The remaining months.\n k -= 186\n }\n }\n else {\n // Previous Jalaali year.\n jy -= 1\n k += 179\n if (r.leap === 1) { k += 1 }\n }\n jm = 7 + div(k, 30)\n jd = mod(k, 30) + 1\n return {\n jy,\n jm,\n jd\n }\n}\n\n/*\n Calculates the Julian Day number from Gregorian or Julian\n calendar dates. This integer number corresponds to the noon of\n the date (i.e. 12 hours of Universal Time).\n The procedure was tested to be good since 1 March, -100100 (of both\n calendars) up to a few million years into the future.\n\n @param gy Calendar year (years BC numbered 0, -1, -2, ...)\n @param gm Calendar month (1 to 12)\n @param gd Calendar day of the month (1 to 28/29/30/31)\n @return Julian Day number\n*/\nfunction g2d (gy, gm, gd) {\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4)\n + div(153 * mod(gm + 9, 12) + 2, 5)\n + gd - 34840408\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752\n return d\n}\n\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n\n @param jdn Julian Day number\n @return\n gy: Calendar year (years BC numbered 0, -1, -2, ...)\n gm: Calendar month (1 to 12)\n gd: Calendar day of the month M (1 to 28/29/30/31)\n*/\nfunction d2g (jdn) {\n let j = 4 * jdn + 139361631\n j = j + div(div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908\n const\n i = div(mod(j, 1461), 4) * 5 + 308,\n gd = div(mod(i, 153), 5) + 1,\n gm = mod(div(i, 153), 12) + 1,\n gy = div(j, 1461) - 100100 + div(8 - gm, 6)\n return {\n gy,\n gm,\n gd\n }\n}\n\n/*\n Utility helper functions.\n*/\n\nfunction div (a, b) {\n return ~~(a / b)\n}\n\nfunction mod (a, b) {\n return a - ~~(a / b) * b\n}\n","\nimport { reactive } from 'vue'\nimport { injectProp } from './inject-obj-prop.js'\n\nexport default __QUASAR_SSR_SERVER__\n ? (state, plugin) => {\n Object.assign(plugin, state)\n return plugin\n }\n : (state, plugin) => {\n const reactiveState = reactive(state)\n\n for (const name in state) {\n injectProp(\n plugin,\n name,\n () => reactiveState[ name ],\n val => { reactiveState[ name ] = val }\n )\n }\n\n return plugin\n }\n","import { client } from '../../plugins/Platform.js'\nimport { isKeyCode } from './key-composition.js'\n\nconst handlers = []\nlet escDown\n\nfunction onKeydown (evt) {\n escDown = evt.keyCode === 27\n}\n\nfunction onBlur () {\n if (escDown === true) {\n escDown = false\n }\n}\n\nfunction onKeyup (evt) {\n if (escDown === true) {\n escDown = false\n\n if (isKeyCode(evt, 27) === true) {\n handlers[ handlers.length - 1 ](evt)\n }\n }\n}\n\nfunction update (action) {\n window[ action ]('keydown', onKeydown)\n window[ action ]('blur', onBlur)\n window[ action ]('keyup', onKeyup)\n escDown = false\n}\n\nexport function addEscapeKey (fn) {\n if (client.is.desktop === true) {\n handlers.push(fn)\n\n if (handlers.length === 1) {\n update('addEventListener')\n }\n }\n}\n\nexport function removeEscapeKey (fn) {\n const index = handlers.indexOf(fn)\n if (index > -1) {\n handlers.splice(index, 1)\n\n if (handlers.length === 0) {\n update('removeEventListener')\n }\n }\n}\n","let queue = []\nlet waitFlags = []\n\nfunction clearFlag (flag) {\n waitFlags = waitFlags.filter(entry => entry !== flag)\n}\n\nexport function addFocusWaitFlag (flag) {\n clearFlag(flag)\n waitFlags.push(flag)\n}\n\nexport function removeFocusWaitFlag (flag) {\n clearFlag(flag)\n\n if (waitFlags.length === 0 && queue.length !== 0) {\n // only call last focus handler (can't focus multiple things at once)\n queue[ queue.length - 1 ]()\n queue = []\n }\n}\n\nexport function addFocusFn (fn) {\n if (waitFlags.length === 0) {\n fn()\n }\n else {\n queue.push(fn)\n }\n}\n\nexport function removeFocusFn (fn) {\n queue = queue.filter(entry => entry !== fn)\n}\n","import { client } from '../../plugins/Platform.js'\n\nconst handlers = []\n\nfunction trigger (e) {\n handlers[ handlers.length - 1 ](e)\n}\n\nexport function addFocusout (fn) {\n if (client.is.desktop === true) {\n handlers.push(fn)\n\n if (handlers.length === 1) {\n document.body.addEventListener('focusin', trigger)\n }\n }\n}\n\nexport function removeFocusout (fn) {\n const index = handlers.indexOf(fn)\n if (index > -1) {\n handlers.splice(index, 1)\n\n if (handlers.length === 0) {\n document.body.removeEventListener('focusin', trigger)\n }\n }\n}\n","\nexport const globalConfig = {}\nexport let globalConfigIsFrozen = false\n\nexport function freezeGlobalConfig () {\n globalConfigIsFrozen = true\n}\n","import { globalConfig } from './global-config.js'\n\nconst nodesList = []\nconst portalTypeList = []\n\nlet portalIndex = 1\nlet target = __QUASAR_SSR_SERVER__\n ? void 0\n : document.body\n\nexport function createGlobalNode (id, portalType) {\n const el = document.createElement('div')\n\n el.id = portalType !== void 0\n ? `q-portal--${ portalType }--${ portalIndex++ }`\n : id\n\n if (globalConfig.globalNodes !== void 0) {\n const cls = globalConfig.globalNodes.class\n if (cls !== void 0) {\n el.className = cls\n }\n }\n\n target.appendChild(el)\n nodesList.push(el)\n portalTypeList.push(portalType)\n\n return el\n}\n\nexport function removeGlobalNode (el) {\n const nodeIndex = nodesList.indexOf(el)\n\n nodesList.splice(nodeIndex, 1)\n portalTypeList.splice(nodeIndex, 1)\n\n el.remove()\n}\n\nexport function changeGlobalNodesTarget (newTarget) {\n if (newTarget === target) {\n return\n }\n\n target = newTarget\n\n if (\n target === document.body\n // or we have less than 2 dialogs:\n || portalTypeList.reduce((acc, type) => (type === 'dialog' ? acc + 1 : acc), 0) < 2\n ) {\n nodesList.forEach(node => {\n if (node.contains(target) === false) {\n target.appendChild(node)\n }\n })\n\n return\n }\n\n const lastDialogIndex = portalTypeList.lastIndexOf('dialog')\n\n for (let i = 0; i < nodesList.length; i++) {\n const el = nodesList[ i ]\n\n if (\n (i === lastDialogIndex || portalTypeList[ i ] !== 'dialog')\n && el.contains(target) === false\n ) {\n target.appendChild(el)\n }\n }\n}\n","export function injectProp (target, propName, get, set) {\n Object.defineProperty(target, propName, {\n get,\n set,\n enumerable: true\n })\n return target\n}\n\nexport function injectMultipleProps (target, props) {\n for (const key in props) {\n injectProp(target, key, props[ key ])\n }\n return target\n}\n","let lastKeyCompositionStatus = false\n\nexport function onKeyDownComposition (evt) {\n lastKeyCompositionStatus = evt.isComposing === true\n}\n\nexport function shouldIgnoreKey (evt) {\n return lastKeyCompositionStatus === true\n || evt !== Object(evt)\n || evt.isComposing === true\n || evt.qKeyEvent === true\n}\n\nexport function isKeyCode (evt, keyCodes) {\n return shouldIgnoreKey(evt) === true\n ? false\n : [].concat(keyCodes).includes(evt.keyCode)\n}\n","export default {\n xs: 30,\n sm: 35,\n md: 40,\n lg: 50,\n xl: 60\n}\n","import { getParentProxy } from './vm.js'\n\nexport const portalProxyList = []\n\nexport function getPortalProxy (el) {\n return portalProxyList.find(proxy =>\n proxy.contentEl !== null\n && proxy.contentEl.contains(el)\n )\n}\n\nexport function closePortalMenus (proxy, evt) {\n do {\n if (proxy.$options.name === 'QMenu') {\n proxy.hide(evt)\n\n // is this a point of separation?\n if (proxy.$props.separateClosePopup === true) {\n return getParentProxy(proxy)\n }\n }\n else if (proxy.__qPortal === true) {\n // treat it as point of separation if parent is QPopupProxy\n // (so mobile matches desktop behavior)\n // and hide it too\n const parent = getParentProxy(proxy)\n\n if (parent !== void 0 && parent.$options.name === 'QPopupProxy') {\n proxy.hide(evt)\n return parent\n }\n else {\n return proxy\n }\n }\n\n proxy = getParentProxy(proxy)\n } while (proxy !== void 0 && proxy !== null)\n}\n\nexport function closePortals (proxy, evt, depth) {\n while (depth !== 0 && proxy !== void 0 && proxy !== null) {\n if (proxy.__qPortal === true) {\n depth--\n\n if (proxy.$options.name === 'QMenu') {\n proxy = closePortalMenus(proxy, evt)\n continue\n }\n\n proxy.hide(evt)\n }\n\n proxy = getParentProxy(proxy)\n }\n}\n","import { getScrollbarWidth } from '../scroll.js'\nimport { client } from '../../plugins/Platform.js'\n\nlet vpLeft, vpTop\n\nexport function validatePosition (pos) {\n const parts = pos.split(' ')\n if (parts.length !== 2) {\n return false\n }\n if ([ 'top', 'center', 'bottom' ].includes(parts[ 0 ]) !== true) {\n console.error('Anchor/Self position must start with one of top/center/bottom')\n return false\n }\n if ([ 'left', 'middle', 'right', 'start', 'end' ].includes(parts[ 1 ]) !== true) {\n console.error('Anchor/Self position must end with one of left/middle/right/start/end')\n return false\n }\n return true\n}\n\nexport function validateOffset (val) {\n if (!val) { return true }\n if (val.length !== 2) { return false }\n if (typeof val[ 0 ] !== 'number' || typeof val[ 1 ] !== 'number') {\n return false\n }\n return true\n}\n\nconst horizontalPos = {\n 'start#ltr': 'left',\n 'start#rtl': 'right',\n 'end#ltr': 'right',\n 'end#rtl': 'left'\n}\n\n;[ 'left', 'middle', 'right' ].forEach(pos => {\n horizontalPos[ `${ pos }#ltr` ] = pos\n horizontalPos[ `${ pos }#rtl` ] = pos\n})\n\nexport function parsePosition (pos, rtl) {\n const parts = pos.split(' ')\n return {\n vertical: parts[ 0 ],\n horizontal: horizontalPos[ `${ parts[ 1 ] }#${ rtl === true ? 'rtl' : 'ltr' }` ]\n }\n}\n\nexport function getAnchorProps (el, offset) {\n let { top, left, right, bottom, width, height } = el.getBoundingClientRect()\n\n if (offset !== void 0) {\n top -= offset[ 1 ]\n left -= offset[ 0 ]\n bottom += offset[ 1 ]\n right += offset[ 0 ]\n\n width += offset[ 0 ]\n height += offset[ 1 ]\n }\n\n return {\n top, bottom, height,\n left, right, width,\n middle: left + (right - left) / 2,\n center: top + (bottom - top) / 2\n }\n}\n\nfunction getAbsoluteAnchorProps (el, absoluteOffset, offset) {\n let { top, left } = el.getBoundingClientRect()\n\n top += absoluteOffset.top\n left += absoluteOffset.left\n\n if (offset !== void 0) {\n top += offset[ 1 ]\n left += offset[ 0 ]\n }\n\n return {\n top, bottom: top + 1, height: 1,\n left, right: left + 1, width: 1,\n middle: left,\n center: top\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\nfunction getTopLeftProps (anchorProps, targetProps, cfg) {\n return {\n top: anchorProps[ cfg.anchorOrigin.vertical ] - targetProps[ cfg.selfOrigin.vertical ],\n left: anchorProps[ cfg.anchorOrigin.horizontal ] - targetProps[ cfg.selfOrigin.horizontal ]\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 // 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 const anchorProps = cfg.absoluteOffset === void 0\n ? getAnchorProps(cfg.anchorEl, cfg.cover === true ? [ 0, 0 ] : cfg.offset)\n : getAbsoluteAnchorProps(cfg.anchorEl, cfg.absoluteOffset, cfg.offset)\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 targetProps = getTargetProps(cfg.el)\n let props = getTopLeftProps(anchorProps, targetProps, cfg)\n\n if (cfg.absoluteOffset === void 0 || cfg.offset === void 0) {\n applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)\n }\n else { // we have touch position or context menu with offset\n const { top, left } = props // cache initial values\n\n // apply initial boundaries\n applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)\n\n let hasChanged = false\n\n // did it flip vertically?\n if (props.top !== top) {\n hasChanged = true\n const offsetY = 2 * cfg.offset[ 1 ]\n anchorProps.center = anchorProps.top -= offsetY\n anchorProps.bottom -= offsetY + 2\n }\n\n // did it flip horizontally?\n if (props.left !== left) {\n hasChanged = true\n const offsetX = 2 * cfg.offset[ 0 ]\n anchorProps.middle = anchorProps.left -= offsetX\n anchorProps.right -= offsetX + 2\n }\n\n if (hasChanged === true) {\n // re-calculate props with the new anchor\n props = getTopLeftProps(anchorProps, targetProps, cfg)\n\n // and re-apply boundaries\n applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)\n }\n }\n\n elStyle = {\n top: props.top + 'px',\n left: props.left + 'px'\n }\n\n if (props.maxHeight !== void 0) {\n elStyle.maxHeight = props.maxHeight + 'px'\n\n if (anchorProps.height > props.maxHeight) {\n elStyle.minHeight = elStyle.maxHeight\n }\n }\n if (props.maxWidth !== void 0) {\n elStyle.maxWidth = props.maxWidth + 'px'\n\n if (anchorProps.width > props.maxWidth) {\n elStyle.minWidth = elStyle.maxWidth\n }\n }\n\n Object.assign(cfg.el.style, elStyle)\n\n // restore scroll position\n if (cfg.el.scrollTop !== scrollTop) {\n cfg.el.scrollTop = scrollTop\n }\n if (cfg.el.scrollLeft !== scrollLeft) {\n cfg.el.scrollLeft = scrollLeft\n }\n}\n\nfunction applyBoundaries (props, anchorProps, targetProps, anchorOrigin, selfOrigin) {\n const\n currentHeight = targetProps.bottom,\n currentWidth = targetProps.right,\n margin = getScrollbarWidth(),\n innerHeight = window.innerHeight - margin,\n innerWidth = document.body.clientWidth\n\n if (props.top < 0 || props.top + currentHeight > innerHeight) {\n if (selfOrigin.vertical === 'center') {\n props.top = anchorProps[ anchorOrigin.vertical ] > innerHeight / 2\n ? Math.max(0, innerHeight - currentHeight)\n : 0\n props.maxHeight = Math.min(currentHeight, innerHeight)\n }\n else if (anchorProps[ anchorOrigin.vertical ] > innerHeight / 2) {\n const anchorY = Math.min(\n innerHeight,\n anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.bottom : anchorProps.top)\n )\n props.maxHeight = Math.min(currentHeight, anchorY)\n props.top = Math.max(0, anchorY - currentHeight)\n }\n else {\n props.top = Math.max(0, anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.top : anchorProps.bottom)\n )\n props.maxHeight = Math.min(currentHeight, innerHeight - props.top)\n }\n }\n\n if (props.left < 0 || props.left + currentWidth > innerWidth) {\n props.maxWidth = Math.min(currentWidth, innerWidth)\n if (selfOrigin.horizontal === 'middle') {\n props.left = anchorProps[ anchorOrigin.horizontal ] > innerWidth / 2\n ? Math.max(0, innerWidth - currentWidth)\n : 0\n }\n else if (anchorProps[ anchorOrigin.horizontal ] > innerWidth / 2) {\n const anchorX = Math.min(\n innerWidth,\n anchorOrigin.horizontal === 'middle'\n ? anchorProps.middle\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.right : anchorProps.left)\n )\n props.maxWidth = Math.min(currentWidth, anchorX)\n props.left = Math.max(0, anchorX - props.maxWidth)\n }\n else {\n props.left = Math.max(0, anchorOrigin.horizontal === 'middle'\n ? anchorProps.middle\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.left : anchorProps.right)\n )\n props.maxWidth = Math.min(currentWidth, innerWidth - props.left)\n }\n }\n}\n","import { h, withDirectives } from 'vue'\n\nexport function hSlot (slot, otherwise) {\n return slot !== void 0\n ? slot() || otherwise\n : otherwise\n}\n\nexport function hUniqueSlot (slot, otherwise) {\n if (slot !== void 0) {\n const vnode = slot()\n if (vnode !== void 0 && vnode !== null) {\n return vnode.slice()\n }\n }\n\n return otherwise\n}\n\n/**\n * Source definitely exists,\n * so it's merged with the possible slot\n */\nexport function hMergeSlot (slot, source) {\n return slot !== void 0\n ? source.concat(slot())\n : source\n}\n\n/**\n * Merge with possible slot,\n * even if source might not exist\n */\nexport function hMergeSlotSafely (slot, source) {\n if (slot === void 0) {\n return source\n }\n\n return source !== void 0\n ? source.concat(slot())\n : slot()\n}\n\n/*\n * (String) key - unique vnode key\n * (Boolean) condition - should change ONLY when adding/removing directive\n */\nexport function hDir (\n tag,\n data,\n children,\n key,\n condition,\n getDirsFn\n) {\n data.key = key + condition\n\n const vnode = h(tag, data, children)\n\n return condition === true\n ? withDirectives(vnode, getDirsFn())\n : vnode\n}\n","let rtlHasScrollBug = false\n\n// mobile Chrome takes the crown for this\nif (!__QUASAR_SSR__) {\n const scroller = document.createElement('div')\n scroller.setAttribute('dir', 'rtl')\n Object.assign(scroller.style, {\n width: '1px',\n height: '1px',\n overflow: 'auto'\n })\n\n const spacer = document.createElement('div')\n Object.assign(spacer.style, {\n width: '1000px',\n height: '1px'\n })\n\n document.body.appendChild(scroller)\n scroller.appendChild(spacer)\n scroller.scrollLeft = -1000\n\n rtlHasScrollBug = scroller.scrollLeft >= 0\n\n scroller.remove()\n}\n\nexport {\n rtlHasScrollBug\n}\n","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","export const quasarKey = '_q_'\nexport const timelineKey = '_q_t_'\nexport const stepperKey = '_q_s_'\nexport const layoutKey = '_q_l_'\nexport const pageContainerKey = '_q_pc_'\nexport const fabKey = '_q_f_'\nexport const formKey = '_q_fo_'\nexport const tabsKey = '_q_tabs_'\nexport const uploaderKey = '_q_u_'\n\nexport const emptyRenderFn = () => {}\n","\nconst modifiersAll = {\n left: true,\n right: true,\n up: true,\n down: true,\n horizontal: true,\n vertical: true\n}\n\nconst directionList = Object.keys(modifiersAll)\n\nmodifiersAll.all = true\n\nexport function getModifierDirections (mod) {\n const dir = {}\n\n for (const direction of directionList) {\n if (mod[ direction ] === true) {\n dir[ direction ] = true\n }\n }\n\n if (Object.keys(dir).length === 0) {\n return modifiersAll\n }\n\n if (dir.horizontal === true) {\n dir.left = dir.right = true\n }\n else if (dir.left === true && dir.right === true) {\n dir.horizontal = true\n }\n\n if (dir.vertical === true) {\n dir.up = dir.down = true\n }\n else if (dir.up === true && dir.down === true) {\n dir.vertical = true\n }\n\n if (dir.horizontal === true && dir.vertical === true) {\n dir.all = true\n }\n\n return dir\n}\n\n// This is especially important (not the main reason, but important)\n// for TouchSwipe directive running on Firefox\n// because text selection on such elements cannot be determined\n// without additional work (on top of getSelection() API)\n// https://bugzilla.mozilla.org/show_bug.cgi?id=85686\nconst avoidNodeNamesList = [ 'INPUT', 'TEXTAREA' ]\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 && avoidNodeNamesList.includes(evt.target.nodeName.toUpperCase()) === false\n && (evt.qClonedBy === void 0 || evt.qClonedBy.indexOf(ctx.uid) === -1)\n}\n","\n// copied to docs too\nexport function getParentProxy (proxy) {\n if (Object(proxy.$parent) === proxy.$parent) {\n return proxy.$parent\n }\n\n let { parent } = proxy.$\n\n while (Object(parent) === parent) {\n if (Object(parent.proxy) === parent.proxy) {\n return parent.proxy\n }\n\n parent = parent.parent\n }\n}\n\nfunction fillNormalizedVNodes (children, vnode) {\n if (typeof vnode.type === 'symbol') {\n if (Array.isArray(vnode.children) === true) {\n vnode.children.forEach(child => {\n fillNormalizedVNodes(children, child)\n })\n }\n }\n else {\n children.add(vnode)\n }\n}\n\n// vnodes from rendered in advanced slots\nexport function getNormalizedVNodes (vnodes) {\n const children = new Set()\n\n vnodes.forEach(vnode => {\n fillNormalizedVNodes(children, vnode)\n })\n\n return Array.from(children)\n}\n\nexport function vmHasRouter (vm) {\n return vm.appContext.config.globalProperties.$router !== void 0\n}\n\nexport function vmIsDestroyed (vm) {\n return vm.isUnmounted === true || vm.isDeactivated === true\n}\n","import { css, getElement } from './dom.js'\n\nconst scrollTargets = __QUASAR_SSR_SERVER__\n ? []\n : [ null, document, document.body, document.scrollingElement, document.documentElement ]\n\nexport function getScrollTarget (el, targetEl) {\n let target = getElement(targetEl)\n\n if (target === void 0) {\n if (el === void 0 || el === null) {\n return window\n }\n\n target = el.closest('.scroll,.scroll-y,.overflow-auto')\n }\n\n return scrollTargets.includes(target)\n ? window\n : target\n}\n\nexport function getScrollHeight (el) {\n return (el === window ? document.body : el).scrollHeight\n}\n\nexport function getScrollWidth (el) {\n return (el === window ? document.body : el).scrollWidth\n}\n\nexport function getVerticalScrollPosition (scrollTarget) {\n return scrollTarget === window\n ? window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n : scrollTarget.scrollTop\n}\n\nexport function getHorizontalScrollPosition (scrollTarget) {\n return scrollTarget === window\n ? window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n : scrollTarget.scrollLeft\n}\n\nexport function animVerticalScrollTo (el, to, duration = 0 /* , prevTime */) {\n const prevTime = arguments[ 3 ] === void 0 ? performance.now() : arguments[ 3 ]\n const pos = getVerticalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(nowTime => {\n const frameTime = nowTime - prevTime\n const newPos = pos + (to - pos) / Math.max(frameTime, duration) * frameTime\n setScroll(el, newPos)\n if (newPos !== to) {\n animVerticalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nexport function animHorizontalScrollTo (el, to, duration = 0 /* , prevTime */) {\n const prevTime = arguments[ 3 ] === void 0 ? performance.now() : arguments[ 3 ]\n const pos = getHorizontalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setHorizontalScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(nowTime => {\n const frameTime = nowTime - prevTime\n const newPos = pos + (to - pos) / Math.max(frameTime, duration) * frameTime\n setHorizontalScroll(el, newPos)\n if (newPos !== to) {\n animHorizontalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nfunction setScroll (scrollTarget, offset) {\n if (scrollTarget === window) {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, offset)\n return\n }\n scrollTarget.scrollTop = offset\n}\n\nfunction setHorizontalScroll (scrollTarget, offset) {\n if (scrollTarget === window) {\n window.scrollTo(offset, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n return\n }\n scrollTarget.scrollLeft = offset\n}\n\nexport function setVerticalScrollPosition (scrollTarget, offset, duration) {\n if (duration) {\n animVerticalScrollTo(scrollTarget, offset, duration)\n return\n }\n setScroll(scrollTarget, offset)\n}\n\nexport function setHorizontalScrollPosition (scrollTarget, offset, duration) {\n if (duration) {\n animHorizontalScrollTo(scrollTarget, offset, duration)\n return\n }\n setHorizontalScroll(scrollTarget, offset)\n}\n\nlet size\nexport function getScrollbarWidth () {\n if (size !== undefined) {\n return size\n }\n\n const\n inner = document.createElement('p'),\n outer = document.createElement('div')\n\n css(inner, {\n width: '100%',\n height: '200px'\n })\n css(outer, {\n position: 'absolute',\n top: '0px',\n left: '0px',\n visibility: 'hidden',\n width: '200px',\n height: '150px',\n overflow: 'hidden'\n })\n\n outer.appendChild(inner)\n\n document.body.appendChild(outer)\n\n const w1 = inner.offsetWidth\n outer.style.overflow = 'scroll'\n let w2 = inner.offsetWidth\n\n if (w1 === w2) {\n w2 = outer.clientWidth\n }\n\n outer.remove()\n size = w1 - w2\n\n return size\n}\n\nexport function hasScrollbar (el, onY = true) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n return onY\n ? (\n el.scrollHeight > el.clientHeight && (\n el.classList.contains('scroll')\n || el.classList.contains('overflow-auto')\n || [ 'auto', 'scroll' ].includes(window.getComputedStyle(el)[ 'overflow-y' ])\n )\n )\n : (\n el.scrollWidth > el.clientWidth && (\n el.classList.contains('scroll')\n || el.classList.contains('overflow-auto')\n || [ 'auto', 'scroll' ].includes(window.getComputedStyle(el)[ 'overflow-x' ])\n )\n )\n}\n\nexport default {\n getScrollTarget,\n\n getScrollHeight,\n getScrollWidth,\n\n getVerticalScrollPosition,\n getHorizontalScrollPosition,\n\n animVerticalScrollTo,\n animHorizontalScrollTo,\n\n setVerticalScrollPosition,\n setHorizontalScrollPosition,\n\n getScrollbarWidth,\n hasScrollbar\n}\n","/**\n * Based on the work of https://github.com/jchook/uuid-random\n */\n\nlet\n buf,\n bufIdx = 0\nconst hexBytes = new Array(256)\n\n// Pre-calculate toString(16) for speed\nfor (let i = 0; i < 256; i++) {\n hexBytes[ i ] = (i + 0x100).toString(16).substring(1)\n}\n\n// Use best available PRNG\nconst randomBytes = (() => {\n // Node & Browser support\n const lib = typeof crypto !== 'undefined'\n ? crypto\n : (\n typeof window !== 'undefined'\n ? window.crypto || window.msCrypto\n : void 0\n )\n\n if (lib !== void 0) {\n if (lib.randomBytes !== void 0) {\n return lib.randomBytes\n }\n if (lib.getRandomValues !== void 0) {\n return n => {\n const bytes = new Uint8Array(n)\n lib.getRandomValues(bytes)\n return bytes\n }\n }\n }\n\n return n => {\n const r = []\n for (let i = n; i > 0; i--) {\n r.push(Math.floor(Math.random() * 256))\n }\n return r\n }\n})()\n\n// Buffer random numbers for speed\n// Reduce memory usage by decreasing this number (min 16)\n// or improve speed by increasing this number (try 16384)\nconst BUFFER_SIZE = 4096\n\nexport default function () {\n // Buffer some random bytes for speed\n if (buf === void 0 || (bufIdx + 16 > BUFFER_SIZE)) {\n bufIdx = 0\n buf = randomBytes(BUFFER_SIZE)\n }\n\n const b = Array.prototype.slice.call(buf, bufIdx, (bufIdx += 16))\n b[ 6 ] = (b[ 6 ] & 0x0f) | 0x40\n b[ 8 ] = (b[ 8 ] & 0x3f) | 0x80\n\n return hexBytes[ b[ 0 ] ] + hexBytes[ b[ 1 ] ]\n + hexBytes[ b[ 2 ] ] + hexBytes[ b[ 3 ] ] + '-'\n + hexBytes[ b[ 4 ] ] + hexBytes[ b[ 5 ] ] + '-'\n + hexBytes[ b[ 6 ] ] + hexBytes[ b[ 7 ] ] + '-'\n + hexBytes[ b[ 8 ] ] + hexBytes[ b[ 9 ] ] + '-'\n + hexBytes[ b[ 10 ] ] + hexBytes[ b[ 11 ] ]\n + hexBytes[ b[ 12 ] ] + hexBytes[ b[ 13 ] ]\n + hexBytes[ b[ 14 ] ] + hexBytes[ b[ 15 ] ]\n}\n","import installQuasar from './install-quasar.js'\nimport lang from './lang.js'\nimport iconSet from './icon-set.js'\n\nexport default {\n version: __QUASAR_VERSION__,\n install: installQuasar,\n lang,\n iconSet\n}\n","/**\n * Quasar runtime for auto-importing\n * components or directives.\n *\n * Warning! This file does NOT get transpiled by Babel\n * but is included into the UI code.\n *\n * @param {component} Vue Component object\n * @param {type} One of 'components' or 'directives'\n * @param {items} Object containing components or directives\n */\nmodule.exports = function qInstall (component, type, items) {\n const targetComponent = component.__vccOpts !== void 0\n ? component.__vccOpts\n : component\n\n const target = targetComponent[type]\n\n if (target === void 0) {\n targetComponent[type] = items\n }\n else {\n for (var i in items) {\n if (target[i] === void 0) {\n target[i] = items[i]\n }\n }\n }\n}\n","// style-loader: Adds some css to the DOM by adding a