VAppBar.mjs.map 11 KB

1
  1. {"version":3,"file":"VAppBar.mjs","names":["makeVToolbarProps","VToolbar","makeLayoutItemProps","useLayoutItem","useProxiedModel","makeScrollProps","useScroll","useSsrBoot","useToggleScope","computed","ref","shallowRef","toRef","watchEffect","genericComponent","propsFactory","useRender","makeVAppBarProps","scrollBehavior","String","modelValue","type","Boolean","default","location","validator","value","includes","height","Number","VAppBar","name","props","emits","setup","_ref","slots","vToolbarRef","isActive","behavior","Set","split","hide","has","fullyHide","inverted","collapse","elevate","fadeImage","canScroll","currentScroll","scrollThreshold","isScrollingUp","scrollRatio","canHide","isCollapsed","isFlat","flat","opacity","undefined","contentHeight","extensionHeight","ssrBootStyles","layoutItemStyles","id","order","parseInt","position","layoutSize","elementSize","active","absolute","toolbarProps","filterProps","_createVNode","_mergeProps","class","style"],"sources":["../../../src/components/VAppBar/VAppBar.tsx"],"sourcesContent":["// Styles\nimport './VAppBar.sass'\n\n// Components\nimport { makeVToolbarProps, VToolbar } from '@/components/VToolbar/VToolbar'\n\n// Composables\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeScrollProps, useScroll } from '@/composables/scroll'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VToolbarSlots } from '@/components/VToolbar/VToolbar'\n\nexport const makeVAppBarProps = propsFactory({\n scrollBehavior: String as PropType<'hide' | 'fully-hide' | 'inverted' | 'collapse' | 'elevate' | 'fade-image' | (string & {})>,\n modelValue: {\n type: Boolean,\n default: true,\n },\n location: {\n type: String as PropType<'top' | 'bottom'>,\n default: 'top',\n validator: (value: any) => ['top', 'bottom'].includes(value),\n },\n\n ...makeVToolbarProps(),\n ...makeLayoutItemProps(),\n ...makeScrollProps(),\n\n height: {\n type: [Number, String],\n default: 64,\n },\n}, 'VAppBar')\n\nexport const VAppBar = genericComponent<VToolbarSlots>()({\n name: 'VAppBar',\n\n props: makeVAppBarProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const vToolbarRef = ref<VToolbar>()\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 const canScroll = computed(() => {\n const behavior = scrollBehavior.value\n return (\n behavior.hide ||\n behavior.fullyHide ||\n behavior.inverted ||\n behavior.collapse ||\n behavior.elevate ||\n behavior.fadeImage ||\n // behavior.shrink ||\n !isActive.value\n )\n })\n const {\n currentScroll,\n scrollThreshold,\n isScrollingUp,\n scrollRatio,\n } = useScroll(props, { canScroll })\n\n const canHide = computed(() => (\n scrollBehavior.value.hide ||\n scrollBehavior.value.fullyHide\n ))\n const isCollapsed = computed(() => props.collapse || (\n scrollBehavior.value.collapse &&\n (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0)\n ))\n const isFlat = computed(() => props.flat || (\n scrollBehavior.value.fullyHide &&\n !isActive.value\n ) || (\n scrollBehavior.value.elevate &&\n (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0)\n ))\n const opacity = computed(() => (\n scrollBehavior.value.fadeImage\n ? (scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value)\n : undefined\n ))\n const height = computed(() => {\n if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0\n\n const height = vToolbarRef.value?.contentHeight ?? 0\n const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0\n\n if (!canHide.value) return (height + extensionHeight)\n\n return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide\n ? (height + extensionHeight)\n : height\n })\n\n useToggleScope(computed(() => !!props.scrollBehavior), () => {\n watchEffect(() => {\n if (canHide.value) {\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 })\n\n const { ssrBootStyles } = useSsrBoot()\n const { layoutItemStyles } = 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\n useRender(() => {\n const toolbarProps = VToolbar.filterProps(props)\n\n return (\n <VToolbar\n ref={ vToolbarRef }\n class={[\n 'v-app-bar',\n {\n 'v-app-bar--bottom': props.location === 'bottom',\n },\n props.class,\n ]}\n style={[\n {\n ...layoutItemStyles.value,\n '--v-toolbar-image-opacity': opacity.value,\n height: undefined,\n ...ssrBootStyles.value,\n },\n props.style,\n ]}\n { ...toolbarProps }\n collapse={ isCollapsed.value }\n flat={ isFlat.value }\n v-slots={ slots }\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VAppBar = InstanceType<typeof VAppBar>\n"],"mappings":"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","ignoreList":[]}