@maas/vue-equipment 1.0.0-beta.12 → 1.0.0-beta.14

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 (96) hide show
  1. package/dist/nuxt/module.json +1 -1
  2. package/dist/plugins/.turbo/turbo-lint.log +2 -2
  3. package/dist/plugins/MagicAccordion/src/components/MagicAccordionContent.vue +65 -82
  4. package/dist/plugins/MagicAccordion/src/components/MagicAccordionContent.vue.d.ts +2 -2
  5. package/dist/plugins/MagicAccordion/src/components/MagicAccordionProvider.vue +24 -30
  6. package/dist/plugins/MagicAccordion/src/components/MagicAccordionTrigger.vue +65 -61
  7. package/dist/plugins/MagicAccordion/src/components/MagicAccordionTrigger.vue.d.ts +1 -1
  8. package/dist/plugins/MagicAccordion/src/components/MagicAccordionView.vue +41 -45
  9. package/dist/plugins/MagicAccordion/src/components/MagicAccordionView.vue.d.ts +1 -1
  10. package/dist/plugins/MagicCommand/src/components/MagicCommandContent.vue +137 -150
  11. package/dist/plugins/MagicCommand/src/components/MagicCommandContent.vue.d.ts +1 -1
  12. package/dist/plugins/MagicCommand/src/components/MagicCommandDrawer.vue +45 -52
  13. package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue +80 -82
  14. package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue.d.ts +1 -1
  15. package/dist/plugins/MagicCommand/src/components/MagicCommandModal.vue +40 -47
  16. package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue +68 -74
  17. package/dist/plugins/MagicCommand/src/components/MagicCommandRenderer.vue +22 -38
  18. package/dist/plugins/MagicCommand/src/components/MagicCommandTrigger.vue +95 -85
  19. package/dist/plugins/MagicCommand/src/components/MagicCommandTrigger.vue.d.ts +1 -1
  20. package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue +41 -47
  21. package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue.d.ts +1 -1
  22. package/dist/plugins/MagicCookie/src/components/MagicCookieItem.vue +41 -39
  23. package/dist/plugins/MagicCookie/src/components/MagicCookieItem.vue.d.ts +2 -2
  24. package/dist/plugins/MagicCookie/src/components/MagicCookieProvider.vue +23 -34
  25. package/dist/plugins/MagicCookie/src/components/MagicCookieView.vue +40 -73
  26. package/dist/plugins/MagicCookie/src/components/MagicCookieView.vue.d.ts +1 -1
  27. package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue +70 -87
  28. package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue.d.ts +7 -7
  29. package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +262 -304
  30. package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue.d.ts +12 -12
  31. package/dist/plugins/MagicEmitter/src/composables/useMagicEmitter.d.ts +100 -100
  32. package/dist/plugins/MagicMarquee/src/components/MagicMarquee.vue +41 -69
  33. package/dist/plugins/MagicMarquee/src/composables/useMagicMarquee.d.ts +1 -1
  34. package/dist/plugins/MagicMenu/src/components/MagicMenuChannel.vue +54 -59
  35. package/dist/plugins/MagicMenu/src/components/MagicMenuChannel.vue.d.ts +2 -2
  36. package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue +188 -208
  37. package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue.d.ts +3 -3
  38. package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue +181 -194
  39. package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue +91 -100
  40. package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue.d.ts +1 -1
  41. package/dist/plugins/MagicMenu/src/components/MagicMenuProvider.vue +83 -85
  42. package/dist/plugins/MagicMenu/src/components/MagicMenuRemote.vue +79 -75
  43. package/dist/plugins/MagicMenu/src/components/MagicMenuRemote.vue.d.ts +1 -1
  44. package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue +106 -105
  45. package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue.d.ts +1 -1
  46. package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue +54 -60
  47. package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue.d.ts +1 -1
  48. package/dist/plugins/MagicModal/src/components/MagicModal.vue +136 -164
  49. package/dist/plugins/MagicModal/src/components/MagicModal.vue.d.ts +1 -1
  50. package/dist/plugins/MagicNoise/src/components/MagicNoise.vue +53 -78
  51. package/dist/plugins/MagicPie/src/components/MagicPie.vue +147 -175
  52. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudio.vue +51 -62
  53. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue +101 -122
  54. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue.d.ts +8 -5
  55. package/dist/plugins/MagicPlayer/src/components/MagicPlayerDisplayTime.vue +35 -42
  56. package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue +101 -108
  57. package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue +49 -77
  58. package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue.d.ts +3 -3
  59. package/dist/plugins/MagicPlayer/src/components/MagicPlayerPoster.vue +18 -37
  60. package/dist/plugins/MagicPlayer/src/components/MagicPlayerPoster.vue.d.ts +1 -2
  61. package/dist/plugins/MagicPlayer/src/components/MagicPlayerProvider.vue +45 -52
  62. package/dist/plugins/MagicPlayer/src/components/MagicPlayerProvider.vue.d.ts +5 -5
  63. package/dist/plugins/MagicPlayer/src/components/MagicPlayerTimeline.vue +60 -109
  64. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideo.vue +74 -70
  65. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue +171 -213
  66. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue.d.ts +8 -6
  67. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerAudioApi.d.ts +0 -4
  68. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerAudioApi.mjs +6 -47
  69. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerControlsApi.d.ts +4 -31
  70. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerControlsApi.mjs +147 -234
  71. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.d.ts +1 -15
  72. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.mjs +17 -164
  73. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.d.ts +0 -1
  74. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.mjs +6 -24
  75. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerState.d.ts +7 -0
  76. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerState.mjs +56 -0
  77. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerVideoApi.d.ts +0 -5
  78. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerVideoApi.mjs +7 -62
  79. package/dist/plugins/MagicPlayer/src/composables/useMagicPlayer.d.ts +32 -51
  80. package/dist/plugins/MagicPlayer/src/composables/useMagicPlayer.mjs +47 -0
  81. package/dist/plugins/MagicPlayer/src/symbols/index.d.ts +5 -2
  82. package/dist/plugins/MagicPlayer/src/symbols/index.mjs +10 -1
  83. package/dist/plugins/MagicPlayer/src/types/index.d.ts +29 -0
  84. package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue +49 -59
  85. package/dist/plugins/MagicScroll/src/components/MagicScrollMotion.vue +63 -70
  86. package/dist/plugins/MagicScroll/src/components/MagicScrollProvider.vue +29 -33
  87. package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue +59 -69
  88. package/dist/plugins/MagicToast/src/components/MagicToastProvider.vue +80 -95
  89. package/dist/plugins/MagicToast/src/components/MagicToastView.vue +52 -70
  90. package/dist/plugins/MagicToast/src/components/MagicToastView.vue.d.ts +2 -2
  91. package/package.json +4 -4
  92. package/dist/plugins/MagicAccordion/demo/data/footer.json +0 -117
  93. package/dist/plugins/MagicCommand/demo/data/about.json +0 -3
  94. package/dist/plugins/MagicCommand/demo/data/search.json +0 -594
  95. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerStateEmitter.d.ts +0 -15
  96. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerStateEmitter.mjs +0 -9
@@ -1,27 +1,23 @@
1
- import {
2
- ref,
3
- shallowRef,
4
- computed,
5
- watch,
6
- unref,
7
- toValue
8
- } from "vue";
1
+ import { toRefs, watch, unref, toValue } from "vue";
9
2
  import { useEventListener, watchIgnorable } from "@vueuse/core";
10
- import { usePlayerStateEmitter } from "./usePlayerStateEmitter.mjs";
3
+ import { usePlayerState } from "./usePlayerState.mjs";
11
4
  export function usePlayerMediaApi(args) {
12
- const currentTime = shallowRef(0);
13
- const duration = shallowRef(0);
14
- const seeking = shallowRef(false);
15
- const volume = shallowRef(1);
16
- const rate = shallowRef(1);
17
- const waiting = shallowRef(false);
18
- const ended = shallowRef(false);
19
- const playing = shallowRef(false);
20
- const stalled = shallowRef(false);
21
- const buffered = ref([]);
22
- const muted = shallowRef(false);
23
5
  const { mediaRef, id } = args;
24
- const remainingTime = computed(() => duration.value - currentTime.value);
6
+ const { initializeState } = usePlayerState(toValue(id));
7
+ const state = initializeState();
8
+ const {
9
+ currentTime,
10
+ duration,
11
+ seeking,
12
+ volume,
13
+ rate,
14
+ waiting,
15
+ ended,
16
+ playing,
17
+ stalled,
18
+ buffered,
19
+ muted
20
+ } = toRefs(state);
25
21
  function timeRangeToArray(timeRanges) {
26
22
  let ranges = [];
27
23
  for (let i = 0; i < timeRanges.length; ++i)
@@ -127,147 +123,4 @@ export function usePlayerMediaApi(args) {
127
123
  volume.value = el.volume;
128
124
  muted.value = el.muted;
129
125
  });
130
- const emitter = usePlayerStateEmitter();
131
- emitter.on("update", (payload) => {
132
- if (payload.id !== toValue(id)) return;
133
- if (payload.api === "media") {
134
- switch (payload.key) {
135
- case "currentTime":
136
- currentTime.value = payload.value;
137
- break;
138
- case "duration":
139
- duration.value = payload.value;
140
- break;
141
- case "seeking":
142
- seeking.value = payload.value;
143
- break;
144
- case "volume":
145
- volume.value = payload.value;
146
- break;
147
- case "rate":
148
- rate.value = payload.value;
149
- break;
150
- case "waiting":
151
- waiting.value = payload.value;
152
- break;
153
- case "ended":
154
- ended.value = payload.value;
155
- break;
156
- case "playing":
157
- playing.value = payload.value;
158
- break;
159
- case "stalled":
160
- stalled.value = payload.value;
161
- break;
162
- case "buffered":
163
- buffered.value = payload.value;
164
- break;
165
- case "muted":
166
- muted.value = payload.value;
167
- break;
168
- }
169
- }
170
- });
171
- watch(currentTime, (value) => {
172
- emitter.emit("update", {
173
- id: toValue(id),
174
- api: "media",
175
- key: "currentTime",
176
- value
177
- });
178
- });
179
- watch(duration, (value) => {
180
- emitter.emit("update", {
181
- id: toValue(id),
182
- api: "media",
183
- key: "duration",
184
- value
185
- });
186
- });
187
- watch(seeking, (value) => {
188
- emitter.emit("update", {
189
- id: toValue(id),
190
- api: "media",
191
- key: "seeking",
192
- value
193
- });
194
- });
195
- watch(volume, (value) => {
196
- emitter.emit("update", {
197
- id: toValue(id),
198
- api: "media",
199
- key: "volume",
200
- value
201
- });
202
- });
203
- watch(rate, (value) => {
204
- emitter.emit("update", {
205
- id: toValue(id),
206
- api: "media",
207
- key: "rate",
208
- value
209
- });
210
- });
211
- watch(waiting, (value) => {
212
- emitter.emit("update", {
213
- id: toValue(id),
214
- api: "media",
215
- key: "waiting",
216
- value
217
- });
218
- });
219
- watch(ended, (value) => {
220
- emitter.emit("update", {
221
- id: toValue(id),
222
- api: "media",
223
- key: "ended",
224
- value
225
- });
226
- });
227
- watch(playing, (value) => {
228
- emitter.emit("update", {
229
- id: toValue(id),
230
- api: "media",
231
- key: "playing",
232
- value
233
- });
234
- });
235
- watch(stalled, (value) => {
236
- emitter.emit("update", {
237
- id: toValue(id),
238
- api: "media",
239
- key: "stalled",
240
- value
241
- });
242
- });
243
- watch(buffered, (value) => {
244
- emitter.emit("update", {
245
- id: toValue(id),
246
- api: "media",
247
- key: "buffered",
248
- value
249
- });
250
- });
251
- watch(muted, (value) => {
252
- emitter.emit("update", {
253
- id: toValue(id),
254
- api: "media",
255
- key: "muted",
256
- value
257
- });
258
- });
259
- return {
260
- currentTime,
261
- remainingTime,
262
- duration,
263
- seeking,
264
- volume,
265
- rate,
266
- waiting,
267
- ended,
268
- playing,
269
- stalled,
270
- buffered,
271
- muted
272
- };
273
126
  }
@@ -7,7 +7,6 @@ export type UsePlayerRuntimeArgs = {
7
7
  src?: string;
8
8
  };
9
9
  export declare function usePlayerRuntime(args: UsePlayerRuntimeArgs): {
10
- loaded: import("vue").ShallowRef<boolean, boolean>;
11
10
  initialize: () => void;
12
11
  destroy: () => void;
13
12
  };
@@ -1,11 +1,13 @@
1
- import { shallowRef, watch, toValue } from "vue";
2
- import { usePlayerStateEmitter } from "./usePlayerStateEmitter.mjs";
1
+ import { shallowRef, toRefs, toValue } from "vue";
3
2
  import { useEventListener } from "@vueuse/core";
3
+ import { usePlayerState } from "./usePlayerState.mjs";
4
4
  export function usePlayerRuntime(args) {
5
5
  let hls;
6
- const loaded = shallowRef(false);
7
6
  const defferedLoading = shallowRef(false);
8
- const { mediaRef, srcType, src } = args;
7
+ const { id, mediaRef, srcType, src } = args;
8
+ const { initializeState } = usePlayerState(toValue(id));
9
+ const state = initializeState();
10
+ const { loaded } = toRefs(state);
9
11
  function useNative() {
10
12
  const el = toValue(mediaRef);
11
13
  if (!el || !src) return;
@@ -61,27 +63,7 @@ export function usePlayerRuntime(args) {
61
63
  hls?.destroy();
62
64
  defferedLoading.value = false;
63
65
  }
64
- const emitter = usePlayerStateEmitter();
65
- emitter.on("update", (payload) => {
66
- if (payload.id !== toValue(args.id)) return;
67
- if (payload.api === "runtime") {
68
- switch (payload.key) {
69
- case "loaded":
70
- loaded.value = payload.value;
71
- break;
72
- }
73
- }
74
- });
75
- watch(loaded, (value) => {
76
- emitter.emit("update", {
77
- id: toValue(args.id),
78
- api: "runtime",
79
- key: "loaded",
80
- value
81
- });
82
- });
83
66
  return {
84
- loaded,
85
67
  initialize,
86
68
  destroy
87
69
  };
@@ -0,0 +1,7 @@
1
+ import { type Ref, type MaybeRef } from 'vue';
2
+ import type { PlayerState } from '../../types/index.js';
3
+ export declare function usePlayerState(id: MaybeRef<string>): {
4
+ initializeState: () => PlayerState;
5
+ deleteState: () => void;
6
+ playerStateStore: Ref<PlayerState[], PlayerState[]>;
7
+ };
@@ -0,0 +1,56 @@
1
+ import { ref, reactive, toValue } from "vue";
2
+ const playerStateStore = ref([]);
3
+ export function usePlayerState(id) {
4
+ function createState(id2) {
5
+ const state = {
6
+ id: id2,
7
+ currentTime: 0,
8
+ duration: 0,
9
+ seeking: false,
10
+ volume: 1,
11
+ rate: 1,
12
+ loaded: false,
13
+ waiting: false,
14
+ ended: false,
15
+ playing: false,
16
+ stalled: false,
17
+ buffered: [],
18
+ muted: false,
19
+ touched: false,
20
+ isFullscreen: false,
21
+ fullscreenTarget: null,
22
+ mouseEntered: false,
23
+ controlsMouseEntered: false,
24
+ dragging: false,
25
+ seekedTime: 0,
26
+ seekedPercentage: 0,
27
+ scrubbedPercentage: 0,
28
+ thumbPercentage: 0,
29
+ popoverOffsetX: 0,
30
+ controlsBarRect: void 0,
31
+ controlsTrackRect: void 0,
32
+ controlsPopoverRect: void 0
33
+ };
34
+ return reactive(state);
35
+ }
36
+ function addState(id2) {
37
+ const state = createState(id2);
38
+ playerStateStore.value = [...playerStateStore.value, state];
39
+ return state;
40
+ }
41
+ function initializeState() {
42
+ let state = playerStateStore.value.find((entry) => {
43
+ return entry.id === id;
44
+ });
45
+ if (!state) state = addState(toValue(id));
46
+ return state;
47
+ }
48
+ function deleteState() {
49
+ playerStateStore.value = playerStateStore.value.filter((x) => x.id !== id);
50
+ }
51
+ return {
52
+ initializeState,
53
+ deleteState,
54
+ playerStateStore
55
+ };
56
+ }
@@ -5,9 +5,6 @@ export type UsePlayerVideoApiArgs = {
5
5
  videoRef?: Ref<HTMLVideoElement | null>;
6
6
  };
7
7
  export declare function usePlayerVideoApi(args: UsePlayerVideoApiArgs): {
8
- mouseEntered: import("vue").ShallowRef<boolean, boolean>;
9
- isFullscreen: Ref<boolean, boolean>;
10
- touched: import("vue").ShallowRef<boolean, boolean>;
11
8
  play: () => void;
12
9
  pause: () => void;
13
10
  togglePlay: () => void;
@@ -16,7 +13,5 @@ export declare function usePlayerVideoApi(args: UsePlayerVideoApiArgs): {
16
13
  unmute: () => void;
17
14
  enterFullscreen: () => void;
18
15
  exitFullscreen: () => void;
19
- onMouseenter: () => void;
20
- onMouseleave: () => void;
21
16
  };
22
17
  export type UsePlayerVideoApiReturn = ReturnType<typeof usePlayerVideoApi>;
@@ -1,15 +1,13 @@
1
- import { ref, shallowRef, watch, toValue } from "vue";
1
+ import { toRefs, watch, toValue } from "vue";
2
2
  import { useFullscreen } from "@vueuse/core";
3
3
  import { isIOS } from "@maas/vue-equipment/utils";
4
- import { usePlayerStateEmitter } from "./usePlayerStateEmitter.mjs";
5
- import { usePlayerMediaApi } from "./usePlayerMediaApi.mjs";
4
+ import { usePlayerState } from "./usePlayerState.mjs";
6
5
  export function usePlayerVideoApi(args) {
7
6
  const { id, playerRef, videoRef } = args;
8
- const fullscreenTarget = ref(null);
9
- const { playing, currentTime, muted } = usePlayerMediaApi({ id });
10
- const touched = shallowRef(false);
11
- const mouseEntered = shallowRef(false);
12
- const { isFullscreen, enter, exit } = useFullscreen(fullscreenTarget);
7
+ const { initializeState } = usePlayerState(toValue(id));
8
+ const state = initializeState();
9
+ const { currentTime, playing, muted, touched, fullscreenTarget } = toRefs(state);
10
+ const { enter, exit } = useFullscreen(fullscreenTarget);
13
11
  function play() {
14
12
  playing.value = true;
15
13
  }
@@ -28,12 +26,6 @@ export function usePlayerVideoApi(args) {
28
26
  function unmute() {
29
27
  muted.value = false;
30
28
  }
31
- function onMouseenter() {
32
- mouseEntered.value = true;
33
- }
34
- function onMouseleave() {
35
- mouseEntered.value = false;
36
- }
37
29
  function enterFullscreen() {
38
30
  if (!fullscreenTarget.value) {
39
31
  console.error("No fullscreen target found");
@@ -78,52 +70,7 @@ export function usePlayerVideoApi(args) {
78
70
  }
79
71
  });
80
72
  }
81
- const emitter = usePlayerStateEmitter();
82
- emitter.on("update", (payload) => {
83
- if (payload.id !== toValue(id)) return;
84
- if (payload.api === "player") {
85
- switch (payload.key) {
86
- case "mouseEntered":
87
- mouseEntered.value = payload.value;
88
- break;
89
- case "fullscreenTarget":
90
- fullscreenTarget.value = payload.value;
91
- break;
92
- case "touched":
93
- touched.value = payload.value;
94
- break;
95
- }
96
- }
97
- });
98
- watch(mouseEntered, (value) => {
99
- emitter.emit("update", {
100
- id: toValue(id),
101
- api: "player",
102
- key: "mouseEntered",
103
- value
104
- });
105
- });
106
- watch(touched, (value) => {
107
- emitter.emit("update", {
108
- id: toValue(id),
109
- api: "player",
110
- key: "touched",
111
- value
112
- });
113
- });
114
- watch(fullscreenTarget, (value) => {
115
- if (!value) return;
116
- emitter.emit("update", {
117
- id: toValue(id),
118
- api: "player",
119
- key: "fullscreenTarget",
120
- value
121
- });
122
- });
123
73
  return {
124
- mouseEntered,
125
- isFullscreen,
126
- touched,
127
74
  play,
128
75
  pause,
129
76
  togglePlay,
@@ -131,8 +78,6 @@ export function usePlayerVideoApi(args) {
131
78
  mute,
132
79
  unmute,
133
80
  enterFullscreen,
134
- exitFullscreen,
135
- onMouseenter,
136
- onMouseleave
81
+ exitFullscreen
137
82
  };
138
83
  }
@@ -1,23 +1,34 @@
1
- import type { MaybeRef } from 'vue';
1
+ import { type MaybeRef } from 'vue';
2
2
  export declare function useMagicPlayer(id: MaybeRef<string>): {
3
- mediaApi: {
4
- currentTime: import("vue").ShallowRef<number, number>;
5
- remainingTime: import("vue").ComputedRef<number>;
6
- duration: import("vue").ShallowRef<number, number>;
7
- seeking: import("vue").ShallowRef<boolean, boolean>;
8
- volume: import("vue").ShallowRef<number, number>;
9
- rate: import("vue").ShallowRef<number, number>;
10
- waiting: import("vue").ShallowRef<boolean, boolean>;
11
- ended: import("vue").ShallowRef<boolean, boolean>;
12
- playing: import("vue").ShallowRef<boolean, boolean>;
13
- stalled: import("vue").ShallowRef<boolean, boolean>;
14
- buffered: import("vue").Ref<[number, number][], import("../types").Buffered | [number, number][]>;
15
- muted: import("vue").ShallowRef<boolean, boolean>;
3
+ duration: import("vue").Ref<number, number>;
4
+ seeking: import("vue").Ref<boolean, boolean>;
5
+ volume: import("vue").Ref<number, number>;
6
+ rate: import("vue").Ref<number, number>;
7
+ loaded: import("vue").Ref<boolean, boolean>;
8
+ waiting: import("vue").Ref<boolean, boolean>;
9
+ ended: import("vue").Ref<boolean, boolean>;
10
+ playing: import("vue").Ref<boolean, boolean>;
11
+ stalled: import("vue").Ref<boolean, boolean>;
12
+ buffered: import("vue").Ref<import("../types/index.js").Buffered, import("../types/index.js").Buffered>;
13
+ muted: import("vue").Ref<boolean, boolean>;
14
+ touched: import("vue").Ref<boolean, boolean>;
15
+ dragging: import("vue").Ref<boolean, boolean>;
16
+ isFullscreen: import("vue").Ref<boolean, boolean>;
17
+ seekedTime: import("vue").Ref<number, number>;
18
+ seekedPercentage: import("vue").Ref<number, number>;
19
+ scrubbedPercentage: import("vue").Ref<number, number>;
20
+ thumbPercentage: import("vue").Ref<number, number>;
21
+ popoverOffsetX: import("vue").Ref<number, number>;
22
+ audioApi: {
23
+ play: () => void;
24
+ pause: () => void;
25
+ togglePlay: () => void;
26
+ seek: (time: number) => void;
27
+ mute: () => void;
28
+ unmute: () => void;
16
29
  };
30
+ mediaApi: void;
17
31
  videoApi: {
18
- mouseEntered: import("vue").ShallowRef<boolean, boolean>;
19
- isFullscreen: import("vue").Ref<boolean, boolean>;
20
- touched: import("vue").ShallowRef<boolean, boolean>;
21
32
  play: () => void;
22
33
  pause: () => void;
23
34
  togglePlay: () => void;
@@ -26,47 +37,17 @@ export declare function useMagicPlayer(id: MaybeRef<string>): {
26
37
  unmute: () => void;
27
38
  enterFullscreen: () => void;
28
39
  exitFullscreen: () => void;
29
- onMouseenter: () => void;
30
- onMouseleave: () => void;
31
40
  };
32
41
  controlsApi: {
33
- mouseEntered: import("vue").ShallowRef<boolean, boolean>;
34
- dragging: import("vue").ShallowRef<boolean, boolean>;
35
- seekedTime: import("vue").ShallowRef<number, number>;
36
- seekedPercentage: import("vue").ShallowRef<number, number>;
37
- scrubbedPercentage: import("vue").ShallowRef<number, number>;
42
+ initialize: () => void;
43
+ destroy: () => void;
38
44
  bufferedPercentage: import("vue").ComputedRef<number>;
39
- thumbPercentage: import("vue").ShallowRef<number, number>;
40
- popoverOffsetX: import("vue").ShallowRef<number, number>;
41
45
  onMouseenter: () => void;
42
46
  onMouseleave: () => void;
43
- onPointerdown: (e: MouseEvent | TouchEvent) => void;
44
- onPointerup: () => void;
45
- onPointermove: (e: MouseEvent | TouchEvent) => void;
46
- trackRect: import("vue").Ref<{
47
- height: number;
48
- width: number;
49
- x: number;
50
- y: number;
51
- readonly bottom: number;
52
- readonly left: number;
53
- readonly right: number;
54
- readonly top: number;
55
- toJSON: () => any;
56
- } | undefined, DOMRect | {
57
- height: number;
58
- width: number;
59
- x: number;
60
- y: number;
61
- readonly bottom: number;
62
- readonly left: number;
63
- readonly right: number;
64
- readonly top: number;
65
- toJSON: () => any;
66
- } | undefined>;
47
+ onPointerdown: (e: PointerEvent) => void;
48
+ onPointermove: (e: PointerEvent) => void;
67
49
  };
68
50
  playerRuntime: {
69
- loaded: import("vue").ShallowRef<boolean, boolean>;
70
51
  initialize: () => void;
71
52
  destroy: () => void;
72
53
  };
@@ -1,13 +1,60 @@
1
+ import { toRefs } from "vue";
1
2
  import { usePlayerMediaApi } from "./private/usePlayerMediaApi.mjs";
2
3
  import { usePlayerVideoApi } from "./private/usePlayerVideoApi.mjs";
4
+ import { usePlayerAudioApi } from "./private/usePlayerAudioApi.mjs";
3
5
  import { usePlayerRuntime } from "./private/usePlayerRuntime.mjs";
4
6
  import { usePlayerControlsApi } from "./private/usePlayerControlsApi.mjs";
7
+ import { usePlayerState } from "./private/usePlayerState.mjs";
5
8
  export function useMagicPlayer(id) {
9
+ const audioApi = usePlayerAudioApi({ id });
6
10
  const mediaApi = usePlayerMediaApi({ id });
7
11
  const videoApi = usePlayerVideoApi({ id });
8
12
  const controlsApi = usePlayerControlsApi({ id });
9
13
  const playerRuntime = usePlayerRuntime({ id });
14
+ const { initializeState } = usePlayerState(id);
15
+ const state = initializeState();
16
+ const {
17
+ duration,
18
+ seeking,
19
+ volume,
20
+ rate,
21
+ loaded,
22
+ waiting,
23
+ ended,
24
+ playing,
25
+ stalled,
26
+ buffered,
27
+ muted,
28
+ touched,
29
+ dragging,
30
+ isFullscreen,
31
+ seekedTime,
32
+ seekedPercentage,
33
+ scrubbedPercentage,
34
+ thumbPercentage,
35
+ popoverOffsetX
36
+ } = toRefs(state);
10
37
  return {
38
+ duration,
39
+ seeking,
40
+ volume,
41
+ rate,
42
+ loaded,
43
+ waiting,
44
+ ended,
45
+ playing,
46
+ stalled,
47
+ buffered,
48
+ muted,
49
+ touched,
50
+ dragging,
51
+ isFullscreen,
52
+ seekedTime,
53
+ seekedPercentage,
54
+ scrubbedPercentage,
55
+ thumbPercentage,
56
+ popoverOffsetX,
57
+ audioApi,
11
58
  mediaApi,
12
59
  videoApi,
13
60
  controlsApi,
@@ -1,5 +1,8 @@
1
- import type { InjectionKey, MaybeRef } from 'vue';
1
+ import type { InjectionKey, MaybeRef, Ref } from 'vue';
2
2
  import type { MagicPlayerOptions } from '../types/index.js';
3
3
  declare const MagicPlayerInstanceId: InjectionKey<MaybeRef<string>>;
4
4
  declare const MagicPlayerOptionsKey: InjectionKey<MagicPlayerOptions>;
5
- export { MagicPlayerInstanceId, MagicPlayerOptionsKey };
5
+ declare const MagicPlayerTrackRef: InjectionKey<Ref<HTMLDivElement | null>>;
6
+ declare const MagicPlayerBarRef: InjectionKey<Ref<HTMLDivElement | null>>;
7
+ declare const MagicPlayerPopoverRef: InjectionKey<Ref<HTMLDivElement | null>>;
8
+ export { MagicPlayerInstanceId, MagicPlayerOptionsKey, MagicPlayerTrackRef, MagicPlayerBarRef, MagicPlayerPopoverRef, };
@@ -1,3 +1,12 @@
1
1
  const MagicPlayerInstanceId = Symbol();
2
2
  const MagicPlayerOptionsKey = Symbol();
3
- export { MagicPlayerInstanceId, MagicPlayerOptionsKey };
3
+ const MagicPlayerTrackRef = Symbol();
4
+ const MagicPlayerBarRef = Symbol();
5
+ const MagicPlayerPopoverRef = Symbol();
6
+ export {
7
+ MagicPlayerInstanceId,
8
+ MagicPlayerOptionsKey,
9
+ MagicPlayerTrackRef,
10
+ MagicPlayerBarRef,
11
+ MagicPlayerPopoverRef
12
+ };
@@ -19,4 +19,33 @@ export type PlayerPrivateEvents = {
19
19
  value: string | number | boolean | Buffered | DOMRect | HTMLElement;
20
20
  };
21
21
  };
22
+ export interface PlayerState {
23
+ id: string;
24
+ currentTime: number;
25
+ duration: number;
26
+ seeking: boolean;
27
+ volume: number;
28
+ rate: number;
29
+ loaded: boolean;
30
+ waiting: boolean;
31
+ ended: boolean;
32
+ playing: boolean;
33
+ stalled: boolean;
34
+ buffered: Buffered;
35
+ muted: boolean;
36
+ touched: boolean;
37
+ isFullscreen: boolean;
38
+ fullscreenTarget: HTMLElement | null;
39
+ mouseEntered: boolean;
40
+ controlsMouseEntered: boolean;
41
+ dragging: boolean;
42
+ seekedTime: number;
43
+ seekedPercentage: number;
44
+ scrubbedPercentage: number;
45
+ thumbPercentage: number;
46
+ popoverOffsetX: number;
47
+ controlsBarRect: DOMRect | undefined;
48
+ controlsTrackRect: DOMRect | undefined;
49
+ controlsPopoverRect: DOMRect | undefined;
50
+ }
22
51
  export {};