@maas/vue-equipment 1.0.0-beta.42 → 1.0.0-beta.44
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/dist/composables/useScrollLockPadding/index.d.ts +9 -0
- package/dist/composables/useScrollLockPadding/index.js +57 -0
- package/dist/composables/useScrollLockPadding/index.js.map +1 -0
- package/dist/nuxt/module.json +1 -1
- package/dist/nuxt/module.mjs +7 -0
- package/dist/plugins/MagicAccordion/src/components/MagicAccordionProvider.vue +2 -5
- package/dist/plugins/MagicAccordion/src/composables/private/useAccordionState.d.ts +2 -3
- package/dist/plugins/MagicAccordion/src/composables/private/useAccordionState.mjs +38 -11
- package/dist/plugins/MagicAccordion/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue +2 -5
- package/dist/plugins/MagicCommand/src/components/MagicCommandRenderer.vue +1 -0
- package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue +1 -1
- package/dist/plugins/MagicCommand/src/composables/private/useCommandState.d.ts +2 -3
- package/dist/plugins/MagicCommand/src/composables/private/useCommandState.mjs +36 -11
- package/dist/plugins/MagicCommand/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicCookie/src/composables/private/useCookieState.d.ts +2 -3
- package/dist/plugins/MagicCookie/src/composables/private/useCookieState.mjs +35 -12
- package/dist/plugins/MagicCookie/src/composables/useMagicCookie.mjs +6 -1
- package/dist/plugins/MagicCookie/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.mjs +33 -25
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableScrollLock.d.ts +2 -4
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableScrollLock.mjs +11 -51
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.mjs +11 -1
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.d.ts +1 -1
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.mjs +41 -11
- package/dist/plugins/MagicDraggable/src/composables/useMagicDraggable.mjs +2 -1
- package/dist/plugins/MagicDraggable/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.d.vue.ts +2 -2
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +15 -19
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue.d.ts +2 -2
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerCallback.d.ts +0 -4
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerCallback.mjs +8 -12
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDOM.d.ts +2 -4
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDOM.mjs +15 -58
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.d.ts +2 -0
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +184 -29
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerState.d.ts +2 -3
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerState.mjs +35 -10
- package/dist/plugins/MagicDrawer/src/composables/useMagicDrawer.mjs +2 -1
- package/dist/plugins/MagicDrawer/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicEmitter/src/composables/useMagicEmitter.mjs +10 -5
- package/dist/plugins/MagicMarquee/src/components/MagicMarquee.vue +2 -5
- package/dist/plugins/MagicMarquee/src/composables/private/useMarqueeState.d.ts +2 -3
- package/dist/plugins/MagicMarquee/src/composables/private/useMarqueeState.mjs +36 -11
- package/dist/plugins/MagicMarquee/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue +4 -12
- package/dist/plugins/MagicMenu/src/components/MagicMenuProvider.vue +2 -6
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCallback.d.ts +1 -4
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCallback.mjs +7 -21
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCursor.mjs +13 -1
- package/dist/plugins/MagicMenu/src/composables/private/useMenuDOM.d.ts +2 -4
- package/dist/plugins/MagicMenu/src/composables/private/useMenuDOM.mjs +13 -51
- package/dist/plugins/MagicMenu/src/composables/private/useMenuState.d.ts +2 -3
- package/dist/plugins/MagicMenu/src/composables/private/useMenuState.mjs +32 -12
- package/dist/plugins/MagicMenu/src/composables/private/useMenuTrigger.mjs +1 -1
- package/dist/plugins/MagicMenu/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicModal/src/components/MagicModal.vue +4 -16
- package/dist/plugins/MagicModal/src/composables/private/useModalCallback.d.ts +0 -4
- package/dist/plugins/MagicModal/src/composables/private/useModalCallback.mjs +9 -19
- package/dist/plugins/MagicModal/src/composables/private/useModalDOM.d.ts +2 -4
- package/dist/plugins/MagicModal/src/composables/private/useModalDOM.mjs +15 -58
- package/dist/plugins/MagicModal/src/composables/private/useModalState.d.ts +6 -0
- package/dist/plugins/MagicModal/src/composables/private/useModalState.mjs +58 -0
- package/dist/plugins/MagicModal/src/composables/private/useModalStore.d.ts +1 -5
- package/dist/plugins/MagicModal/src/composables/private/useModalStore.mjs +1 -15
- package/dist/plugins/MagicModal/src/composables/useMagicModal.mjs +7 -6
- package/dist/plugins/MagicModal/src/types/index.d.ts +5 -0
- package/dist/plugins/MagicNoise/src/components/MagicNoise.vue +14 -2
- package/dist/plugins/MagicPie/src/components/MagicPie.vue +12 -6
- package/dist/plugins/MagicPie/src/composables/private/usePieState.d.ts +1 -1
- package/dist/plugins/MagicPie/src/composables/private/usePieState.mjs +33 -12
- package/dist/plugins/MagicPie/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudio.vue +9 -6
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue +4 -8
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue +8 -1
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerProvider.vue +2 -11
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideo.vue +10 -6
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue +4 -8
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerControlsApi.d.ts +0 -1
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerControlsApi.mjs +20 -9
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerEmitter.mjs +124 -75
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.mjs +100 -32
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.d.ts +0 -1
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.mjs +33 -13
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerState.d.ts +2 -3
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerState.mjs +35 -10
- package/dist/plugins/MagicPlayer/src/composables/useMagicPlayer.d.ts +0 -2
- package/dist/plugins/MagicPlayer/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue +2 -2
- package/dist/plugins/MagicScroll/src/components/MagicScrollMotion.vue +13 -1
- package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue +9 -5
- package/dist/plugins/MagicScroll/src/composables/private/useCollisionDetection.mjs +2 -1
- package/dist/plugins/MagicToast/src/components/MagicToastProvider.vue +2 -11
- package/dist/plugins/MagicToast/src/components/MagicToastView.vue +1 -0
- package/dist/plugins/MagicToast/src/composables/private/useToastDrag.mjs +18 -15
- package/dist/plugins/MagicToast/src/composables/private/useToastScrollLock.d.ts +2 -4
- package/dist/plugins/MagicToast/src/composables/private/useToastScrollLock.mjs +11 -49
- package/dist/plugins/MagicToast/src/composables/private/useToastState.d.ts +2 -3
- package/dist/plugins/MagicToast/src/composables/private/useToastState.mjs +35 -12
- package/dist/plugins/MagicToast/src/types/index.d.ts +1 -0
- package/dist/utils/index.d.ts +8 -1
- package/dist/utils/index.js +56497 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/plugins/MagicError/src/MagicError.d.ts +0 -0
- package/dist/plugins/MagicError/src/MagicError.mjs +0 -0
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
toRefs,
|
|
3
|
+
watch,
|
|
4
|
+
unref,
|
|
5
|
+
toValue,
|
|
6
|
+
onScopeDispose
|
|
7
|
+
} from "vue";
|
|
2
8
|
import { useEventListener, watchIgnorable } from "@vueuse/core";
|
|
3
9
|
import { useMagicError } from "@maas/vue-equipment/plugins/MagicError";
|
|
4
10
|
import { usePlayerState } from "./usePlayerState.mjs";
|
|
@@ -137,67 +143,129 @@ export function usePlayerMediaApi(args) {
|
|
|
137
143
|
}
|
|
138
144
|
}
|
|
139
145
|
);
|
|
140
|
-
|
|
146
|
+
function timeupdateCallback() {
|
|
141
147
|
ignoreCurrentTimeUpdates(
|
|
142
148
|
() => currentTime.value = toValue(mediaRef).currentTime
|
|
143
149
|
);
|
|
144
|
-
}
|
|
145
|
-
|
|
150
|
+
}
|
|
151
|
+
function durationChangeCallback() {
|
|
146
152
|
duration.value = toValue(mediaRef).duration;
|
|
147
|
-
}
|
|
148
|
-
|
|
153
|
+
}
|
|
154
|
+
function progressCallback() {
|
|
149
155
|
buffered.value = timeRangeToArray(toValue(mediaRef).buffered);
|
|
150
|
-
}
|
|
151
|
-
|
|
156
|
+
}
|
|
157
|
+
function seekingCallback() {
|
|
152
158
|
seeking.value = true;
|
|
153
|
-
}
|
|
154
|
-
|
|
159
|
+
}
|
|
160
|
+
function seekedCallback() {
|
|
155
161
|
seeking.value = false;
|
|
156
|
-
}
|
|
157
|
-
|
|
162
|
+
}
|
|
163
|
+
function waitingLoadstartCallback() {
|
|
158
164
|
waiting.value = true;
|
|
159
165
|
ignorePlayingUpdates(() => playing.value = false);
|
|
160
|
-
}
|
|
161
|
-
|
|
166
|
+
}
|
|
167
|
+
function loadeddataCallback() {
|
|
162
168
|
waiting.value = false;
|
|
163
|
-
}
|
|
164
|
-
|
|
169
|
+
}
|
|
170
|
+
function playingCallback() {
|
|
165
171
|
started.value = true;
|
|
166
172
|
waiting.value = false;
|
|
167
173
|
ended.value = false;
|
|
168
174
|
ignorePlayingUpdates(() => playing.value = true);
|
|
169
|
-
}
|
|
170
|
-
|
|
175
|
+
}
|
|
176
|
+
function ratechangeCallback() {
|
|
171
177
|
rate.value = toValue(mediaRef)?.playbackRate ?? rate.value;
|
|
172
|
-
}
|
|
173
|
-
|
|
178
|
+
}
|
|
179
|
+
function stalledCallback() {
|
|
174
180
|
stalled.value = true;
|
|
175
|
-
}
|
|
176
|
-
|
|
181
|
+
}
|
|
182
|
+
function suspendCallback() {
|
|
177
183
|
waiting.value = false;
|
|
178
|
-
}
|
|
179
|
-
|
|
184
|
+
}
|
|
185
|
+
function endedCallback() {
|
|
180
186
|
ended.value = true;
|
|
181
|
-
}
|
|
182
|
-
|
|
187
|
+
}
|
|
188
|
+
function pauseCallback() {
|
|
183
189
|
playing.value = false;
|
|
184
190
|
paused.value = true;
|
|
185
|
-
}
|
|
186
|
-
|
|
191
|
+
}
|
|
192
|
+
function playCallback() {
|
|
187
193
|
playing.value = true;
|
|
188
194
|
started.value = true;
|
|
189
|
-
}
|
|
190
|
-
|
|
195
|
+
}
|
|
196
|
+
function volumechangeCallback() {
|
|
191
197
|
const el = toValue(mediaRef);
|
|
192
198
|
if (el) {
|
|
193
199
|
volume.value = el.volume;
|
|
194
200
|
muted.value = el.muted;
|
|
195
201
|
}
|
|
196
|
-
}
|
|
197
|
-
|
|
202
|
+
}
|
|
203
|
+
function errorCallback() {
|
|
198
204
|
const el = toValue(mediaRef);
|
|
199
205
|
if (el?.error) {
|
|
200
206
|
handleMediaElementError(el.error);
|
|
201
207
|
}
|
|
208
|
+
}
|
|
209
|
+
const cancelTimeUpdate = useEventListener(
|
|
210
|
+
mediaRef,
|
|
211
|
+
"timeupdate",
|
|
212
|
+
timeupdateCallback
|
|
213
|
+
);
|
|
214
|
+
const cancelDurationChange = useEventListener(
|
|
215
|
+
mediaRef,
|
|
216
|
+
"durationchange",
|
|
217
|
+
durationChangeCallback
|
|
218
|
+
);
|
|
219
|
+
const cancelProgress = useEventListener(
|
|
220
|
+
mediaRef,
|
|
221
|
+
"progress",
|
|
222
|
+
progressCallback
|
|
223
|
+
);
|
|
224
|
+
const cancelSeeking = useEventListener(mediaRef, "seeking", seekingCallback);
|
|
225
|
+
const cancelSeeked = useEventListener(mediaRef, "seeked", seekedCallback);
|
|
226
|
+
const cancelWaitingLoadstart = useEventListener(
|
|
227
|
+
mediaRef,
|
|
228
|
+
["waiting", "loadstart"],
|
|
229
|
+
waitingLoadstartCallback
|
|
230
|
+
);
|
|
231
|
+
const cancelLoadeddata = useEventListener(
|
|
232
|
+
mediaRef,
|
|
233
|
+
"loadeddata",
|
|
234
|
+
loadeddataCallback
|
|
235
|
+
);
|
|
236
|
+
const cancelPlaying = useEventListener(mediaRef, "playing", playingCallback);
|
|
237
|
+
const cancelRatechange = useEventListener(
|
|
238
|
+
mediaRef,
|
|
239
|
+
"ratechange",
|
|
240
|
+
ratechangeCallback
|
|
241
|
+
);
|
|
242
|
+
const cancelStalled = useEventListener(mediaRef, "stalled", stalledCallback);
|
|
243
|
+
const cancelSuspend = useEventListener(mediaRef, "suspend", suspendCallback);
|
|
244
|
+
const cancelEnded = useEventListener(mediaRef, "ended", endedCallback);
|
|
245
|
+
const cancelPause = useEventListener(mediaRef, "pause", pauseCallback);
|
|
246
|
+
const cancelPlay = useEventListener(mediaRef, "play", playCallback);
|
|
247
|
+
const cancelVolumechange = useEventListener(
|
|
248
|
+
mediaRef,
|
|
249
|
+
"volumechange",
|
|
250
|
+
volumechangeCallback
|
|
251
|
+
);
|
|
252
|
+
const cancelError = useEventListener(mediaRef, "error", errorCallback);
|
|
253
|
+
onScopeDispose(() => {
|
|
254
|
+
cancelTimeUpdate();
|
|
255
|
+
cancelDurationChange();
|
|
256
|
+
cancelProgress();
|
|
257
|
+
cancelSeeking();
|
|
258
|
+
cancelSeeked();
|
|
259
|
+
cancelWaitingLoadstart();
|
|
260
|
+
cancelLoadeddata();
|
|
261
|
+
cancelPlaying();
|
|
262
|
+
cancelRatechange();
|
|
263
|
+
cancelStalled();
|
|
264
|
+
cancelSuspend();
|
|
265
|
+
cancelEnded();
|
|
266
|
+
cancelPause();
|
|
267
|
+
cancelPlay();
|
|
268
|
+
cancelVolumechange();
|
|
269
|
+
cancelError();
|
|
202
270
|
});
|
|
203
271
|
}
|
|
@@ -9,6 +9,5 @@ export type UsePlayerRuntimeArgs = {
|
|
|
9
9
|
};
|
|
10
10
|
export declare function usePlayerRuntime(args: UsePlayerRuntimeArgs): {
|
|
11
11
|
initialize: (autoplay?: boolean) => void;
|
|
12
|
-
destroy: () => void;
|
|
13
12
|
};
|
|
14
13
|
export type UsePlayerRuntimeReturn = ReturnType<typeof usePlayerRuntime>;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
onScopeDispose,
|
|
3
|
+
shallowRef,
|
|
4
|
+
toRefs,
|
|
5
|
+
toValue
|
|
6
|
+
} from "vue";
|
|
2
7
|
import { useEventListener } from "@vueuse/core";
|
|
3
8
|
import { useMagicError } from "@maas/vue-equipment/plugins/MagicError";
|
|
4
9
|
import { usePlayerState } from "./usePlayerState.mjs";
|
|
@@ -13,6 +18,9 @@ export function usePlayerRuntime(args) {
|
|
|
13
18
|
const { initializeState } = usePlayerState(toValue(id));
|
|
14
19
|
const state = initializeState();
|
|
15
20
|
const { loaded } = toRefs(state);
|
|
21
|
+
let cancelLoaded = void 0;
|
|
22
|
+
let cancelPlay = void 0;
|
|
23
|
+
let cancelPause = void 0;
|
|
16
24
|
function handleHlsRuntimeError(args2) {
|
|
17
25
|
const { data, hls: hls2 } = args2;
|
|
18
26
|
const error = new Error(data.details || "HLS error");
|
|
@@ -63,13 +71,18 @@ export function usePlayerRuntime(args) {
|
|
|
63
71
|
}
|
|
64
72
|
}
|
|
65
73
|
function useNative() {
|
|
74
|
+
if (!mediaRef) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
66
77
|
const el = toValue(mediaRef);
|
|
67
78
|
if (!el || !src) {
|
|
68
79
|
return;
|
|
69
80
|
}
|
|
70
81
|
try {
|
|
71
82
|
el.src = src;
|
|
72
|
-
|
|
83
|
+
cancelLoaded?.();
|
|
84
|
+
cancelLoaded = useEventListener(
|
|
85
|
+
mediaRef,
|
|
73
86
|
"loadeddata",
|
|
74
87
|
() => {
|
|
75
88
|
loaded.value = true;
|
|
@@ -114,10 +127,12 @@ export function usePlayerRuntime(args) {
|
|
|
114
127
|
hls.on(Hls.Events.ERROR, (_event, data) => {
|
|
115
128
|
handleHlsRuntimeError({ data, hls });
|
|
116
129
|
});
|
|
117
|
-
|
|
130
|
+
cancelPause?.();
|
|
131
|
+
cancelPause = useEventListener(mediaRef, "pause", () => {
|
|
118
132
|
hls?.stopLoad();
|
|
119
133
|
});
|
|
120
|
-
|
|
134
|
+
cancelPlay?.();
|
|
135
|
+
cancelPlay = useEventListener(mediaRef, "play", () => {
|
|
121
136
|
hls?.startLoad();
|
|
122
137
|
});
|
|
123
138
|
hls.loadSource(src);
|
|
@@ -130,14 +145,10 @@ export function usePlayerRuntime(args) {
|
|
|
130
145
|
});
|
|
131
146
|
}
|
|
132
147
|
}
|
|
133
|
-
function initialize(autoplay = false) {
|
|
134
|
-
if (srcType === "native") {
|
|
135
|
-
useNative();
|
|
136
|
-
} else if (srcType === "hls") {
|
|
137
|
-
useHlsJS(autoplay);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
148
|
function destroy() {
|
|
149
|
+
cancelLoaded?.();
|
|
150
|
+
cancelPlay?.();
|
|
151
|
+
cancelPause?.();
|
|
141
152
|
try {
|
|
142
153
|
hls?.destroy();
|
|
143
154
|
} finally {
|
|
@@ -145,8 +156,17 @@ export function usePlayerRuntime(args) {
|
|
|
145
156
|
deferredLoading.value = false;
|
|
146
157
|
}
|
|
147
158
|
}
|
|
159
|
+
function initialize(autoplay = false) {
|
|
160
|
+
if (srcType === "native") {
|
|
161
|
+
useNative();
|
|
162
|
+
} else if (srcType === "hls") {
|
|
163
|
+
useHlsJS(autoplay);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
onScopeDispose(() => {
|
|
167
|
+
destroy();
|
|
168
|
+
});
|
|
148
169
|
return {
|
|
149
|
-
initialize
|
|
150
|
-
destroy
|
|
170
|
+
initialize
|
|
151
171
|
};
|
|
152
172
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type MaybeRef } from 'vue';
|
|
2
2
|
import type { PlayerState } from '../../types/index.js';
|
|
3
3
|
export declare function usePlayerState(id: MaybeRef<string>): {
|
|
4
4
|
initializeState: () => PlayerState;
|
|
5
|
-
|
|
6
|
-
playerStateStore: Ref<PlayerState[], PlayerState[]>;
|
|
5
|
+
playerStateStore: import("vue").Ref<PlayerState[], PlayerState[]>;
|
|
7
6
|
};
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { reactive, toValue, onScopeDispose } from "vue";
|
|
2
|
+
import { createStateStore } from "@maas/vue-equipment/utils";
|
|
3
|
+
const getPlayerStateStore = createStateStore(
|
|
4
|
+
"MagicPlayer",
|
|
5
|
+
() => []
|
|
6
|
+
);
|
|
3
7
|
export function usePlayerState(id) {
|
|
8
|
+
const playerStateStore = getPlayerStateStore();
|
|
9
|
+
let scopeCounted = false;
|
|
4
10
|
function createState(id2) {
|
|
5
11
|
const state = {
|
|
6
12
|
id: id2,
|
|
13
|
+
refCount: 0,
|
|
7
14
|
buffered: [],
|
|
8
15
|
currentTime: 0,
|
|
9
16
|
dragging: false,
|
|
@@ -42,21 +49,39 @@ export function usePlayerState(id) {
|
|
|
42
49
|
playerStateStore.value = [...playerStateStore.value, state];
|
|
43
50
|
return state;
|
|
44
51
|
}
|
|
52
|
+
function deleteState() {
|
|
53
|
+
const currentId = toValue(id);
|
|
54
|
+
playerStateStore.value = playerStateStore.value.filter(
|
|
55
|
+
(x) => x.id !== currentId
|
|
56
|
+
);
|
|
57
|
+
}
|
|
45
58
|
function initializeState() {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
});
|
|
59
|
+
const currentId = toValue(id);
|
|
60
|
+
let state = playerStateStore.value.find((entry) => entry.id === currentId);
|
|
49
61
|
if (!state) {
|
|
50
|
-
state = addState(
|
|
62
|
+
state = addState(currentId);
|
|
63
|
+
}
|
|
64
|
+
if (!scopeCounted) {
|
|
65
|
+
state.refCount++;
|
|
66
|
+
scopeCounted = true;
|
|
51
67
|
}
|
|
52
68
|
return state;
|
|
53
69
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
70
|
+
onScopeDispose(() => {
|
|
71
|
+
if (!scopeCounted) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const currentId = toValue(id);
|
|
75
|
+
const state = playerStateStore.value.find((entry) => entry.id === currentId);
|
|
76
|
+
if (state) {
|
|
77
|
+
state.refCount--;
|
|
78
|
+
if (state.refCount <= 0) {
|
|
79
|
+
deleteState();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
57
83
|
return {
|
|
58
84
|
initializeState,
|
|
59
|
-
deleteState,
|
|
60
85
|
playerStateStore
|
|
61
86
|
};
|
|
62
87
|
}
|
|
@@ -43,7 +43,6 @@ export declare function useMagicPlayer(id: MaybeRef<string>): {
|
|
|
43
43
|
};
|
|
44
44
|
controlsApi: {
|
|
45
45
|
initialize: () => void;
|
|
46
|
-
destroy: () => void;
|
|
47
46
|
bufferedPercentage: import("vue").ComputedRef<number>;
|
|
48
47
|
onMouseenter: () => void;
|
|
49
48
|
onMouseleave: () => void;
|
|
@@ -53,7 +52,6 @@ export declare function useMagicPlayer(id: MaybeRef<string>): {
|
|
|
53
52
|
};
|
|
54
53
|
playerRuntime: {
|
|
55
54
|
initialize: (autoplay?: boolean) => void;
|
|
56
|
-
destroy: () => void;
|
|
57
55
|
};
|
|
58
56
|
};
|
|
59
57
|
export type UseMagicPlayerReturn = ReturnType<typeof useMagicPlayer>;
|
|
@@ -56,8 +56,8 @@ watch(
|
|
|
56
56
|
);
|
|
57
57
|
useIntersectionObserver(
|
|
58
58
|
elRef,
|
|
59
|
-
([
|
|
60
|
-
intersecting.value = isIntersecting;
|
|
59
|
+
([entry]) => {
|
|
60
|
+
intersecting.value = entry?.isIntersecting ?? intersecting.value;
|
|
61
61
|
},
|
|
62
62
|
{ rootMargin: "150% 0px 150% 0px", immediate: true }
|
|
63
63
|
);
|
|
@@ -5,7 +5,15 @@
|
|
|
5
5
|
</template>
|
|
6
6
|
|
|
7
7
|
<script setup>
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
ref,
|
|
10
|
+
inject,
|
|
11
|
+
computed,
|
|
12
|
+
onMounted,
|
|
13
|
+
watch,
|
|
14
|
+
useTemplateRef,
|
|
15
|
+
onUnmounted
|
|
16
|
+
} from "vue";
|
|
9
17
|
import { unrefElement } from "@vueuse/core";
|
|
10
18
|
import defu from "defu";
|
|
11
19
|
import {
|
|
@@ -63,4 +71,8 @@ watch(
|
|
|
63
71
|
onMounted(() => {
|
|
64
72
|
createAnimation();
|
|
65
73
|
});
|
|
74
|
+
onUnmounted(() => {
|
|
75
|
+
animation.value?.cancel();
|
|
76
|
+
animation.value = void 0;
|
|
77
|
+
});
|
|
66
78
|
</script>
|
|
@@ -12,7 +12,8 @@ import {
|
|
|
12
12
|
watch,
|
|
13
13
|
nextTick,
|
|
14
14
|
readonly,
|
|
15
|
-
useTemplateRef
|
|
15
|
+
useTemplateRef,
|
|
16
|
+
onBeforeUnmount
|
|
16
17
|
} from "vue";
|
|
17
18
|
import { useIntersectionObserver } from "@vueuse/core";
|
|
18
19
|
import {
|
|
@@ -67,15 +68,18 @@ watch(
|
|
|
67
68
|
},
|
|
68
69
|
{ once: true }
|
|
69
70
|
);
|
|
70
|
-
useIntersectionObserver(
|
|
71
|
+
const intersectionObserver = useIntersectionObserver(
|
|
71
72
|
elRef,
|
|
72
|
-
([
|
|
73
|
-
intersecting.value = isIntersecting;
|
|
74
|
-
if (isIntersecting) {
|
|
73
|
+
([entry]) => {
|
|
74
|
+
intersecting.value = entry?.isIntersecting ?? intersecting.value;
|
|
75
|
+
if (entry?.isIntersecting) {
|
|
75
76
|
calculate();
|
|
76
77
|
}
|
|
77
78
|
},
|
|
78
79
|
{ rootMargin: "150% 0px 150% 0px", immediate: true }
|
|
79
80
|
);
|
|
81
|
+
onBeforeUnmount(() => {
|
|
82
|
+
intersectionObserver.stop();
|
|
83
|
+
});
|
|
80
84
|
provide(MagicScrollProgress, readonly(progress));
|
|
81
85
|
</script>
|
|
@@ -3,6 +3,7 @@ import { useElementBounding, useWindowSize } from "@vueuse/core";
|
|
|
3
3
|
import { useMagicEmitter } from "@maas/vue-equipment/plugins/MagicEmitter";
|
|
4
4
|
export function useCollisionDetection(args) {
|
|
5
5
|
const { id, scrollY, child, parent, offset } = args;
|
|
6
|
+
const magicEmitter = useMagicEmitter();
|
|
6
7
|
const alerted = reactive({
|
|
7
8
|
up: {
|
|
8
9
|
top: {
|
|
@@ -114,7 +115,7 @@ export function useCollisionDetection(args) {
|
|
|
114
115
|
const mappedParentEdge = toValue(mappedParentBoundingRect[parentEdge]) + offset2;
|
|
115
116
|
if (direction === "down" && mappedChildEdge <= mappedParentEdge || direction === "up" && mappedChildEdge >= mappedParentEdge) {
|
|
116
117
|
alerted[direction][childEdge][parentEdge] = true;
|
|
117
|
-
|
|
118
|
+
magicEmitter.emit("collision", {
|
|
118
119
|
id,
|
|
119
120
|
direction,
|
|
120
121
|
parentEdge,
|
|
@@ -42,13 +42,7 @@
|
|
|
42
42
|
</template>
|
|
43
43
|
|
|
44
44
|
<script setup>
|
|
45
|
-
import {
|
|
46
|
-
toValue,
|
|
47
|
-
useTemplateRef,
|
|
48
|
-
provide,
|
|
49
|
-
watch,
|
|
50
|
-
onBeforeUnmount
|
|
51
|
-
} from "vue";
|
|
45
|
+
import { toValue, useTemplateRef, provide, watch } from "vue";
|
|
52
46
|
import { onClickOutside } from "@vueuse/core";
|
|
53
47
|
import { useToastState } from "../composables/private/useToastState";
|
|
54
48
|
import { useToastView } from "../composables/private/useToastView";
|
|
@@ -71,7 +65,7 @@ defineOptions({
|
|
|
71
65
|
inheritAttrs: false
|
|
72
66
|
});
|
|
73
67
|
const { deleteView } = useToastView(id);
|
|
74
|
-
const {
|
|
68
|
+
const { initializeState } = useToastState(id);
|
|
75
69
|
const state = initializeState(options);
|
|
76
70
|
const listRef = useTemplateRef("list");
|
|
77
71
|
const {
|
|
@@ -93,9 +87,6 @@ watch(
|
|
|
93
87
|
deep: true
|
|
94
88
|
}
|
|
95
89
|
);
|
|
96
|
-
onBeforeUnmount(() => {
|
|
97
|
-
deleteState();
|
|
98
|
-
});
|
|
99
90
|
provide(MagicToastInstanceId, id);
|
|
100
91
|
</script>
|
|
101
92
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computed, toRefs, toValue } from "vue";
|
|
1
|
+
import { computed, onScopeDispose, toRefs, toValue } from "vue";
|
|
2
2
|
import { useEventListener } from "@vueuse/core";
|
|
3
3
|
import {
|
|
4
4
|
guardedReleasePointerCapture,
|
|
@@ -34,6 +34,7 @@ export function useToastDrag(args) {
|
|
|
34
34
|
let cancelPointerup = void 0;
|
|
35
35
|
let cancelPointermove = void 0;
|
|
36
36
|
let cancelTouchend = void 0;
|
|
37
|
+
let cancelTouchcancel = void 0;
|
|
37
38
|
const hasDragged = computed(() => {
|
|
38
39
|
const hasDraggedX = !isWithinRange({
|
|
39
40
|
input: draggedX.value,
|
|
@@ -51,12 +52,7 @@ export function useToastDrag(args) {
|
|
|
51
52
|
() => `transform: translate(${draggedX.value}px, ${draggedY.value}px)`
|
|
52
53
|
);
|
|
53
54
|
const emitter = useMagicEmitter();
|
|
54
|
-
const {
|
|
55
|
-
lockScroll,
|
|
56
|
-
unlockScroll,
|
|
57
|
-
addScrollLockPadding,
|
|
58
|
-
removeScrollLockPadding
|
|
59
|
-
} = useToastScrollLock();
|
|
55
|
+
const { lockScroll, unlockScroll } = useToastScrollLock();
|
|
60
56
|
function interpolateDragged(args2) {
|
|
61
57
|
const {
|
|
62
58
|
to,
|
|
@@ -192,6 +188,7 @@ export function useToastDrag(args) {
|
|
|
192
188
|
cancelTouchend?.();
|
|
193
189
|
cancelPointerup?.();
|
|
194
190
|
cancelPointermove?.();
|
|
191
|
+
cancelTouchcancel?.();
|
|
195
192
|
}
|
|
196
193
|
function onPointerup(e) {
|
|
197
194
|
if (shouldClose.value) {
|
|
@@ -228,10 +225,9 @@ export function useToastDrag(args) {
|
|
|
228
225
|
resetStateAndListeners();
|
|
229
226
|
const scrollLockValue = toValue(scrollLock);
|
|
230
227
|
if (scrollLockValue) {
|
|
231
|
-
unlockScroll(
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}
|
|
228
|
+
unlockScroll(
|
|
229
|
+
typeof scrollLockValue === "object" && scrollLockValue.padding
|
|
230
|
+
);
|
|
235
231
|
}
|
|
236
232
|
if (hasDragged.value) {
|
|
237
233
|
e.preventDefault();
|
|
@@ -254,13 +250,16 @@ export function useToastDrag(args) {
|
|
|
254
250
|
y: draggedY.value
|
|
255
251
|
});
|
|
256
252
|
}
|
|
253
|
+
function destroy() {
|
|
254
|
+
cancelPointermove?.();
|
|
255
|
+
cancelPointerup?.();
|
|
256
|
+
cancelTouchend?.();
|
|
257
|
+
cancelTouchcancel?.();
|
|
258
|
+
}
|
|
257
259
|
function onPointerdown(e) {
|
|
258
260
|
const scrollLockValue = toValue(scrollLock);
|
|
259
261
|
if (scrollLockValue) {
|
|
260
|
-
|
|
261
|
-
addScrollLockPadding();
|
|
262
|
-
}
|
|
263
|
-
lockScroll();
|
|
262
|
+
lockScroll(typeof scrollLockValue === "object" && scrollLockValue.padding);
|
|
264
263
|
}
|
|
265
264
|
if (dragging.value) {
|
|
266
265
|
return;
|
|
@@ -279,6 +278,7 @@ export function useToastDrag(args) {
|
|
|
279
278
|
lastDraggedX.value = draggedX.value;
|
|
280
279
|
lastDraggedY.value = draggedY.value;
|
|
281
280
|
cancelPointerup = useEventListener(document, "pointerup", onPointerup);
|
|
281
|
+
cancelTouchcancel = useEventListener(document, "touchcancel", onPointerup);
|
|
282
282
|
cancelPointermove = useEventListener(
|
|
283
283
|
document,
|
|
284
284
|
"pointermove",
|
|
@@ -304,6 +304,9 @@ export function useToastDrag(args) {
|
|
|
304
304
|
state.expanded = true;
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
|
+
onScopeDispose(() => {
|
|
308
|
+
destroy();
|
|
309
|
+
});
|
|
307
310
|
return {
|
|
308
311
|
onPointerdown,
|
|
309
312
|
onClick,
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
export declare function useToastScrollLock(): {
|
|
2
|
-
lockScroll: () => void;
|
|
3
|
-
unlockScroll: () => void;
|
|
4
|
-
addScrollLockPadding: () => void;
|
|
5
|
-
removeScrollLockPadding: () => void;
|
|
2
|
+
lockScroll: (padding?: boolean) => void;
|
|
3
|
+
unlockScroll: (padding?: boolean) => void;
|
|
6
4
|
};
|
|
@@ -1,61 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { shallowRef } from "vue";
|
|
2
2
|
import { useScrollLock } from "@vueuse/core";
|
|
3
|
-
import {
|
|
4
|
-
scrollbarGutterSupport,
|
|
5
|
-
scrollbarWidth
|
|
6
|
-
} from "@maas/vue-equipment/utils";
|
|
3
|
+
import { useScrollLockPadding } from "@maas/vue-equipment/composables/useScrollLockPadding";
|
|
7
4
|
const scrollLock = typeof window !== "undefined" ? useScrollLock(document?.documentElement) : shallowRef(false);
|
|
5
|
+
const { add, remove } = useScrollLockPadding();
|
|
8
6
|
export function useToastScrollLock() {
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
function lockScroll(padding) {
|
|
8
|
+
if (padding) {
|
|
9
|
+
add();
|
|
10
|
+
}
|
|
11
11
|
scrollLock.value = true;
|
|
12
12
|
}
|
|
13
|
-
function unlockScroll() {
|
|
13
|
+
function unlockScroll(padding) {
|
|
14
14
|
scrollLock.value = false;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (typeof window === "undefined") {
|
|
18
|
-
return;
|
|
15
|
+
if (padding) {
|
|
16
|
+
remove();
|
|
19
17
|
}
|
|
20
|
-
document.body.style.setProperty(
|
|
21
|
-
"--scrollbar-width",
|
|
22
|
-
`${scrollbarWidth()}px`
|
|
23
|
-
);
|
|
24
|
-
positionFixedElements.value = [
|
|
25
|
-
...document.body.getElementsByTagName("*")
|
|
26
|
-
].filter(
|
|
27
|
-
(x) => getComputedStyle(x, null).getPropertyValue("position") === "fixed" && getComputedStyle(x, null).getPropertyValue("right") === "0px"
|
|
28
|
-
);
|
|
29
|
-
switch (scrollbarGutterSupport()) {
|
|
30
|
-
case true:
|
|
31
|
-
document.documentElement.style.scrollbarGutter = "stable";
|
|
32
|
-
positionFixedElements.value.forEach((elem) => {
|
|
33
|
-
elem.style.scrollbarGutter = "stable";
|
|
34
|
-
elem.style.overflow = "auto";
|
|
35
|
-
});
|
|
36
|
-
break;
|
|
37
|
-
case false:
|
|
38
|
-
document.body.style.paddingRight = "var(--scrollbar-width)";
|
|
39
|
-
positionFixedElements.value.forEach(
|
|
40
|
-
(elem) => elem.style.paddingRight = "var(--scrollbar-width)"
|
|
41
|
-
);
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function removeScrollLockPadding() {
|
|
46
|
-
document.documentElement.style.scrollbarGutter = "";
|
|
47
|
-
document.body.style.removeProperty("--scrollbar-width");
|
|
48
|
-
document.body.style.paddingRight = "";
|
|
49
|
-
positionFixedElements.value.forEach((elem) => {
|
|
50
|
-
elem.style.paddingRight = "";
|
|
51
|
-
elem.style.scrollbarGutter = "";
|
|
52
|
-
elem.style.overflow = "";
|
|
53
|
-
});
|
|
54
18
|
}
|
|
55
19
|
return {
|
|
56
20
|
lockScroll,
|
|
57
|
-
unlockScroll
|
|
58
|
-
addScrollLockPadding,
|
|
59
|
-
removeScrollLockPadding
|
|
21
|
+
unlockScroll
|
|
60
22
|
};
|
|
61
23
|
}
|