{"version":3,"file":"VSlideGroup.mjs","names":["VFadeTransition","VIcon","makeComponentProps","makeDisplayProps","useDisplay","useGoTo","makeGroupProps","useGroup","IconValue","useRtl","useResizeObserver","makeTagProps","computed","shallowRef","watch","calculateCenteredTarget","calculateUpdatedTarget","getClientSize","getOffsetSize","getScrollPosition","getScrollSize","focusableChildren","genericComponent","IN_BROWSER","propsFactory","useRender","VSlideGroupSymbol","Symbol","for","makeVSlideGroupProps","centerActive","Boolean","direction","type","String","default","symbol","nextIcon","prevIcon","showArrows","validator","v","includes","mobile","selectedClass","VSlideGroup","name","props","emits","value","setup","_ref","slots","isRtl","displayClasses","group","isOverflowing","scrollOffset","containerSize","contentSize","isHorizontal","resizeRef","containerRef","contentRect","containerRect","contentRef","goTo","goToOptions","container","el","duration","easing","firstSelectedIndex","selected","length","items","findIndex","item","id","lastSelectedIndex","frame","cancelAnimationFrame","requestAnimationFrame","sizeProperty","selectedElement","children","scrollToChildren","isFocused","center","target","containerElement","scrollToPosition","newPosition","offsetSize","scrollPosition","scrollSize","Math","abs","scrollWidth","offsetWidth","containerWidth","horizontal","onScroll","e","scrollTop","scrollLeft","onFocusin","composedPath","onFocusout","ignoreFocusEvent","onFocus","relatedTarget","contains","focus","onFocusAffixes","onKeydown","toFocus","location","preventDefault","key","focusable","querySelector","nextElementSibling","previousElementSibling","firstElementChild","lastElementChild","preventScroll","scrollTo","offsetStep","slotProps","next","prev","select","isSelected","hasAffixes","hasPrev","hasNext","clientSize","scrollSizeMax","_createVNode","tag","class","style","onClick"],"sources":["../../../src/components/VSlideGroup/VSlideGroup.tsx"],"sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { useGoTo } from '@/composables/goto'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport {\n calculateCenteredTarget,\n calculateUpdatedTarget,\n getClientSize,\n getOffsetSize,\n getScrollPosition,\n getScrollSize,\n} from './helpers'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const VSlideGroupSymbol: InjectionKey = Symbol.for('vuetify:v-slide-group')\n\ninterface SlideGroupSlot {\n next: GroupProvide['next']\n prev: GroupProvide['prev']\n select: GroupProvide['select']\n isSelected: GroupProvide['isSelected']\n}\n\ntype VSlideGroupSlots = {\n default: SlideGroupSlot\n prev: SlideGroupSlot\n next: SlideGroupSlot\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n\n ...makeComponentProps(),\n ...makeDisplayProps({ mobile: null }),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'VSlideGroup')\n\nexport const VSlideGroup = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSlideGroupSlots,\n) => GenericProps>()({\n name: 'VSlideGroup',\n\n props: makeVSlideGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isRtl } = useRtl()\n const { displayClasses, mobile } = useDisplay(props)\n const group = useGroup(props, props.symbol)\n const isOverflowing = shallowRef(false)\n const scrollOffset = shallowRef(0)\n const containerSize = shallowRef(0)\n const contentSize = shallowRef(0)\n const isHorizontal = computed(() => props.direction === 'horizontal')\n\n const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver()\n const { resizeRef: contentRef, contentRect } = useResizeObserver()\n\n const goTo = useGoTo()\n const goToOptions = computed>(() => {\n return {\n container: containerRef.el,\n duration: 200,\n easing: 'easeOutQuart',\n }\n })\n\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[0])\n })\n\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1])\n })\n\n if (IN_BROWSER) {\n let frame = -1\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height'\n\n containerSize.value = containerRect.value[sizeProperty]\n contentSize.value = contentRect.value[sizeProperty]\n\n isOverflowing.value = containerSize.value + 1 < contentSize.value\n }\n\n if (firstSelectedIndex.value >= 0 && contentRef.el) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.el.children[lastSelectedIndex.value] as HTMLElement\n\n scrollToChildren(selectedElement, props.centerActive)\n }\n })\n })\n }\n\n const isFocused = shallowRef(false)\n\n function scrollToChildren (children: HTMLElement, center?: boolean) {\n let target = 0\n\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.el!,\n isHorizontal: isHorizontal.value,\n selectedElement: children,\n })\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.el!,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children,\n })\n }\n\n scrollToPosition(target)\n }\n\n function scrollToPosition (newPosition: number) {\n if (!IN_BROWSER || !containerRef.el) return\n\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el)\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el)\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el)\n\n if (\n scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16\n ) return\n\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.el!\n\n newPosition = (scrollWidth - containerWidth) - newPosition\n }\n\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value)\n } else {\n goTo(newPosition, goToOptions.value)\n }\n }\n\n function onScroll (e: Event) {\n const { scrollTop, scrollLeft } = e.target as HTMLElement\n\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.el) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.el.children) {\n if (item === el) {\n scrollToChildren(item as HTMLElement)\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false\n function onFocus (e: FocusEvent) {\n if (\n !ignoreFocusEvent &&\n !isFocused.value &&\n !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget as Node))\n ) focus()\n\n ignoreFocusEvent = false\n }\n\n function onFocusAffixes () {\n ignoreFocusEvent = true\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.el) return\n\n function toFocus (location: Parameters[0]) {\n e.preventDefault()\n focus(location)\n }\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next')\n } else if (e.key === 'ArrowUp') {\n toFocus('prev')\n }\n }\n\n if (e.key === 'Home') {\n toFocus('first')\n } else if (e.key === 'End') {\n toFocus('last')\n }\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.el) return\n\n let el: HTMLElement | undefined\n\n if (!location) {\n const focusable = focusableChildren(contentRef.el)\n el = focusable[0]\n } else if (location === 'next') {\n el = contentRef.el.querySelector(':focus')?.nextElementSibling as HTMLElement | undefined\n\n if (!el) return focus('first')\n } else if (location === 'prev') {\n el = contentRef.el.querySelector(':focus')?.previousElementSibling as HTMLElement | undefined\n\n if (!el) return focus('last')\n } else if (location === 'first') {\n el = (contentRef.el.firstElementChild as HTMLElement)\n } else if (location === 'last') {\n el = (contentRef.el.lastElementChild as HTMLElement)\n }\n\n if (el) {\n el.focus({ preventScroll: true })\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1\n\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value\n\n let newPosition = scrollOffset.value + offsetStep\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.el!\n\n newPosition += scrollWidth - containerWidth\n }\n\n scrollToPosition(newPosition)\n }\n\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected,\n }))\n\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !mobile.value\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return isOverflowing.value || Math.abs(scrollOffset.value) > 0\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !mobile.value &&\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n }\n })\n\n const hasPrev = computed(() => {\n // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1\n })\n\n const hasNext = computed(() => {\n if (!containerRef.value) return false\n\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el)\n const clientSize = getClientSize(isHorizontal.value, containerRef.el)\n\n const scrollSizeMax = scrollSize - clientSize\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1\n })\n\n useRender(() => (\n \n { hasAffixes.value && (\n hasPrev.value && scrollTo('prev') }\n >\n { slots.prev?.(slotProps.value) ?? (\n \n \n \n )}\n \n )}\n\n \n \n { slots.default?.(slotProps.value) }\n \n \n\n { hasAffixes.value && (\n hasNext.value && scrollTo('next') }\n >\n { slots.next?.(slotProps.value) ?? (\n \n \n \n )}\n \n )}\n \n ))\n\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n hasPrev,\n hasNext,\n }\n },\n})\n\nexport type VSlideGroup = InstanceType\n"],"mappings":"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","ignoreList":[]}