@vuetify/nightly 3.9.2-master.2025-07-23 → 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 (246) hide show
  1. package/CHANGELOG.md +15 -3
  2. package/dist/_component-variables-labs.sass +3 -1
  3. package/dist/json/attributes.json +4029 -3617
  4. package/dist/json/importMap-labs.json +38 -14
  5. package/dist/json/importMap.json +148 -148
  6. package/dist/json/tags.json +133 -0
  7. package/dist/json/web-types.json +13484 -11867
  8. package/dist/vuetify-labs.cjs +1525 -126
  9. package/dist/vuetify-labs.css +5448 -5007
  10. package/dist/vuetify-labs.d.ts +7670 -974
  11. package/dist/vuetify-labs.esm.js +1526 -127
  12. package/dist/vuetify-labs.esm.js.map +1 -1
  13. package/dist/vuetify-labs.js +1525 -126
  14. package/dist/vuetify-labs.min.css +2 -2
  15. package/dist/vuetify.cjs +74 -34
  16. package/dist/vuetify.cjs.map +1 -1
  17. package/dist/vuetify.css +3415 -3415
  18. package/dist/vuetify.d.ts +86 -61
  19. package/dist/vuetify.esm.js +74 -34
  20. package/dist/vuetify.esm.js.map +1 -1
  21. package/dist/vuetify.js +74 -34
  22. package/dist/vuetify.js.map +1 -1
  23. package/dist/vuetify.min.css +2 -2
  24. package/dist/vuetify.min.js +976 -977
  25. package/dist/vuetify.min.js.map +1 -1
  26. package/lib/components/VBottomSheet/VBottomSheet.d.ts +6 -6
  27. package/lib/components/VDialog/VDialog.d.ts +6 -6
  28. package/lib/components/VOverlay/VOverlay.js +1 -0
  29. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  30. package/lib/components/VOverlay/locationStrategies.js +16 -10
  31. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  32. package/lib/components/VOverlay/scrollStrategies.d.ts +1 -0
  33. package/lib/components/VOverlay/scrollStrategies.js +6 -4
  34. package/lib/components/VOverlay/scrollStrategies.js.map +1 -1
  35. package/lib/components/VRangeSlider/VRangeSlider.d.ts +13 -0
  36. package/lib/components/VSlider/VSlider.d.ts +13 -0
  37. package/lib/components/VSlider/VSlider.js +3 -1
  38. package/lib/components/VSlider/VSlider.js.map +1 -1
  39. package/lib/components/VSlider/VSliderThumb.d.ts +13 -0
  40. package/lib/components/VSlider/VSliderThumb.js +2 -0
  41. package/lib/components/VSlider/VSliderThumb.js.map +1 -1
  42. package/lib/components/VSlider/slider.d.ts +6 -0
  43. package/lib/components/VSlider/slider.js +2 -0
  44. package/lib/components/VSlider/slider.js.map +1 -1
  45. package/lib/components/index.js +2 -2
  46. package/lib/components/index.js.map +1 -1
  47. package/lib/composables/goto.d.ts +3 -2
  48. package/lib/composables/goto.js +2 -16
  49. package/lib/composables/goto.js.map +1 -1
  50. package/lib/composables/reveal.d.ts +36 -0
  51. package/lib/composables/reveal.js +30 -0
  52. package/lib/composables/reveal.js.map +1 -0
  53. package/lib/entry-bundler.js +1 -1
  54. package/lib/framework.d.ts +142 -133
  55. package/lib/framework.js +1 -1
  56. package/lib/iconsets/fa.js +9 -1
  57. package/lib/iconsets/fa.js.map +1 -1
  58. package/lib/iconsets/fa4.js +9 -1
  59. package/lib/iconsets/fa4.js.map +1 -1
  60. package/lib/iconsets/md.js +9 -1
  61. package/lib/iconsets/md.js.map +1 -1
  62. package/lib/iconsets/mdi-svg.js +9 -1
  63. package/lib/iconsets/mdi-svg.js.map +1 -1
  64. package/lib/iconsets/mdi.js +9 -1
  65. package/lib/iconsets/mdi.js.map +1 -1
  66. package/lib/labs/VPie/VPie.css +105 -0
  67. package/lib/labs/VPie/VPie.d.ts +891 -0
  68. package/lib/labs/VPie/VPie.js +291 -0
  69. package/lib/labs/VPie/VPie.js.map +1 -0
  70. package/lib/labs/VPie/VPie.sass +109 -0
  71. package/lib/labs/VPie/VPieSegment.d.ts +310 -0
  72. package/lib/labs/VPie/VPieSegment.js +103 -0
  73. package/lib/labs/VPie/VPieSegment.js.map +1 -0
  74. package/lib/labs/VPie/VPieTooltip.d.ts +279 -0
  75. package/lib/labs/VPie/VPieTooltip.js +84 -0
  76. package/lib/labs/VPie/VPieTooltip.js.map +1 -0
  77. package/lib/labs/VPie/_variables.scss +11 -0
  78. package/lib/labs/VPie/index.d.ts +3 -0
  79. package/lib/labs/VPie/index.js +4 -0
  80. package/lib/labs/VPie/index.js.map +1 -0
  81. package/lib/labs/VPie/types.d.ts +16 -0
  82. package/lib/labs/VPie/types.js +2 -0
  83. package/lib/labs/VPie/types.js.map +1 -0
  84. package/lib/labs/VPie/utils.d.ts +23 -0
  85. package/lib/labs/VPie/utils.js +49 -0
  86. package/lib/labs/VPie/utils.js.map +1 -0
  87. package/lib/labs/VVideo/VVideo.css +322 -0
  88. package/lib/labs/VVideo/VVideo.d.ts +6932 -0
  89. package/lib/labs/VVideo/VVideo.js +424 -0
  90. package/lib/labs/VVideo/VVideo.js.map +1 -0
  91. package/lib/labs/VVideo/VVideo.sass +304 -0
  92. package/lib/labs/VVideo/VVideoControls.d.ts +3524 -0
  93. package/lib/labs/VVideo/VVideoControls.js +236 -0
  94. package/lib/labs/VVideo/VVideoControls.js.map +1 -0
  95. package/lib/labs/VVideo/VVideoVolume.d.ts +3088 -0
  96. package/lib/labs/VVideo/VVideoVolume.js +94 -0
  97. package/lib/labs/VVideo/VVideoVolume.js.map +1 -0
  98. package/lib/labs/VVideo/_variables.scss +58 -0
  99. package/lib/labs/VVideo/index.d.ts +3 -0
  100. package/lib/labs/VVideo/index.js +4 -0
  101. package/lib/labs/VVideo/index.js.map +1 -0
  102. package/lib/labs/components.d.ts +2 -0
  103. package/lib/labs/components.js +2 -0
  104. package/lib/labs/components.js.map +1 -1
  105. package/lib/locale/af.d.ts +11 -0
  106. package/lib/locale/af.js +11 -0
  107. package/lib/locale/af.js.map +1 -1
  108. package/lib/locale/ar.d.ts +11 -0
  109. package/lib/locale/ar.js +11 -0
  110. package/lib/locale/ar.js.map +1 -1
  111. package/lib/locale/az.d.ts +11 -0
  112. package/lib/locale/az.js +11 -0
  113. package/lib/locale/az.js.map +1 -1
  114. package/lib/locale/bg.d.ts +11 -0
  115. package/lib/locale/bg.js +11 -0
  116. package/lib/locale/bg.js.map +1 -1
  117. package/lib/locale/ca.d.ts +11 -0
  118. package/lib/locale/ca.js +11 -0
  119. package/lib/locale/ca.js.map +1 -1
  120. package/lib/locale/ckb.d.ts +11 -0
  121. package/lib/locale/ckb.js +11 -0
  122. package/lib/locale/ckb.js.map +1 -1
  123. package/lib/locale/cs.d.ts +11 -0
  124. package/lib/locale/cs.js +11 -0
  125. package/lib/locale/cs.js.map +1 -1
  126. package/lib/locale/da.d.ts +11 -0
  127. package/lib/locale/da.js +11 -0
  128. package/lib/locale/da.js.map +1 -1
  129. package/lib/locale/de.d.ts +11 -0
  130. package/lib/locale/de.js +11 -0
  131. package/lib/locale/de.js.map +1 -1
  132. package/lib/locale/el.d.ts +11 -0
  133. package/lib/locale/el.js +11 -0
  134. package/lib/locale/el.js.map +1 -1
  135. package/lib/locale/en.d.ts +11 -0
  136. package/lib/locale/en.js +11 -0
  137. package/lib/locale/en.js.map +1 -1
  138. package/lib/locale/es.d.ts +11 -0
  139. package/lib/locale/es.js +11 -0
  140. package/lib/locale/es.js.map +1 -1
  141. package/lib/locale/et.d.ts +11 -0
  142. package/lib/locale/et.js +11 -0
  143. package/lib/locale/et.js.map +1 -1
  144. package/lib/locale/fa.d.ts +11 -0
  145. package/lib/locale/fa.js +11 -0
  146. package/lib/locale/fa.js.map +1 -1
  147. package/lib/locale/fi.d.ts +11 -0
  148. package/lib/locale/fi.js +11 -0
  149. package/lib/locale/fi.js.map +1 -1
  150. package/lib/locale/fr.d.ts +11 -0
  151. package/lib/locale/fr.js +11 -0
  152. package/lib/locale/fr.js.map +1 -1
  153. package/lib/locale/he.d.ts +11 -0
  154. package/lib/locale/he.js +11 -0
  155. package/lib/locale/he.js.map +1 -1
  156. package/lib/locale/hr.d.ts +11 -0
  157. package/lib/locale/hr.js +11 -0
  158. package/lib/locale/hr.js.map +1 -1
  159. package/lib/locale/hu.d.ts +11 -0
  160. package/lib/locale/hu.js +11 -0
  161. package/lib/locale/hu.js.map +1 -1
  162. package/lib/locale/id.d.ts +11 -0
  163. package/lib/locale/id.js +11 -0
  164. package/lib/locale/id.js.map +1 -1
  165. package/lib/locale/it.d.ts +11 -0
  166. package/lib/locale/it.js +11 -0
  167. package/lib/locale/it.js.map +1 -1
  168. package/lib/locale/ja.d.ts +11 -0
  169. package/lib/locale/ja.js +11 -0
  170. package/lib/locale/ja.js.map +1 -1
  171. package/lib/locale/km.d.ts +11 -0
  172. package/lib/locale/km.js +11 -0
  173. package/lib/locale/km.js.map +1 -1
  174. package/lib/locale/ko.d.ts +11 -0
  175. package/lib/locale/ko.js +11 -0
  176. package/lib/locale/ko.js.map +1 -1
  177. package/lib/locale/lt.d.ts +11 -0
  178. package/lib/locale/lt.js +11 -0
  179. package/lib/locale/lt.js.map +1 -1
  180. package/lib/locale/lv.d.ts +11 -0
  181. package/lib/locale/lv.js +11 -0
  182. package/lib/locale/lv.js.map +1 -1
  183. package/lib/locale/nl.d.ts +11 -0
  184. package/lib/locale/nl.js +11 -0
  185. package/lib/locale/nl.js.map +1 -1
  186. package/lib/locale/no.d.ts +11 -0
  187. package/lib/locale/no.js +11 -0
  188. package/lib/locale/no.js.map +1 -1
  189. package/lib/locale/pl.d.ts +11 -0
  190. package/lib/locale/pl.js +11 -0
  191. package/lib/locale/pl.js.map +1 -1
  192. package/lib/locale/pt.d.ts +11 -0
  193. package/lib/locale/pt.js +11 -0
  194. package/lib/locale/pt.js.map +1 -1
  195. package/lib/locale/ro.d.ts +11 -0
  196. package/lib/locale/ro.js +11 -0
  197. package/lib/locale/ro.js.map +1 -1
  198. package/lib/locale/ru.d.ts +11 -0
  199. package/lib/locale/ru.js +11 -0
  200. package/lib/locale/ru.js.map +1 -1
  201. package/lib/locale/sk.d.ts +11 -0
  202. package/lib/locale/sk.js +11 -0
  203. package/lib/locale/sk.js.map +1 -1
  204. package/lib/locale/sl.d.ts +11 -0
  205. package/lib/locale/sl.js +11 -0
  206. package/lib/locale/sl.js.map +1 -1
  207. package/lib/locale/sr-Cyrl.d.ts +11 -0
  208. package/lib/locale/sr-Cyrl.js +11 -0
  209. package/lib/locale/sr-Cyrl.js.map +1 -1
  210. package/lib/locale/sr-Latn.d.ts +11 -0
  211. package/lib/locale/sr-Latn.js +11 -0
  212. package/lib/locale/sr-Latn.js.map +1 -1
  213. package/lib/locale/sv.d.ts +11 -0
  214. package/lib/locale/sv.js +11 -0
  215. package/lib/locale/sv.js.map +1 -1
  216. package/lib/locale/th.d.ts +11 -0
  217. package/lib/locale/th.js +11 -0
  218. package/lib/locale/th.js.map +1 -1
  219. package/lib/locale/tr.d.ts +11 -0
  220. package/lib/locale/tr.js +11 -0
  221. package/lib/locale/tr.js.map +1 -1
  222. package/lib/locale/uk.d.ts +11 -0
  223. package/lib/locale/uk.js +11 -0
  224. package/lib/locale/uk.js.map +1 -1
  225. package/lib/locale/vi.d.ts +11 -0
  226. package/lib/locale/vi.js +11 -0
  227. package/lib/locale/vi.js.map +1 -1
  228. package/lib/locale/zh-Hans.d.ts +11 -0
  229. package/lib/locale/zh-Hans.js +11 -0
  230. package/lib/locale/zh-Hans.js.map +1 -1
  231. package/lib/locale/zh-Hant.d.ts +11 -0
  232. package/lib/locale/zh-Hant.js +11 -0
  233. package/lib/locale/zh-Hant.js.map +1 -1
  234. package/lib/util/easing.d.ts +22 -0
  235. package/lib/util/easing.js +53 -0
  236. package/lib/util/easing.js.map +1 -1
  237. package/lib/util/index.d.ts +1 -0
  238. package/lib/util/index.js +1 -0
  239. package/lib/util/index.js.map +1 -1
  240. package/lib/util/svg-arc-corners.d.ts +4 -0
  241. package/lib/util/svg-arc-corners.js +73 -0
  242. package/lib/util/svg-arc-corners.js.map +1 -0
  243. package/lib/util/timeUtils.d.ts +1 -0
  244. package/lib/util/timeUtils.js +4 -0
  245. package/lib/util/timeUtils.js.map +1 -0
  246. package/package.json +1 -1
@@ -0,0 +1,236 @@
1
+ import { Fragment as _Fragment, createVNode as _createVNode, withDirectives as _withDirectives, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, mergeProps as _mergeProps, normalizeStyle as _normalizeStyle } from "vue";
2
+ /* eslint-disable complexity */
3
+ // Components
4
+ import { VVideoVolume } from "./VVideoVolume.js";
5
+ import { VDefaultsProvider } from "../../components/VDefaultsProvider/VDefaultsProvider.js";
6
+ import { VSpacer } from "../../components/VGrid/VSpacer.js";
7
+ import { VSlider } from "../../components/VSlider/VSlider.js";
8
+ import { VIconBtn } from "../VIconBtn/VIconBtn.js"; // Composables
9
+ import { useLocale } from "../../composables/index.js";
10
+ import { useBackgroundColor } from "../../composables/color.js";
11
+ import { makeDensityProps, useDensity } from "../../composables/density.js";
12
+ import { makeElevationProps, useElevation } from "../../composables/elevation.js";
13
+ import { useProxiedModel } from "../../composables/proxiedModel.js";
14
+ import { makeThemeProps, provideTheme } from "../../composables/theme.js"; // Directives
15
+ import vTooltip from "../../directives/tooltip/index.js"; // Utilities
16
+ import { computed, shallowRef } from 'vue';
17
+ import { formatTime, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
18
+ const allowedVariants = ['hidden', 'default', 'tube', 'mini'];
19
+ export const makeVVideoControlsProps = propsFactory({
20
+ color: String,
21
+ backgroundColor: String,
22
+ trackColor: String,
23
+ playing: Boolean,
24
+ hidePlay: Boolean,
25
+ hideVolume: Boolean,
26
+ hideFullscreen: Boolean,
27
+ fullscreen: Boolean,
28
+ floating: Boolean,
29
+ splitTime: Boolean,
30
+ pills: Boolean,
31
+ detached: Boolean,
32
+ progress: {
33
+ type: Number,
34
+ default: 0
35
+ },
36
+ duration: {
37
+ type: Number,
38
+ default: 0
39
+ },
40
+ volume: [Number, String],
41
+ variant: {
42
+ type: String,
43
+ default: 'default',
44
+ validator: v => allowedVariants.includes(v)
45
+ },
46
+ volumeProps: Object,
47
+ ...makeDensityProps(),
48
+ ...makeElevationProps(),
49
+ ...makeThemeProps()
50
+ }, 'VVideoControls');
51
+ export const VVideoControls = genericComponent()({
52
+ name: 'VVideoControls',
53
+ directives: {
54
+ vTooltip: vTooltip
55
+ },
56
+ props: makeVVideoControlsProps(),
57
+ emits: {
58
+ 'update:playing': val => true,
59
+ 'update:progress': val => true,
60
+ 'update:volume': val => true,
61
+ skip: val => true,
62
+ 'click:fullscreen': () => true
63
+ },
64
+ setup(props, _ref) {
65
+ let {
66
+ emit,
67
+ slots
68
+ } = _ref;
69
+ const {
70
+ t
71
+ } = useLocale();
72
+ const {
73
+ themeClasses
74
+ } = provideTheme(props);
75
+ const {
76
+ densityClasses
77
+ } = useDensity(props);
78
+ const {
79
+ elevationClasses
80
+ } = useElevation(props);
81
+ const {
82
+ backgroundColorClasses,
83
+ backgroundColorStyles
84
+ } = useBackgroundColor(() => {
85
+ const fallbackBackground = props.detached ? 'surface' : undefined;
86
+ return props.backgroundColor ?? fallbackBackground;
87
+ });
88
+ const playing = useProxiedModel(props, 'playing');
89
+ const progress = useProxiedModel(props, 'progress');
90
+ const volume = useProxiedModel(props, 'volume', 0, v => Number(v ?? 0));
91
+ const lastVolume = shallowRef();
92
+ const currentTime = computed(() => {
93
+ const secondsElapsed = Math.round(props.progress / 100 * props.duration);
94
+ return {
95
+ elapsed: formatTime(secondsElapsed),
96
+ remaining: formatTime(props.duration - secondsElapsed),
97
+ total: formatTime(props.duration)
98
+ };
99
+ });
100
+ const labels = computed(() => {
101
+ const playIconLocaleKey = playing.value ? 'pause' : 'play';
102
+ const volumeIconLocaleKey = props.volumeProps?.inline ? volume.value ? 'mute' : 'unmute' : 'showVolume';
103
+ const fullscreenIconLocaleKey = props.fullscreen ? 'exitFullscreen' : 'enterFullscreen';
104
+ return {
105
+ seek: t('$vuetify.video.seek'),
106
+ volume: t('$vuetify.video.volume'),
107
+ playAction: t(`$vuetify.video.${playIconLocaleKey}`),
108
+ volumeAction: t(`$vuetify.video.${volumeIconLocaleKey}`),
109
+ fullscreenAction: t(`$vuetify.video.${fullscreenIconLocaleKey}`)
110
+ };
111
+ });
112
+ function play() {
113
+ playing.value = true;
114
+ }
115
+ function pause() {
116
+ playing.value = false;
117
+ }
118
+ function skipTo(v) {
119
+ progress.value = v;
120
+ }
121
+ function toggleMuted() {
122
+ if (volume.value) {
123
+ lastVolume.value = volume.value;
124
+ volume.value = 0;
125
+ } else {
126
+ volume.value = lastVolume.value ?? 100;
127
+ }
128
+ }
129
+ function toggleFullscreen() {
130
+ emit('click:fullscreen');
131
+ }
132
+ useRender(() => {
133
+ const sizes = props.pills ? [42, 36, 30] : [32, 28, 24];
134
+ const innerDefaults = {
135
+ VIconBtn: {
136
+ size: props.density === 'compact' ? sizes[2] : props.density === 'comfortable' ? sizes[1] : sizes[0],
137
+ iconSize: props.density === 'compact' ? 20 : props.density === 'comfortable' ? 24 : 26,
138
+ variant: 'text',
139
+ color: props.color
140
+ },
141
+ VSlider: {
142
+ thumbSize: props.variant === 'tube' ? 10 : 16,
143
+ hideDetails: true
144
+ }
145
+ };
146
+ const regularBtnSize = innerDefaults.VIconBtn.size;
147
+ const playBtnSize = props.pills ? regularBtnSize + 8 : regularBtnSize;
148
+ const pillClasses = ['v-video-control__pill', props.pills ? elevationClasses.value : []];
149
+ const slotProps = {
150
+ play,
151
+ pause,
152
+ playing: playing.value,
153
+ progress: progress.value,
154
+ currentTime: currentTime.value,
155
+ skipTo,
156
+ volume,
157
+ toggleMuted,
158
+ fullscreen: props.fullscreen,
159
+ toggleFullscreen,
160
+ labels: labels.value
161
+ };
162
+ return _createElementVNode("div", {
163
+ "class": _normalizeClass(['v-video-controls', `v-video-controls--variant-${props.variant}`, {
164
+ 'v-video-controls--pills': props.pills
165
+ }, {
166
+ 'v-video-controls--detached': props.detached
167
+ }, {
168
+ 'v-video-controls--floating': props.floating
169
+ }, {
170
+ 'v-video-controls--split-time': props.splitTime
171
+ }, backgroundColorClasses.value, props.detached && !props.pills ? elevationClasses.value : [], densityClasses.value, themeClasses.value]),
172
+ "style": _normalizeStyle([backgroundColorStyles.value, {
173
+ '--v-video-controls-pill-height': `${regularBtnSize}px`
174
+ }])
175
+ }, [_createVNode(VDefaultsProvider, {
176
+ "defaults": innerDefaults
177
+ }, {
178
+ default: () => [slots.default?.(slotProps) ?? _createElementVNode(_Fragment, null, [props.variant !== 'mini' && _createElementVNode(_Fragment, null, [!props.hidePlay && _createElementVNode("div", {
179
+ "class": _normalizeClass([pillClasses, 'v-video__action-play'])
180
+ }, [_withDirectives(_createVNode(VIconBtn, {
181
+ "icon": playing.value ? '$pause' : '$play',
182
+ "size": playBtnSize,
183
+ "aria-label": labels.value.playAction,
184
+ "onClick": () => playing.value = !playing.value
185
+ }, null), [[vTooltip, labels.value.playAction, 'top']])]), slots.prepend && _createElementVNode("div", {
186
+ "class": _normalizeClass(pillClasses)
187
+ }, [slots.prepend(slotProps)]), props.splitTime ? _createElementVNode("span", {
188
+ "class": _normalizeClass([pillClasses, 'v-video__time'])
189
+ }, [currentTime.value.elapsed]) : props.variant !== 'default' ? _createElementVNode("span", {
190
+ "class": _normalizeClass([pillClasses, 'v-video__time'])
191
+ }, [currentTime.value.elapsed, _createTextVNode(" / "), currentTime.value.total]) : '', _createVNode(VSlider, {
192
+ "modelValue": props.progress,
193
+ "noKeyboard": true,
194
+ "color": props.trackColor ?? props.color,
195
+ "trackColor": props.variant === 'tube' ? 'white' : undefined,
196
+ "class": "v-video__track",
197
+ "thumbLabel": "always",
198
+ "aria-label": labels.value.seek,
199
+ "onUpdate:modelValue": skipTo
200
+ }, {
201
+ 'thumb-label': () => currentTime.value.elapsed
202
+ }), props.variant === 'tube' && _createVNode(VSpacer, null, null), props.splitTime ? _createElementVNode("span", {
203
+ "class": _normalizeClass([pillClasses, 'v-video__time'])
204
+ }, [currentTime.value.remaining]) : '']), props.variant === 'mini' && _createElementVNode(_Fragment, null, [_createVNode(VSpacer, null, null), slots.prepend && _createElementVNode("div", {
205
+ "class": _normalizeClass(pillClasses)
206
+ }, [slots.prepend(slotProps)]), !props.hidePlay && _createElementVNode("div", {
207
+ "class": _normalizeClass([pillClasses, 'v-video__action-play'])
208
+ }, [_withDirectives(_createVNode(VIconBtn, {
209
+ "icon": playing.value ? '$pause' : '$play',
210
+ "size": playBtnSize,
211
+ "aria-label": labels.value.playAction,
212
+ "onClick": () => playing.value = !playing.value
213
+ }, null), [[vTooltip, labels.value.playAction, 'top']])])]), (!props.hideVolume || !props.hideFullscreen || slots.append) && _createElementVNode("div", {
214
+ "class": _normalizeClass(pillClasses)
215
+ }, [!props.hideVolume && _createVNode(VVideoVolume, _mergeProps({
216
+ "key": "volume-control",
217
+ "sliderProps": {
218
+ color: props.color
219
+ },
220
+ "modelValue": volume.value,
221
+ "label": labels.value.volumeAction,
222
+ "onUpdate:modelValue": v => volume.value = v,
223
+ "onClick": () => props.volumeProps?.inline && toggleMuted()
224
+ }, props.volumeProps), null), slots.append?.(slotProps), !props.hideFullscreen && _withDirectives(_createVNode(VIconBtn, {
225
+ "icon": props.fullscreen ? '$fullscreenExit' : '$fullscreen',
226
+ "aria-label": labels.value.fullscreenAction,
227
+ "onClick": toggleFullscreen
228
+ }, null), [[vTooltip, labels.value.fullscreenAction, 'top']])]), props.variant === 'mini' && _createVNode(VSpacer, null, null)])]
229
+ })]);
230
+ });
231
+ return {
232
+ toggleMuted
233
+ };
234
+ }
235
+ });
236
+ //# sourceMappingURL=VVideoControls.js.map
@@ -0,0 +1 @@
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":[]}