{"version":3,"sources":["webpack:///./node_modules/quasar/src/components/page/QPageContainer.js","webpack:///./node_modules/quasar/src/components/layout/QLayout.js","webpack:///./node_modules/quasar/src/components/toolbar/QToolbar.js","webpack:///./node_modules/quasar/src/directives/TouchPan.js","webpack:///./node_modules/quasar/src/components/drawer/QDrawer.js","webpack:///./node_modules/quasar/src/components/scroll-observer/QScrollObserver.js"],"names":["defineComponent","name","setup","_","slots","proxy","$q","getCurrentInstance","$layout","inject","layoutKey","provide","pageContainerKey","style","computed","css","header","space","paddingTop","size","right","lang","rtl","footer","paddingBottom","left","h","class","value","hSlot","default","props","container","Boolean","view","type","String","validator","v","test","toLowerCase","onScroll","Function","onScrollHeight","onResize","emit","rootRef","ref","height","screen","width","scroll","position","direction","inflectionPoint","containerHeight","scrollbarWidth","isRuntimeSsrPreHydration","getScrollbarWidth","classes","minHeight","targetStyle","targetChildStyle","onPageScroll","data","document","qScrollPrevented","info","top","directionChanged","delta","onPageResize","newHeight","newWidth","resized","updateScrollbarWidth","onContainerResize","timer","instances","isContainer","totalWidth","rows","split","middle","bottom","reactive","offset","animate","clearTimeout","body","classList","add","setTimeout","remove","update","part","prop","val","content","hMergeSlot","QScrollObserver","QResizeObserver","layout","inset","getChanges","evt","ctx","isFinal","pos","dir","distX","event","x","distY","y","absX","Math","abs","absY","horizontal","vertical","up","down","synthetic","isFirst","lastDir","payload","touch","mouse","duration","Date","now","time","distance","lastX","lastY","uid","__QUASAR_SSR_SERVER__","beforeMount","el","modifiers","client","has","handleEvent","mouseEvent","stopAndPrevent","stop","prevent","handler","getModifierDirections","noop","mouseStart","shouldStart","leftClick","addEvt","start","touchStart","target","is","firefox","preventDraggable","lastEvt","all","mouseAllDir","clone","indexOf","MouseEvent","TouchEvent","defaultPrevented","cancelBubble","qClonedBy","concat","qKeyEvent","qClickOutside","initialEvent","detected","move","isMouseEvt","preserveCursor","documentElement","cursor","clearSelection","styleCleanup","withDelayedFn","end","abort","cleanEvt","dispatchEvent","fn","__qtouchpan","mouseCapture","capture","updated","bindings","oldValue","beforeUnmount","inheritAttrs","useModelToggleProps","useDarkProps","side","includes","Number","mini","miniToOverlay","miniWidth","breakpoint","showIfAbove","behavior","bordered","elevated","overlay","persistent","noSwipeOpen","noSwipeClose","noSwipeBackdrop","emits","useModelToggleEmits","attrs","vm","isDark","useDark","preventBodyScroll","usePreventScroll","registerTimeout","useTimeout","lastDesktopState","timerMini","layoutTotalWidthWatcher","belowBreakpoint","isMini","showing","modelValue","hideOnRouteChange","onScreenOverlay","handleShow","noEvent","addToHistory","applyPosition","otherInstance","otherSide","hide","applyBackdrop","setScrollable","handleHide","removeFromHistory","stateDirection","cleanup","show","useModelToggle","useHistory","instance","rightSide","flagBackdropBg","flagPanning","flagMiniAnimate","flagContentPosition","fixed","platform","ios","onLayout","backdropClass","backdropStyle","backgroundColor","headerSlot","footerSlot","aboveStyle","transform","Object","assign","contentClass","openDirective","TouchPan","onOpenPan","contentCloseDirective","onClosePan","backdropCloseDirective","nextTick","updateBelowBreakpoint","updateLocal","action","animateMini","$el","between","opened","min","max","updateLayout","updateSizeOnLayout","watch","newSide","oldSide","onMounted","onBeforeUnmount","child","push","withDirectives","key","hDir","onClick","passive","listenOpts","axisValues","axis","debounce","scrollTarget","localScrollTarget","parentEl","emitEvent","getVerticalScrollPosition","getHorizontalScrollPosition","curDir","configureScrollTarget","getScrollTarget","addEventListener","trigger","unconfigureScrollTarget","removeEventListener","immediately","requestAnimationFrame","parentNode","cancelAnimationFrame","getPosition"],"mappings":"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","file":"js/chunk-338ee75a.7d19db54.js","sourcesContent":["import { h, defineComponent, computed, provide, inject, getCurrentInstance } from 'vue'\n\nimport { hSlot } from '../../utils/private/render.js'\nimport { pageContainerKey, layoutKey } from '../../utils/private/symbols.js'\n\nexport default defineComponent({\n name: 'QPageContainer',\n\n setup (_, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const $layout = inject(layoutKey, () => {\n console.error('QPageContainer needs to be child of QLayout')\n })\n\n provide(pageContainerKey, true)\n\n const style = computed(() => {\n const css = {}\n\n if ($layout.header.space === true) {\n css.paddingTop = `${ $layout.header.size }px`\n }\n if ($layout.right.space === true) {\n css[ `padding${ $q.lang.rtl === true ? 'Left' : 'Right' }` ] = `${ $layout.right.size }px`\n }\n if ($layout.footer.space === true) {\n css.paddingBottom = `${ $layout.footer.size }px`\n }\n if ($layout.left.space === true) {\n css[ `padding${ $q.lang.rtl === true ? 'Right' : 'Left' }` ] = `${ $layout.left.size }px`\n }\n\n return css\n })\n\n return () => h('div', {\n class: 'q-page-container',\n style: style.value\n }, hSlot(slots.default))\n }\n})\n","import { h, defineComponent, ref, reactive, computed, provide, 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 { getScrollbarWidth } from '../../utils/scroll.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\nimport { layoutKey } from '../../utils/private/symbols.js'\n\nexport default defineComponent({\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('scroll-height', newHeight)\n updateScrollbarWidth()\n }\n if (width.value !== newWidth) {\n resized = true\n width.value = newWidth\n }\n\n if (resized === true && props.onResize !== void 0) {\n emit('resize', data)\n }\n }\n\n function onContainerResize ({ height }) {\n if (containerHeight.value !== height) {\n containerHeight.value = height\n updateScrollbarWidth()\n }\n }\n\n function updateScrollbarWidth () {\n if (props.container === true) {\n const width = height.value > containerHeight.value\n ? getScrollbarWidth()\n : 0\n\n if (scrollbarWidth.value !== width) {\n scrollbarWidth.value = width\n }\n }\n }\n\n let timer\n\n const $layout = {\n instances: {},\n view: computed(() => props.view),\n isContainer: computed(() => props.container),\n\n rootRef,\n\n height,\n containerHeight,\n scrollbarWidth,\n totalWidth: computed(() => width.value + scrollbarWidth.value),\n\n rows: computed(() => {\n const rows = props.view.toLowerCase().split(' ')\n return {\n top: rows[ 0 ].split(''),\n middle: rows[ 1 ].split(''),\n bottom: rows[ 2 ].split('')\n }\n }),\n\n header: reactive({ size: 0, offset: 0, space: false }),\n right: reactive({ size: 300, offset: 0, space: false }),\n footer: reactive({ size: 0, offset: 0, space: false }),\n left: reactive({ size: 300, offset: 0, space: false }),\n\n scroll,\n\n animate () {\n if (timer !== void 0) {\n clearTimeout(timer)\n }\n else {\n document.body.classList.add('q-body--layout-animate')\n }\n\n timer = setTimeout(() => {\n document.body.classList.remove('q-body--layout-animate')\n timer = void 0\n }, 155)\n },\n\n update (part, prop, val) {\n $layout[ part ][ prop ] = val\n }\n }\n\n provide(layoutKey, $layout)\n\n 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 }, 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, defineComponent, computed } from 'vue'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default defineComponent({\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 }, hSlot(slots.default))\n }\n})\n","import { client } from '../plugins/Platform.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 __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 console.log('touchStart')\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 const pos = position(evt)\n\n /*\n * Stop propagation so possible upper v-touch-pan don't catch this as well;\n * If we're not the target (based on modifiers), we'll re-emit the event later\n */\n if (mouseEvent === true || modifiers.stop === true) {\n /*\n * are we directly switching to detected state?\n * clone event only otherwise\n */\n if (\n ctx.direction.all !== true\n && (mouseEvent !== true || ctx.direction.mouseAllDir !== true)\n ) {\n const clone = evt.type.indexOf('mouse') > -1\n ? new MouseEvent(evt.type, evt)\n : new TouchEvent(evt.type, evt)\n\n evt.defaultPrevented === true && prevent(clone)\n evt.cancelBubble === true && stop(clone)\n\n clone.qClonedBy = evt.qClonedBy === void 0\n ? [ ctx.uid ]\n : evt.qClonedBy.concat(ctx.uid)\n clone.qKeyEvent = evt.qKeyEvent\n clone.qClickOutside = evt.qClickOutside\n\n ctx.initialEvent = {\n target: evt.target,\n event: clone\n }\n }\n\n stop(evt)\n }\n\n ctx.event = {\n x: pos.left,\n y: pos.top,\n time: Date.now(),\n mouse: mouseEvent === true,\n detected: false,\n isFirst: true,\n isFinal: false,\n lastX: pos.left,\n lastY: pos.top\n }\n },\n\n move (evt) {\n if (ctx.event === void 0) {\n return\n }\n\n ctx.lastEvt = evt\n\n const isMouseEvt = ctx.event.mouse === true\n const start = () => {\n handleEvent(evt, isMouseEvt)\n\n if (modifiers.preserveCursor !== true) {\n document.documentElement.style.cursor = 'grabbing'\n }\n isMouseEvt === true && document.body.classList.add('no-pointer-events--children')\n document.body.classList.add('non-selectable')\n clearSelection()\n\n ctx.styleCleanup = withDelayedFn => {\n ctx.styleCleanup = void 0\n\n if (modifiers.preserveCursor !== true) {\n document.documentElement.style.cursor = ''\n }\n document.body.classList.remove('non-selectable')\n\n if (isMouseEvt === true) {\n const remove = () => {\n document.body.classList.remove('no-pointer-events--children')\n }\n\n if (withDelayedFn !== void 0) {\n setTimeout(() => {\n remove()\n withDelayedFn()\n }, 50)\n }\n else { remove() }\n }\n else if (withDelayedFn !== void 0) {\n withDelayedFn()\n }\n }\n }\n\n if (ctx.event.detected === true) {\n ctx.event.isFirst !== true && handleEvent(evt, ctx.event.mouse)\n\n const { payload, synthetic } = getChanges(evt, ctx, false)\n\n if (payload !== void 0) {\n if (ctx.handler(payload) === false) {\n ctx.end(evt)\n }\n else {\n if (ctx.styleCleanup === void 0 && ctx.event.isFirst === true) {\n start()\n }\n\n ctx.event.lastX = payload.position.left\n ctx.event.lastY = payload.position.top\n ctx.event.lastDir = synthetic === true ? void 0 : payload.direction\n ctx.event.isFirst = false\n }\n }\n\n return\n }\n\n if (\n ctx.direction.all === true\n || (isMouseEvt === true && ctx.modifiers.mouseAllDir === true)\n ) {\n start()\n ctx.event.detected = true\n ctx.move(evt)\n return\n }\n\n const\n pos = position(evt),\n distX = pos.left - ctx.event.x,\n distY = pos.top - ctx.event.y,\n absX = Math.abs(distX),\n absY = Math.abs(distY)\n\n if (absX !== absY) {\n if (\n (ctx.direction.horizontal === true && absX > absY)\n || (ctx.direction.vertical === true && absX < absY)\n || (ctx.direction.up === true && absX < absY && distY < 0)\n || (ctx.direction.down === true && absX < absY && distY > 0)\n || (ctx.direction.left === true && absX > absY && distX < 0)\n || (ctx.direction.right === true && absX > absY && distX > 0)\n ) {\n ctx.event.detected = true\n ctx.move(evt)\n }\n else {\n ctx.end(evt, true)\n }\n }\n },\n\n end (evt, abort) {\n if (ctx.event === void 0) {\n return\n }\n\n cleanEvt(ctx, 'temp')\n client.is.firefox === true && preventDraggable(el, false)\n\n if (abort === true) {\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n if (ctx.event.detected !== true && ctx.initialEvent !== void 0) {\n ctx.initialEvent.target.dispatchEvent(ctx.initialEvent.event)\n }\n }\n else if (ctx.event.detected === true) {\n ctx.event.isFirst === true && ctx.handler(getChanges(evt === void 0 ? ctx.lastEvt : evt, ctx).payload)\n\n const { payload } = getChanges(evt === void 0 ? ctx.lastEvt : evt, ctx, true)\n const fn = () => { ctx.handler(payload) }\n\n if (ctx.styleCleanup !== void 0) {\n ctx.styleCleanup(fn)\n }\n else {\n fn()\n }\n }\n\n ctx.event = void 0\n ctx.initialEvent = void 0\n ctx.lastEvt = void 0\n }\n }\n\n el.__qtouchpan = ctx\n\n modifiers.mouse === true && addEvt(ctx, 'main', [\n [ el, 'mousedown', 'mouseStart', `passive${ modifiers.mouseCapture === true ? 'Capture' : '' }` ]\n ])\n\n client.has.touch === true && addEvt(ctx, 'main', [\n [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],\n [ el, 'touchmove', 'noop', 'notPassiveCapture' ]\n ])\n },\n\n 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","import { h, defineComponent, 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 { between } from '../../utils/format.js'\nimport { hSlot, hDir } from '../../utils/private/render.js'\nimport { layoutKey } from '../../utils/private/symbols.js'\n\nconst duration = 150\n\nexport default defineComponent({\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\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 'on-layout', 'mini-state'\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 } = useTimeout()\n\n const $layout = inject(layoutKey, () => {\n console.error('QDrawer needs to be child of QLayout')\n })\n\n let lastDesktopState, timerMini, 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 noEvent !== true && registerTimeout(() => {\n emit('hide', evt)\n }, duration)\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 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($layout.totalWidth, val => {\n updateLocal(belowBreakpoint, (\n props.behavior === 'mobile'\n || (props.behavior !== 'desktop' && val <= props.breakpoint)\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(() => props.behavior + props.breakpoint, updateBelowBreakpoint)\n\n watch($layout.isContainer, val => {\n showing.value === true && preventBodyScroll(val !== true)\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('on-layout', 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.modelValue === true) {\n animateMini()\n $layout.animate()\n }\n })\n\n watch(isMini, val => { emit('mini-state', 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 updateBelowBreakpoint () {\n updateLocal(belowBreakpoint, (\n props.behavior === 'mobile'\n || (props.behavior !== 'desktop' && $layout.totalWidth.value <= props.breakpoint)\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 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 flagMiniAnimate.value = false\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('on-layout', onLayout.value)\n emit('mini-state', 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 clearTimeout(timerMini)\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 { defineComponent, watch, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'\n\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 defineComponent({\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 timer = null, localScrollTarget, parentEl\n\n watch(() => props.scrollTarget, () => {\n unconfigureScrollTarget()\n configureScrollTarget()\n })\n\n function emitEvent () {\n timer = null\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 (timer === null) {\n timer = props.debounce\n ? setTimeout(emitEvent, props.debounce)\n : requestAnimationFrame(emitEvent)\n }\n }\n\n const vm = getCurrentInstance()\n\n onMounted(() => {\n parentEl = vm.proxy.$el.parentNode\n configureScrollTarget()\n })\n\n onBeforeUnmount(() => {\n clearTimeout(timer)\n cancelAnimationFrame(timer)\n unconfigureScrollTarget()\n })\n\n // expose public methods\n Object.assign(vm.proxy, {\n trigger,\n getPosition: () => scroll\n })\n\n return noop\n }\n})\n"],"sourceRoot":""}