@vuetify/nightly 3.9.2-master.2025-07-24 → 3.9.2-master.2025-07-25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/CHANGELOG.md +7 -3
  2. package/dist/_component-variables-labs.sass +1 -0
  3. package/dist/json/attributes.json +4100 -3952
  4. package/dist/json/importMap-labs.json +30 -18
  5. package/dist/json/importMap.json +162 -162
  6. package/dist/json/tags.json +52 -0
  7. package/dist/json/web-types.json +7540 -7045
  8. package/dist/vuetify-labs.cjs +781 -118
  9. package/dist/vuetify-labs.css +4416 -4309
  10. package/dist/vuetify-labs.d.ts +1078 -63
  11. package/dist/vuetify-labs.esm.js +782 -119
  12. package/dist/vuetify-labs.esm.js.map +1 -1
  13. package/dist/vuetify-labs.js +781 -118
  14. package/dist/vuetify-labs.min.css +2 -2
  15. package/dist/vuetify.cjs +40 -28
  16. package/dist/vuetify.cjs.map +1 -1
  17. package/dist/vuetify.css +5492 -5492
  18. package/dist/vuetify.d.ts +67 -62
  19. package/dist/vuetify.esm.js +40 -28
  20. package/dist/vuetify.esm.js.map +1 -1
  21. package/dist/vuetify.js +40 -28
  22. package/dist/vuetify.js.map +1 -1
  23. package/dist/vuetify.min.css +2 -2
  24. package/dist/vuetify.min.js +936 -938
  25. package/dist/vuetify.min.js.map +1 -1
  26. package/lib/components/VOverlay/locationStrategies.js +16 -10
  27. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  28. package/lib/components/index.js +1 -1
  29. package/lib/components/index.js.map +1 -1
  30. package/lib/composables/goto.d.ts +3 -2
  31. package/lib/composables/goto.js +2 -16
  32. package/lib/composables/goto.js.map +1 -1
  33. package/lib/composables/reveal.d.ts +36 -0
  34. package/lib/composables/reveal.js +30 -0
  35. package/lib/composables/reveal.js.map +1 -0
  36. package/lib/entry-bundler.js +1 -1
  37. package/lib/framework.d.ts +151 -146
  38. package/lib/framework.js +1 -1
  39. package/lib/labs/VPie/VPie.css +105 -0
  40. package/lib/labs/VPie/VPie.d.ts +891 -0
  41. package/lib/labs/VPie/VPie.js +291 -0
  42. package/lib/labs/VPie/VPie.js.map +1 -0
  43. package/lib/labs/VPie/VPie.sass +109 -0
  44. package/lib/labs/VPie/VPieSegment.d.ts +310 -0
  45. package/lib/labs/VPie/VPieSegment.js +103 -0
  46. package/lib/labs/VPie/VPieSegment.js.map +1 -0
  47. package/lib/labs/VPie/VPieTooltip.d.ts +279 -0
  48. package/lib/labs/VPie/VPieTooltip.js +84 -0
  49. package/lib/labs/VPie/VPieTooltip.js.map +1 -0
  50. package/lib/labs/VPie/_variables.scss +11 -0
  51. package/lib/labs/VPie/index.d.ts +3 -0
  52. package/lib/labs/VPie/index.js +4 -0
  53. package/lib/labs/VPie/index.js.map +1 -0
  54. package/lib/labs/VPie/types.d.ts +16 -0
  55. package/lib/labs/VPie/types.js +2 -0
  56. package/lib/labs/VPie/types.js.map +1 -0
  57. package/lib/labs/VPie/utils.d.ts +23 -0
  58. package/lib/labs/VPie/utils.js +49 -0
  59. package/lib/labs/VPie/utils.js.map +1 -0
  60. package/lib/labs/VVideo/VVideo.css +3 -0
  61. package/lib/labs/VVideo/VVideo.sass +3 -0
  62. package/lib/labs/VVideo/VVideoControls.js +9 -5
  63. package/lib/labs/VVideo/VVideoControls.js.map +1 -1
  64. package/lib/labs/VVideo/VVideoVolume.js +7 -3
  65. package/lib/labs/VVideo/VVideoVolume.js.map +1 -1
  66. package/lib/labs/components.d.ts +1 -0
  67. package/lib/labs/components.js +1 -0
  68. package/lib/labs/components.js.map +1 -1
  69. package/lib/util/easing.d.ts +22 -0
  70. package/lib/util/easing.js +53 -0
  71. package/lib/util/easing.js.map +1 -1
  72. package/lib/util/svg-arc-corners.d.ts +4 -0
  73. package/lib/util/svg-arc-corners.js +73 -0
  74. package/lib/util/svg-arc-corners.js.map +1 -0
  75. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VVideoControls.js","names":["VVideoVolume","VDefaultsProvider","VSpacer","VSlider","VIconBtn","useLocale","useBackgroundColor","makeDensityProps","useDensity","makeElevationProps","useElevation","useProxiedModel","makeThemeProps","provideTheme","computed","shallowRef","formatTime","genericComponent","propsFactory","useRender","allowedVariants","makeVVideoControlsProps","color","String","backgroundColor","trackColor","playing","Boolean","hidePlay","hideVolume","hideFullscreen","fullscreen","floating","splitTime","pills","detached","progress","type","Number","default","duration","volume","variant","validator","v","includes","volumeProps","Object","VVideoControls","name","props","emits","val","skip","click:fullscreen","setup","_ref","emit","slots","t","themeClasses","densityClasses","elevationClasses","backgroundColorClasses","backgroundColorStyles","fallbackBackground","undefined","lastVolume","currentTime","secondsElapsed","Math","round","elapsed","remaining","total","labels","playIconLocaleKey","value","volumeIconLocaleKey","inline","fullscreenIconLocaleKey","seek","playAction","volumeAction","fullscreenAction","play","pause","skipTo","toggleMuted","toggleFullscreen","sizes","innerDefaults","size","density","iconSize","thumbSize","hideDetails","regularBtnSize","playBtnSize","pillClasses","slotProps","_createElementVNode","_normalizeClass","_normalizeStyle","_createVNode","_Fragment","_withDirectives","onClick","_resolveDirective","prepend","_createTextVNode","thumb-label","append","_mergeProps"],"sources":["../../../src/labs/VVideo/VVideoControls.tsx"],"sourcesContent":["/* eslint-disable complexity */\n\n// Components\nimport { VVideoVolume } from './VVideoVolume'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { VSpacer } from '@/components/VGrid/VSpacer'\nimport { VSlider } from '@/components/VSlider/VSlider'\nimport { VIconBtn } from '@/labs/VIconBtn/VIconBtn'\n\n// Composables\nimport { useLocale } from '@/composables'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, shallowRef } from 'vue'\nimport { formatTime, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\n\nexport type VVideoControlsActionsSlot = {\n play: () => void\n pause: () => void\n skipTo: (v: number) => void\n volume: Ref<number>\n playing: boolean\n progress: number\n toggleMuted: () => void\n fullscreen: boolean\n toggleFullscreen: () => void\n labels: Record<string, string>\n}\n\nexport type VVideoControlsSlots = {\n default: VVideoControlsActionsSlot\n prepend: VVideoControlsActionsSlot\n append: VVideoControlsActionsSlot\n}\n\nconst allowedVariants = ['hidden', 'default', 'tube', 'mini'] as const\nexport type VVideoControlsVariant = typeof allowedVariants[number]\n\nexport const makeVVideoControlsProps = propsFactory({\n color: String,\n backgroundColor: String,\n trackColor: String,\n playing: Boolean,\n hidePlay: Boolean,\n hideVolume: Boolean,\n hideFullscreen: Boolean,\n fullscreen: Boolean,\n floating: Boolean,\n splitTime: Boolean,\n pills: Boolean,\n detached: Boolean,\n progress: {\n type: Number,\n default: 0,\n },\n duration: {\n type: Number,\n default: 0,\n },\n volume: [Number, String],\n variant: {\n type: String as PropType<VVideoControlsVariant>,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n volumeProps: Object as PropType<Pick<VVideoVolume['$props'], 'direction' | 'inline' | 'sliderProps' | 'menuProps'>>,\n\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeThemeProps(),\n}, 'VVideoControls')\n\nexport const VVideoControls = genericComponent<VVideoControlsSlots>()({\n name: 'VVideoControls',\n\n props: makeVVideoControlsProps(),\n\n emits: {\n 'update:playing': (val: boolean) => true,\n 'update:progress': (val: number) => true,\n 'update:volume': (val: number) => true,\n skip: (val: number) => true,\n 'click:fullscreen': () => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n const { elevationClasses } = useElevation(props)\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => {\n const fallbackBackground = props.detached ? 'surface' : undefined\n return props.backgroundColor ?? fallbackBackground\n })\n\n const playing = useProxiedModel(props, 'playing')\n const progress = useProxiedModel(props, 'progress')\n const volume = useProxiedModel(props, 'volume', 0, (v?: number | string) => Number(v ?? 0))\n const lastVolume = shallowRef<number>()\n\n const currentTime = computed(() => {\n const secondsElapsed = Math.round(props.progress / 100 * props.duration)\n return {\n elapsed: formatTime(secondsElapsed),\n remaining: formatTime(props.duration - secondsElapsed),\n total: formatTime(props.duration),\n }\n })\n\n const labels = computed(() => {\n const playIconLocaleKey = playing.value ? 'pause' : 'play'\n const volumeIconLocaleKey = props.volumeProps?.inline ? (volume.value ? 'mute' : 'unmute') : 'showVolume'\n const fullscreenIconLocaleKey = props.fullscreen ? 'exitFullscreen' : 'enterFullscreen'\n return {\n seek: t('$vuetify.video.seek'),\n volume: t('$vuetify.video.volume'),\n playAction: t(`$vuetify.video.${playIconLocaleKey}`),\n volumeAction: t(`$vuetify.video.${volumeIconLocaleKey}`),\n fullscreenAction: t(`$vuetify.video.${fullscreenIconLocaleKey}`),\n }\n })\n\n function play () {\n playing.value = true\n }\n\n function pause () {\n playing.value = false\n }\n\n function skipTo (v: number) {\n progress.value = v\n }\n\n function toggleMuted () {\n if (volume.value) {\n lastVolume.value = volume.value\n volume.value = 0\n } else {\n volume.value = lastVolume.value ?? 100\n }\n }\n\n function toggleFullscreen () {\n emit('click:fullscreen')\n }\n\n useRender(() => {\n const sizes = props.pills\n ? [42, 36, 30]\n : [32, 28, 24]\n\n const innerDefaults = {\n VIconBtn: {\n size: props.density === 'compact' ? sizes[2]\n : props.density === 'comfortable' ? sizes[1]\n : sizes[0],\n iconSize: props.density === 'compact' ? 20\n : props.density === 'comfortable' ? 24\n : 26,\n variant: 'text',\n color: props.color,\n },\n VSlider: {\n thumbSize: props.variant === 'tube' ? 10 : 16,\n hideDetails: true,\n },\n }\n\n const regularBtnSize = innerDefaults.VIconBtn.size\n const playBtnSize = props.pills ? (regularBtnSize + 8) : regularBtnSize\n\n const pillClasses = [\n 'v-video-control__pill',\n props.pills ? elevationClasses.value : [],\n ]\n\n const slotProps = {\n play,\n pause,\n playing: playing.value,\n progress: progress.value,\n currentTime: currentTime.value,\n skipTo,\n volume,\n toggleMuted,\n fullscreen: props.fullscreen,\n toggleFullscreen,\n labels: labels.value,\n }\n\n return (\n <div\n class={[\n 'v-video-controls',\n `v-video-controls--variant-${props.variant}`,\n { 'v-video-controls--pills': props.pills },\n { 'v-video-controls--detached': props.detached },\n { 'v-video-controls--floating': props.floating },\n { 'v-video-controls--split-time': props.splitTime },\n backgroundColorClasses.value,\n props.detached && !props.pills ? elevationClasses.value : [],\n densityClasses.value,\n themeClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n { '--v-video-controls-pill-height': `${regularBtnSize}px` },\n ]}\n >\n <VDefaultsProvider defaults={ innerDefaults }>\n { slots.default?.(slotProps) ?? (\n <>\n { props.variant !== 'mini' && (\n <>\n { !props.hidePlay && (\n <div class={[pillClasses, 'v-video__action-play']}>\n <VIconBtn\n icon={ playing.value ? '$pause' : '$play' }\n size={ playBtnSize }\n aria-label={ labels.value.playAction }\n v-tooltip={[labels.value.playAction, 'top']}\n onClick={ () => playing.value = !playing.value }\n />\n </div>\n )}\n { slots.prepend && (\n <div class={ pillClasses }>\n { slots.prepend(slotProps) }\n </div>\n )}\n { props.splitTime\n ? <span class={[pillClasses, 'v-video__time']}>{ currentTime.value.elapsed }</span>\n : props.variant !== 'default'\n ? <span class={[pillClasses, 'v-video__time']}>{ currentTime.value.elapsed } / { currentTime.value.total }</span>\n : ''\n }\n <VSlider\n modelValue={ props.progress }\n noKeyboard\n color={ props.trackColor ?? props.color }\n trackColor={ props.variant === 'tube' ? 'white' : undefined }\n class=\"v-video__track\"\n thumbLabel=\"always\"\n aria-label={ labels.value.seek }\n onUpdate:modelValue={ skipTo }\n >\n {{\n 'thumb-label': () => currentTime.value.elapsed,\n }}\n </VSlider>\n { props.variant === 'tube' && <VSpacer /> }\n { props.splitTime\n ? <span class={[pillClasses, 'v-video__time']}>{ currentTime.value.remaining }</span>\n : ''\n }\n </>\n )}\n { props.variant === 'mini' && (\n <>\n <VSpacer />\n { slots.prepend && (\n <div class={ pillClasses }>\n { slots.prepend(slotProps) }\n </div>\n )}\n { !props.hidePlay && (\n <div class={[pillClasses, 'v-video__action-play']}>\n <VIconBtn\n icon={ playing.value ? '$pause' : '$play' }\n size={ playBtnSize }\n aria-label={ labels.value.playAction }\n v-tooltip={[labels.value.playAction, 'top']}\n onClick={ () => playing.value = !playing.value }\n />\n </div>\n )}\n </>\n )}\n { (!props.hideVolume || !props.hideFullscreen || slots.append) && (\n <div class={ pillClasses }>\n { !props.hideVolume && (\n <VVideoVolume\n key=\"volume-control\"\n sliderProps={{ color: props.color }}\n modelValue={ volume.value }\n label={ labels.value.volumeAction }\n onUpdate:modelValue={ v => volume.value = v }\n onClick={ () => props.volumeProps?.inline && toggleMuted() }\n { ...props.volumeProps }\n />\n )}\n { slots.append?.(slotProps) }\n { !props.hideFullscreen && (\n <VIconBtn\n icon={ props.fullscreen ? '$fullscreenExit' : '$fullscreen' }\n aria-label={ labels.value.fullscreenAction }\n v-tooltip={[labels.value.fullscreenAction, 'top']}\n onClick={ toggleFullscreen }\n />\n )}\n </div>\n )}\n\n { props.variant === 'mini' && (<VSpacer />) }\n </>\n )}\n </VDefaultsProvider>\n </div>\n )\n })\n\n return {\n toggleMuted,\n }\n },\n})\n\nexport type VVideoControls = InstanceType<typeof VVideoControls>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VVideoControls.js","names":["VVideoVolume","VDefaultsProvider","VSpacer","VSlider","VIconBtn","useLocale","useBackgroundColor","makeDensityProps","useDensity","makeElevationProps","useElevation","useProxiedModel","makeThemeProps","provideTheme","vTooltip","computed","shallowRef","formatTime","genericComponent","propsFactory","useRender","allowedVariants","makeVVideoControlsProps","color","String","backgroundColor","trackColor","playing","Boolean","hidePlay","hideVolume","hideFullscreen","fullscreen","floating","splitTime","pills","detached","progress","type","Number","default","duration","volume","variant","validator","v","includes","volumeProps","Object","VVideoControls","name","directives","props","emits","val","skip","click:fullscreen","setup","_ref","emit","slots","t","themeClasses","densityClasses","elevationClasses","backgroundColorClasses","backgroundColorStyles","fallbackBackground","undefined","lastVolume","currentTime","secondsElapsed","Math","round","elapsed","remaining","total","labels","playIconLocaleKey","value","volumeIconLocaleKey","inline","fullscreenIconLocaleKey","seek","playAction","volumeAction","fullscreenAction","play","pause","skipTo","toggleMuted","toggleFullscreen","sizes","innerDefaults","size","density","iconSize","thumbSize","hideDetails","regularBtnSize","playBtnSize","pillClasses","slotProps","_createElementVNode","_normalizeClass","_normalizeStyle","_createVNode","_Fragment","_withDirectives","onClick","prepend","_createTextVNode","thumb-label","append","_mergeProps"],"sources":["../../../src/labs/VVideo/VVideoControls.tsx"],"sourcesContent":["/* eslint-disable complexity */\n\n// Components\nimport { VVideoVolume } from './VVideoVolume'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { VSpacer } from '@/components/VGrid/VSpacer'\nimport { VSlider } from '@/components/VSlider/VSlider'\nimport { VIconBtn } from '@/labs/VIconBtn/VIconBtn'\n\n// Composables\nimport { useLocale } from '@/composables'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Directives\nimport vTooltip from '@/directives/tooltip'\n\n// Utilities\nimport { computed, shallowRef } from 'vue'\nimport { formatTime, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\n\nexport type VVideoControlsActionsSlot = {\n play: () => void\n pause: () => void\n skipTo: (v: number) => void\n volume: Ref<number>\n playing: boolean\n progress: number\n toggleMuted: () => void\n fullscreen: boolean\n toggleFullscreen: () => void\n labels: Record<string, string>\n}\n\nexport type VVideoControlsSlots = {\n default: VVideoControlsActionsSlot\n prepend: VVideoControlsActionsSlot\n append: VVideoControlsActionsSlot\n}\n\nconst allowedVariants = ['hidden', 'default', 'tube', 'mini'] as const\nexport type VVideoControlsVariant = typeof allowedVariants[number]\n\nexport const makeVVideoControlsProps = propsFactory({\n color: String,\n backgroundColor: String,\n trackColor: String,\n playing: Boolean,\n hidePlay: Boolean,\n hideVolume: Boolean,\n hideFullscreen: Boolean,\n fullscreen: Boolean,\n floating: Boolean,\n splitTime: Boolean,\n pills: Boolean,\n detached: Boolean,\n progress: {\n type: Number,\n default: 0,\n },\n duration: {\n type: Number,\n default: 0,\n },\n volume: [Number, String],\n variant: {\n type: String as PropType<VVideoControlsVariant>,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n volumeProps: Object as PropType<Pick<VVideoVolume['$props'], 'direction' | 'inline' | 'sliderProps' | 'menuProps'>>,\n\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeThemeProps(),\n}, 'VVideoControls')\n\nexport const VVideoControls = genericComponent<VVideoControlsSlots>()({\n name: 'VVideoControls',\n\n directives: { vTooltip: vTooltip as any },\n\n props: makeVVideoControlsProps(),\n\n emits: {\n 'update:playing': (val: boolean) => true,\n 'update:progress': (val: number) => true,\n 'update:volume': (val: number) => true,\n skip: (val: number) => true,\n 'click:fullscreen': () => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n const { elevationClasses } = useElevation(props)\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => {\n const fallbackBackground = props.detached ? 'surface' : undefined\n return props.backgroundColor ?? fallbackBackground\n })\n\n const playing = useProxiedModel(props, 'playing')\n const progress = useProxiedModel(props, 'progress')\n const volume = useProxiedModel(props, 'volume', 0, (v?: number | string) => Number(v ?? 0))\n const lastVolume = shallowRef<number>()\n\n const currentTime = computed(() => {\n const secondsElapsed = Math.round(props.progress / 100 * props.duration)\n return {\n elapsed: formatTime(secondsElapsed),\n remaining: formatTime(props.duration - secondsElapsed),\n total: formatTime(props.duration),\n }\n })\n\n const labels = computed(() => {\n const playIconLocaleKey = playing.value ? 'pause' : 'play'\n const volumeIconLocaleKey = props.volumeProps?.inline ? (volume.value ? 'mute' : 'unmute') : 'showVolume'\n const fullscreenIconLocaleKey = props.fullscreen ? 'exitFullscreen' : 'enterFullscreen'\n return {\n seek: t('$vuetify.video.seek'),\n volume: t('$vuetify.video.volume'),\n playAction: t(`$vuetify.video.${playIconLocaleKey}`),\n volumeAction: t(`$vuetify.video.${volumeIconLocaleKey}`),\n fullscreenAction: t(`$vuetify.video.${fullscreenIconLocaleKey}`),\n }\n })\n\n function play () {\n playing.value = true\n }\n\n function pause () {\n playing.value = false\n }\n\n function skipTo (v: number) {\n progress.value = v\n }\n\n function toggleMuted () {\n if (volume.value) {\n lastVolume.value = volume.value\n volume.value = 0\n } else {\n volume.value = lastVolume.value ?? 100\n }\n }\n\n function toggleFullscreen () {\n emit('click:fullscreen')\n }\n\n useRender(() => {\n const sizes = props.pills\n ? [42, 36, 30]\n : [32, 28, 24]\n\n const innerDefaults = {\n VIconBtn: {\n size: props.density === 'compact' ? sizes[2]\n : props.density === 'comfortable' ? sizes[1]\n : sizes[0],\n iconSize: props.density === 'compact' ? 20\n : props.density === 'comfortable' ? 24\n : 26,\n variant: 'text',\n color: props.color,\n },\n VSlider: {\n thumbSize: props.variant === 'tube' ? 10 : 16,\n hideDetails: true,\n },\n }\n\n const regularBtnSize = innerDefaults.VIconBtn.size\n const playBtnSize = props.pills ? (regularBtnSize + 8) : regularBtnSize\n\n const pillClasses = [\n 'v-video-control__pill',\n props.pills ? elevationClasses.value : [],\n ]\n\n const slotProps = {\n play,\n pause,\n playing: playing.value,\n progress: progress.value,\n currentTime: currentTime.value,\n skipTo,\n volume,\n toggleMuted,\n fullscreen: props.fullscreen,\n toggleFullscreen,\n labels: labels.value,\n }\n\n return (\n <div\n class={[\n 'v-video-controls',\n `v-video-controls--variant-${props.variant}`,\n { 'v-video-controls--pills': props.pills },\n { 'v-video-controls--detached': props.detached },\n { 'v-video-controls--floating': props.floating },\n { 'v-video-controls--split-time': props.splitTime },\n backgroundColorClasses.value,\n props.detached && !props.pills ? elevationClasses.value : [],\n densityClasses.value,\n themeClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n { '--v-video-controls-pill-height': `${regularBtnSize}px` },\n ]}\n >\n <VDefaultsProvider defaults={ innerDefaults }>\n { slots.default?.(slotProps) ?? (\n <>\n { props.variant !== 'mini' && (\n <>\n { !props.hidePlay && (\n <div class={[pillClasses, 'v-video__action-play']}>\n <VIconBtn\n icon={ playing.value ? '$pause' : '$play' }\n size={ playBtnSize }\n aria-label={ labels.value.playAction }\n v-tooltip={[labels.value.playAction, 'top']}\n onClick={ () => playing.value = !playing.value }\n />\n </div>\n )}\n { slots.prepend && (\n <div class={ pillClasses }>\n { slots.prepend(slotProps) }\n </div>\n )}\n { props.splitTime\n ? <span class={[pillClasses, 'v-video__time']}>{ currentTime.value.elapsed }</span>\n : props.variant !== 'default'\n ? <span class={[pillClasses, 'v-video__time']}>{ currentTime.value.elapsed } / { currentTime.value.total }</span>\n : ''\n }\n <VSlider\n modelValue={ props.progress }\n noKeyboard\n color={ props.trackColor ?? props.color }\n trackColor={ props.variant === 'tube' ? 'white' : undefined }\n class=\"v-video__track\"\n thumbLabel=\"always\"\n aria-label={ labels.value.seek }\n onUpdate:modelValue={ skipTo }\n >\n {{\n 'thumb-label': () => currentTime.value.elapsed,\n }}\n </VSlider>\n { props.variant === 'tube' && <VSpacer /> }\n { props.splitTime\n ? <span class={[pillClasses, 'v-video__time']}>{ currentTime.value.remaining }</span>\n : ''\n }\n </>\n )}\n { props.variant === 'mini' && (\n <>\n <VSpacer />\n { slots.prepend && (\n <div class={ pillClasses }>\n { slots.prepend(slotProps) }\n </div>\n )}\n { !props.hidePlay && (\n <div class={[pillClasses, 'v-video__action-play']}>\n <VIconBtn\n icon={ playing.value ? '$pause' : '$play' }\n size={ playBtnSize }\n aria-label={ labels.value.playAction }\n v-tooltip={[labels.value.playAction, 'top']}\n onClick={ () => playing.value = !playing.value }\n />\n </div>\n )}\n </>\n )}\n { (!props.hideVolume || !props.hideFullscreen || slots.append) && (\n <div class={ pillClasses }>\n { !props.hideVolume && (\n <VVideoVolume\n key=\"volume-control\"\n sliderProps={{ color: props.color }}\n modelValue={ volume.value }\n label={ labels.value.volumeAction }\n onUpdate:modelValue={ v => volume.value = v }\n onClick={ () => props.volumeProps?.inline && toggleMuted() }\n { ...props.volumeProps }\n />\n )}\n { slots.append?.(slotProps) }\n { !props.hideFullscreen && (\n <VIconBtn\n icon={ props.fullscreen ? '$fullscreenExit' : '$fullscreen' }\n aria-label={ labels.value.fullscreenAction }\n v-tooltip={[labels.value.fullscreenAction, 'top']}\n onClick={ toggleFullscreen }\n />\n )}\n </div>\n )}\n\n { props.variant === 'mini' && (<VSpacer />) }\n </>\n )}\n </VDefaultsProvider>\n </div>\n )\n })\n\n return {\n toggleMuted,\n }\n },\n})\n\nexport type VVideoControls = InstanceType<typeof VVideoControls>\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { createVNode as _createVNode, mergeProps as _mergeProps, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle } from "vue";
1
+ import { createVNode as _createVNode, mergeProps as _mergeProps, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle } from "vue";
2
2
  // Components
3
3
  import { VIcon } from "../../components/VIcon/VIcon.js";
4
4
  import { VMenu } from "../../components/VMenu/VMenu.js";
@@ -6,7 +6,8 @@ import { VSlider } from "../../components/VSlider/VSlider.js";
6
6
  import { VIconBtn } from "../VIconBtn/VIconBtn.js"; // Composables
7
7
  import { useLocale } from "../../composables/index.js";
8
8
  import { makeComponentProps } from "../../composables/component.js";
9
- import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
9
+ import { useProxiedModel } from "../../composables/proxiedModel.js"; // Directives
10
+ import vTooltip from "../../directives/tooltip/index.js"; // Utilities
10
11
  import { ref, toRef } from 'vue';
11
12
  import { EventProp, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
12
13
  export const makeVVideoVolumeProps = propsFactory({
@@ -27,6 +28,9 @@ export const makeVVideoVolumeProps = propsFactory({
27
28
  }, 'VVideoVolume');
28
29
  export const VVideoVolume = genericComponent()({
29
30
  name: 'VVideoVolume',
31
+ directives: {
32
+ vTooltip: vTooltip
33
+ },
30
34
  props: makeVVideoVolumeProps(),
31
35
  emits: {
32
36
  'update:modelValue': val => true
@@ -74,7 +78,7 @@ export const VVideoVolume = genericComponent()({
74
78
  "onUpdate:modelValue": v => volume.value = v
75
79
  }, sliderDefaults, props.sliderProps), null)])]
76
80
  })]
77
- }), [[_resolveDirective("tooltip"), props.label, 'top']]), props.inline && _createVNode(VSlider, _mergeProps({
81
+ }), [[vTooltip, props.label, 'top']]), props.inline && _createVNode(VSlider, _mergeProps({
78
82
  "class": "v-video-volume-inline__slider",
79
83
  "minWidth": "50",
80
84
  "aria-label": t('$vuetify.video.volume'),
@@ -1 +1 @@
1
- {"version":3,"file":"VVideoVolume.js","names":["VIcon","VMenu","VSlider","VIconBtn","useLocale","makeComponentProps","useProxiedModel","ref","toRef","EventProp","genericComponent","propsFactory","useRender","makeVVideoVolumeProps","inline","Boolean","label","String","direction","type","default","modelValue","Number","menuProps","Object","sliderProps","onClick","VVideoVolume","name","props","emits","val","setup","_ref","attrs","t","volume","volumeIcon","value","containerRef","sliderDefaults","hideDetails","step","thumbSize","_createElementVNode","_normalizeClass","class","_normalizeStyle","style","_withDirectives","_createVNode","_mergeProps","location","v","_resolveDirective","e","stopPropagation"],"sources":["../../../src/labs/VVideo/VVideoVolume.tsx"],"sourcesContent":["// Components\nimport { VIcon } from '@/components/VIcon/VIcon'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { VSlider } from '@/components/VSlider/VSlider'\nimport { VIconBtn } from '@/labs/VIconBtn/VIconBtn'\n\n// Composables\nimport { useLocale } from '@/composables'\nimport { makeComponentProps } from '@/composables/component'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { ref, toRef } from 'vue'\nimport { EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVVideoVolumeProps = propsFactory({\n inline: Boolean,\n label: String,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'vertical',\n },\n modelValue: {\n type: Number,\n default: 0,\n },\n menuProps: Object as PropType<VMenu['$props']>,\n sliderProps: Object as PropType<Pick<VSlider['$props'], 'color' | 'disabled' | 'thumbSize' | 'trackColor' | 'maxWidth' | 'width'>>,\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\n\n ...makeComponentProps(),\n}, 'VVideoVolume')\n\nexport const VVideoVolume = genericComponent()({\n name: 'VVideoVolume',\n\n props: makeVVideoVolumeProps(),\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { attrs }) {\n const { t } = useLocale()\n const volume = useProxiedModel(props, 'modelValue')\n\n const volumeIcon = toRef(() => volume.value > 70 ? '$volumeHigh'\n : volume.value > 40 ? '$volumeMedium'\n : volume.value > 10 ? '$volumeLow'\n : '$volumeOff')\n\n const containerRef = ref<HTMLElement>()\n\n useRender(() => {\n const sliderDefaults = {\n hideDetails: true,\n step: 5,\n thumbSize: 16,\n }\n\n return (\n <div\n class={[\n 'v-video-volume',\n { 'v-video-volume--inline': props.inline },\n props.class,\n ]}\n style={ props.style }\n ref={ containerRef }\n >\n <VIconBtn\n icon={ volumeIcon.value }\n aria-label={ props.label }\n v-tooltip={[props.label, 'top']}\n onClick={ props.onClick as any }\n { ...attrs }\n >\n <VIcon />\n { !props.inline && (\n <VMenu\n offset=\"8\"\n activator=\"parent\"\n attach={ containerRef.value }\n location={ props.menuProps?.location ?? 'top center' }\n closeOnContentClick={ false }\n >\n <div\n class={[\n 'v-video-volume__menu',\n `v-video-volume__menu--${props.direction}`,\n ]}\n >\n <VSlider\n direction={ props.direction }\n aria-label={ t('$vuetify.video.volume') }\n modelValue={ volume.value }\n onUpdate:modelValue={ v => volume.value = v }\n { ...sliderDefaults }\n { ...props.sliderProps }\n />\n </div>\n </VMenu>\n )}\n </VIconBtn>\n\n { props.inline && (\n <VSlider\n class=\"v-video-volume-inline__slider\"\n minWidth=\"50\"\n aria-label={ t('$vuetify.video.volume') }\n modelValue={ volume.value }\n onUpdate:modelValue={ v => volume.value = v }\n onKeydown={ (e: KeyboardEvent) => { e.stopPropagation() } }\n { ...sliderDefaults }\n { ...props.sliderProps }\n />\n )}\n </div>\n )\n })\n },\n})\n\nexport type VVideoVolume = InstanceType<typeof VVideoVolume>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VVideoVolume.js","names":["VIcon","VMenu","VSlider","VIconBtn","useLocale","makeComponentProps","useProxiedModel","vTooltip","ref","toRef","EventProp","genericComponent","propsFactory","useRender","makeVVideoVolumeProps","inline","Boolean","label","String","direction","type","default","modelValue","Number","menuProps","Object","sliderProps","onClick","VVideoVolume","name","directives","props","emits","val","setup","_ref","attrs","t","volume","volumeIcon","value","containerRef","sliderDefaults","hideDetails","step","thumbSize","_createElementVNode","_normalizeClass","class","_normalizeStyle","style","_withDirectives","_createVNode","_mergeProps","location","v","e","stopPropagation"],"sources":["../../../src/labs/VVideo/VVideoVolume.tsx"],"sourcesContent":["// Components\nimport { VIcon } from '@/components/VIcon/VIcon'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { VSlider } from '@/components/VSlider/VSlider'\nimport { VIconBtn } from '@/labs/VIconBtn/VIconBtn'\n\n// Composables\nimport { useLocale } from '@/composables'\nimport { makeComponentProps } from '@/composables/component'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport vTooltip from '@/directives/tooltip'\n\n// Utilities\nimport { ref, toRef } from 'vue'\nimport { EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVVideoVolumeProps = propsFactory({\n inline: Boolean,\n label: String,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'vertical',\n },\n modelValue: {\n type: Number,\n default: 0,\n },\n menuProps: Object as PropType<VMenu['$props']>,\n sliderProps: Object as PropType<Pick<VSlider['$props'], 'color' | 'disabled' | 'thumbSize' | 'trackColor' | 'maxWidth' | 'width'>>,\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\n\n ...makeComponentProps(),\n}, 'VVideoVolume')\n\nexport const VVideoVolume = genericComponent()({\n name: 'VVideoVolume',\n\n directives: { vTooltip: vTooltip as any },\n\n props: makeVVideoVolumeProps(),\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { attrs }) {\n const { t } = useLocale()\n const volume = useProxiedModel(props, 'modelValue')\n\n const volumeIcon = toRef(() => volume.value > 70 ? '$volumeHigh'\n : volume.value > 40 ? '$volumeMedium'\n : volume.value > 10 ? '$volumeLow'\n : '$volumeOff')\n\n const containerRef = ref<HTMLElement>()\n\n useRender(() => {\n const sliderDefaults = {\n hideDetails: true,\n step: 5,\n thumbSize: 16,\n }\n\n return (\n <div\n class={[\n 'v-video-volume',\n { 'v-video-volume--inline': props.inline },\n props.class,\n ]}\n style={ props.style }\n ref={ containerRef }\n >\n <VIconBtn\n icon={ volumeIcon.value }\n aria-label={ props.label }\n v-tooltip={[props.label, 'top']}\n onClick={ props.onClick as any }\n { ...attrs }\n >\n <VIcon />\n { !props.inline && (\n <VMenu\n offset=\"8\"\n activator=\"parent\"\n attach={ containerRef.value }\n location={ props.menuProps?.location ?? 'top center' }\n closeOnContentClick={ false }\n >\n <div\n class={[\n 'v-video-volume__menu',\n `v-video-volume__menu--${props.direction}`,\n ]}\n >\n <VSlider\n direction={ props.direction }\n aria-label={ t('$vuetify.video.volume') }\n modelValue={ volume.value }\n onUpdate:modelValue={ v => volume.value = v }\n { ...sliderDefaults }\n { ...props.sliderProps }\n />\n </div>\n </VMenu>\n )}\n </VIconBtn>\n\n { props.inline && (\n <VSlider\n class=\"v-video-volume-inline__slider\"\n minWidth=\"50\"\n aria-label={ t('$vuetify.video.volume') }\n modelValue={ volume.value }\n onUpdate:modelValue={ v => volume.value = v }\n onKeydown={ (e: KeyboardEvent) => { e.stopPropagation() } }\n { ...sliderDefaults }\n { ...props.sliderProps }\n />\n )}\n </div>\n )\n })\n },\n})\n\nexport type VVideoVolume = InstanceType<typeof VVideoVolume>\n"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,7 @@ export * from './VFileUpload/index.js';
5
5
  export * from './VIconBtn/index.js';
6
6
  export * from './VMaskInput/index.js';
7
7
  export * from './VPicker/index.js';
8
+ export * from './VPie/index.js';
8
9
  export * from './VStepperVertical/index.js';
9
10
  export * from './VPullToRefresh/index.js';
10
11
  export * from './VHotkey/index.js';
@@ -5,6 +5,7 @@ export * from "./VFileUpload/index.js";
5
5
  export * from "./VIconBtn/index.js";
6
6
  export * from "./VMaskInput/index.js";
7
7
  export * from "./VPicker/index.js";
8
+ export * from "./VPie/index.js";
8
9
  export * from "./VStepperVertical/index.js";
9
10
  export * from "./VPullToRefresh/index.js";
10
11
  export * from "./VHotkey/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","names":[],"sources":["../../src/labs/components.ts"],"sourcesContent":["export * from './VCalendar'\nexport * from './VColorInput'\nexport * from './VDateInput'\nexport * from './VFileUpload'\nexport * from './VIconBtn'\nexport * from './VMaskInput'\nexport * from './VPicker'\nexport * from './VStepperVertical'\nexport * from './VPullToRefresh'\nexport * from './VHotkey'\nexport * from './VVideo'\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"components.js","names":[],"sources":["../../src/labs/components.ts"],"sourcesContent":["export * from './VCalendar'\nexport * from './VColorInput'\nexport * from './VDateInput'\nexport * from './VFileUpload'\nexport * from './VIconBtn'\nexport * from './VMaskInput'\nexport * from './VPicker'\nexport * from './VPie'\nexport * from './VStepperVertical'\nexport * from './VPullToRefresh'\nexport * from './VHotkey'\nexport * from './VVideo'\n"],"mappings":"","ignoreList":[]}
@@ -1,3 +1,25 @@
1
+ import type { MaybeRefOrGetter } from 'vue';
1
2
  export declare const standardEasing = "cubic-bezier(0.4, 0, 0.2, 1)";
2
3
  export declare const deceleratedEasing = "cubic-bezier(0.0, 0, 0.2, 1)";
3
4
  export declare const acceleratedEasing = "cubic-bezier(0.4, 0, 1, 1)";
5
+ export type EasingFunction = (n: number) => number;
6
+ export declare const easingPatterns: {
7
+ readonly linear: (t: number) => number;
8
+ readonly easeInQuad: (t: number) => number;
9
+ readonly easeOutQuad: (t: number) => number;
10
+ readonly easeInOutQuad: (t: number) => number;
11
+ readonly easeInCubic: (t: number) => number;
12
+ readonly easeOutCubic: (t: number) => number;
13
+ readonly easeInOutCubic: (t: number) => number;
14
+ readonly easeInQuart: (t: number) => number;
15
+ readonly easeOutQuart: (t: number) => number;
16
+ readonly easeInOutQuart: (t: number) => number;
17
+ readonly easeInQuint: (t: number) => number;
18
+ readonly easeOutQuint: (t: number) => number;
19
+ readonly easeInOutQuint: (t: number) => number;
20
+ };
21
+ export type EasingOptions = {
22
+ duration?: number;
23
+ transition?: EasingFunction;
24
+ };
25
+ export declare function useTransition(source: MaybeRefOrGetter<number>, options: MaybeRefOrGetter<EasingOptions>): import("vue").ComputedRef<number>;
@@ -1,4 +1,57 @@
1
+ // Utilities
2
+ import { computed, shallowRef, toValue, watch } from 'vue';
3
+ import { clamp } from "./helpers.js"; // Types
1
4
  export const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';
2
5
  export const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
3
6
  export const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
7
+
8
+ export const easingPatterns = {
9
+ linear: t => t,
10
+ easeInQuad: t => t ** 2,
11
+ easeOutQuad: t => t * (2 - t),
12
+ easeInOutQuad: t => t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t,
13
+ easeInCubic: t => t ** 3,
14
+ easeOutCubic: t => --t ** 3 + 1,
15
+ easeInOutCubic: t => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,
16
+ easeInQuart: t => t ** 4,
17
+ easeOutQuart: t => 1 - --t ** 4,
18
+ easeInOutQuart: t => t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4,
19
+ easeInQuint: t => t ** 5,
20
+ easeOutQuint: t => 1 + --t ** 5,
21
+ easeInOutQuint: t => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5
22
+ };
23
+ export function useTransition(source, options) {
24
+ const defaultTransition = {
25
+ duration: 300,
26
+ transition: easingPatterns.easeInOutCubic
27
+ };
28
+ let raf = -1;
29
+ const outputRef = shallowRef(toValue(source));
30
+ watch(() => toValue(source), async to => {
31
+ cancelAnimationFrame(raf);
32
+ const easing = {
33
+ ...defaultTransition,
34
+ ...toValue(options)
35
+ };
36
+ await executeTransition(outputRef, outputRef.value, to, easing);
37
+ });
38
+ function executeTransition(out, from, to, options) {
39
+ const startTime = performance.now();
40
+ const ease = options.transition ?? easingPatterns.easeInOutCubic;
41
+ return new Promise(resolve => {
42
+ raf = requestAnimationFrame(function step(currentTime) {
43
+ const timeElapsed = currentTime - startTime;
44
+ const progress = timeElapsed / options.duration;
45
+ out.value = from + (to - from) * ease(clamp(progress, 0, 1));
46
+ if (progress < 1) {
47
+ raf = requestAnimationFrame(step);
48
+ } else {
49
+ out.value = to;
50
+ resolve();
51
+ }
52
+ });
53
+ });
54
+ }
55
+ return computed(() => outputRef.value);
56
+ }
4
57
  //# sourceMappingURL=easing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"easing.js","names":["standardEasing","deceleratedEasing","acceleratedEasing"],"sources":["../../src/util/easing.ts"],"sourcesContent":["export const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)'\nexport const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)' // Entering\nexport const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)' // Leaving\n"],"mappings":"AAAA,OAAO,MAAMA,cAAc,GAAG,8BAA8B;AAC5D,OAAO,MAAMC,iBAAiB,GAAG,8BAA8B,EAAC;AAChE,OAAO,MAAMC,iBAAiB,GAAG,4BAA4B,EAAC","ignoreList":[]}
1
+ {"version":3,"file":"easing.js","names":["computed","shallowRef","toValue","watch","clamp","standardEasing","deceleratedEasing","acceleratedEasing","easingPatterns","linear","t","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","useTransition","source","options","defaultTransition","duration","transition","raf","outputRef","to","cancelAnimationFrame","easing","executeTransition","value","out","from","startTime","performance","now","ease","Promise","resolve","requestAnimationFrame","step","currentTime","timeElapsed","progress"],"sources":["../../src/util/easing.ts"],"sourcesContent":["// Utilities\nimport { computed, shallowRef, toValue, watch } from 'vue'\nimport { clamp } from './helpers'\n\n// Types\nimport type { MaybeRefOrGetter, Ref } from 'vue'\n\nexport const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)'\nexport const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)' // Entering\nexport const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)' // Leaving\n\nexport type EasingFunction = (n: number) => number\n\nexport const easingPatterns = {\n linear: (t: number) => t,\n easeInQuad: (t: number) => t ** 2,\n easeOutQuad: (t: number) => t * (2 - t),\n easeInOutQuad: (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t),\n easeInCubic: (t: number) => t ** 3,\n easeOutCubic: (t: number) => --t ** 3 + 1,\n easeInOutCubic: (t: number) => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n easeInQuart: (t: number) => t ** 4,\n easeOutQuart: (t: number) => 1 - --t ** 4,\n easeInOutQuart: (t: number) => (t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4),\n easeInQuint: (t: number) => t ** 5,\n easeOutQuint: (t: number) => 1 + --t ** 5,\n easeInOutQuint: (t: number) => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5,\n} as const\n\nexport type EasingOptions = {\n duration?: number\n transition?: EasingFunction\n}\n\ntype InternalEasingOptions = {\n duration: number\n transition: EasingFunction\n}\n\nexport function useTransition (source: MaybeRefOrGetter<number>, options: MaybeRefOrGetter<EasingOptions>) {\n const defaultTransition: InternalEasingOptions = {\n duration: 300,\n transition: easingPatterns.easeInOutCubic,\n }\n\n let raf = -1\n const outputRef = shallowRef(toValue(source))\n\n watch(() => toValue(source), async to => {\n cancelAnimationFrame(raf)\n const easing = { ...defaultTransition, ...toValue(options) }\n await executeTransition(outputRef, outputRef.value, to, easing)\n })\n\n function executeTransition (out: Ref<number>, from: number, to: number, options: InternalEasingOptions) {\n const startTime = performance.now()\n const ease = options.transition ?? easingPatterns.easeInOutCubic\n\n return new Promise<void>(resolve => {\n raf = requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n out.value = from + (to - from) * ease(clamp(progress, 0, 1))\n\n if (progress < 1) {\n raf = requestAnimationFrame(step)\n } else {\n out.value = to\n resolve()\n }\n })\n })\n }\n\n return computed(() => outputRef.value)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ type Point = [x: number, y: number];
2
+ export declare function simpleArc(center: Point, r: number, startAngle: number, endAngle: number): string;
3
+ export declare function roundedArc(center: Point, radius: number, startAngle: number, endAngle: number, width: number, rounding: number): string;
4
+
@@ -0,0 +1,73 @@
1
+ /*
2
+ * Credits: Alexander Milevski https://github.com/w8r/svg-arc-corners
3
+ */
4
+
5
+ function pointOnArc(center, radius, angle) {
6
+ const radians = (angle - 90) * Math.PI / 180.0;
7
+ return [center[0] + radius * Math.cos(radians), center[1] + radius * Math.sin(radians)];
8
+ }
9
+ function drawCircle(_ref, r, width) {
10
+ let [x, y] = _ref;
11
+ const innerRadius = r - width;
12
+ return ['M', x - r, y, 'A', r, r, 0, 1, 0, x + r, y, 'A', r, r, 0, 1, 0, x - r, y, 'M', x - innerRadius, y, 'A', innerRadius, innerRadius, 0, 1, 0, x + innerRadius, y, 'A', innerRadius, innerRadius, 0, 1, 0, x - innerRadius, y, 'Z'];
13
+ }
14
+ export function simpleArc(center, r, startAngle, endAngle) {
15
+ const start = pointOnArc(center, r, startAngle);
16
+ const end = pointOnArc(center, r, endAngle);
17
+ const sweep = endAngle - startAngle > 180 ? 1 : 0;
18
+ return [`M${start[0]} ${start[1]}`, `A${r} ${r} 0 ${sweep} 1 ${end[0]} ${end[1]}`, `L${center[0]} ${center[1]}Z`].join(' ');
19
+ }
20
+ export function roundedArc(center, radius, startAngle, endAngle, width, rounding) {
21
+ width = Math.min(radius, width);
22
+ if (Math.abs(endAngle - startAngle) === 360) {
23
+ return drawCircle(center, radius, width).join(' ');
24
+ }
25
+ if (rounding === 0 && radius === width) {
26
+ return simpleArc(center, radius, startAngle, endAngle);
27
+ }
28
+ const innerR = radius - width;
29
+ const circumference = Math.abs(endAngle - startAngle);
30
+ rounding = Math.min(width / 2, rounding);
31
+ if (360 * (rounding / (Math.PI * (radius - width))) > Math.abs(startAngle - endAngle)) {
32
+ rounding = circumference / 360 * innerR * Math.PI;
33
+ }
34
+
35
+ // inner and outer radiuses
36
+ const innerR2 = innerR + rounding;
37
+ const outerRadius = radius - rounding;
38
+
39
+ // butts corner points
40
+ const oStart = pointOnArc(center, outerRadius, startAngle);
41
+ const oEnd = pointOnArc(center, outerRadius, endAngle);
42
+ const iStart = pointOnArc(center, innerR2, startAngle);
43
+ const iEnd = pointOnArc(center, innerR2, endAngle);
44
+ const iSection = innerR ? 360 * (rounding / (2 * Math.PI * innerR)) : 0;
45
+ const oSection = 360 * (rounding / (2 * Math.PI * radius));
46
+
47
+ // arcs endpoints
48
+ const iArcStart = pointOnArc(center, innerR, startAngle + iSection);
49
+ const iArcEnd = pointOnArc(center, innerR, endAngle - iSection);
50
+ const oArcStart = pointOnArc(center, radius, startAngle + oSection);
51
+ const oArcEnd = pointOnArc(center, radius, endAngle - oSection);
52
+ const arcSweep1 = circumference > 180 + 2 * oSection ? 1 : 0;
53
+ const arcSweep2 = circumference > 180 + 2 * iSection ? 1 : 0;
54
+ return [
55
+ // begin path
56
+ 'M', oStart[0], oStart[1],
57
+ // outer start corner
58
+ 'A', rounding, rounding, 0, 0, 1, oArcStart[0], oArcStart[1],
59
+ // outer main arc
60
+ 'A', radius, radius, 0, arcSweep1, 1, oArcEnd[0], oArcEnd[1],
61
+ // outer end corner
62
+ 'A', rounding, rounding, 0, 0, 1, oEnd[0], oEnd[1],
63
+ // end butt
64
+ 'L', iEnd[0], iEnd[1],
65
+ // inner end corner
66
+ 'A', rounding, rounding, 0, 0, 1, iArcEnd[0], iArcEnd[1],
67
+ // inner arc
68
+ 'A', innerR, innerR, 0, arcSweep2, 0, iArcStart[0], iArcStart[1],
69
+ // inner start corner
70
+ 'A', rounding, rounding, 0, 0, 1, iStart[0], iStart[1], 'Z' // end path
71
+ ].join(' ');
72
+ }
73
+ //# sourceMappingURL=svg-arc-corners.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-arc-corners.js","names":["pointOnArc","center","radius","angle","radians","Math","PI","cos","sin","drawCircle","_ref","r","width","x","y","innerRadius","simpleArc","startAngle","endAngle","start","end","sweep","join","roundedArc","rounding","min","abs","innerR","circumference","innerR2","outerRadius","oStart","oEnd","iStart","iEnd","iSection","oSection","iArcStart","iArcEnd","oArcStart","oArcEnd","arcSweep1","arcSweep2"],"sources":["../../src/util/svg-arc-corners.ts"],"sourcesContent":["/*\n * Credits: Alexander Milevski https://github.com/w8r/svg-arc-corners\n */\n\ntype Point = [x: number, y: number]\n\nfunction pointOnArc (center: Point, radius: number, angle: number) {\n const radians = (angle - 90) * Math.PI / 180.0\n return [center[0] + radius * Math.cos(radians), center[1] + radius * Math.sin(radians)]\n}\n\nfunction drawCircle ([x, y]: Point, r: number, width: number) {\n const innerRadius = r - width\n return [\n 'M', x - r, y,\n 'A', r, r, 0, 1, 0, x + r, y,\n 'A', r, r, 0, 1, 0, x - r, y,\n 'M', x - innerRadius, y,\n 'A', innerRadius, innerRadius, 0, 1, 0, x + innerRadius, y,\n 'A', innerRadius, innerRadius, 0, 1, 0, x - innerRadius, y,\n 'Z',\n ]\n}\n\nexport function simpleArc (center: Point, r: number, startAngle: number, endAngle: number) {\n const start = pointOnArc(center, r, startAngle)\n const end = pointOnArc(center, r, endAngle)\n const sweep = endAngle - startAngle > 180 ? 1 : 0\n\n return [\n `M${start[0]} ${start[1]}`,\n `A${r} ${r} 0 ${sweep} 1 ${end[0]} ${end[1]}`,\n `L${center[0]} ${center[1]}Z`,\n ]\n .join(' ')\n}\n\nexport function roundedArc (center: Point, radius: number, startAngle: number, endAngle: number, width: number, rounding: number): string {\n width = Math.min(radius, width)\n\n if (Math.abs(endAngle - startAngle) === 360) {\n return drawCircle(center, radius, width).join(' ')\n }\n\n if (rounding === 0 && radius === width) {\n return simpleArc(center, radius, startAngle, endAngle)\n }\n\n const innerR = radius - width\n const circumference = Math.abs(endAngle - startAngle)\n rounding = Math.min(width / 2, rounding)\n\n if (360 * (rounding / (Math.PI * (radius - width))) > Math.abs(startAngle - endAngle)) {\n rounding = circumference / 360 * innerR * Math.PI\n }\n\n // inner and outer radiuses\n const innerR2 = innerR + rounding\n const outerRadius = radius - rounding\n\n // butts corner points\n const oStart = pointOnArc(center, outerRadius, startAngle)\n const oEnd = pointOnArc(center, outerRadius, endAngle)\n\n const iStart = pointOnArc(center, innerR2, startAngle)\n const iEnd = pointOnArc(center, innerR2, endAngle)\n\n const iSection = innerR ? 360 * (rounding / (2 * Math.PI * innerR)) : 0\n const oSection = 360 * (rounding / (2 * Math.PI * radius))\n\n // arcs endpoints\n const iArcStart = pointOnArc(center, innerR, startAngle + iSection)\n const iArcEnd = pointOnArc(center, innerR, endAngle - iSection)\n\n const oArcStart = pointOnArc(center, radius, startAngle + oSection)\n const oArcEnd = pointOnArc(center, radius, endAngle - oSection)\n\n const arcSweep1 = circumference > 180 + 2 * oSection ? 1 : 0\n const arcSweep2 = circumference > 180 + 2 * iSection ? 1 : 0\n\n return [\n // begin path\n 'M', oStart[0], oStart[1],\n // outer start corner\n 'A', rounding, rounding, 0, 0, 1, oArcStart[0], oArcStart[1],\n // outer main arc\n 'A', radius, radius, 0, arcSweep1, 1, oArcEnd[0], oArcEnd[1],\n // outer end corner\n 'A', rounding, rounding, 0, 0, 1, oEnd[0], oEnd[1],\n // end butt\n 'L', iEnd[0], iEnd[1],\n // inner end corner\n 'A', rounding, rounding, 0, 0, 1, iArcEnd[0], iArcEnd[1],\n // inner arc\n 'A', innerR, innerR, 0, arcSweep2, 0, iArcStart[0], iArcStart[1],\n // inner start corner\n 'A', rounding, rounding, 0, 0, 1, iStart[0], iStart[1], 'Z', // end path\n ]\n .join(' ')\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.9.2-master.2025-07-24",
4
+ "version": "3.9.2-master.2025-07-25",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"