@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,6 +1,15 @@
1
- <script>
2
- import { defineComponent as _defineComponent } from "vue";
3
- import { renderSlot as _renderSlot, unref as _unref, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from "vue";
1
+ <template>
2
+ <primitive
3
+ ref="el"
4
+ :as-child="asChild"
5
+ :data-id="id"
6
+ class="magic-menu-provider"
7
+ >
8
+ <slot />
9
+ </primitive>
10
+ </template>
11
+
12
+ <script setup>
4
13
  import {
5
14
  useTemplateRef,
6
15
  shallowRef,
@@ -10,97 +19,86 @@ import {
10
19
  onBeforeUnmount
11
20
  } from "vue";
12
21
  import { onClickOutside, onKeyStroke, usePointer } from "@vueuse/core";
13
- import { Primitive } from "@maas/vue-primitive";
14
22
  import { defu } from "defu";
15
23
  import { useMenuState } from "../composables/private/useMenuState";
16
24
  import { useMenuView } from "../composables/private/useMenuView";
17
25
  import { useMenuKeyListener } from "../composables/private/useMenuKeyListener";
18
26
  import { MagicMenuInstanceId } from "../symbols";
19
27
  import { defaultOptions } from "../utils/defaultOptions";
20
- export default /* @__PURE__ */ _defineComponent({
21
- __name: "MagicMenuProvider",
22
- props: {
23
- id: { type: null, required: true },
24
- asChild: { type: Boolean, required: false },
25
- options: { type: Object, required: false }
28
+ const { id, options } = defineProps({
29
+ id: {
30
+ type: null,
31
+ required: true
32
+ },
33
+ asChild: {
34
+ type: Boolean,
35
+ required: false
36
+ },
37
+ options: {
38
+ type: Object,
39
+ required: false
40
+ }
41
+ });
42
+ const elRef = useTemplateRef("el");
43
+ const mappedOptions = defu(options, defaultOptions);
44
+ const { initializeState, deleteState } = useMenuState(id);
45
+ const state = initializeState(mappedOptions);
46
+ const lastX = shallowRef(0);
47
+ const lastY = shallowRef(0);
48
+ const { x, y } = usePointer();
49
+ watch(
50
+ () => state?.input.type,
51
+ (value) => {
52
+ if (value === "keyboard") {
53
+ lastX.value = x.value;
54
+ lastY.value = y.value;
55
+ }
56
+ }
57
+ );
58
+ watch([x, y], ([x2, y2]) => {
59
+ if (x2 !== lastX.value || y2 !== lastY.value) {
60
+ if (state) {
61
+ state.input.type = "pointer";
62
+ }
63
+ }
64
+ });
65
+ const {
66
+ onArrowRight,
67
+ onArrowLeft,
68
+ onArrowUp,
69
+ onArrowDown,
70
+ onEscape,
71
+ onEnter,
72
+ onTab
73
+ } = useMenuKeyListener(id);
74
+ onKeyStroke("ArrowRight", onArrowRight);
75
+ onKeyStroke("ArrowLeft", onArrowLeft);
76
+ onKeyStroke("ArrowDown", onArrowDown);
77
+ onKeyStroke("ArrowUp", onArrowUp);
78
+ onKeyStroke("Escape", onEscape);
79
+ onKeyStroke("Enter", onEnter);
80
+ onKeyStroke("Tab", onTab);
81
+ const { unselectAllViews } = useMenuView(id);
82
+ onClickOutside(
83
+ elRef,
84
+ () => {
85
+ if (state) {
86
+ state.active = false;
87
+ }
88
+ unselectAllViews();
26
89
  },
27
- setup(__props) {
28
- const elRef = useTemplateRef("el");
29
- const mappedOptions = defu(__props.options, defaultOptions);
30
- const { initializeState, deleteState } = useMenuState(__props.id);
31
- const state = initializeState(mappedOptions);
32
- const lastX = shallowRef(0);
33
- const lastY = shallowRef(0);
34
- const { x, y } = usePointer();
35
- watch(
36
- () => state?.input.type,
37
- (value) => {
38
- if (value === "keyboard") {
39
- lastX.value = x.value;
40
- lastY.value = y.value;
41
- }
42
- }
43
- );
44
- watch([x, y], ([x2, y2]) => {
45
- if (x2 !== lastX.value || y2 !== lastY.value) {
46
- if (state) {
47
- state.input.type = "pointer";
48
- }
49
- }
50
- });
51
- const {
52
- onArrowRight,
53
- onArrowLeft,
54
- onArrowUp,
55
- onArrowDown,
56
- onEscape,
57
- onEnter,
58
- onTab
59
- } = useMenuKeyListener(__props.id);
60
- onKeyStroke("ArrowRight", onArrowRight);
61
- onKeyStroke("ArrowLeft", onArrowLeft);
62
- onKeyStroke("ArrowDown", onArrowDown);
63
- onKeyStroke("ArrowUp", onArrowUp);
64
- onKeyStroke("Escape", onEscape);
65
- onKeyStroke("Enter", onEnter);
66
- onKeyStroke("Tab", onTab);
67
- const { unselectAllViews } = useMenuView(__props.id);
68
- onClickOutside(
69
- elRef,
70
- () => {
71
- if (state) {
72
- state.active = false;
73
- }
74
- unselectAllViews();
75
- },
76
- {
77
- ignore: [
78
- `[data-id='${toValue(__props.id)}'] .magic-menu-trigger`,
79
- `[data-id='${toValue(__props.id)}'] .magic-menu-item`,
80
- `.magic-menu-float`
81
- ]
82
- }
83
- );
84
- onBeforeUnmount(() => {
85
- deleteState();
86
- });
87
- provide(MagicMenuInstanceId, __props.id);
88
- return (_ctx, _cache) => {
89
- return _openBlock(), _createBlock(_unref(Primitive), {
90
- ref: "el",
91
- "as-child": _ctx.asChild,
92
- "data-id": _ctx.id,
93
- class: "magic-menu-provider"
94
- }, {
95
- default: _withCtx(() => [
96
- _renderSlot(_ctx.$slots, "default")
97
- ]),
98
- _: 3
99
- /* FORWARDED */
100
- }, 8, ["as-child", "data-id"]);
101
- };
90
+ {
91
+ ignore: [
92
+ `[data-id='${toValue(id)}'] .magic-menu-trigger`,
93
+ `[data-id='${toValue(id)}'] .magic-menu-item`,
94
+ `.magic-menu-float`
95
+ ]
102
96
  }
97
+ );
98
+ onBeforeUnmount(() => {
99
+ deleteState();
103
100
  });
101
+ provide(MagicMenuInstanceId, id);
104
102
  </script>
105
103
 
106
104
  <style>
@@ -1,86 +1,90 @@
1
- <script>
2
- import { defineComponent as _defineComponent } from "vue";
3
- import { unref as _unref, renderSlot as _renderSlot, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from "vue";
1
+ <template>
2
+ <primitive
3
+ class="magic-menu-remote"
4
+ :data-id="`${channelId}-remote`"
5
+ :data-disabled="disabled"
6
+ :data-active="channel?.active"
7
+ :as-child="asChild"
8
+ @click="onClick"
9
+ @mouseenter="onMouseenter"
10
+ >
11
+ <slot :channel-active="channel?.active" :remote-disabled="disabled" />
12
+ </primitive>
13
+ </template>
14
+
15
+ <script setup>
4
16
  import { computed, inject, watch } from "vue";
5
- import { Primitive } from "@maas/vue-primitive";
6
17
  import { useMenuView } from "../composables/private/useMenuView";
7
18
  import { useMenuChannel } from "../composables/private/useMenuChannel";
8
19
  import { MagicMenuInstanceId, MagicMenuViewId } from "../symbols";
9
20
  import { useMenuRemote } from "../composables/private/useMenuRemote";
10
- export default /* @__PURE__ */ _defineComponent({
11
- __name: "MagicMenuRemote",
12
- props: {
13
- channelId: { type: String, required: true },
14
- viewId: { type: String, required: false },
15
- instanceId: { type: String, required: false },
16
- disabled: { type: Boolean, required: false },
17
- trigger: { type: Array, required: false },
18
- asChild: { type: Boolean, required: false }
21
+ const { disabled, channelId, instanceId, viewId, trigger } = defineProps({
22
+ channelId: {
23
+ type: String,
24
+ required: true
19
25
  },
20
- setup(__props) {
21
- const injectedInstanceId = inject(MagicMenuInstanceId, __props.instanceId);
22
- const injectedViewId = inject(MagicMenuViewId, __props.viewId);
23
- const mappedInstanceId = computed(() => __props.instanceId ?? injectedInstanceId);
24
- const mappedViewId = computed(() => __props.viewId ?? injectedViewId);
25
- if (!mappedInstanceId.value) {
26
- throw new Error(
27
- "MagicMenuRemote must be nested inside MagicMenuProvider or an instanceId must be provided"
28
- );
29
- }
30
- if (!mappedViewId.value) {
31
- throw new Error(
32
- "MagicMenuRemote must be nested inside MagicMenuView or a viewId must be provided"
33
- );
34
- }
35
- if (!__props.channelId) {
36
- throw new Error("MagicMenuRemote requires a channelId");
37
- }
38
- const mappedChannelId = computed(() => `magic-menu-channel-${__props.channelId}`);
39
- const mappedTrigger = computed(() => __props.trigger ?? ["mouseenter"]);
40
- const { getView } = useMenuView(mappedInstanceId.value);
41
- const view = getView(mappedViewId.value);
42
- const { initializeChannel, deleteChannel } = useMenuChannel({
43
- instanceId: mappedInstanceId.value,
44
- viewId: mappedViewId.value
45
- });
46
- const { onClick, onMouseenter } = useMenuRemote({
47
- instanceId: mappedInstanceId.value,
48
- viewId: mappedViewId.value,
49
- mappedChannelId,
50
- mappedTrigger
51
- });
52
- let channel = initializeChannel({ id: mappedChannelId.value });
53
- watch(
54
- () => view?.active,
55
- (value) => {
56
- if (!value) {
57
- deleteChannel(mappedChannelId.value);
58
- channel = initializeChannel({ id: mappedChannelId.value });
59
- }
60
- }
61
- );
62
- return (_ctx, _cache) => {
63
- return _openBlock(), _createBlock(_unref(Primitive), {
64
- class: "magic-menu-remote",
65
- "data-id": `${_ctx.channelId}-remote`,
66
- "data-disabled": _ctx.disabled,
67
- "data-active": _unref(channel)?.active,
68
- "as-child": _ctx.asChild,
69
- onClick: _unref(onClick),
70
- onMouseenter: _unref(onMouseenter)
71
- }, {
72
- default: _withCtx(() => [
73
- _renderSlot(_ctx.$slots, "default", {
74
- channelActive: _unref(channel)?.active,
75
- remoteDisabled: _ctx.disabled
76
- })
77
- ]),
78
- _: 3
79
- /* FORWARDED */
80
- }, 8, ["data-id", "data-disabled", "data-active", "as-child", "onClick", "onMouseenter"]);
81
- };
26
+ viewId: {
27
+ type: String,
28
+ required: false
29
+ },
30
+ instanceId: {
31
+ type: String,
32
+ required: false
33
+ },
34
+ disabled: {
35
+ type: Boolean,
36
+ required: false
37
+ },
38
+ trigger: {
39
+ type: Array,
40
+ required: false
41
+ },
42
+ asChild: {
43
+ type: Boolean,
44
+ required: false
82
45
  }
83
46
  });
47
+ const injectedInstanceId = inject(MagicMenuInstanceId, instanceId);
48
+ const injectedViewId = inject(MagicMenuViewId, viewId);
49
+ const mappedInstanceId = computed(() => instanceId ?? injectedInstanceId);
50
+ const mappedViewId = computed(() => viewId ?? injectedViewId);
51
+ if (!mappedInstanceId.value) {
52
+ throw new Error(
53
+ "MagicMenuRemote must be nested inside MagicMenuProvider or an instanceId must be provided"
54
+ );
55
+ }
56
+ if (!mappedViewId.value) {
57
+ throw new Error(
58
+ "MagicMenuRemote must be nested inside MagicMenuView or a viewId must be provided"
59
+ );
60
+ }
61
+ if (!channelId) {
62
+ throw new Error("MagicMenuRemote requires a channelId");
63
+ }
64
+ const mappedChannelId = computed(() => `magic-menu-channel-${channelId}`);
65
+ const mappedTrigger = computed(() => trigger ?? ["mouseenter"]);
66
+ const { getView } = useMenuView(mappedInstanceId.value);
67
+ const view = getView(mappedViewId.value);
68
+ const { initializeChannel, deleteChannel } = useMenuChannel({
69
+ instanceId: mappedInstanceId.value,
70
+ viewId: mappedViewId.value
71
+ });
72
+ const { onClick, onMouseenter } = useMenuRemote({
73
+ instanceId: mappedInstanceId.value,
74
+ viewId: mappedViewId.value,
75
+ mappedChannelId,
76
+ mappedTrigger
77
+ });
78
+ let channel = initializeChannel({ id: mappedChannelId.value });
79
+ watch(
80
+ () => view?.active,
81
+ (value) => {
82
+ if (!value) {
83
+ deleteChannel(mappedChannelId.value);
84
+ channel = initializeChannel({ id: mappedChannelId.value });
85
+ }
86
+ }
87
+ );
84
88
  </script>
85
89
 
86
90
  <style>
@@ -9,7 +9,7 @@ interface MagicMenuRemoteProps {
9
9
  asChild?: boolean;
10
10
  }
11
11
  declare const onClick: () => void, onMouseenter: () => void;
12
- declare let channel: import("../types").MenuChannel;
12
+ declare let channel: import("../types/index.js").MenuChannel;
13
13
  declare const __VLS_ctx: InstanceType<__VLS_PickNotAny<typeof __VLS_self, new () => {}>>;
14
14
  declare var __VLS_11: {
15
15
  channelActive: boolean;
@@ -1,8 +1,22 @@
1
- <script>
2
- import { defineComponent as _defineComponent } from "vue";
3
- import { unref as _unref, renderSlot as _renderSlot, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from "vue";
1
+ <template>
2
+ <primitive
3
+ ref="el"
4
+ :data-id="`${mappedViewId}-trigger`"
5
+ :data-active="view?.active"
6
+ :data-disabled="mappedDisabled"
7
+ :tabindex="mappedTabindex"
8
+ :as-child="asChild"
9
+ class="magic-menu-trigger"
10
+ @click="onClick"
11
+ @contextmenu="onClick"
12
+ @mouseenter="onMouseenter"
13
+ >
14
+ <slot :view-active="view?.active" :trigger-disabled="mappedDisabled" />
15
+ </primitive>
16
+ </template>
17
+
18
+ <script setup>
4
19
  import { computed, inject, useTemplateRef, toValue, watch } from "vue";
5
- import { Primitive } from "@maas/vue-primitive";
6
20
  import { useMenuState } from "../composables/private/useMenuState";
7
21
  import { useMenuView } from "../composables/private/useMenuView";
8
22
  import { useMenuItem } from "../composables/private/useMenuItem";
@@ -13,110 +27,97 @@ import {
13
27
  MagicMenuItemId
14
28
  } from "../symbols";
15
29
  import { onKeyStroke } from "@vueuse/core";
16
- export default /* @__PURE__ */ _defineComponent({
17
- __name: "MagicMenuTrigger",
18
- props: {
19
- instanceId: { type: String, required: false },
20
- viewId: { type: String, required: false },
21
- disabled: { type: Boolean, required: false },
22
- trigger: { type: Array, required: false },
23
- asChild: { type: Boolean, required: false }
30
+ const { instanceId, viewId, disabled, trigger } = defineProps({
31
+ instanceId: {
32
+ type: String,
33
+ required: false
24
34
  },
25
- setup(__props) {
26
- const elRef = useTemplateRef("el");
27
- const injectedInstanceId = inject(MagicMenuInstanceId, void 0);
28
- const injectedViewId = inject(MagicMenuViewId, void 0);
29
- const itemId = inject(MagicMenuItemId, void 0);
30
- const mappedInstanceId = computed(() => __props.instanceId ?? injectedInstanceId);
31
- const mappedViewId = computed(() => __props.viewId ?? injectedViewId);
32
- if (!mappedInstanceId.value) {
33
- throw new Error(
34
- "MagicMenuRemote must be nested inside MagicMenuProvider or an instanceId must be provided"
35
- );
36
- }
37
- if (!mappedViewId.value) {
38
- throw new Error(
39
- "MagicMenuTrigger must be nested inside MagicMenuView or a viewId must be provided"
40
- );
41
- }
42
- const { getView, getRelativeViewIndex } = useMenuView(mappedInstanceId.value);
43
- const view = getView(mappedViewId.value);
44
- const viewIndex = getRelativeViewIndex(mappedViewId.value);
45
- const { initializeState } = useMenuState(mappedInstanceId.value);
46
- const state = initializeState();
47
- const { getItem } = useMenuItem({
48
- instanceId: mappedInstanceId.value,
49
- viewId: mappedViewId.value
50
- });
51
- const item = getItem(itemId ?? "");
52
- const mappedDisabled = computed(() => __props.disabled ?? item?.disabled ?? false);
53
- const mappedTrigger = computed(() => {
54
- if (__props.trigger?.length) {
55
- return __props.trigger;
56
- }
57
- switch (state.options.mode) {
58
- case "menubar":
59
- return view?.parent.item ? ["mouseenter", "click"] : state.active ? ["mouseenter", "click"] : ["click"];
60
- case "dropdown":
61
- return view?.parent.item ? ["mouseenter", "click"] : ["click"];
62
- case "context":
63
- return view?.parent.item ? ["mouseenter", "click"] : ["right-click"];
64
- case "navigation":
65
- return ["mouseenter"];
66
- default:
67
- return [];
68
- }
69
- });
70
- const mappedTabindex = computed(() => {
71
- if (viewIndex === 0 && state.options.mode !== "context" && !itemId) {
72
- return 0;
73
- } else {
74
- return void 0;
75
- }
76
- });
77
- const { onMouseenter, onClick, onEnter } = useMenuTrigger({
78
- instanceId: mappedInstanceId.value,
79
- viewId: mappedViewId.value,
80
- itemId,
81
- mappedDisabled,
82
- mappedTrigger,
83
- elRef
84
- });
85
- watch(
86
- () => view?.active,
87
- async (value) => {
88
- if (value) {
89
- await new Promise((resolve) => requestAnimationFrame(resolve));
90
- toValue(elRef)?.$el?.blur();
91
- }
92
- }
93
- );
94
- onKeyStroke("Enter", onEnter);
95
- return (_ctx, _cache) => {
96
- return _openBlock(), _createBlock(_unref(Primitive), {
97
- ref: "el",
98
- "data-id": `${mappedViewId.value}-trigger`,
99
- "data-active": _unref(view)?.active,
100
- "data-disabled": mappedDisabled.value,
101
- tabindex: mappedTabindex.value,
102
- "as-child": _ctx.asChild,
103
- class: "magic-menu-trigger",
104
- onClick: _unref(onClick),
105
- onContextmenu: _unref(onClick),
106
- onMouseenter: _unref(onMouseenter)
107
- }, {
108
- default: _withCtx(() => [
109
- _renderSlot(_ctx.$slots, "default", {
110
- viewActive: _unref(view)?.active,
111
- triggerDisabled: mappedDisabled.value
112
- })
113
- ]),
114
- _: 3
115
- /* FORWARDED */
116
- }, 8, ["data-id", "data-active", "data-disabled", "tabindex", "as-child", "onClick", "onContextmenu", "onMouseenter"]);
117
- };
35
+ viewId: {
36
+ type: String,
37
+ required: false
38
+ },
39
+ disabled: {
40
+ type: Boolean,
41
+ required: false
42
+ },
43
+ trigger: {
44
+ type: Array,
45
+ required: false
46
+ },
47
+ asChild: {
48
+ type: Boolean,
49
+ required: false
118
50
  }
119
51
  });
52
+ const elRef = useTemplateRef("el");
53
+ const injectedInstanceId = inject(MagicMenuInstanceId, void 0);
54
+ const injectedViewId = inject(MagicMenuViewId, void 0);
55
+ const itemId = inject(MagicMenuItemId, void 0);
56
+ const mappedInstanceId = computed(() => instanceId ?? injectedInstanceId);
57
+ const mappedViewId = computed(() => viewId ?? injectedViewId);
58
+ if (!mappedInstanceId.value) {
59
+ throw new Error(
60
+ "MagicMenuRemote must be nested inside MagicMenuProvider or an instanceId must be provided"
61
+ );
62
+ }
63
+ if (!mappedViewId.value) {
64
+ throw new Error(
65
+ "MagicMenuTrigger must be nested inside MagicMenuView or a viewId must be provided"
66
+ );
67
+ }
68
+ const { getView, getRelativeViewIndex } = useMenuView(mappedInstanceId.value);
69
+ const view = getView(mappedViewId.value);
70
+ const viewIndex = getRelativeViewIndex(mappedViewId.value);
71
+ const { initializeState } = useMenuState(mappedInstanceId.value);
72
+ const state = initializeState();
73
+ const { getItem } = useMenuItem({
74
+ instanceId: mappedInstanceId.value,
75
+ viewId: mappedViewId.value
76
+ });
77
+ const item = getItem(itemId ?? "");
78
+ const mappedDisabled = computed(() => disabled ?? item?.disabled ?? false);
79
+ const mappedTrigger = computed(() => {
80
+ if (trigger?.length) {
81
+ return trigger;
82
+ }
83
+ switch (state.options.mode) {
84
+ case "menubar":
85
+ return view?.parent.item ? ["mouseenter", "click"] : state.active ? ["mouseenter", "click"] : ["click"];
86
+ case "dropdown":
87
+ return view?.parent.item ? ["mouseenter", "click"] : ["click"];
88
+ case "context":
89
+ return view?.parent.item ? ["mouseenter", "click"] : ["right-click"];
90
+ case "navigation":
91
+ return ["mouseenter"];
92
+ default:
93
+ return [];
94
+ }
95
+ });
96
+ const mappedTabindex = computed(() => {
97
+ if (viewIndex === 0 && state.options.mode !== "context" && !itemId) {
98
+ return 0;
99
+ } else {
100
+ return void 0;
101
+ }
102
+ });
103
+ const { onMouseenter, onClick, onEnter } = useMenuTrigger({
104
+ instanceId: mappedInstanceId.value,
105
+ viewId: mappedViewId.value,
106
+ itemId,
107
+ mappedDisabled,
108
+ mappedTrigger,
109
+ elRef
110
+ });
111
+ watch(
112
+ () => view?.active,
113
+ async (value) => {
114
+ if (value) {
115
+ await new Promise((resolve) => requestAnimationFrame(resolve));
116
+ toValue(elRef)?.$el?.blur();
117
+ }
118
+ }
119
+ );
120
+ onKeyStroke("Enter", onEnter);
120
121
  </script>
121
122
 
122
123
  <style>
@@ -8,7 +8,7 @@ interface MagicMenuTriggerProps {
8
8
  asChild?: boolean;
9
9
  }
10
10
  declare const mappedViewId: import("vue").ComputedRef<string | undefined>;
11
- declare const view: import("../types").MenuView | undefined;
11
+ declare const view: import("../types/index.js").MenuView | undefined;
12
12
  declare const mappedDisabled: import("vue").ComputedRef<boolean>;
13
13
  declare const mappedTabindex: import("vue").ComputedRef<0 | undefined>;
14
14
  declare const onMouseenter: () => void, onClick: (e: MouseEvent) => void;