@vuetify/nightly 3.9.2-master.2025-07-23 → 3.9.2-master.2025-07-24
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.
- package/CHANGELOG.md +11 -3
- package/dist/_component-variables-labs.sass +2 -1
- package/dist/json/attributes.json +2563 -2299
- package/dist/json/importMap-labs.json +24 -12
- package/dist/json/importMap.json +174 -174
- package/dist/json/tags.json +81 -0
- package/dist/json/web-types.json +5100 -3978
- package/dist/vuetify-labs.cjs +751 -15
- package/dist/vuetify-labs.css +5171 -4837
- package/dist/vuetify-labs.d.ts +6526 -845
- package/dist/vuetify-labs.esm.js +752 -16
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +751 -15
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +37 -9
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3169 -3169
- package/dist/vuetify.d.ts +88 -68
- package/dist/vuetify.esm.js +37 -9
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +37 -9
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +264 -263
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VBottomSheet/VBottomSheet.d.ts +6 -6
- package/lib/components/VDialog/VDialog.d.ts +6 -6
- package/lib/components/VOverlay/VOverlay.js +1 -0
- package/lib/components/VOverlay/VOverlay.js.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.d.ts +1 -0
- package/lib/components/VOverlay/scrollStrategies.js +6 -4
- package/lib/components/VOverlay/scrollStrategies.js.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +13 -0
- package/lib/components/VSlider/VSlider.d.ts +13 -0
- package/lib/components/VSlider/VSlider.js +3 -1
- package/lib/components/VSlider/VSlider.js.map +1 -1
- package/lib/components/VSlider/VSliderThumb.d.ts +13 -0
- package/lib/components/VSlider/VSliderThumb.js +2 -0
- package/lib/components/VSlider/VSliderThumb.js.map +1 -1
- package/lib/components/VSlider/slider.d.ts +6 -0
- package/lib/components/VSlider/slider.js +2 -0
- package/lib/components/VSlider/slider.js.map +1 -1
- package/lib/components/index.js +1 -1
- package/lib/components/index.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +60 -56
- package/lib/framework.js +1 -1
- package/lib/iconsets/fa.js +9 -1
- package/lib/iconsets/fa.js.map +1 -1
- package/lib/iconsets/fa4.js +9 -1
- package/lib/iconsets/fa4.js.map +1 -1
- package/lib/iconsets/md.js +9 -1
- package/lib/iconsets/md.js.map +1 -1
- package/lib/iconsets/mdi-svg.js +9 -1
- package/lib/iconsets/mdi-svg.js.map +1 -1
- package/lib/iconsets/mdi.js +9 -1
- package/lib/iconsets/mdi.js.map +1 -1
- package/lib/labs/VVideo/VVideo.css +319 -0
- package/lib/labs/VVideo/VVideo.d.ts +6932 -0
- package/lib/labs/VVideo/VVideo.js +424 -0
- package/lib/labs/VVideo/VVideo.js.map +1 -0
- package/lib/labs/VVideo/VVideo.sass +301 -0
- package/lib/labs/VVideo/VVideoControls.d.ts +3524 -0
- package/lib/labs/VVideo/VVideoControls.js +232 -0
- package/lib/labs/VVideo/VVideoControls.js.map +1 -0
- package/lib/labs/VVideo/VVideoVolume.d.ts +3088 -0
- package/lib/labs/VVideo/VVideoVolume.js +90 -0
- package/lib/labs/VVideo/VVideoVolume.js.map +1 -0
- package/lib/labs/VVideo/_variables.scss +58 -0
- package/lib/labs/VVideo/index.d.ts +3 -0
- package/lib/labs/VVideo/index.js +4 -0
- package/lib/labs/VVideo/index.js.map +1 -0
- package/lib/labs/components.d.ts +1 -0
- package/lib/labs/components.js +1 -0
- package/lib/labs/components.js.map +1 -1
- package/lib/locale/af.d.ts +11 -0
- package/lib/locale/af.js +11 -0
- package/lib/locale/af.js.map +1 -1
- package/lib/locale/ar.d.ts +11 -0
- package/lib/locale/ar.js +11 -0
- package/lib/locale/ar.js.map +1 -1
- package/lib/locale/az.d.ts +11 -0
- package/lib/locale/az.js +11 -0
- package/lib/locale/az.js.map +1 -1
- package/lib/locale/bg.d.ts +11 -0
- package/lib/locale/bg.js +11 -0
- package/lib/locale/bg.js.map +1 -1
- package/lib/locale/ca.d.ts +11 -0
- package/lib/locale/ca.js +11 -0
- package/lib/locale/ca.js.map +1 -1
- package/lib/locale/ckb.d.ts +11 -0
- package/lib/locale/ckb.js +11 -0
- package/lib/locale/ckb.js.map +1 -1
- package/lib/locale/cs.d.ts +11 -0
- package/lib/locale/cs.js +11 -0
- package/lib/locale/cs.js.map +1 -1
- package/lib/locale/da.d.ts +11 -0
- package/lib/locale/da.js +11 -0
- package/lib/locale/da.js.map +1 -1
- package/lib/locale/de.d.ts +11 -0
- package/lib/locale/de.js +11 -0
- package/lib/locale/de.js.map +1 -1
- package/lib/locale/el.d.ts +11 -0
- package/lib/locale/el.js +11 -0
- package/lib/locale/el.js.map +1 -1
- package/lib/locale/en.d.ts +11 -0
- package/lib/locale/en.js +11 -0
- package/lib/locale/en.js.map +1 -1
- package/lib/locale/es.d.ts +11 -0
- package/lib/locale/es.js +11 -0
- package/lib/locale/es.js.map +1 -1
- package/lib/locale/et.d.ts +11 -0
- package/lib/locale/et.js +11 -0
- package/lib/locale/et.js.map +1 -1
- package/lib/locale/fa.d.ts +11 -0
- package/lib/locale/fa.js +11 -0
- package/lib/locale/fa.js.map +1 -1
- package/lib/locale/fi.d.ts +11 -0
- package/lib/locale/fi.js +11 -0
- package/lib/locale/fi.js.map +1 -1
- package/lib/locale/fr.d.ts +11 -0
- package/lib/locale/fr.js +11 -0
- package/lib/locale/fr.js.map +1 -1
- package/lib/locale/he.d.ts +11 -0
- package/lib/locale/he.js +11 -0
- package/lib/locale/he.js.map +1 -1
- package/lib/locale/hr.d.ts +11 -0
- package/lib/locale/hr.js +11 -0
- package/lib/locale/hr.js.map +1 -1
- package/lib/locale/hu.d.ts +11 -0
- package/lib/locale/hu.js +11 -0
- package/lib/locale/hu.js.map +1 -1
- package/lib/locale/id.d.ts +11 -0
- package/lib/locale/id.js +11 -0
- package/lib/locale/id.js.map +1 -1
- package/lib/locale/it.d.ts +11 -0
- package/lib/locale/it.js +11 -0
- package/lib/locale/it.js.map +1 -1
- package/lib/locale/ja.d.ts +11 -0
- package/lib/locale/ja.js +11 -0
- package/lib/locale/ja.js.map +1 -1
- package/lib/locale/km.d.ts +11 -0
- package/lib/locale/km.js +11 -0
- package/lib/locale/km.js.map +1 -1
- package/lib/locale/ko.d.ts +11 -0
- package/lib/locale/ko.js +11 -0
- package/lib/locale/ko.js.map +1 -1
- package/lib/locale/lt.d.ts +11 -0
- package/lib/locale/lt.js +11 -0
- package/lib/locale/lt.js.map +1 -1
- package/lib/locale/lv.d.ts +11 -0
- package/lib/locale/lv.js +11 -0
- package/lib/locale/lv.js.map +1 -1
- package/lib/locale/nl.d.ts +11 -0
- package/lib/locale/nl.js +11 -0
- package/lib/locale/nl.js.map +1 -1
- package/lib/locale/no.d.ts +11 -0
- package/lib/locale/no.js +11 -0
- package/lib/locale/no.js.map +1 -1
- package/lib/locale/pl.d.ts +11 -0
- package/lib/locale/pl.js +11 -0
- package/lib/locale/pl.js.map +1 -1
- package/lib/locale/pt.d.ts +11 -0
- package/lib/locale/pt.js +11 -0
- package/lib/locale/pt.js.map +1 -1
- package/lib/locale/ro.d.ts +11 -0
- package/lib/locale/ro.js +11 -0
- package/lib/locale/ro.js.map +1 -1
- package/lib/locale/ru.d.ts +11 -0
- package/lib/locale/ru.js +11 -0
- package/lib/locale/ru.js.map +1 -1
- package/lib/locale/sk.d.ts +11 -0
- package/lib/locale/sk.js +11 -0
- package/lib/locale/sk.js.map +1 -1
- package/lib/locale/sl.d.ts +11 -0
- package/lib/locale/sl.js +11 -0
- package/lib/locale/sl.js.map +1 -1
- package/lib/locale/sr-Cyrl.d.ts +11 -0
- package/lib/locale/sr-Cyrl.js +11 -0
- package/lib/locale/sr-Cyrl.js.map +1 -1
- package/lib/locale/sr-Latn.d.ts +11 -0
- package/lib/locale/sr-Latn.js +11 -0
- package/lib/locale/sr-Latn.js.map +1 -1
- package/lib/locale/sv.d.ts +11 -0
- package/lib/locale/sv.js +11 -0
- package/lib/locale/sv.js.map +1 -1
- package/lib/locale/th.d.ts +11 -0
- package/lib/locale/th.js +11 -0
- package/lib/locale/th.js.map +1 -1
- package/lib/locale/tr.d.ts +11 -0
- package/lib/locale/tr.js +11 -0
- package/lib/locale/tr.js.map +1 -1
- package/lib/locale/uk.d.ts +11 -0
- package/lib/locale/uk.js +11 -0
- package/lib/locale/uk.js.map +1 -1
- package/lib/locale/vi.d.ts +11 -0
- package/lib/locale/vi.js +11 -0
- package/lib/locale/vi.js.map +1 -1
- package/lib/locale/zh-Hans.d.ts +11 -0
- package/lib/locale/zh-Hans.js +11 -0
- package/lib/locale/zh-Hans.js.map +1 -1
- package/lib/locale/zh-Hant.d.ts +11 -0
- package/lib/locale/zh-Hant.js +11 -0
- package/lib/locale/zh-Hant.js.map +1 -1
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.js +1 -0
- package/lib/util/index.js.map +1 -1
- package/lib/util/timeUtils.d.ts +1 -0
- package/lib/util/timeUtils.js +4 -0
- package/lib/util/timeUtils.js.map +1 -0
- package/package.json +1 -1
@@ -0,0 +1,232 @@
|
|
1
|
+
import { Fragment as _Fragment, resolveDirective as _resolveDirective, 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"; // Utilities
|
15
|
+
import { computed, shallowRef } from 'vue';
|
16
|
+
import { formatTime, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
17
|
+
const allowedVariants = ['hidden', 'default', 'tube', 'mini'];
|
18
|
+
export const makeVVideoControlsProps = propsFactory({
|
19
|
+
color: String,
|
20
|
+
backgroundColor: String,
|
21
|
+
trackColor: String,
|
22
|
+
playing: Boolean,
|
23
|
+
hidePlay: Boolean,
|
24
|
+
hideVolume: Boolean,
|
25
|
+
hideFullscreen: Boolean,
|
26
|
+
fullscreen: Boolean,
|
27
|
+
floating: Boolean,
|
28
|
+
splitTime: Boolean,
|
29
|
+
pills: Boolean,
|
30
|
+
detached: Boolean,
|
31
|
+
progress: {
|
32
|
+
type: Number,
|
33
|
+
default: 0
|
34
|
+
},
|
35
|
+
duration: {
|
36
|
+
type: Number,
|
37
|
+
default: 0
|
38
|
+
},
|
39
|
+
volume: [Number, String],
|
40
|
+
variant: {
|
41
|
+
type: String,
|
42
|
+
default: 'default',
|
43
|
+
validator: v => allowedVariants.includes(v)
|
44
|
+
},
|
45
|
+
volumeProps: Object,
|
46
|
+
...makeDensityProps(),
|
47
|
+
...makeElevationProps(),
|
48
|
+
...makeThemeProps()
|
49
|
+
}, 'VVideoControls');
|
50
|
+
export const VVideoControls = genericComponent()({
|
51
|
+
name: 'VVideoControls',
|
52
|
+
props: makeVVideoControlsProps(),
|
53
|
+
emits: {
|
54
|
+
'update:playing': val => true,
|
55
|
+
'update:progress': val => true,
|
56
|
+
'update:volume': val => true,
|
57
|
+
skip: val => true,
|
58
|
+
'click:fullscreen': () => true
|
59
|
+
},
|
60
|
+
setup(props, _ref) {
|
61
|
+
let {
|
62
|
+
emit,
|
63
|
+
slots
|
64
|
+
} = _ref;
|
65
|
+
const {
|
66
|
+
t
|
67
|
+
} = useLocale();
|
68
|
+
const {
|
69
|
+
themeClasses
|
70
|
+
} = provideTheme(props);
|
71
|
+
const {
|
72
|
+
densityClasses
|
73
|
+
} = useDensity(props);
|
74
|
+
const {
|
75
|
+
elevationClasses
|
76
|
+
} = useElevation(props);
|
77
|
+
const {
|
78
|
+
backgroundColorClasses,
|
79
|
+
backgroundColorStyles
|
80
|
+
} = useBackgroundColor(() => {
|
81
|
+
const fallbackBackground = props.detached ? 'surface' : undefined;
|
82
|
+
return props.backgroundColor ?? fallbackBackground;
|
83
|
+
});
|
84
|
+
const playing = useProxiedModel(props, 'playing');
|
85
|
+
const progress = useProxiedModel(props, 'progress');
|
86
|
+
const volume = useProxiedModel(props, 'volume', 0, v => Number(v ?? 0));
|
87
|
+
const lastVolume = shallowRef();
|
88
|
+
const currentTime = computed(() => {
|
89
|
+
const secondsElapsed = Math.round(props.progress / 100 * props.duration);
|
90
|
+
return {
|
91
|
+
elapsed: formatTime(secondsElapsed),
|
92
|
+
remaining: formatTime(props.duration - secondsElapsed),
|
93
|
+
total: formatTime(props.duration)
|
94
|
+
};
|
95
|
+
});
|
96
|
+
const labels = computed(() => {
|
97
|
+
const playIconLocaleKey = playing.value ? 'pause' : 'play';
|
98
|
+
const volumeIconLocaleKey = props.volumeProps?.inline ? volume.value ? 'mute' : 'unmute' : 'showVolume';
|
99
|
+
const fullscreenIconLocaleKey = props.fullscreen ? 'exitFullscreen' : 'enterFullscreen';
|
100
|
+
return {
|
101
|
+
seek: t('$vuetify.video.seek'),
|
102
|
+
volume: t('$vuetify.video.volume'),
|
103
|
+
playAction: t(`$vuetify.video.${playIconLocaleKey}`),
|
104
|
+
volumeAction: t(`$vuetify.video.${volumeIconLocaleKey}`),
|
105
|
+
fullscreenAction: t(`$vuetify.video.${fullscreenIconLocaleKey}`)
|
106
|
+
};
|
107
|
+
});
|
108
|
+
function play() {
|
109
|
+
playing.value = true;
|
110
|
+
}
|
111
|
+
function pause() {
|
112
|
+
playing.value = false;
|
113
|
+
}
|
114
|
+
function skipTo(v) {
|
115
|
+
progress.value = v;
|
116
|
+
}
|
117
|
+
function toggleMuted() {
|
118
|
+
if (volume.value) {
|
119
|
+
lastVolume.value = volume.value;
|
120
|
+
volume.value = 0;
|
121
|
+
} else {
|
122
|
+
volume.value = lastVolume.value ?? 100;
|
123
|
+
}
|
124
|
+
}
|
125
|
+
function toggleFullscreen() {
|
126
|
+
emit('click:fullscreen');
|
127
|
+
}
|
128
|
+
useRender(() => {
|
129
|
+
const sizes = props.pills ? [42, 36, 30] : [32, 28, 24];
|
130
|
+
const innerDefaults = {
|
131
|
+
VIconBtn: {
|
132
|
+
size: props.density === 'compact' ? sizes[2] : props.density === 'comfortable' ? sizes[1] : sizes[0],
|
133
|
+
iconSize: props.density === 'compact' ? 20 : props.density === 'comfortable' ? 24 : 26,
|
134
|
+
variant: 'text',
|
135
|
+
color: props.color
|
136
|
+
},
|
137
|
+
VSlider: {
|
138
|
+
thumbSize: props.variant === 'tube' ? 10 : 16,
|
139
|
+
hideDetails: true
|
140
|
+
}
|
141
|
+
};
|
142
|
+
const regularBtnSize = innerDefaults.VIconBtn.size;
|
143
|
+
const playBtnSize = props.pills ? regularBtnSize + 8 : regularBtnSize;
|
144
|
+
const pillClasses = ['v-video-control__pill', props.pills ? elevationClasses.value : []];
|
145
|
+
const slotProps = {
|
146
|
+
play,
|
147
|
+
pause,
|
148
|
+
playing: playing.value,
|
149
|
+
progress: progress.value,
|
150
|
+
currentTime: currentTime.value,
|
151
|
+
skipTo,
|
152
|
+
volume,
|
153
|
+
toggleMuted,
|
154
|
+
fullscreen: props.fullscreen,
|
155
|
+
toggleFullscreen,
|
156
|
+
labels: labels.value
|
157
|
+
};
|
158
|
+
return _createElementVNode("div", {
|
159
|
+
"class": _normalizeClass(['v-video-controls', `v-video-controls--variant-${props.variant}`, {
|
160
|
+
'v-video-controls--pills': props.pills
|
161
|
+
}, {
|
162
|
+
'v-video-controls--detached': props.detached
|
163
|
+
}, {
|
164
|
+
'v-video-controls--floating': props.floating
|
165
|
+
}, {
|
166
|
+
'v-video-controls--split-time': props.splitTime
|
167
|
+
}, backgroundColorClasses.value, props.detached && !props.pills ? elevationClasses.value : [], densityClasses.value, themeClasses.value]),
|
168
|
+
"style": _normalizeStyle([backgroundColorStyles.value, {
|
169
|
+
'--v-video-controls-pill-height': `${regularBtnSize}px`
|
170
|
+
}])
|
171
|
+
}, [_createVNode(VDefaultsProvider, {
|
172
|
+
"defaults": innerDefaults
|
173
|
+
}, {
|
174
|
+
default: () => [slots.default?.(slotProps) ?? _createElementVNode(_Fragment, null, [props.variant !== 'mini' && _createElementVNode(_Fragment, null, [!props.hidePlay && _createElementVNode("div", {
|
175
|
+
"class": _normalizeClass([pillClasses, 'v-video__action-play'])
|
176
|
+
}, [_withDirectives(_createVNode(VIconBtn, {
|
177
|
+
"icon": playing.value ? '$pause' : '$play',
|
178
|
+
"size": playBtnSize,
|
179
|
+
"aria-label": labels.value.playAction,
|
180
|
+
"onClick": () => playing.value = !playing.value
|
181
|
+
}, null), [[_resolveDirective("tooltip"), labels.value.playAction, 'top']])]), slots.prepend && _createElementVNode("div", {
|
182
|
+
"class": _normalizeClass(pillClasses)
|
183
|
+
}, [slots.prepend(slotProps)]), props.splitTime ? _createElementVNode("span", {
|
184
|
+
"class": _normalizeClass([pillClasses, 'v-video__time'])
|
185
|
+
}, [currentTime.value.elapsed]) : props.variant !== 'default' ? _createElementVNode("span", {
|
186
|
+
"class": _normalizeClass([pillClasses, 'v-video__time'])
|
187
|
+
}, [currentTime.value.elapsed, _createTextVNode(" / "), currentTime.value.total]) : '', _createVNode(VSlider, {
|
188
|
+
"modelValue": props.progress,
|
189
|
+
"noKeyboard": true,
|
190
|
+
"color": props.trackColor ?? props.color,
|
191
|
+
"trackColor": props.variant === 'tube' ? 'white' : undefined,
|
192
|
+
"class": "v-video__track",
|
193
|
+
"thumbLabel": "always",
|
194
|
+
"aria-label": labels.value.seek,
|
195
|
+
"onUpdate:modelValue": skipTo
|
196
|
+
}, {
|
197
|
+
'thumb-label': () => currentTime.value.elapsed
|
198
|
+
}), props.variant === 'tube' && _createVNode(VSpacer, null, null), props.splitTime ? _createElementVNode("span", {
|
199
|
+
"class": _normalizeClass([pillClasses, 'v-video__time'])
|
200
|
+
}, [currentTime.value.remaining]) : '']), props.variant === 'mini' && _createElementVNode(_Fragment, null, [_createVNode(VSpacer, null, null), slots.prepend && _createElementVNode("div", {
|
201
|
+
"class": _normalizeClass(pillClasses)
|
202
|
+
}, [slots.prepend(slotProps)]), !props.hidePlay && _createElementVNode("div", {
|
203
|
+
"class": _normalizeClass([pillClasses, 'v-video__action-play'])
|
204
|
+
}, [_withDirectives(_createVNode(VIconBtn, {
|
205
|
+
"icon": playing.value ? '$pause' : '$play',
|
206
|
+
"size": playBtnSize,
|
207
|
+
"aria-label": labels.value.playAction,
|
208
|
+
"onClick": () => playing.value = !playing.value
|
209
|
+
}, null), [[_resolveDirective("tooltip"), labels.value.playAction, 'top']])])]), (!props.hideVolume || !props.hideFullscreen || slots.append) && _createElementVNode("div", {
|
210
|
+
"class": _normalizeClass(pillClasses)
|
211
|
+
}, [!props.hideVolume && _createVNode(VVideoVolume, _mergeProps({
|
212
|
+
"key": "volume-control",
|
213
|
+
"sliderProps": {
|
214
|
+
color: props.color
|
215
|
+
},
|
216
|
+
"modelValue": volume.value,
|
217
|
+
"label": labels.value.volumeAction,
|
218
|
+
"onUpdate:modelValue": v => volume.value = v,
|
219
|
+
"onClick": () => props.volumeProps?.inline && toggleMuted()
|
220
|
+
}, props.volumeProps), null), slots.append?.(slotProps), !props.hideFullscreen && _withDirectives(_createVNode(VIconBtn, {
|
221
|
+
"icon": props.fullscreen ? '$fullscreenExit' : '$fullscreen',
|
222
|
+
"aria-label": labels.value.fullscreenAction,
|
223
|
+
"onClick": toggleFullscreen
|
224
|
+
}, null), [[_resolveDirective("tooltip"), labels.value.fullscreenAction, 'top']])]), props.variant === 'mini' && _createVNode(VSpacer, null, null)])]
|
225
|
+
})]);
|
226
|
+
});
|
227
|
+
return {
|
228
|
+
toggleMuted
|
229
|
+
};
|
230
|
+
}
|
231
|
+
});
|
232
|
+
//# 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","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":";AAAA;AAEA;AAAA,SACSA,YAAY;AAAA,SACZC,iBAAiB;AAAA,SACjBC,OAAO;AAAA,SACPC,OAAO;AAAA,SACPC,QAAQ,mCAEjB;AAAA,SACSC,SAAS;AAAA,SACTC,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,eAAe;AAAA,SACfC,cAAc,EAAEC,YAAY,sCAErC;AACA,SAASC,QAAQ,EAAEC,UAAU,QAAQ,KAAK;AAAA,SACjCC,UAAU,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,+BAE9D;AAsBA,MAAMC,eAAe,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAU;AAGtE,OAAO,MAAMC,uBAAuB,GAAGH,YAAY,CAAC;EAClDI,KAAK,EAAEC,MAAM;EACbC,eAAe,EAAED,MAAM;EACvBE,UAAU,EAAEF,MAAM;EAClBG,OAAO,EAAEC,OAAO;EAChBC,QAAQ,EAAED,OAAO;EACjBE,UAAU,EAAEF,OAAO;EACnBG,cAAc,EAAEH,OAAO;EACvBI,UAAU,EAAEJ,OAAO;EACnBK,QAAQ,EAAEL,OAAO;EACjBM,SAAS,EAAEN,OAAO;EAClBO,KAAK,EAAEP,OAAO;EACdQ,QAAQ,EAAER,OAAO;EACjBS,QAAQ,EAAE;IACRC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRH,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDE,MAAM,EAAE,CAACH,MAAM,EAAEf,MAAM,CAAC;EACxBmB,OAAO,EAAE;IACPL,IAAI,EAAEd,MAAyC;IAC/CgB,OAAO,EAAE,SAAS;IAClBI,SAAS,EAAGC,CAAM,IAAKxB,eAAe,CAACyB,QAAQ,CAACD,CAAC;EACnD,CAAC;EACDE,WAAW,EAAEC,MAAsG;EAEnH,GAAGxC,gBAAgB,CAAC,CAAC;EACrB,GAAGE,kBAAkB,CAAC,CAAC;EACvB,GAAGG,cAAc,CAAC;AACpB,CAAC,EAAE,gBAAgB,CAAC;AAEpB,OAAO,MAAMoC,cAAc,GAAG/B,gBAAgB,CAAsB,CAAC,CAAC;EACpEgC,IAAI,EAAE,gBAAgB;EAEtBC,KAAK,EAAE7B,uBAAuB,CAAC,CAAC;EAEhC8B,KAAK,EAAE;IACL,gBAAgB,EAAGC,GAAY,IAAK,IAAI;IACxC,iBAAiB,EAAGA,GAAW,IAAK,IAAI;IACxC,eAAe,EAAGA,GAAW,IAAK,IAAI;IACtCC,IAAI,EAAGD,GAAW,IAAK,IAAI;IAC3B,kBAAkB,EAAEE,CAAA,KAAM;EAC5B,CAAC;EAEDC,KAAKA,CAAEL,KAAK,EAAAM,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG;IAAE,CAAC,GAAGtD,SAAS,CAAC,CAAC;IACzB,MAAM;MAAEuD;IAAa,CAAC,GAAG/C,YAAY,CAACqC,KAAK,CAAC;IAC5C,MAAM;MAAEW;IAAe,CAAC,GAAGrD,UAAU,CAAC0C,KAAK,CAAC;IAC5C,MAAM;MAAEY;IAAiB,CAAC,GAAGpD,YAAY,CAACwC,KAAK,CAAC;IAEhD,MAAM;MAAEa,sBAAsB;MAAEC;IAAsB,CAAC,GAAG1D,kBAAkB,CAAC,MAAM;MACjF,MAAM2D,kBAAkB,GAAGf,KAAK,CAACf,QAAQ,GAAG,SAAS,GAAG+B,SAAS;MACjE,OAAOhB,KAAK,CAAC1B,eAAe,IAAIyC,kBAAkB;IACpD,CAAC,CAAC;IAEF,MAAMvC,OAAO,GAAGf,eAAe,CAACuC,KAAK,EAAE,SAAS,CAAC;IACjD,MAAMd,QAAQ,GAAGzB,eAAe,CAACuC,KAAK,EAAE,UAAU,CAAC;IACnD,MAAMT,MAAM,GAAG9B,eAAe,CAACuC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAGN,CAAmB,IAAKN,MAAM,CAACM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,MAAMuB,UAAU,GAAGpD,UAAU,CAAS,CAAC;IAEvC,MAAMqD,WAAW,GAAGtD,QAAQ,CAAC,MAAM;MACjC,MAAMuD,cAAc,GAAGC,IAAI,CAACC,KAAK,CAACrB,KAAK,CAACd,QAAQ,GAAG,GAAG,GAAGc,KAAK,CAACV,QAAQ,CAAC;MACxE,OAAO;QACLgC,OAAO,EAAExD,UAAU,CAACqD,cAAc,CAAC;QACnCI,SAAS,EAAEzD,UAAU,CAACkC,KAAK,CAACV,QAAQ,GAAG6B,cAAc,CAAC;QACtDK,KAAK,EAAE1D,UAAU,CAACkC,KAAK,CAACV,QAAQ;MAClC,CAAC;IACH,CAAC,CAAC;IAEF,MAAMmC,MAAM,GAAG7D,QAAQ,CAAC,MAAM;MAC5B,MAAM8D,iBAAiB,GAAGlD,OAAO,CAACmD,KAAK,GAAG,OAAO,GAAG,MAAM;MAC1D,MAAMC,mBAAmB,GAAG5B,KAAK,CAACJ,WAAW,EAAEiC,MAAM,GAAItC,MAAM,CAACoC,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAI,YAAY;MACzG,MAAMG,uBAAuB,GAAG9B,KAAK,CAACnB,UAAU,GAAG,gBAAgB,GAAG,iBAAiB;MACvF,OAAO;QACLkD,IAAI,EAAEtB,CAAC,CAAC,qBAAqB,CAAC;QAC9BlB,MAAM,EAAEkB,CAAC,CAAC,uBAAuB,CAAC;QAClCuB,UAAU,EAAEvB,CAAC,CAAC,kBAAkBiB,iBAAiB,EAAE,CAAC;QACpDO,YAAY,EAAExB,CAAC,CAAC,kBAAkBmB,mBAAmB,EAAE,CAAC;QACxDM,gBAAgB,EAAEzB,CAAC,CAAC,kBAAkBqB,uBAAuB,EAAE;MACjE,CAAC;IACH,CAAC,CAAC;IAEF,SAASK,IAAIA,CAAA,EAAI;MACf3D,OAAO,CAACmD,KAAK,GAAG,IAAI;IACtB;IAEA,SAASS,KAAKA,CAAA,EAAI;MAChB5D,OAAO,CAACmD,KAAK,GAAG,KAAK;IACvB;IAEA,SAASU,MAAMA,CAAE3C,CAAS,EAAE;MAC1BR,QAAQ,CAACyC,KAAK,GAAGjC,CAAC;IACpB;IAEA,SAAS4C,WAAWA,CAAA,EAAI;MACtB,IAAI/C,MAAM,CAACoC,KAAK,EAAE;QAChBV,UAAU,CAACU,KAAK,GAAGpC,MAAM,CAACoC,KAAK;QAC/BpC,MAAM,CAACoC,KAAK,GAAG,CAAC;MAClB,CAAC,MAAM;QACLpC,MAAM,CAACoC,KAAK,GAAGV,UAAU,CAACU,KAAK,IAAI,GAAG;MACxC;IACF;IAEA,SAASY,gBAAgBA,CAAA,EAAI;MAC3BhC,IAAI,CAAC,kBAAkB,CAAC;IAC1B;IAEAtC,SAAS,CAAC,MAAM;MACd,MAAMuE,KAAK,GAAGxC,KAAK,CAAChB,KAAK,GACrB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GACZ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;MAEhB,MAAMyD,aAAa,GAAG;QACpBvF,QAAQ,EAAE;UACRwF,IAAI,EAAE1C,KAAK,CAAC2C,OAAO,KAAK,SAAS,GAAGH,KAAK,CAAC,CAAC,CAAC,GAC1CxC,KAAK,CAAC2C,OAAO,KAAK,aAAa,GAAGH,KAAK,CAAC,CAAC,CAAC,GAC1CA,KAAK,CAAC,CAAC,CAAC;UACVI,QAAQ,EAAE5C,KAAK,CAAC2C,OAAO,KAAK,SAAS,GAAG,EAAE,GACxC3C,KAAK,CAAC2C,OAAO,KAAK,aAAa,GAAG,EAAE,GACpC,EAAE;UACJnD,OAAO,EAAE,MAAM;UACfpB,KAAK,EAAE4B,KAAK,CAAC5B;QACf,CAAC;QACDnB,OAAO,EAAE;UACP4F,SAAS,EAAE7C,KAAK,CAACR,OAAO,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;UAC7CsD,WAAW,EAAE;QACf;MACF,CAAC;MAED,MAAMC,cAAc,GAAGN,aAAa,CAACvF,QAAQ,CAACwF,IAAI;MAClD,MAAMM,WAAW,GAAGhD,KAAK,CAAChB,KAAK,GAAI+D,cAAc,GAAG,CAAC,GAAIA,cAAc;MAEvE,MAAME,WAAW,GAAG,CAClB,uBAAuB,EACvBjD,KAAK,CAAChB,KAAK,GAAG4B,gBAAgB,CAACe,KAAK,GAAG,EAAE,CAC1C;MAED,MAAMuB,SAAS,GAAG;QAChBf,IAAI;QACJC,KAAK;QACL5D,OAAO,EAAEA,OAAO,CAACmD,KAAK;QACtBzC,QAAQ,EAAEA,QAAQ,CAACyC,KAAK;QACxBT,WAAW,EAAEA,WAAW,CAACS,KAAK;QAC9BU,MAAM;QACN9C,MAAM;QACN+C,WAAW;QACXzD,UAAU,EAAEmB,KAAK,CAACnB,UAAU;QAC5B0D,gBAAgB;QAChBd,MAAM,EAAEA,MAAM,CAACE;MACjB,CAAC;MAED,OAAAwB,mBAAA;QAAA,SAAAC,eAAA,CAEW,CACL,kBAAkB,EAClB,6BAA6BpD,KAAK,CAACR,OAAO,EAAE,EAC5C;UAAE,yBAAyB,EAAEQ,KAAK,CAAChB;QAAM,CAAC,EAC1C;UAAE,4BAA4B,EAAEgB,KAAK,CAACf;QAAS,CAAC,EAChD;UAAE,4BAA4B,EAAEe,KAAK,CAAClB;QAAS,CAAC,EAChD;UAAE,8BAA8B,EAAEkB,KAAK,CAACjB;QAAU,CAAC,EACnD8B,sBAAsB,CAACc,KAAK,EAC5B3B,KAAK,CAACf,QAAQ,IAAI,CAACe,KAAK,CAAChB,KAAK,GAAG4B,gBAAgB,CAACe,KAAK,GAAG,EAAE,EAC5DhB,cAAc,CAACgB,KAAK,EACpBjB,YAAY,CAACiB,KAAK,CACnB;QAAA,SAAA0B,eAAA,CACM,CACLvC,qBAAqB,CAACa,KAAK,EAC3B;UAAE,gCAAgC,EAAE,GAAGoB,cAAc;QAAK,CAAC,CAC5D;MAAA,IAAAO,YAAA,CAAAvG,iBAAA;QAAA,YAE6B0F;MAAa;QAAApD,OAAA,EAAAA,CAAA,MACvCmB,KAAK,CAACnB,OAAO,GAAG6D,SAAS,CAAC,IAAAC,mBAAA,CAAAI,SAAA,SAEtBvD,KAAK,CAACR,OAAO,KAAK,MAAM,IAAA2D,mBAAA,CAAAI,SAAA,SAEpB,CAACvD,KAAK,CAACtB,QAAQ,IAAAyE,mBAAA;UAAA,SAAAC,eAAA,CACH,CAACH,WAAW,EAAE,sBAAsB,CAAC;QAAA,IAAAO,eAAA,CAAAF,YAAA,CAAApG,QAAA;UAAA,QAEtCsB,OAAO,CAACmD,KAAK,GAAG,QAAQ,GAAG,OAAO;UAAA,QAClCqB,WAAW;UAAA,cACLvB,MAAM,CAACE,KAAK,CAACK,UAAU;UAAA,WAE1ByB,CAAA,KAAMjF,OAAO,CAACmD,KAAK,GAAG,CAACnD,OAAO,CAACmD;QAAK,YAAA+B,iBAAA,aADlCjC,MAAM,CAACE,KAAK,CAACK,UAAU,EAAE,KAAK,KAI/C,EACCxB,KAAK,CAACmD,OAAO,IAAAR,mBAAA;UAAA,SAAAC,eAAA,CACAH,WAAW;QAAA,IACpBzC,KAAK,CAACmD,OAAO,CAACT,SAAS,CAAC,EAE7B,EACClD,KAAK,CAACjB,SAAS,GAAAoE,mBAAA;UAAA,SAAAC,eAAA,CACA,CAACH,WAAW,EAAE,eAAe,CAAC;QAAA,IAAI/B,WAAW,CAACS,KAAK,CAACL,OAAO,KACxEtB,KAAK,CAACR,OAAO,KAAK,SAAS,GAAA2D,mBAAA;UAAA,SAAAC,eAAA,CACZ,CAACH,WAAW,EAAE,eAAe,CAAC;QAAA,IAAI/B,WAAW,CAACS,KAAK,CAACL,OAAO,EAAAsC,gBAAA,SAAO1C,WAAW,CAACS,KAAK,CAACH,KAAK,KACtG,EAAE,EAAA8B,YAAA,CAAArG,OAAA;UAAA,cAGO+C,KAAK,CAACd,QAAQ;UAAA;UAAA,SAEnBc,KAAK,CAACzB,UAAU,IAAIyB,KAAK,CAAC5B,KAAK;UAAA,cAC1B4B,KAAK,CAACR,OAAO,KAAK,MAAM,GAAG,OAAO,GAAGwB,SAAS;UAAA;UAAA;UAAA,cAG9CS,MAAM,CAACE,KAAK,CAACI,IAAI;UAAA,uBACRM;QAAM;UAG1B,aAAa,EAAEwB,CAAA,KAAM3C,WAAW,CAACS,KAAK,CAACL;QAAO,IAGhDtB,KAAK,CAACR,OAAO,KAAK,MAAM,IAAA8D,YAAA,CAAAtG,OAAA,aAAe,EACvCgD,KAAK,CAACjB,SAAS,GAAAoE,mBAAA;UAAA,SAAAC,eAAA,CACA,CAACH,WAAW,EAAE,eAAe,CAAC;QAAA,IAAI/B,WAAW,CAACS,KAAK,CAACJ,SAAS,KAC1E,EAAE,EAGT,EACCvB,KAAK,CAACR,OAAO,KAAK,MAAM,IAAA2D,mBAAA,CAAAI,SAAA,SAAAD,YAAA,CAAAtG,OAAA,eAGpBwD,KAAK,CAACmD,OAAO,IAAAR,mBAAA;UAAA,SAAAC,eAAA,CACAH,WAAW;QAAA,IACpBzC,KAAK,CAACmD,OAAO,CAACT,SAAS,CAAC,EAE7B,EACC,CAAClD,KAAK,CAACtB,QAAQ,IAAAyE,mBAAA;UAAA,SAAAC,eAAA,CACH,CAACH,WAAW,EAAE,sBAAsB,CAAC;QAAA,IAAAO,eAAA,CAAAF,YAAA,CAAApG,QAAA;UAAA,QAEtCsB,OAAO,CAACmD,KAAK,GAAG,QAAQ,GAAG,OAAO;UAAA,QAClCqB,WAAW;UAAA,cACLvB,MAAM,CAACE,KAAK,CAACK,UAAU;UAAA,WAE1ByB,CAAA,KAAMjF,OAAO,CAACmD,KAAK,GAAG,CAACnD,OAAO,CAACmD;QAAK,YAAA+B,iBAAA,aADlCjC,MAAM,CAACE,KAAK,CAACK,UAAU,EAAE,KAAK,KAI/C,EAEJ,EACC,CAAC,CAAChC,KAAK,CAACrB,UAAU,IAAI,CAACqB,KAAK,CAACpB,cAAc,IAAI4B,KAAK,CAACsD,MAAM,KAAAX,mBAAA;UAAA,SAAAC,eAAA,CAC9CH,WAAW;QAAA,IACpB,CAACjD,KAAK,CAACrB,UAAU,IAAA2E,YAAA,CAAAxG,YAAA,EAAAiH,WAAA;UAAA;UAAA,eAGF;YAAE3F,KAAK,EAAE4B,KAAK,CAAC5B;UAAM,CAAC;UAAA,cACtBmB,MAAM,CAACoC,KAAK;UAAA,SACjBF,MAAM,CAACE,KAAK,CAACM,YAAY;UAAA,uBACXvC,CAAC,IAAIH,MAAM,CAACoC,KAAK,GAAGjC,CAAC;UAAA,WACjC+D,CAAA,KAAMzD,KAAK,CAACJ,WAAW,EAAEiC,MAAM,IAAIS,WAAW,CAAC;QAAC,GACrDtC,KAAK,CAACJ,WAAW,QAEzB,EACCY,KAAK,CAACsD,MAAM,GAAGZ,SAAS,CAAC,EACzB,CAAClD,KAAK,CAACpB,cAAc,IAAA4E,eAAA,CAAAF,YAAA,CAAApG,QAAA;UAAA,QAEZ8C,KAAK,CAACnB,UAAU,GAAG,iBAAiB,GAAG,aAAa;UAAA,cAC9C4C,MAAM,CAACE,KAAK,CAACO,gBAAgB;UAAA,WAEhCK;QAAgB,YAAAmB,iBAAA,aADdjC,MAAM,CAACE,KAAK,CAACO,gBAAgB,EAAE,KAAK,GAGnD,EAEJ,EAEClC,KAAK,CAACR,OAAO,KAAK,MAAM,IAAA8D,YAAA,CAAAtG,OAAA,aAAiB,EAE9C;MAAA;IAIT,CAAC,CAAC;IAEF,OAAO;MACLsF;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
|