{"version":3,"mappings":"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","names":["makeScrollProps","propsFactory","useScroll","props","args","canScroll","previousScroll","target","ref","currentScroll","shallowRef","savedScroll","currentThreshold","isScrollActive","isScrollingUp","scrollThreshold","computed","scrollRatio","clamp","onScroll","targetEl","watch","onMounted","scrollTarget","newTarget","_a","onBeforeUnmount","makeVAppBarProps","value","makeVToolbarProps","makeLayoutItemProps","VAppBar","genericComponent","_ref","slots","vToolbarRef","isActive","useProxiedModel","scrollBehavior","behavior","isCollapsed","isFlat","opacity","height","extensionHeight","_b","watchEffect","ssrBootStyles","useSsrBoot","layoutItemStyles","useLayoutItem","toRef","useRender","toolbarProps","VToolbar","_createVNode","_mergeProps","__default__","mdiClose","defineAsyncComponent","__vitePreload","mapState","state"],"sources":["../../../node_modules/vuetify/lib/composables/scroll.mjs","../../../node_modules/vuetify/lib/components/VAppBar/VAppBar.mjs","../../../app/javascript/components/CitySelectDialog.vue"],"sourcesContent":["// Utilities\nimport { computed, onBeforeUnmount, onMounted, ref, shallowRef, watch } from 'vue';\nimport { clamp, consoleWarn, propsFactory } from \"../util/index.mjs\"; // Types\n// Composables\nexport const makeScrollProps = propsFactory({\n scrollTarget: {\n type: String\n },\n scrollThreshold: {\n type: [String, Number],\n default: 300\n }\n}, 'scroll');\nexport function useScroll(props) {\n let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n canScroll\n } = args;\n let previousScroll = 0;\n const target = ref(null);\n const currentScroll = shallowRef(0);\n const savedScroll = shallowRef(0);\n const currentThreshold = shallowRef(0);\n const isScrollActive = shallowRef(false);\n const isScrollingUp = shallowRef(false);\n const scrollThreshold = computed(() => {\n return Number(props.scrollThreshold);\n });\n\n /**\n * 1: at top\n * 0: at threshold\n */\n const scrollRatio = computed(() => {\n return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);\n });\n const onScroll = () => {\n const targetEl = target.value;\n if (!targetEl || canScroll && !canScroll.value) return;\n previousScroll = currentScroll.value;\n currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;\n isScrollingUp.value = currentScroll.value < previousScroll;\n currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);\n };\n watch(isScrollingUp, () => {\n savedScroll.value = savedScroll.value || currentScroll.value;\n });\n watch(isScrollActive, () => {\n savedScroll.value = 0;\n });\n onMounted(() => {\n watch(() => props.scrollTarget, scrollTarget => {\n const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;\n if (!newTarget) {\n consoleWarn(`Unable to locate element with identifier ${scrollTarget}`);\n return;\n }\n if (newTarget === target.value) return;\n target.value?.removeEventListener('scroll', onScroll);\n target.value = newTarget;\n target.value.addEventListener('scroll', onScroll, {\n passive: true\n });\n }, {\n immediate: true\n });\n });\n onBeforeUnmount(() => {\n target.value?.removeEventListener('scroll', onScroll);\n });\n\n // Do we need this? If yes - seems that\n // there's no need to expose onScroll\n canScroll && watch(canScroll, onScroll, {\n immediate: true\n });\n return {\n scrollThreshold,\n currentScroll,\n currentThreshold,\n isScrollActive,\n scrollRatio,\n // required only for testing\n // probably can be removed\n // later (2 chars chlng)\n isScrollingUp,\n savedScroll\n };\n}\n//# sourceMappingURL=scroll.mjs.map","import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from \"vue\";\n// Styles\nimport \"./VAppBar.css\";\n\n// Components\nimport { makeVToolbarProps, VToolbar } from \"../VToolbar/VToolbar.mjs\"; // Composables\nimport { makeLayoutItemProps, useLayoutItem } from \"../../composables/layout.mjs\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.mjs\";\nimport { makeScrollProps, useScroll } from \"../../composables/scroll.mjs\";\nimport { useSsrBoot } from \"../../composables/ssrBoot.mjs\"; // Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.mjs\"; // Types\nexport const makeVAppBarProps = propsFactory({\n scrollBehavior: String,\n modelValue: {\n type: Boolean,\n default: true\n },\n location: {\n type: String,\n default: 'top',\n validator: value => ['top', 'bottom'].includes(value)\n },\n ...makeVToolbarProps(),\n ...makeLayoutItemProps(),\n ...makeScrollProps(),\n height: {\n type: [Number, String],\n default: 64\n }\n}, 'VAppBar');\nexport const VAppBar = genericComponent()({\n name: 'VAppBar',\n props: makeVAppBarProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const vToolbarRef = ref();\n const isActive = useProxiedModel(props, 'modelValue');\n const scrollBehavior = computed(() => {\n const behavior = new Set(props.scrollBehavior?.split(' ') ?? []);\n return {\n hide: behavior.has('hide'),\n // fullyHide: behavior.has('fully-hide'),\n inverted: behavior.has('inverted'),\n collapse: behavior.has('collapse'),\n elevate: behavior.has('elevate'),\n fadeImage: behavior.has('fade-image')\n // shrink: behavior.has('shrink'),\n };\n });\n\n const canScroll = computed(() => {\n const behavior = scrollBehavior.value;\n return behavior.hide ||\n // behavior.fullyHide ||\n behavior.inverted || behavior.collapse || behavior.elevate || behavior.fadeImage ||\n // behavior.shrink ||\n !isActive.value;\n });\n const {\n currentScroll,\n scrollThreshold,\n isScrollingUp,\n scrollRatio\n } = useScroll(props, {\n canScroll\n });\n const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));\n const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));\n const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);\n const height = computed(() => {\n if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;\n const height = vToolbarRef.value?.contentHeight ?? 0;\n const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;\n return height + extensionHeight;\n });\n watchEffect(() => {\n if (scrollBehavior.value.hide) {\n if (scrollBehavior.value.inverted) {\n isActive.value = currentScroll.value > scrollThreshold.value;\n } else {\n isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;\n }\n } else {\n isActive.value = true;\n }\n });\n const {\n ssrBootStyles\n } = useSsrBoot();\n const {\n layoutItemStyles\n } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'location'),\n layoutSize: height,\n elementSize: shallowRef(undefined),\n active: isActive,\n absolute: toRef(props, 'absolute')\n });\n useRender(() => {\n const [toolbarProps] = VToolbar.filterProps(props);\n return _createVNode(VToolbar, _mergeProps({\n \"ref\": vToolbarRef,\n \"class\": ['v-app-bar', {\n 'v-app-bar--bottom': props.location === 'bottom'\n }, props.class],\n \"style\": [{\n ...layoutItemStyles.value,\n '--v-toolbar-image-opacity': opacity.value,\n height: undefined,\n ...ssrBootStyles.value\n }, props.style]\n }, toolbarProps, {\n \"collapse\": isCollapsed.value,\n \"flat\": isFlat.value\n }), slots);\n });\n return {};\n }\n});\n//# sourceMappingURL=VAppBar.mjs.map","\n\n\n\n\n"],"file":"assets/CitySelectDialog-a5509560.js"}