@maas/vue-equipment 1.0.0-beta.33 → 1.0.0-beta.35

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 (98) hide show
  1. package/dist/composables/useCountdown/index.d.ts +23 -0
  2. package/dist/composables/useCountdown/index.js +133 -0
  3. package/dist/composables/useCountdown/index.js.map +1 -0
  4. package/dist/composables/useEasings/index.d.ts +21 -0
  5. package/dist/composables/useEasings/index.js +40 -0
  6. package/dist/composables/useEasings/index.js.map +1 -0
  7. package/dist/composables/useMetaViewport/index.d.ts +9 -0
  8. package/dist/composables/useMetaViewport/index.js +29 -0
  9. package/dist/composables/useMetaViewport/index.js.map +1 -0
  10. package/dist/composables/useScrollTo/index.d.ts +49 -0
  11. package/dist/composables/useScrollTo/index.js +148 -0
  12. package/dist/composables/useScrollTo/index.js.map +1 -0
  13. package/dist/nuxt/module.json +1 -1
  14. package/dist/nuxt/module.mjs +22 -9
  15. package/dist/plugins/.turbo/turbo-lint.log +92 -1
  16. package/dist/plugins/MagicAccordion/src/components/MagicAccordionContent.vue +15 -6
  17. package/dist/plugins/MagicAccordion/src/components/MagicAccordionTrigger.vue +15 -10
  18. package/dist/plugins/MagicAccordion/src/components/MagicAccordionView.vue +11 -5
  19. package/dist/plugins/MagicAccordion/src/composables/private/useAccordionCallback.mjs +1 -1
  20. package/dist/plugins/MagicCommand/src/components/MagicCommandContent.vue +15 -8
  21. package/dist/plugins/MagicCommand/src/components/MagicCommandDrawer.vue +13 -7
  22. package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue +19 -9
  23. package/dist/plugins/MagicCommand/src/components/MagicCommandModal.vue +2 -2
  24. package/dist/plugins/MagicCommand/src/components/MagicCommandRenderer.vue +12 -6
  25. package/dist/plugins/MagicCommand/src/components/MagicCommandTrigger.vue +15 -10
  26. package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue +11 -3
  27. package/dist/plugins/MagicCommand/src/composables/private/useCommandCallback.mjs +1 -1
  28. package/dist/plugins/MagicCommand/src/composables/private/useCommandView.d.ts +1 -1
  29. package/dist/plugins/MagicCommand/src/composables/private/useCommandView.mjs +42 -37
  30. package/dist/plugins/MagicCommand/src/composables/useMagicCommand.mjs +21 -4
  31. package/dist/plugins/MagicCookie/src/components/MagicCookieItem.vue +12 -3
  32. package/dist/plugins/MagicCookie/src/components/MagicCookieView.vue +11 -5
  33. package/dist/plugins/MagicCookie/src/composables/private/useCookieCallback.mjs +1 -1
  34. package/dist/plugins/MagicCookie/src/composables/private/useCookieItem.mjs +6 -1
  35. package/dist/plugins/MagicCookie/src/composables/useMagicCookie.mjs +1 -1
  36. package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue +11 -1
  37. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.mjs +9 -4
  38. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.mjs +8 -3
  39. package/dist/plugins/MagicDraggable/src/composables/useMagicDraggable.mjs +1 -1
  40. package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +7 -2
  41. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerCallback.mjs +2 -2
  42. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +7 -2
  43. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerProgress.mjs +1 -1
  44. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.mjs +1 -1
  45. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerWheel.mjs +6 -1
  46. package/dist/plugins/MagicDrawer/src/composables/useMagicDrawer.mjs +1 -1
  47. package/dist/plugins/MagicError/index.d.ts +5 -0
  48. package/dist/plugins/MagicError/index.mjs +3 -0
  49. package/dist/plugins/MagicError/nuxt.d.ts +2 -0
  50. package/dist/plugins/MagicError/nuxt.mjs +12 -0
  51. package/dist/plugins/MagicError/package.json +40 -0
  52. package/dist/plugins/MagicError/src/MagicError.d.ts +0 -0
  53. package/dist/plugins/MagicError/src/MagicError.mjs +0 -0
  54. package/dist/plugins/MagicError/src/class/MagicError.d.ts +6 -0
  55. package/dist/plugins/MagicError/src/class/MagicError.mjs +15 -0
  56. package/dist/plugins/MagicError/src/composables/useMagicError.d.ts +18 -0
  57. package/dist/plugins/MagicError/src/composables/useMagicError.mjs +31 -0
  58. package/dist/plugins/MagicMenu/src/components/MagicMenuChannel.vue +22 -10
  59. package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue +15 -6
  60. package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue +19 -9
  61. package/dist/plugins/MagicMenu/src/components/MagicMenuRemote.vue +19 -13
  62. package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue +15 -10
  63. package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue +11 -3
  64. package/dist/plugins/MagicMenu/src/composables/private/useMenuCallback.mjs +1 -1
  65. package/dist/plugins/MagicMenu/src/composables/private/useMenuItem.mjs +9 -1
  66. package/dist/plugins/MagicMenu/src/composables/private/useMenuKeyListener.mjs +16 -8
  67. package/dist/plugins/MagicMenu/src/composables/private/useMenuView.mjs +7 -2
  68. package/dist/plugins/MagicModal/src/composables/private/useModalCallback.mjs +1 -1
  69. package/dist/plugins/MagicPie/src/components/MagicPie.vue +15 -2
  70. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudio.vue +17 -7
  71. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue +11 -5
  72. package/dist/plugins/MagicPlayer/src/components/MagicPlayerDisplayTime.vue +11 -5
  73. package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue +29 -14
  74. package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue +11 -5
  75. package/dist/plugins/MagicPlayer/src/components/MagicPlayerPoster.vue +11 -5
  76. package/dist/plugins/MagicPlayer/src/components/MagicPlayerTimeline.vue +11 -5
  77. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideo.vue +17 -7
  78. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue +11 -5
  79. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerEmitter.mjs +1 -1
  80. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.mjs +65 -11
  81. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.d.ts +1 -0
  82. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.mjs +96 -16
  83. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerVideoApi.mjs +7 -2
  84. package/dist/plugins/MagicPlayer/src/types/index.d.ts +2 -0
  85. package/dist/plugins/MagicPlayer/src/utils/defaultOptions.mjs +1 -0
  86. package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue +12 -6
  87. package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue +11 -3
  88. package/dist/plugins/MagicScroll/src/composables/private/useCollisionDetection.mjs +1 -1
  89. package/dist/plugins/MagicToast/src/components/MagicToastView.vue +11 -3
  90. package/dist/plugins/MagicToast/src/composables/private/useToastCallback.d.ts +2 -2
  91. package/dist/plugins/MagicToast/src/composables/private/useToastCallback.mjs +8 -6
  92. package/dist/plugins/MagicToast/src/composables/private/useToastDrag.mjs +1 -1
  93. package/package.json +20 -13
  94. package/dist/composables/index.d.ts +0 -97
  95. package/dist/composables/index.js +0 -344
  96. package/dist/composables/index.js.map +0 -1
  97. package/dist/plugins/index.d.ts +0 -14
  98. package/dist/plugins/index.mjs +0 -14
@@ -0,0 +1,6 @@
1
+ export declare class MagicError extends Error {
2
+ readonly errorCode: string | number;
3
+ readonly timestamp: number;
4
+ readonly source: string;
5
+ constructor(message: string, errorCode: string | number, source: string, options?: ErrorOptions);
6
+ }
@@ -0,0 +1,15 @@
1
+ export class MagicError extends Error {
2
+ errorCode;
3
+ timestamp;
4
+ source;
5
+ constructor(message, errorCode, source, options) {
6
+ super(message, options);
7
+ this.name = "MagicError";
8
+ this.errorCode = errorCode;
9
+ this.timestamp = Date.now();
10
+ this.source = source;
11
+ if (Error.captureStackTrace) {
12
+ Error.captureStackTrace(this, MagicError);
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,18 @@
1
+ import { MagicError } from '../class/MagicError.js';
2
+ export interface UseMagicErrorArgs {
3
+ prefix?: string;
4
+ source?: string;
5
+ }
6
+ export interface ThrowErrorArgs {
7
+ message: string;
8
+ errorCode: string | number;
9
+ cause?: unknown;
10
+ }
11
+ export interface UseMagicErrorReturn {
12
+ assert<T>(value: T, args: ThrowErrorArgs): asserts value is NonNullable<T>;
13
+ throwError(args: ThrowErrorArgs): never;
14
+ logError(message: string): void;
15
+ logWarning(message: string): void;
16
+ MagicError: typeof MagicError;
17
+ }
18
+ export declare function useMagicError(args?: UseMagicErrorArgs): UseMagicErrorReturn;
@@ -0,0 +1,31 @@
1
+ import { MagicError } from "../class/MagicError.mjs";
2
+ export function useMagicError(args = {}) {
3
+ const { prefix = "MagicError", source = "vue-equipment" } = args;
4
+ function logError(message) {
5
+ console.error(`[${prefix}]:`, message);
6
+ }
7
+ function logWarning(message) {
8
+ console.warn(`[${prefix}]:`, message);
9
+ }
10
+ function throwError(args2) {
11
+ const { message, errorCode, cause } = args2;
12
+ const mappedMessage = `[${prefix}]: ${message}`;
13
+ const error = new MagicError(mappedMessage, errorCode, source, {
14
+ cause
15
+ });
16
+ logError(message);
17
+ throw error;
18
+ }
19
+ function assert(value, args2) {
20
+ if (value === void 0 || value === null) {
21
+ throwError(args2);
22
+ }
23
+ }
24
+ return {
25
+ assert,
26
+ throwError,
27
+ logError,
28
+ logWarning,
29
+ MagicError
30
+ };
31
+ }
@@ -13,6 +13,9 @@
13
13
 
14
14
  <script setup>
15
15
  import { computed, inject, provide } from "vue";
16
+ import {
17
+ useMagicError
18
+ } from "@maas/vue-equipment/plugins/MagicError";
16
19
  import { useMenuChannel } from "../composables/private/useMenuChannel";
17
20
  import {
18
21
  MagicMenuInstanceId,
@@ -26,23 +29,32 @@ const { transition, id } = defineProps({
26
29
  id: { type: String, required: true },
27
30
  transition: { type: String, required: false }
28
31
  });
32
+ const magicError = useMagicError({
33
+ prefix: "MagicMenu",
34
+ source: "MagicMenu"
35
+ });
29
36
  const instanceId = inject(MagicMenuInstanceId, void 0);
30
37
  const viewId = inject(MagicMenuViewId, void 0);
31
38
  const contentId = inject(MagicMenuContentId, void 0);
32
- if (!instanceId) {
33
- throw new Error("MagicMenuChannel must be nested inside MagicMenuProvider");
34
- }
35
- if (!viewId) {
36
- throw new Error("MagicMenuChannel must be nested inside MagicMenuView");
37
- }
38
- if (!id) {
39
- throw new Error("MagicMenuChannel requires an id");
40
- }
39
+ magicError.assert(instanceId, {
40
+ message: "MagicMenuChannel must be nested inside MagicMenuProvider",
41
+ errorCode: "missing_instance_id"
42
+ });
43
+ magicError.assert(viewId, {
44
+ message: "MagicMenuChannel must be nested inside MagicMenuView",
45
+ errorCode: "missing_view_id"
46
+ });
47
+ magicError.assert(id, {
48
+ message: "MagicMenuChannel requires an id",
49
+ errorCode: "id_required"
50
+ });
41
51
  const { initializeState } = useMenuState(instanceId);
42
52
  const state = initializeState();
43
53
  if (!contentId) {
44
54
  if (state.options.debug) {
45
- console.warn("MagicMenuChannel is not nested inside MagicMenuContent");
55
+ magicError.logWarning(
56
+ "MagicMenuChannel is not nested inside MagicMenuContent"
57
+ );
46
58
  }
47
59
  }
48
60
  const mappedId = computed(() => `magic-menu-channel-${id}`);
@@ -70,6 +70,9 @@ import { useMenuState } from "../composables/private/useMenuState";
70
70
  import { useMenuCallback } from "../composables/private/useMenuCallback";
71
71
  import { useMenuDOM } from "../composables/private/useMenuDOM";
72
72
  import { useMenuCursor } from "../composables/private/useMenuCursor";
73
+ import {
74
+ useMagicError
75
+ } from "@maas/vue-equipment/plugins/MagicError";
73
76
  import { ModeTransitions } from "../utils/modeTransitionDefaults";
74
77
  import { ModeDelayMouseleave } from "../utils/modeDelayDefaults";
75
78
  import {
@@ -88,14 +91,20 @@ const { arrow = void 0, transition } = defineProps({
88
91
  transition: { type: String, required: false },
89
92
  referenceEl: { type: null, required: false }
90
93
  });
94
+ const magicError = useMagicError({
95
+ prefix: "MagicMenu",
96
+ source: "MagicMenu"
97
+ });
91
98
  const instanceId = inject(MagicMenuInstanceId, void 0);
92
99
  const viewId = inject(MagicMenuViewId, void 0);
93
- if (!instanceId) {
94
- throw new Error("MagicMenuContent must be nested inside MagicMenuProvider");
95
- }
96
- if (!viewId) {
97
- throw new Error("MagicMenuContent must be nested inside MagicMenuView");
98
- }
100
+ magicError.assert(instanceId, {
101
+ message: "MagicMenuContent must be nested inside MagicMenuProvider",
102
+ errorCode: "missing_instance_id"
103
+ });
104
+ magicError.assert(viewId, {
105
+ message: "MagicMenuContent must be nested inside MagicMenuView",
106
+ errorCode: "missing_view_id"
107
+ });
99
108
  const { getView, unselectView } = useMenuView(instanceId);
100
109
  const view = getView(viewId);
101
110
  const { initializeState } = useMenuState(instanceId);
@@ -18,6 +18,9 @@
18
18
 
19
19
  <script setup>
20
20
  import { computed, inject, provide, onBeforeUnmount, watch, useId } from "vue";
21
+ import {
22
+ useMagicError
23
+ } from "@maas/vue-equipment/plugins/MagicError";
21
24
  import { useMenuItem } from "../composables/private/useMenuItem";
22
25
  import { useMenuState } from "../composables/private/useMenuState";
23
26
  import { useMenuView } from "../composables/private/useMenuView";
@@ -33,18 +36,25 @@ const { id, disabled } = defineProps({
33
36
  disabled: { type: Boolean, required: false }
34
37
  });
35
38
  const emit = defineEmits(["click"]);
39
+ const magicError = useMagicError({
40
+ prefix: "MagicMenu",
41
+ source: "MagicMenu"
42
+ });
36
43
  const instanceId = inject(MagicMenuInstanceId, void 0);
37
44
  const viewId = inject(MagicMenuViewId, void 0);
38
45
  const contentId = inject(MagicMenuContentId, void 0);
39
- if (!instanceId) {
40
- throw new Error("MagicMenuItem must be nested inside MagicMenuProvider");
41
- }
42
- if (!viewId) {
43
- throw new Error("MagicMenuItem must be nested inside MagicMenuView");
44
- }
45
- if (!contentId) {
46
- throw new Error("MagicMenuItem must be nested inside MagicMenuContent");
47
- }
46
+ magicError.assert(instanceId, {
47
+ message: "MagicMenuItem must be nested inside MagicMenuProvider",
48
+ errorCode: "missing_instance_id"
49
+ });
50
+ magicError.assert(viewId, {
51
+ message: "MagicMenuItem must be nested inside MagicMenuView",
52
+ errorCode: "missing_view_id"
53
+ });
54
+ magicError.assert(contentId, {
55
+ message: "MagicMenuItem must be nested inside MagicMenuContent",
56
+ errorCode: "missing_content_id"
57
+ });
48
58
  const mappedId = computed(() => id ?? `magic-menu-item-${useId()}`);
49
59
  const mappedActive = computed(() => item.active);
50
60
  const { initializeItem, deleteItem, selectItem, unselectItem } = useMenuItem({
@@ -15,6 +15,9 @@
15
15
  <script setup>
16
16
  import { computed, inject, watch } from "vue";
17
17
  import { Primitive } from "@maas/vue-primitive";
18
+ import {
19
+ useMagicError
20
+ } from "@maas/vue-equipment/plugins/MagicError";
18
21
  import { useMenuView } from "../composables/private/useMenuView";
19
22
  import { useMenuChannel } from "../composables/private/useMenuChannel";
20
23
  import { MagicMenuInstanceId, MagicMenuViewId } from "../symbols";
@@ -27,23 +30,26 @@ const { disabled, channelId, instanceId, viewId, trigger } = defineProps({
27
30
  trigger: { type: Array, required: false },
28
31
  asChild: { type: Boolean, required: false }
29
32
  });
33
+ const magicError = useMagicError({
34
+ prefix: "MagicMenu",
35
+ source: "MagicMenu"
36
+ });
30
37
  const injectedInstanceId = inject(MagicMenuInstanceId, instanceId);
31
38
  const injectedViewId = inject(MagicMenuViewId, viewId);
32
39
  const mappedInstanceId = computed(() => instanceId ?? injectedInstanceId);
33
40
  const mappedViewId = computed(() => viewId ?? injectedViewId);
34
- if (!mappedInstanceId.value) {
35
- throw new Error(
36
- "MagicMenuRemote must be nested inside MagicMenuProvider or an instanceId must be provided"
37
- );
38
- }
39
- if (!mappedViewId.value) {
40
- throw new Error(
41
- "MagicMenuRemote must be nested inside MagicMenuView or a viewId must be provided"
42
- );
43
- }
44
- if (!channelId) {
45
- throw new Error("MagicMenuRemote requires a channelId");
46
- }
41
+ magicError.assert(mappedInstanceId.value, {
42
+ message: "MagicMenuRemote must be nested inside MagicMenuProvider or an instanceId must be provided",
43
+ errorCode: "missing_instance_id"
44
+ });
45
+ magicError.assert(mappedViewId.value, {
46
+ message: "MagicMenuRemote must be nested inside MagicMenuView or a viewId must be provided",
47
+ errorCode: "missing_view_id"
48
+ });
49
+ magicError.assert(channelId, {
50
+ message: "MagicMenuRemote requires a channelId",
51
+ errorCode: "id_required"
52
+ });
47
53
  const mappedChannelId = computed(() => `magic-menu-channel-${channelId}`);
48
54
  const mappedTrigger = computed(() => trigger ?? ["mouseenter"]);
49
55
  const { getView } = useMenuView(mappedInstanceId.value);
@@ -18,6 +18,9 @@
18
18
  <script setup>
19
19
  import { computed, inject, useTemplateRef, toValue, watch } from "vue";
20
20
  import { Primitive } from "@maas/vue-primitive";
21
+ import {
22
+ useMagicError
23
+ } from "@maas/vue-equipment/plugins/MagicError";
21
24
  import { useMenuState } from "../composables/private/useMenuState";
22
25
  import { useMenuView } from "../composables/private/useMenuView";
23
26
  import { useMenuItem } from "../composables/private/useMenuItem";
@@ -35,22 +38,24 @@ const { instanceId, viewId, disabled, trigger } = defineProps({
35
38
  trigger: { type: Array, required: false },
36
39
  asChild: { type: Boolean, required: false }
37
40
  });
41
+ const magicError = useMagicError({
42
+ prefix: "MagicMenu",
43
+ source: "MagicMenu"
44
+ });
38
45
  const elRef = useTemplateRef("el");
39
46
  const injectedInstanceId = inject(MagicMenuInstanceId, void 0);
40
47
  const injectedViewId = inject(MagicMenuViewId, void 0);
41
48
  const itemId = inject(MagicMenuItemId, void 0);
42
49
  const mappedInstanceId = computed(() => instanceId ?? injectedInstanceId);
43
50
  const mappedViewId = computed(() => viewId ?? injectedViewId);
44
- if (!mappedInstanceId.value) {
45
- throw new Error(
46
- "MagicMenuRemote must be nested inside MagicMenuProvider or an instanceId must be provided"
47
- );
48
- }
49
- if (!mappedViewId.value) {
50
- throw new Error(
51
- "MagicMenuTrigger must be nested inside MagicMenuView or a viewId must be provided"
52
- );
53
- }
51
+ magicError.assert(mappedInstanceId.value, {
52
+ message: "MagicMenuTrigger must be nested inside MagicMenuProvider or an instanceId must be provided",
53
+ errorCode: "missing_instance_id"
54
+ });
55
+ magicError.assert(mappedViewId.value, {
56
+ message: "MagicMenuTrigger must be nested inside MagicMenuView or a viewId must be provided",
57
+ errorCode: "missing_view_id"
58
+ });
54
59
  const { getView, getRelativeViewIndex } = useMenuView(mappedInstanceId.value);
55
60
  const view = getView(mappedViewId.value);
56
61
  const viewIndex = getRelativeViewIndex(mappedViewId.value);
@@ -14,17 +14,25 @@ import {
14
14
  MagicMenuItemId,
15
15
  MagicMenuViewActive
16
16
  } from "../symbols";
17
+ import {
18
+ useMagicError
19
+ } from "@maas/vue-equipment/plugins/MagicError";
17
20
  import { useMenuState } from "../composables/private/useMenuState";
18
21
  const { id, placement } = defineProps({
19
22
  id: { type: String, required: false },
20
23
  placement: { type: null, required: false }
21
24
  });
25
+ const magicError = useMagicError({
26
+ prefix: "MagicMenu",
27
+ source: "MagicMenu"
28
+ });
22
29
  const parentTree = inject(MagicMenuParentTree, []);
23
30
  const instanceId = inject(MagicMenuInstanceId, void 0);
24
31
  const itemId = inject(MagicMenuItemId, void 0);
25
- if (!instanceId) {
26
- throw new Error("MagicMenuView must be nested inside MagicMenuProvider");
27
- }
32
+ magicError.assert(instanceId, {
33
+ message: "MagicMenuView must be nested inside MagicMenuProvider",
34
+ errorCode: "missing_instance_id"
35
+ });
28
36
  const mappedId = computed(() => id ?? `magic-menu-view-${useId()}`);
29
37
  const mappedParentTree = computed(() => [...parentTree, mappedId.value]);
30
38
  const mappedActive = computed(() => view.active);
@@ -1,5 +1,5 @@
1
1
  import { toValue } from "vue";
2
- import { useMagicEmitter } from "@maas/vue-equipment/plugins";
2
+ import { useMagicEmitter } from "@maas/vue-equipment/plugins/MagicEmitter";
3
3
  import { ModeScrollLock } from "../../utils/modeScrollLockDefaults.mjs";
4
4
  export function useMenuCallback(args) {
5
5
  const {
@@ -1,15 +1,23 @@
1
1
  import { reactive } from "vue";
2
2
  import { usePointer, watchOnce } from "@vueuse/core";
3
+ import { useMagicError } from "@maas/vue-equipment/plugins/MagicError";
3
4
  import { useMenuView } from "./useMenuView.mjs";
4
5
  import { useMenuState } from "./useMenuState.mjs";
5
6
  export function useMenuItem(args) {
6
7
  const { instanceId, viewId } = args;
8
+ const { throwError } = useMagicError({
9
+ prefix: "MagicMenu",
10
+ source: "useMenuItem"
11
+ });
7
12
  const { initializeState } = useMenuState(instanceId);
8
13
  const state = initializeState();
9
14
  const { getView, unselectDescendingViews } = useMenuView(instanceId);
10
15
  const view = getView(viewId);
11
16
  if (!view) {
12
- throw new Error(`View ${viewId} not found`);
17
+ throwError({
18
+ message: `View ${viewId} not found`,
19
+ errorCode: "view_id_not_found"
20
+ });
13
21
  }
14
22
  function createItem(args2) {
15
23
  const { id, disabled } = args2;
@@ -1,10 +1,15 @@
1
1
  import {} from "vue";
2
+ import { useMagicError } from "@maas/vue-equipment/plugins/MagicError";
2
3
  import { useMenuState } from "./useMenuState.mjs";
3
4
  import { useMenuView } from "./useMenuView.mjs";
4
5
  import { useMenuItem } from "./useMenuItem.mjs";
5
6
  export function useMenuKeyListener(instanceId) {
6
7
  const { initializeState } = useMenuState(instanceId);
7
8
  const state = initializeState();
9
+ const { throwError, logWarning } = useMagicError({
10
+ prefix: "MagicMenu",
11
+ source: "useMenuKeyListener"
12
+ });
8
13
  const {
9
14
  selectView,
10
15
  unselectView,
@@ -20,7 +25,10 @@ export function useMenuKeyListener(instanceId) {
20
25
  function keyStrokeGuard(e) {
21
26
  switch (true) {
22
27
  case (!state.active && state.options.debug):
23
- throw new Error(`'MagicMenu ${state.id} is not active'`);
28
+ throwError({
29
+ message: `'MagicMenu ${state.id} is not active'`,
30
+ errorCode: "menu_not_active"
31
+ });
24
32
  case state.active:
25
33
  state.input.type = "keyboard";
26
34
  e.stopPropagation();
@@ -41,7 +49,7 @@ export function useMenuKeyListener(instanceId) {
41
49
  try {
42
50
  keyStrokeGuard(e);
43
51
  } catch (e2) {
44
- console.warn(e2);
52
+ logWarning(String(e2));
45
53
  }
46
54
  if (!state.input.view) {
47
55
  return;
@@ -70,7 +78,7 @@ export function useMenuKeyListener(instanceId) {
70
78
  try {
71
79
  keyStrokeGuard(e);
72
80
  } catch (e2) {
73
- console.warn(e2);
81
+ logWarning(String(e2));
74
82
  }
75
83
  if (!state.input.view) {
76
84
  return;
@@ -94,7 +102,7 @@ export function useMenuKeyListener(instanceId) {
94
102
  try {
95
103
  keyStrokeGuard(e);
96
104
  } catch (e2) {
97
- console.warn(e2);
105
+ logWarning(String(e2));
98
106
  }
99
107
  if (!state.input.view) {
100
108
  return;
@@ -118,7 +126,7 @@ export function useMenuKeyListener(instanceId) {
118
126
  try {
119
127
  keyStrokeGuard(e);
120
128
  } catch (e2) {
121
- console.warn(e2);
129
+ logWarning(String(e2));
122
130
  }
123
131
  if (!state.input.view) {
124
132
  return;
@@ -138,7 +146,7 @@ export function useMenuKeyListener(instanceId) {
138
146
  try {
139
147
  keyStrokeGuard(e);
140
148
  } catch (e2) {
141
- console.warn(e2);
149
+ logWarning(String(e2));
142
150
  }
143
151
  state.active = false;
144
152
  state.input.view = "";
@@ -148,7 +156,7 @@ export function useMenuKeyListener(instanceId) {
148
156
  try {
149
157
  keyStrokeGuard(e);
150
158
  } catch (e2) {
151
- console.warn(e2);
159
+ logWarning(String(e2));
152
160
  }
153
161
  if (!state.input.view) {
154
162
  return;
@@ -171,7 +179,7 @@ export function useMenuKeyListener(instanceId) {
171
179
  try {
172
180
  keyStrokeGuard(e);
173
181
  } catch (e2) {
174
- console.warn(e2);
182
+ logWarning(String(e2));
175
183
  }
176
184
  }
177
185
  }
@@ -1,4 +1,5 @@
1
1
  import { reactive, computed, toValue } from "vue";
2
+ import { useMagicError } from "@maas/vue-equipment/plugins/MagicError";
2
3
  import { useMenuState } from "./useMenuState.mjs";
3
4
  function isAbortError(error) {
4
5
  return error instanceof DOMException && error.name === "AbortError";
@@ -6,6 +7,10 @@ function isAbortError(error) {
6
7
  export function useMenuView(instanceId) {
7
8
  const { initializeState } = useMenuState(instanceId);
8
9
  const state = initializeState();
10
+ const { logWarning } = useMagicError({
11
+ prefix: "MagicMenu",
12
+ source: "useMenuView"
13
+ });
9
14
  const currentInstanceId = toValue(instanceId);
10
15
  const currentView = computed(() => {
11
16
  const activeViews = state.views.filter((view) => view.active);
@@ -132,7 +137,7 @@ export function useMenuView(instanceId) {
132
137
  unselectUnrelatedViews(id);
133
138
  } catch (error) {
134
139
  if (isAbortError(error) && state.options.debug) {
135
- console.log("selectView() was interrupted by a call to unselectView()");
140
+ logWarning("selectView() was interrupted by a call to unselectView()");
136
141
  }
137
142
  }
138
143
  }
@@ -153,7 +158,7 @@ export function useMenuView(instanceId) {
153
158
  view.active = false;
154
159
  } catch (error) {
155
160
  if (isAbortError(error) && state.options.debug) {
156
- console.log("unselectView() was interrupted by a call to selectView()");
161
+ logWarning("unselectView() was interrupted by a call to selectView()");
157
162
  }
158
163
  }
159
164
  }
@@ -1,5 +1,5 @@
1
1
  import { toValue, nextTick } from "vue";
2
- import { useMagicEmitter } from "@maas/vue-equipment/plugins";
2
+ import { useMagicEmitter } from "@maas/vue-equipment/plugins/MagicEmitter";
3
3
  export function useModalCallback(args) {
4
4
  const {
5
5
  id,
@@ -18,17 +18,27 @@
18
18
 
19
19
  <script setup>
20
20
  import { computed, toRefs, onBeforeUnmount } from "vue";
21
+ import {
22
+ useMagicError
23
+ } from "@maas/vue-equipment/plugins/MagicError";
21
24
  import { usePieState } from "../composables/private/usePieState";
22
25
  const { id, options } = defineProps({
23
26
  id: { type: String, required: true },
24
27
  options: { type: Object, required: false }
25
28
  });
29
+ const magicError = useMagicError({
30
+ prefix: "MagicPie",
31
+ source: "MagicPie"
32
+ });
26
33
  const { initializeState, deleteState } = usePieState(id);
27
34
  const state = initializeState();
28
35
  const { percentage } = toRefs(state);
29
36
  function generatePath(points) {
30
37
  if (points.length < 2) {
31
- throw new Error("At least two points are required to generate a path.");
38
+ magicError.throwError({
39
+ message: "At least two points are required to generate a path",
40
+ errorCode: "missing_points"
41
+ });
32
42
  }
33
43
  let path2 = `M ${points[0][0]} ${points[0][1]}`;
34
44
  for (let i = 1; i < points.length; i++) {
@@ -38,7 +48,10 @@ function generatePath(points) {
38
48
  }
39
49
  function generatePie(percentage2, flip) {
40
50
  if (percentage2 < 0 || percentage2 > 100) {
41
- throw new Error("percentage needs to be between 0 and 100");
51
+ magicError.throwError({
52
+ message: "percentage needs to be between 0 and 100",
53
+ errorCode: "invalid_percentage"
54
+ });
42
55
  }
43
56
  const size = 100;
44
57
  const points = [
@@ -18,6 +18,9 @@ import {
18
18
  useEventListener,
19
19
  defaultWindow
20
20
  } from "@vueuse/core";
21
+ import {
22
+ useMagicError
23
+ } from "@maas/vue-equipment/plugins/MagicError";
21
24
  import { usePlayerAudioApi } from "../composables/private/usePlayerAudioApi";
22
25
  import { usePlayerMediaApi } from "../composables/private/usePlayerMediaApi";
23
26
  import { usePlayerRuntime } from "../composables/private/usePlayerRuntime";
@@ -28,21 +31,28 @@ import {
28
31
  MagicPlayerOptionsKey,
29
32
  MagicPlayerRef
30
33
  } from "../symbols";
34
+ const magicError = useMagicError({
35
+ prefix: "MagicPlayer",
36
+ source: "MagicPlayerAudio"
37
+ });
31
38
  const injectedInstanceId = inject(MagicPlayerInstanceId, void 0);
32
39
  const injectedOptions = inject(MagicPlayerOptionsKey, void 0);
33
40
  const injectedPlayerRef = inject(MagicPlayerRef, void 0);
34
- if (!injectedInstanceId) {
35
- throw new Error("MagicPlayerVideo must be used within a MagicPlayerProvider");
36
- }
37
- if (!injectedOptions) {
38
- throw new Error("MagicPlayerVideo must be used within a MagicPlayerProvider");
39
- }
41
+ magicError.assert(injectedInstanceId, {
42
+ message: "MagicPlayerAudio must be used within a MagicPlayerProvider",
43
+ errorCode: "missing_instance_id"
44
+ });
45
+ magicError.assert(injectedOptions, {
46
+ message: "MagicPlayerAudio must be used within a MagicPlayerProvider",
47
+ errorCode: "missing_options"
48
+ });
40
49
  const elRef = useTemplateRef("el");
41
50
  const { initialize, destroy } = usePlayerRuntime({
42
51
  id: injectedInstanceId,
43
52
  mediaRef: elRef,
44
53
  src: injectedOptions.src,
45
- srcType: injectedOptions.srcType
54
+ srcType: injectedOptions.srcType,
55
+ debug: injectedOptions.debug
46
56
  });
47
57
  usePlayerMediaApi({
48
58
  id: injectedInstanceId,
@@ -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({
@@ -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);