@maas/vue-equipment 1.0.0-beta.34 → 1.0.0-beta.36

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 (140) hide show
  1. package/dist/composables/useScrollTo/index.js +6 -2
  2. package/dist/composables/useScrollTo/index.js.map +1 -1
  3. package/dist/nuxt/module.d.mts +2 -2
  4. package/dist/nuxt/module.json +1 -1
  5. package/dist/nuxt/module.mjs +8 -1
  6. package/dist/plugins/.turbo/turbo-lint.log +1 -1
  7. package/dist/plugins/MagicAccordion/src/components/MagicAccordionContent.vue +15 -6
  8. package/dist/plugins/MagicAccordion/src/components/MagicAccordionContent.vue.d.ts +1 -1
  9. package/dist/plugins/MagicAccordion/src/components/MagicAccordionProvider.vue.d.ts +1 -1
  10. package/dist/plugins/MagicAccordion/src/components/MagicAccordionTrigger.vue +17 -12
  11. package/dist/plugins/MagicAccordion/src/components/MagicAccordionTrigger.vue.d.ts +1 -1
  12. package/dist/plugins/MagicAccordion/src/components/MagicAccordionView.vue +11 -5
  13. package/dist/plugins/MagicAccordion/src/components/MagicAccordionView.vue.d.ts +1 -1
  14. package/dist/plugins/MagicAccordion/src/composables/private/useAccordionTrigger.d.ts +2 -2
  15. package/dist/plugins/MagicAccordion/src/composables/private/useAccordionTrigger.mjs +5 -5
  16. package/dist/plugins/MagicCommand/src/components/MagicCommandContent.vue +28 -10
  17. package/dist/plugins/MagicCommand/src/components/MagicCommandContent.vue.d.ts +1 -1
  18. package/dist/plugins/MagicCommand/src/components/MagicCommandDrawer.vue +11 -5
  19. package/dist/plugins/MagicCommand/src/components/MagicCommandDrawer.vue.d.ts +1 -1
  20. package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue +19 -9
  21. package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue.d.ts +1 -1
  22. package/dist/plugins/MagicCommand/src/components/MagicCommandModal.vue.d.ts +1 -1
  23. package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue +17 -2
  24. package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue.d.ts +1 -1
  25. package/dist/plugins/MagicCommand/src/components/MagicCommandRenderer.vue +11 -5
  26. package/dist/plugins/MagicCommand/src/components/MagicCommandRenderer.vue.d.ts +1 -1
  27. package/dist/plugins/MagicCommand/src/components/MagicCommandTrigger.vue +22 -11
  28. package/dist/plugins/MagicCommand/src/components/MagicCommandTrigger.vue.d.ts +1 -1
  29. package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue +11 -3
  30. package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue.d.ts +1 -1
  31. package/dist/plugins/MagicCommand/src/composables/private/useCommandItem.mjs +3 -1
  32. package/dist/plugins/MagicCommand/src/composables/private/useCommandView.d.ts +1 -1
  33. package/dist/plugins/MagicCommand/src/composables/private/useCommandView.mjs +63 -44
  34. package/dist/plugins/MagicCommand/src/composables/useMagicCommand.mjs +21 -4
  35. package/dist/plugins/MagicCookie/src/components/MagicCookieItem.vue +12 -3
  36. package/dist/plugins/MagicCookie/src/components/MagicCookieItem.vue.d.ts +1 -1
  37. package/dist/plugins/MagicCookie/src/components/MagicCookieProvider.vue.d.ts +1 -1
  38. package/dist/plugins/MagicCookie/src/components/MagicCookieView.vue +11 -5
  39. package/dist/plugins/MagicCookie/src/components/MagicCookieView.vue.d.ts +1 -1
  40. package/dist/plugins/MagicCookie/src/composables/private/useCookieItem.mjs +9 -2
  41. package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue +11 -2
  42. package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue.d.ts +1 -1
  43. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.mjs +8 -3
  44. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableScrollLock.mjs +3 -1
  45. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.mjs +7 -2
  46. package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +7 -2
  47. package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue.d.ts +1 -1
  48. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDOM.mjs +3 -1
  49. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +6 -1
  50. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.mjs +55 -21
  51. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerState.mjs +3 -1
  52. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerUtils.mjs +21 -8
  53. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerWheel.mjs +6 -1
  54. package/dist/plugins/MagicError/index.d.ts +5 -0
  55. package/dist/plugins/MagicError/index.mjs +3 -0
  56. package/dist/plugins/MagicError/nuxt.d.ts +2 -0
  57. package/dist/plugins/MagicError/nuxt.mjs +12 -0
  58. package/dist/plugins/MagicError/package.json +40 -0
  59. package/dist/plugins/MagicError/src/MagicError.d.ts +0 -0
  60. package/dist/plugins/MagicError/src/MagicError.mjs +0 -0
  61. package/dist/plugins/MagicError/src/class/MagicError.d.ts +6 -0
  62. package/dist/plugins/MagicError/src/class/MagicError.mjs +15 -0
  63. package/dist/plugins/MagicError/src/composables/useMagicError.d.ts +18 -0
  64. package/dist/plugins/MagicError/src/composables/useMagicError.mjs +31 -0
  65. package/dist/plugins/MagicMarquee/src/components/MagicMarquee.vue.d.ts +1 -1
  66. package/dist/plugins/MagicMenu/src/components/MagicMenuChannel.vue +22 -10
  67. package/dist/plugins/MagicMenu/src/components/MagicMenuChannel.vue.d.ts +1 -1
  68. package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue +15 -6
  69. package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue.d.ts +1 -1
  70. package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue +1 -1
  71. package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue.d.ts +4 -3
  72. package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue +19 -9
  73. package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue.d.ts +1 -1
  74. package/dist/plugins/MagicMenu/src/components/MagicMenuProvider.vue.d.ts +1 -1
  75. package/dist/plugins/MagicMenu/src/components/MagicMenuRemote.vue +19 -13
  76. package/dist/plugins/MagicMenu/src/components/MagicMenuRemote.vue.d.ts +1 -1
  77. package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue +15 -10
  78. package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue.d.ts +1 -1
  79. package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue +12 -4
  80. package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue.d.ts +3 -3
  81. package/dist/plugins/MagicMenu/src/composables/private/useMenuDOM.mjs +3 -1
  82. package/dist/plugins/MagicMenu/src/composables/private/useMenuItem.mjs +12 -2
  83. package/dist/plugins/MagicMenu/src/composables/private/useMenuKeyListener.mjs +22 -10
  84. package/dist/plugins/MagicMenu/src/composables/private/useMenuView.mjs +13 -4
  85. package/dist/plugins/MagicMenu/src/types/index.d.ts +2 -2
  86. package/dist/plugins/MagicModal/src/components/MagicModal.vue.d.ts +1 -1
  87. package/dist/plugins/MagicModal/src/composables/private/useModalDOM.mjs +3 -1
  88. package/dist/plugins/MagicNoise/src/components/MagicNoise.vue.d.ts +1 -1
  89. package/dist/plugins/MagicNoise/src/composables/private/useNoiseApi.mjs +7 -3
  90. package/dist/plugins/MagicPie/src/components/MagicPie.vue +15 -2
  91. package/dist/plugins/MagicPie/src/components/MagicPie.vue.d.ts +1 -1
  92. package/dist/plugins/MagicPie/src/composables/private/usePieState.mjs +3 -1
  93. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudio.vue +17 -7
  94. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudio.vue.d.ts +1 -1
  95. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue +11 -5
  96. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue.d.ts +1 -1
  97. package/dist/plugins/MagicPlayer/src/components/MagicPlayerDisplayTime.vue +11 -5
  98. package/dist/plugins/MagicPlayer/src/components/MagicPlayerDisplayTime.vue.d.ts +1 -1
  99. package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue +29 -14
  100. package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue.d.ts +1 -1
  101. package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue +11 -5
  102. package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue.d.ts +1 -1
  103. package/dist/plugins/MagicPlayer/src/components/MagicPlayerPoster.vue +11 -5
  104. package/dist/plugins/MagicPlayer/src/components/MagicPlayerPoster.vue.d.ts +1 -1
  105. package/dist/plugins/MagicPlayer/src/components/MagicPlayerProvider.vue.d.ts +1 -1
  106. package/dist/plugins/MagicPlayer/src/components/MagicPlayerTimeline.vue +11 -5
  107. package/dist/plugins/MagicPlayer/src/components/MagicPlayerTimeline.vue.d.ts +1 -1
  108. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideo.vue +17 -7
  109. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideo.vue.d.ts +1 -1
  110. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue +11 -5
  111. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue.d.ts +1 -1
  112. package/dist/plugins/MagicPlayer/src/components/icons/FullscreenEnter.vue.d.ts +1 -1
  113. package/dist/plugins/MagicPlayer/src/components/icons/FullscreenExit.vue.d.ts +1 -1
  114. package/dist/plugins/MagicPlayer/src/components/icons/Pause.vue.d.ts +1 -1
  115. package/dist/plugins/MagicPlayer/src/components/icons/Play.vue.d.ts +1 -1
  116. package/dist/plugins/MagicPlayer/src/components/icons/VolumeOff.vue.d.ts +1 -1
  117. package/dist/plugins/MagicPlayer/src/components/icons/VolumeOn.vue.d.ts +1 -1
  118. package/dist/plugins/MagicPlayer/src/components/icons/Waiting.vue.d.ts +1 -1
  119. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.mjs +65 -11
  120. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.d.ts +1 -0
  121. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.mjs +96 -16
  122. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerState.mjs +3 -1
  123. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerVideoApi.mjs +7 -2
  124. package/dist/plugins/MagicPlayer/src/types/index.d.ts +2 -0
  125. package/dist/plugins/MagicPlayer/src/utils/defaultOptions.mjs +1 -0
  126. package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue +12 -6
  127. package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue.d.ts +1 -1
  128. package/dist/plugins/MagicScroll/src/components/MagicScrollMotion.vue.d.ts +1 -1
  129. package/dist/plugins/MagicScroll/src/components/MagicScrollProvider.vue.d.ts +1 -1
  130. package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue +11 -3
  131. package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue.d.ts +1 -1
  132. package/dist/plugins/MagicToast/src/components/MagicToastProvider.vue.d.ts +1 -1
  133. package/dist/plugins/MagicToast/src/components/MagicToastView.vue +11 -3
  134. package/dist/plugins/MagicToast/src/components/MagicToastView.vue.d.ts +1 -1
  135. package/dist/plugins/MagicToast/src/composables/private/useToastCallback.d.ts +2 -2
  136. package/dist/plugins/MagicToast/src/composables/private/useToastCallback.mjs +7 -5
  137. package/dist/plugins/MagicToast/src/composables/private/useToastScrollLock.mjs +3 -1
  138. package/dist/utils/index.js +3 -1
  139. package/dist/utils/index.js.map +1 -1
  140. package/package.json +16 -21
@@ -69,6 +69,9 @@ import {
69
69
  onBeforeUnmount
70
70
  } from "vue";
71
71
  import { useIdle } from "@vueuse/core";
72
+ import {
73
+ useMagicError
74
+ } from "@maas/vue-equipment/plugins/MagicError";
72
75
  import { usePlayerState } from "../composables/private/usePlayerState";
73
76
  import { usePlayerAudioApi } from "../composables/private/usePlayerAudioApi";
74
77
  import { usePlayerControlsApi } from "../composables/private/usePlayerControlsApi";
@@ -83,14 +86,17 @@ import {
83
86
  const { instanceId } = defineProps({
84
87
  instanceId: { type: String, required: false }
85
88
  });
89
+ const magicError = useMagicError({
90
+ prefix: "MagicPlayer",
91
+ source: "MagicPlayerAudioControls"
92
+ });
86
93
  const injectedInstanceId = inject(MagicPlayerInstanceId, void 0);
87
94
  const injectedOptions = inject(MagicPlayerOptionsKey, void 0);
88
95
  const mappedInstanceId = computed(() => instanceId ?? injectedInstanceId);
89
- if (!mappedInstanceId.value) {
90
- throw new Error(
91
- "MagicAudioPlayerControls must be nested inside MagicAudioPlayer or an instanceId must be provided."
92
- );
93
- }
96
+ magicError.assert(mappedInstanceId.value, {
97
+ message: "MagicAudioPlayerControls must be nested inside MagicAudioPlayer or an instanceId must be provided",
98
+ errorCode: "missing_instance_id"
99
+ });
94
100
  const barRef = useTemplateRef("bar");
95
101
  const trackRef = useTemplateRef("track");
96
102
  const { play, pause } = usePlayerAudioApi({
@@ -7,7 +7,7 @@ type __VLS_Slots = {} & {
7
7
  } & {
8
8
  pauseIcon?: (props: typeof __VLS_7) => any;
9
9
  };
10
- declare const __VLS_component: import("vue").DefineComponent<MagicAudioPlayerControlsProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicAudioPlayerControlsProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ declare const __VLS_component: import("vue").DefineComponent<MagicAudioPlayerControlsProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicAudioPlayerControlsProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
11
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
12
12
  export default _default;
13
13
  type __VLS_WithSlots<T, S> = T & {
@@ -6,18 +6,24 @@
6
6
 
7
7
  <script setup>
8
8
  import { computed, inject, toRefs } from "vue";
9
+ import {
10
+ useMagicError
11
+ } from "@maas/vue-equipment/plugins/MagicError";
9
12
  import { formatTime } from "@maas/vue-equipment/utils";
10
13
  import { usePlayerState } from "../composables/private/usePlayerState";
11
14
  import { MagicPlayerInstanceId } from "../symbols";
12
15
  const { type = "current" } = defineProps({
13
16
  type: { type: String, required: false }
14
17
  });
18
+ const magicError = useMagicError({
19
+ prefix: "MagicPlayer",
20
+ source: "MagicPlayerDisplayTime"
21
+ });
15
22
  const instanceId = inject(MagicPlayerInstanceId);
16
- if (!instanceId) {
17
- throw new Error(
18
- "MagicPlayerDisplayTime must be nested inside MagicPlayerVideoControls or MagicPlayerAudioControls."
19
- );
20
- }
23
+ magicError.assert(instanceId, {
24
+ message: "MagicPlayerDisplayTime must be nested inside MagicPlayerVideoControls or MagicPlayerAudioControls",
25
+ errorCode: "missing_instance_id"
26
+ });
21
27
  const { initializeState } = usePlayerState(instanceId);
22
28
  const state = initializeState();
23
29
  const { currentTime, duration } = toRefs(state);
@@ -1,5 +1,5 @@
1
1
  interface MagicPlayerDisplayTimeProps {
2
2
  type?: 'current' | 'remaining' | 'duration';
3
3
  }
4
- declare const _default: import("vue").DefineComponent<MagicPlayerDisplayTimeProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicPlayerDisplayTimeProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
4
+ declare const _default: import("vue").DefineComponent<MagicPlayerDisplayTimeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicPlayerDisplayTimeProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
5
  export default _default;
@@ -25,18 +25,28 @@ import {
25
25
  useTemplateRef
26
26
  } from "vue";
27
27
  import { useDevicePixelRatio } from "@vueuse/core";
28
+ import {
29
+ useMagicError
30
+ } from "@maas/vue-equipment/plugins/MagicError";
28
31
  import { usePlayerState } from "../composables/private/usePlayerState";
29
32
  import { MagicPlayerInstanceId, MagicPlayerOptionsKey } from "../symbols";
30
33
  const { playbackId } = defineProps({
31
34
  playbackId: { type: String, required: false }
32
35
  });
36
+ const magicError = useMagicError({
37
+ prefix: "MagicPlayer",
38
+ source: "MagicPlayerMuxPopover"
39
+ });
33
40
  const instanceId = inject(MagicPlayerInstanceId, void 0);
34
41
  const injectedOptions = inject(MagicPlayerOptionsKey, void 0);
35
- if (!instanceId || !injectedOptions) {
36
- throw new Error(
37
- "MagicPlayerMuxPopover must be nested inside MagicPlayerVideoControls."
38
- );
39
- }
42
+ magicError.assert(instanceId, {
43
+ message: "MagicPlayerMuxPopover must be nested inside MagicPlayerVideoControls",
44
+ errorCode: "missing_instance_id"
45
+ });
46
+ magicError.assert(injectedOptions, {
47
+ message: "MagicPlayerMuxPopover must be nested inside MagicPlayerVideoControls",
48
+ errorCode: "missing_options"
49
+ });
40
50
  const { initializeState } = usePlayerState(instanceId);
41
51
  const state = initializeState();
42
52
  const { seekedTime } = toRefs(state);
@@ -93,25 +103,30 @@ async function initialize() {
93
103
  const parsedPlaybackId = getMuxId(injectedOptions?.src);
94
104
  const mappedPlaybackId = playbackId ?? parsedPlaybackId;
95
105
  if (!mappedPlaybackId) {
96
- console.error(
97
- "MagicPlayerMuxPopover must be nested inside MagicPlayerProvider or a playbackId must be provided"
98
- );
99
- return;
106
+ magicError.throwError({
107
+ errorCode: "missing_instance_id",
108
+ message: "MagicPlayerMuxPopover must be nested inside MagicPlayerProvider or a playbackId must be provided"
109
+ });
100
110
  }
101
111
  try {
102
112
  storyboard.value = await fetch(
103
113
  `https://image.mux.com/${mappedPlaybackId}/storyboard.json`
104
114
  ).then((res) => res.json());
105
- if (!storyboard.value) {
106
- throw new Error();
107
- }
115
+ magicError.assert(storyboard.value, {
116
+ message: "Failed to fetch timeline preview",
117
+ errorCode: "fetch_timeline_error"
118
+ });
108
119
  image = new Image();
109
120
  image.src = storyboard.value.url;
110
121
  await image.decode();
111
122
  context = canvasRef.value?.getContext("2d");
112
123
  drawFrame(seekedTime.value);
113
- } catch (e) {
114
- console.error("Can not initialize timeline preview", e);
124
+ } catch (error) {
125
+ magicError.throwError({
126
+ errorCode: "initialize_timeline_error",
127
+ message: "Can not initialize timeline preview",
128
+ cause: error
129
+ });
115
130
  }
116
131
  }
117
132
  onMounted(() => {
@@ -1,5 +1,5 @@
1
1
  interface MagicPlayerMuxPopoverProps {
2
2
  playbackId?: string;
3
3
  }
4
- declare const _default: import("vue").DefineComponent<MagicPlayerMuxPopoverProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicPlayerMuxPopoverProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
4
+ declare const _default: import("vue").DefineComponent<MagicPlayerMuxPopoverProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicPlayerMuxPopoverProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
5
  export default _default;
@@ -50,6 +50,9 @@
50
50
  <script setup>
51
51
  import { watch, ref, computed, inject, toRefs } from "vue";
52
52
  import { useIdle } from "@vueuse/core";
53
+ import {
54
+ useMagicError
55
+ } from "@maas/vue-equipment/plugins/MagicError";
53
56
  import IconPlay from "./icons/Play.vue";
54
57
  import IconPause from "./icons/Pause.vue";
55
58
  import IconWaiting from "./icons/Waiting.vue";
@@ -59,13 +62,16 @@ import { MagicPlayerInstanceId, MagicPlayerOptionsKey } from "../symbols";
59
62
  const { transition } = defineProps({
60
63
  transition: { type: Object, required: false }
61
64
  });
65
+ const magicError = useMagicError({
66
+ prefix: "MagicPlayer",
67
+ source: "MagicPlayerOverlay"
68
+ });
62
69
  const instanceId = inject(MagicPlayerInstanceId, void 0);
63
70
  const injectedOptions = inject(MagicPlayerOptionsKey, void 0);
64
- if (!instanceId) {
65
- throw new Error(
66
- "MagicPlayerOverlay must be nested inside MagicPlayerProvider."
67
- );
68
- }
71
+ magicError.assert(instanceId, {
72
+ message: "MagicPlayerOverlay must be nested inside MagicPlayerProvider",
73
+ errorCode: "missing_instance_id"
74
+ });
69
75
  const { initializeState } = usePlayerState(instanceId);
70
76
  const state = initializeState();
71
77
  const {
@@ -14,7 +14,7 @@ type __VLS_Slots = {} & {
14
14
  } & {
15
15
  pauseIcon?: (props: typeof __VLS_25) => any;
16
16
  };
17
- declare const __VLS_component: import("vue").DefineComponent<MagicPlayerOverlayProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicPlayerOverlayProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const __VLS_component: import("vue").DefineComponent<MagicPlayerOverlayProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicPlayerOverlayProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
18
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
19
19
  export default _default;
20
20
  type __VLS_WithSlots<T, S> = T & {
@@ -6,14 +6,20 @@
6
6
 
7
7
  <script setup>
8
8
  import { inject, toRefs, computed } from "vue";
9
+ import {
10
+ useMagicError
11
+ } from "@maas/vue-equipment/plugins/MagicError";
9
12
  import { usePlayerState } from "../composables/private/usePlayerState";
10
13
  import { MagicPlayerInstanceId } from "../symbols";
14
+ const magicError = useMagicError({
15
+ prefix: "MagicPlayer",
16
+ source: "MagicPlayerPoster"
17
+ });
11
18
  const instanceId = inject(MagicPlayerInstanceId, void 0);
12
- if (!instanceId) {
13
- throw new Error(
14
- "MagicPlayerPoster must be nested inside MagicPlayerProvider."
15
- );
16
- }
19
+ magicError.assert(instanceId, {
20
+ message: "MagicPlayerPoster must be nested inside MagicPlayerProvider",
21
+ errorCode: "missing_instance_id"
22
+ });
17
23
  const { initializeState } = usePlayerState(instanceId);
18
24
  const state = initializeState();
19
25
  const { loaded, started } = toRefs(state);
@@ -2,7 +2,7 @@ declare var __VLS_1: {};
2
2
  type __VLS_Slots = {} & {
3
3
  default?: (props: typeof __VLS_1) => any;
4
4
  };
5
- declare const __VLS_component: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
5
+ declare const __VLS_component: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
6
6
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
7
7
  export default _default;
8
8
  type __VLS_WithSlots<T, S> = T & {
@@ -8,7 +8,7 @@ declare var __VLS_1: {};
8
8
  type __VLS_Slots = {} & {
9
9
  default?: (props: typeof __VLS_1) => any;
10
10
  };
11
- declare const __VLS_component: import("vue").DefineComponent<MagicPlayerProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicPlayerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_component: import("vue").DefineComponent<MagicPlayerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicPlayerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
12
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
13
13
  export default _default;
14
14
  type __VLS_WithSlots<T, S> = T & {
@@ -34,6 +34,9 @@
34
34
 
35
35
  <script setup>
36
36
  import { inject, toRefs } from "vue";
37
+ import {
38
+ useMagicError
39
+ } from "@maas/vue-equipment/plugins/MagicError";
37
40
  import { usePlayerControlsApi } from "../composables/private/usePlayerControlsApi";
38
41
  import { usePlayerState } from "../composables/private/usePlayerState";
39
42
  import {
@@ -42,12 +45,15 @@ import {
42
45
  MagicPlayerPopoverRef,
43
46
  MagicPlayerBarRef
44
47
  } from "../symbols";
48
+ const magicError = useMagicError({
49
+ prefix: "MagicPlayer",
50
+ source: "MagicPlayerTimeline"
51
+ });
45
52
  const instanceId = inject(MagicPlayerInstanceId, void 0);
46
- if (!instanceId) {
47
- throw new Error(
48
- "MagicPlayerTimeline must be nested inside MagicPlayerVideoControls or MagicPlayerAudioControls."
49
- );
50
- }
53
+ magicError.assert(instanceId, {
54
+ message: "MagicPlayerTimeline must be nested inside MagicPlayerVideoControls or MagicPlayerAudioControls",
55
+ errorCode: "missing_instance_id"
56
+ });
51
57
  const { initializeState } = usePlayerState(instanceId);
52
58
  const state = initializeState();
53
59
  const { controlsMouseEntered, seekedPercentage, scrubbedPercentage } = toRefs(state);
@@ -1,2 +1,2 @@
1
- declare const _default: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;
@@ -26,6 +26,9 @@ import {
26
26
  useEventListener,
27
27
  defaultWindow
28
28
  } from "@vueuse/core";
29
+ import {
30
+ useMagicError
31
+ } from "@maas/vue-equipment/plugins/MagicError";
29
32
  import { usePlayerVideoApi } from "../composables/private/usePlayerVideoApi";
30
33
  import { usePlayerMediaApi } from "../composables/private/usePlayerMediaApi";
31
34
  import { usePlayerRuntime } from "../composables/private/usePlayerRuntime";
@@ -36,21 +39,28 @@ import {
36
39
  MagicPlayerOptionsKey,
37
40
  MagicPlayerRef
38
41
  } from "../symbols";
42
+ const magicError = useMagicError({
43
+ prefix: "MagicPlayer",
44
+ source: "MagicPlayerVideo"
45
+ });
39
46
  const injectedInstanceId = inject(MagicPlayerInstanceId, void 0);
40
47
  const injectedOptions = inject(MagicPlayerOptionsKey, void 0);
41
48
  const injectedPlayerRef = inject(MagicPlayerRef, void 0);
42
- if (!injectedInstanceId) {
43
- throw new Error("MagicPlayerVideo must be used within a MagicPlayerProvider");
44
- }
45
- if (!injectedOptions) {
46
- throw new Error("MagicPlayerVideo must be used within a MagicPlayerProvider");
47
- }
49
+ magicError.assert(injectedInstanceId, {
50
+ message: "MagicPlayerVideo must be used within a MagicPlayerProvider",
51
+ errorCode: "missing_instance_id"
52
+ });
53
+ magicError.assert(injectedOptions, {
54
+ message: "MagicPlayerVideo must be used within a MagicPlayerProvider",
55
+ errorCode: "missing_options"
56
+ });
48
57
  const elRef = useTemplateRef("el");
49
58
  const { initialize, destroy } = usePlayerRuntime({
50
59
  id: injectedInstanceId,
51
60
  mediaRef: elRef,
52
61
  src: injectedOptions.src,
53
- srcType: injectedOptions.srcType
62
+ srcType: injectedOptions.srcType,
63
+ debug: injectedOptions.debug
54
64
  });
55
65
  const { initializeState } = usePlayerState(injectedInstanceId);
56
66
  const state = initializeState();
@@ -1,2 +1,2 @@
1
- declare const _default: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;
@@ -93,6 +93,9 @@ import {
93
93
  onBeforeUnmount
94
94
  } from "vue";
95
95
  import { useIdle } from "@vueuse/core";
96
+ import {
97
+ useMagicError
98
+ } from "@maas/vue-equipment/plugins/MagicError";
96
99
  import IconPlay from "./icons/Play.vue";
97
100
  import IconPause from "./icons/Pause.vue";
98
101
  import IconVolumeOn from "./icons/VolumeOn.vue";
@@ -120,14 +123,17 @@ const {
120
123
  standalone: { type: Boolean, required: false },
121
124
  transition: { type: String, required: false }
122
125
  });
126
+ const magicError = useMagicError({
127
+ prefix: "MagicPlayer",
128
+ source: "MagicPlayerVideoControls"
129
+ });
123
130
  const injectedInstanceId = inject(MagicPlayerInstanceId, void 0);
124
131
  const injectedOptions = inject(MagicPlayerOptionsKey, void 0);
125
132
  const mappedInstanceId = computed(() => id ?? injectedInstanceId);
126
- if (!mappedInstanceId.value) {
127
- throw new Error(
128
- "MagicPlayerVideoControls must be nested inside MagicPlayerProvider or be passed an id as a prop."
129
- );
130
- }
133
+ magicError.assert(mappedInstanceId.value, {
134
+ message: "MagicPlayerVideoControls must be nested inside MagicPlayerProvider or be passed an id as a prop",
135
+ errorCode: "missing_instance_id"
136
+ });
131
137
  const mappedTransition = computed(
132
138
  () => transition ?? injectedOptions?.transition?.videoControls
133
139
  );
@@ -25,7 +25,7 @@ type __VLS_Slots = {} & {
25
25
  } & {
26
26
  fullscreenEnterIcon?: (props: typeof __VLS_47) => any;
27
27
  };
28
- declare const __VLS_component: import("vue").DefineComponent<MagicPlayerControlsProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicPlayerControlsProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ declare const __VLS_component: import("vue").DefineComponent<MagicPlayerControlsProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicPlayerControlsProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
29
29
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
30
30
  export default _default;
31
31
  type __VLS_WithSlots<T, S> = T & {
@@ -1,2 +1,2 @@
1
- declare const _default: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
2
  export default _default;
@@ -1,26 +1,73 @@
1
1
  import { toRefs, watch, unref, toValue } from "vue";
2
2
  import { useEventListener, watchIgnorable } from "@vueuse/core";
3
+ import { useMagicError } from "@maas/vue-equipment/plugins/MagicError";
3
4
  import { usePlayerState } from "./usePlayerState.mjs";
4
5
  export function usePlayerMediaApi(args) {
5
- const { mediaRef, id } = args;
6
+ const { id, mediaRef } = args;
7
+ const { throwError } = useMagicError({
8
+ prefix: "MagicPlayer",
9
+ source: "usePlayerMediaApi"
10
+ });
6
11
  const { initializeState } = usePlayerState(toValue(id));
7
12
  const state = initializeState();
8
13
  const {
14
+ buffered,
9
15
  currentTime,
10
16
  duration,
11
- seeking,
12
- volume,
13
- rate,
14
- loaded,
15
- waiting,
16
- started,
17
17
  ended,
18
- playing,
18
+ loaded,
19
+ muted,
19
20
  paused,
21
+ playing,
22
+ rate,
23
+ seeking,
20
24
  stalled,
21
- buffered,
22
- muted
25
+ started,
26
+ volume,
27
+ waiting
23
28
  } = toRefs(state);
29
+ function handlePlayPromiseError(originalError) {
30
+ let message = "Play promise was rejected";
31
+ let errorCode = "play_promise_rejected";
32
+ switch (originalError.name) {
33
+ case "AbortError":
34
+ message = "The play() request was aborted";
35
+ errorCode = "play_promise_aborted";
36
+ break;
37
+ case "NotAllowedError":
38
+ message = "Autoplay was prevented, user interaction required";
39
+ errorCode = "play_promise_not_allowed";
40
+ break;
41
+ case "NotSupportedError":
42
+ message = "Media format not supported";
43
+ errorCode = "play_promise_not_supported";
44
+ break;
45
+ }
46
+ throwError({ message, errorCode, cause: originalError });
47
+ }
48
+ function handleMediaElementError(originalError) {
49
+ let message = "Media element error";
50
+ let errorCode = "media_element_error";
51
+ switch (originalError.code) {
52
+ case MediaError.MEDIA_ERR_ABORTED:
53
+ message = "Media loading was aborted by the user";
54
+ errorCode = "media_element_aborted";
55
+ break;
56
+ case MediaError.MEDIA_ERR_NETWORK:
57
+ message = "A network error occurred while loading the media";
58
+ errorCode = "media_element_network";
59
+ break;
60
+ case MediaError.MEDIA_ERR_DECODE:
61
+ message = "An error occurred while decoding the media";
62
+ errorCode = "media_element_decode";
63
+ break;
64
+ case MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED:
65
+ message = "The media source is not supported";
66
+ errorCode = "media_element_src_not_supported";
67
+ break;
68
+ }
69
+ throwError({ message, errorCode, cause: originalError });
70
+ }
24
71
  function timeRangeToArray(timeRanges) {
25
72
  let ranges = [];
26
73
  for (let i = 0; i < timeRanges.length; ++i)
@@ -81,8 +128,9 @@ export function usePlayerMediaApi(args) {
81
128
  }
82
129
  if (value) {
83
130
  const playPromise = el.play();
84
- playPromise?.catch(() => {
131
+ playPromise?.catch((error) => {
85
132
  playing.value = false;
133
+ handlePlayPromiseError(error);
86
134
  });
87
135
  } else {
88
136
  el.pause();
@@ -146,4 +194,10 @@ export function usePlayerMediaApi(args) {
146
194
  muted.value = el.muted;
147
195
  }
148
196
  });
197
+ useEventListener(mediaRef, "error", () => {
198
+ const el = toValue(mediaRef);
199
+ if (el?.error) {
200
+ handleMediaElementError(el.error);
201
+ }
202
+ });
149
203
  }
@@ -5,6 +5,7 @@ export type UsePlayerRuntimeArgs = {
5
5
  mediaRef?: Ref<HTMLVideoElement | HTMLAudioElement | null>;
6
6
  srcType?: MagicPlayerOptions['srcType'];
7
7
  src?: string;
8
+ debug?: boolean;
8
9
  };
9
10
  export declare function usePlayerRuntime(args: UsePlayerRuntimeArgs): {
10
11
  initialize: (autoplay?: boolean) => void;