@maas/vue-equipment 0.29.2 → 0.29.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/composables/index.js +5 -10
- package/dist/composables/index.js.map +1 -1
- package/dist/composables/index.mjs +5 -10
- package/dist/composables/index.mjs.map +1 -1
- package/dist/nuxt/module.json +5 -1
- package/dist/nuxt/module.mjs +16 -9
- package/dist/nuxt/types.d.mts +1 -16
- package/dist/nuxt/types.d.ts +1 -16
- package/dist/plugins/MagicCommand/index.d.ts +2 -4
- package/dist/plugins/MagicCommand/index.mjs +2 -2
- package/dist/plugins/MagicCommand/src/components/MagicCommandBody.vue +3 -3
- package/dist/plugins/MagicCommand/src/components/MagicCommandDrawer.vue +7 -4
- package/dist/plugins/MagicCommand/src/components/MagicCommandDrawer.vue.d.ts +2 -4
- package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue +4 -4
- package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue.d.ts +5 -5
- package/dist/plugins/MagicCommand/src/components/MagicCommandModal.vue +9 -6
- package/dist/plugins/MagicCommand/src/components/MagicCommandModal.vue.d.ts +2 -4
- package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue +4 -4
- package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue.d.ts +5 -5
- package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue +4 -2
- package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue.d.ts +3 -3
- package/dist/plugins/MagicCommand/src/composables/private/useCommandScroll.mjs +1 -1
- package/dist/plugins/MagicCommand/src/composables/private/useCommandStore.mjs +1 -1
- package/dist/plugins/MagicCommand/src/symbols/index.d.ts +3 -3
- package/dist/plugins/MagicCommand/src/symbols/index.mjs +2 -2
- package/dist/plugins/MagicCommand/src/types/index.d.ts +5 -5
- package/dist/plugins/MagicCommand/src/utils/defaultOptions.d.ts +2 -2
- package/dist/plugins/MagicCookie/index.d.ts +0 -2
- package/dist/plugins/MagicCookie/src/components/MagicCookie.vue +6 -7
- package/dist/plugins/MagicCookie/src/components/MagicCookie.vue.d.ts +6 -6
- package/dist/plugins/MagicCookie/src/composables/private/useCookieApi.d.ts +17 -0
- package/dist/plugins/MagicCookie/src/composables/private/{defineCookieApi.mjs → useCookieApi.mjs} +4 -4
- package/dist/plugins/MagicCookie/src/composables/useMagicCookie.d.ts +5 -5
- package/dist/plugins/MagicCookie/src/composables/useMagicCookie.mjs +4 -4
- package/dist/plugins/MagicCookie/src/types/index.d.ts +6 -10
- package/dist/plugins/MagicDraggable/index.d.ts +2 -2
- package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue +10 -9
- package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue.d.ts +6 -8
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.d.ts +1 -2
- package/dist/plugins/MagicDraggable/src/types/index.d.ts +1 -1
- package/dist/plugins/MagicDraggable/src/utils/defaultOptions.d.ts +4 -4
- package/dist/plugins/MagicDrawer/index.d.ts +2 -2
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +9 -8
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue.d.ts +3 -5
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerCallback.d.ts +2 -2
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDOM.d.ts +3 -3
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDOM.mjs +2 -2
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +3 -1
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerProgress.mjs +3 -1
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerState.mjs +1 -3
- package/dist/plugins/MagicDrawer/src/types/index.d.ts +1 -1
- package/dist/plugins/MagicDrawer/src/utils/defaultOptions.d.ts +7 -7
- package/dist/plugins/MagicEmitter/src/composables/useMagicEmitter.d.ts +494 -170
- package/dist/plugins/MagicEmitter/src/types/index.d.ts +9 -9
- package/dist/plugins/MagicMarquee/nuxt.mjs +1 -5
- package/dist/plugins/MagicMarquee/src/components/MagicMarquee.vue +3 -3
- package/dist/plugins/MagicMarquee/src/components/MagicMarquee.vue.d.ts +3 -3
- package/dist/plugins/MagicMenu/index.d.ts +4 -0
- package/dist/plugins/MagicMenu/index.mjs +27 -0
- package/dist/plugins/MagicMenu/nuxt.d.ts +2 -0
- package/dist/plugins/MagicMenu/nuxt.mjs +14 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue +144 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue.d.ts +26 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue +169 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue.d.ts +24 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue +137 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue.d.ts +29 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuProvider.vue +106 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuProvider.vue.d.ts +24 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue +122 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue.d.ts +26 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue +53 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue.d.ts +21 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCallback.d.ts +18 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCallback.mjs +52 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuDOM.d.ts +6 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuDOM.mjs +42 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuItem.d.ts +15 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuItem.mjs +75 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuKeyListener.d.ts +10 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuKeyListener.mjs +178 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuState.d.ts +7 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuState.mjs +48 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuTrigger.d.ts +18 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuTrigger.mjs +262 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuUtils.d.ts +3 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuUtils.mjs +16 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuView.d.ts +20 -0
- package/dist/plugins/MagicMenu/src/composables/private/useMenuView.mjs +116 -0
- package/dist/plugins/MagicMenu/src/symbols/index.d.ts +9 -0
- package/dist/plugins/MagicMenu/src/symbols/index.mjs +16 -0
- package/dist/plugins/MagicMenu/src/types/index.d.ts +72 -0
- package/dist/plugins/MagicMenu/src/types/index.mjs +0 -0
- package/dist/plugins/MagicMenu/src/utils/defaultOptions.d.ts +4 -0
- package/dist/plugins/MagicMenu/src/utils/defaultOptions.mjs +9 -0
- package/dist/plugins/MagicModal/index.d.ts +2 -2
- package/dist/plugins/MagicModal/src/components/MagicModal.vue +9 -6
- package/dist/plugins/MagicModal/src/components/MagicModal.vue.d.ts +5 -6
- package/dist/plugins/MagicModal/src/composables/private/useModalCallback.d.ts +2 -2
- package/dist/plugins/MagicModal/src/composables/private/useModalDOM.d.ts +3 -3
- package/dist/plugins/MagicModal/src/composables/private/useModalDOM.mjs +2 -2
- package/dist/plugins/MagicModal/src/types/index.d.ts +1 -1
- package/dist/plugins/MagicModal/src/utils/defaultOptions.d.ts +2 -2
- package/dist/plugins/MagicNoise/index.d.ts +1 -2
- package/dist/plugins/MagicNoise/index.mjs +1 -2
- package/dist/plugins/MagicNoise/nuxt.mjs +1 -5
- package/dist/plugins/MagicNoise/src/components/MagicNoise.vue +4 -4
- package/dist/plugins/MagicNoise/src/components/MagicNoise.vue.d.ts +5 -5
- package/dist/plugins/MagicNoise/src/composables/private/useNoiseApi.d.ts +2 -2
- package/dist/plugins/MagicNoise/src/types/index.d.ts +1 -1
- package/dist/plugins/MagicNoise/src/utils/defaultOptions.d.ts +2 -2
- package/dist/plugins/MagicPlayer/index.d.ts +0 -1
- package/dist/plugins/MagicPlayer/src/components/MagicAudioPlayer.vue +2 -2
- package/dist/plugins/MagicPlayer/src/components/MagicAudioPlayer.vue.d.ts +3 -3
- package/dist/plugins/MagicPlayer/src/components/MagicAudioPlayerControls.vue +2 -2
- package/dist/plugins/MagicPlayer/src/components/MagicAudioPlayerControls.vue.d.ts +2 -2
- package/dist/plugins/MagicPlayer/src/components/MagicPlayer.vue +9 -30
- package/dist/plugins/MagicPlayer/src/components/MagicPlayer.vue.d.ts +10 -14
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerControls.vue +79 -56
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerControls.vue.d.ts +20 -2
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerDisplayTime.vue +2 -2
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerDisplayTime.vue.d.ts +3 -3
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue +9 -7
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue.d.ts +2 -2
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue +2 -2
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue.d.ts +2 -2
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerTimeline.vue +2 -3
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerTimeline.vue.d.ts +2 -2
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.mjs +3 -0
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.d.ts +2 -2
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.mjs +23 -4
- package/dist/plugins/MagicPlayer/src/types/index.d.ts +1 -1
- package/dist/plugins/MagicScroll/index.d.ts +3 -3
- package/dist/plugins/MagicScroll/index.mjs +1 -2
- package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue +11 -7
- package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue.d.ts +2 -2
- package/dist/plugins/MagicScroll/src/components/MagicScrollMotion.vue +2 -2
- package/dist/plugins/MagicScroll/src/components/MagicScrollMotion.vue.d.ts +3 -3
- package/dist/plugins/MagicScroll/src/components/MagicScrollProvider.vue +2 -2
- package/dist/plugins/MagicScroll/src/components/MagicScrollProvider.vue.d.ts +3 -3
- package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue +2 -2
- package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue.d.ts +3 -3
- package/dist/plugins/MagicScroll/src/components/MagicScrollTransform.vue +2 -2
- package/dist/plugins/MagicScroll/src/components/MagicScrollTransform.vue.d.ts +3 -3
- package/dist/plugins/MagicScroll/src/composables/private/useCollisionDetect.d.ts +28 -0
- package/dist/plugins/MagicScroll/src/composables/private/useCollisionDetect.mjs +144 -0
- package/dist/plugins/MagicScroll/src/composables/private/useScrollApi.d.ts +0 -1
- package/dist/plugins/MagicScroll/src/types/index.d.ts +19 -25
- package/dist/plugins/MagicToast/index.d.ts +0 -2
- package/dist/plugins/MagicToast/src/components/MagicToast.vue +4 -4
- package/dist/plugins/MagicToast/src/components/MagicToast.vue.d.ts +2 -2
- package/dist/plugins/MagicToast/src/components/MagicToastComponent.vue +4 -4
- package/dist/plugins/MagicToast/src/components/MagicToastComponent.vue.d.ts +5 -5
- package/dist/plugins/MagicToast/src/composables/private/useToastApi.d.ts +1 -1
- package/dist/plugins/MagicToast/src/composables/private/useToastCallback.d.ts +3 -3
- package/dist/plugins/MagicToast/src/composables/private/useToastCallback.mjs +5 -7
- package/dist/plugins/MagicToast/src/composables/private/useToastInternalApi.d.ts +2 -2
- package/dist/plugins/MagicToast/src/composables/private/useToastStore.d.ts +4 -14
- package/dist/plugins/MagicToast/src/composables/useMagicToast.d.ts +6 -6
- package/dist/plugins/MagicToast/src/types/index.d.ts +20 -21
- package/dist/plugins/MagicToast/src/utils/defaultOptions.d.ts +2 -2
- package/dist/plugins/index.d.ts +1 -0
- package/dist/plugins/index.mjs +1 -0
- package/dist/utils/index.js +4 -8
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +4 -8
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +9 -4
- package/dist/plugins/MagicCookie/src/composables/private/defineCookieApi.d.ts +0 -12
- package/dist/plugins/MagicScroll/src/composables/useCollisionDetect.d.ts +0 -6
- package/dist/plugins/MagicScroll/src/composables/useCollisionDetect.mjs +0 -119
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { useMenuState } from "./useMenuState.mjs";
|
|
2
|
+
import { useMenuView } from "./useMenuView.mjs";
|
|
3
|
+
import { useMenuItem } from "./useMenuItem.mjs";
|
|
4
|
+
export function useMenuKeyListener(instanceId) {
|
|
5
|
+
const { initializeState } = useMenuState(instanceId);
|
|
6
|
+
const state = initializeState();
|
|
7
|
+
const {
|
|
8
|
+
selectView,
|
|
9
|
+
unselectView,
|
|
10
|
+
unselectNonTreeViews,
|
|
11
|
+
unselectAllViews,
|
|
12
|
+
getView,
|
|
13
|
+
getNextView,
|
|
14
|
+
getPreviousView,
|
|
15
|
+
getTopLevelView,
|
|
16
|
+
getNestedView,
|
|
17
|
+
getParentView
|
|
18
|
+
} = useMenuView(instanceId);
|
|
19
|
+
function keyStrokeGuard(e) {
|
|
20
|
+
switch (true) {
|
|
21
|
+
case !state.active:
|
|
22
|
+
throw new Error("Menu is not active");
|
|
23
|
+
default:
|
|
24
|
+
state.input.type = "keyboard";
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
e.stopPropagation();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function getEnabledItems(view) {
|
|
30
|
+
return view.items.filter((item) => !item.disabled);
|
|
31
|
+
}
|
|
32
|
+
function selectFirstItem(view) {
|
|
33
|
+
const { selectItem } = useMenuItem({ instanceId, viewId: view.id });
|
|
34
|
+
selectItem(getEnabledItems(view)[0]?.id);
|
|
35
|
+
}
|
|
36
|
+
async function onArrowRight(e) {
|
|
37
|
+
try {
|
|
38
|
+
keyStrokeGuard(e);
|
|
39
|
+
} catch (_e) {
|
|
40
|
+
}
|
|
41
|
+
if (!state.input.view) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const viewId = state.input.view;
|
|
45
|
+
const inputView = getView(viewId);
|
|
46
|
+
if (inputView) {
|
|
47
|
+
const activeItem = inputView.items.find((item) => item.active);
|
|
48
|
+
const nestedView = activeItem ? getNestedView(activeItem.id) : void 0;
|
|
49
|
+
if (nestedView) {
|
|
50
|
+
selectView(nestedView.id);
|
|
51
|
+
await new Promise((resolve) => requestAnimationFrame(resolve));
|
|
52
|
+
selectFirstItem(nestedView);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const topLevelView = getTopLevelView();
|
|
56
|
+
const nextView = topLevelView ? getNextView(topLevelView.id) : void 0;
|
|
57
|
+
if (nextView && !nextView.parent.item) {
|
|
58
|
+
selectView(nextView.id);
|
|
59
|
+
state.input.view = nextView.id;
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function onArrowLeft(e) {
|
|
65
|
+
try {
|
|
66
|
+
keyStrokeGuard(e);
|
|
67
|
+
} catch (_e) {
|
|
68
|
+
}
|
|
69
|
+
if (!state.input.view) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const viewId = state.input.view;
|
|
73
|
+
const inputView = getView(viewId);
|
|
74
|
+
if (inputView && inputView.parent.item) {
|
|
75
|
+
unselectView(viewId);
|
|
76
|
+
state.input.view = getParentView(viewId)?.id ?? "";
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const topLevelView = getTopLevelView();
|
|
80
|
+
const previousView = topLevelView ? getPreviousView(topLevelView.id) : void 0;
|
|
81
|
+
if (previousView) {
|
|
82
|
+
selectView(previousView.id);
|
|
83
|
+
state.input.view = previousView.id;
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function onArrowUp(e) {
|
|
88
|
+
try {
|
|
89
|
+
keyStrokeGuard(e);
|
|
90
|
+
} catch (_e) {
|
|
91
|
+
}
|
|
92
|
+
if (!state.input.view) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const viewId = state.input.view;
|
|
96
|
+
const inputView = getView(viewId);
|
|
97
|
+
if (!inputView)
|
|
98
|
+
return;
|
|
99
|
+
const enabledItems = getEnabledItems(inputView);
|
|
100
|
+
const prevIndex = enabledItems.findIndex((item) => item.active) - 1;
|
|
101
|
+
if (prevIndex >= 0) {
|
|
102
|
+
const { selectItem } = useMenuItem({ instanceId, viewId });
|
|
103
|
+
selectItem(enabledItems[prevIndex]?.id);
|
|
104
|
+
unselectNonTreeViews(viewId);
|
|
105
|
+
} else if (prevIndex !== -1) {
|
|
106
|
+
const { selectItem } = useMenuItem({ instanceId, viewId });
|
|
107
|
+
selectItem(enabledItems[enabledItems.length - 1]?.id);
|
|
108
|
+
unselectNonTreeViews(viewId);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function onArrowDown(e) {
|
|
112
|
+
try {
|
|
113
|
+
keyStrokeGuard(e);
|
|
114
|
+
} catch (_e) {
|
|
115
|
+
}
|
|
116
|
+
if (!state.input.view) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const viewId = state.input.view;
|
|
120
|
+
const inputView = getView(viewId);
|
|
121
|
+
if (!inputView)
|
|
122
|
+
return;
|
|
123
|
+
const enabledItems = getEnabledItems(inputView);
|
|
124
|
+
const nextIndex = enabledItems.findIndex((item) => item.active) + 1;
|
|
125
|
+
if (nextIndex >= 0) {
|
|
126
|
+
const { selectItem } = useMenuItem({ instanceId, viewId });
|
|
127
|
+
selectItem(enabledItems[nextIndex]?.id);
|
|
128
|
+
unselectNonTreeViews(viewId);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function onEscape(e) {
|
|
132
|
+
try {
|
|
133
|
+
keyStrokeGuard(e);
|
|
134
|
+
} catch (_e) {
|
|
135
|
+
}
|
|
136
|
+
state.active = false;
|
|
137
|
+
state.input.view = "";
|
|
138
|
+
unselectAllViews();
|
|
139
|
+
}
|
|
140
|
+
async function onEnter(e) {
|
|
141
|
+
try {
|
|
142
|
+
keyStrokeGuard(e);
|
|
143
|
+
} catch (_e) {
|
|
144
|
+
}
|
|
145
|
+
if (!state.input.view) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const viewId = state.input.view;
|
|
149
|
+
const inputView = getView(viewId);
|
|
150
|
+
if (inputView) {
|
|
151
|
+
const activeItem = inputView.items.find((item) => item.active);
|
|
152
|
+
const nestedView = activeItem ? getNestedView(activeItem.id) : void 0;
|
|
153
|
+
if (nestedView) {
|
|
154
|
+
selectView(nestedView.id);
|
|
155
|
+
await new Promise((resolve) => requestAnimationFrame(resolve));
|
|
156
|
+
selectFirstItem(nestedView);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function onTab(e) {
|
|
162
|
+
if (state.active) {
|
|
163
|
+
try {
|
|
164
|
+
keyStrokeGuard(e);
|
|
165
|
+
} catch (_e) {
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
onArrowRight,
|
|
171
|
+
onArrowLeft,
|
|
172
|
+
onArrowUp,
|
|
173
|
+
onArrowDown,
|
|
174
|
+
onEscape,
|
|
175
|
+
onEnter,
|
|
176
|
+
onTab
|
|
177
|
+
};
|
|
178
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Ref, type MaybeRef } from 'vue';
|
|
2
|
+
import type { MenuState, MagicMenuOptions } from '../../types/index.js';
|
|
3
|
+
export declare function useMenuState(instanceId: MaybeRef<string>): {
|
|
4
|
+
initializeState: (options?: MagicMenuOptions) => MenuState;
|
|
5
|
+
deleteState: () => void;
|
|
6
|
+
menuStateStore: Ref<MenuState[]>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ref, reactive, toValue } from "vue";
|
|
2
|
+
import { defu } from "defu";
|
|
3
|
+
import { defaultOptions } from "../../utils/defaultOptions.mjs";
|
|
4
|
+
const menuStateStore = ref([]);
|
|
5
|
+
export function useMenuState(instanceId) {
|
|
6
|
+
function createState(id) {
|
|
7
|
+
const state = {
|
|
8
|
+
id,
|
|
9
|
+
options: defaultOptions,
|
|
10
|
+
views: [],
|
|
11
|
+
active: false,
|
|
12
|
+
input: {
|
|
13
|
+
type: "pointer",
|
|
14
|
+
disabled: [],
|
|
15
|
+
view: void 0
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
return reactive(state);
|
|
19
|
+
}
|
|
20
|
+
function addState(id) {
|
|
21
|
+
const instance = createState(id);
|
|
22
|
+
menuStateStore.value = [...menuStateStore.value, instance];
|
|
23
|
+
return instance;
|
|
24
|
+
}
|
|
25
|
+
function initializeState(options) {
|
|
26
|
+
let instance = menuStateStore.value.find((instance2) => {
|
|
27
|
+
return instance2.id === toValue(instanceId);
|
|
28
|
+
});
|
|
29
|
+
if (!instance) {
|
|
30
|
+
instance = addState(toValue(instanceId));
|
|
31
|
+
}
|
|
32
|
+
if (options) {
|
|
33
|
+
const mappedOptions = defu(options, defaultOptions);
|
|
34
|
+
instance.options = mappedOptions;
|
|
35
|
+
}
|
|
36
|
+
return instance;
|
|
37
|
+
}
|
|
38
|
+
function deleteState() {
|
|
39
|
+
menuStateStore.value = menuStateStore.value.filter(
|
|
40
|
+
(x) => x.id !== toValue(instanceId)
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
initializeState,
|
|
45
|
+
deleteState,
|
|
46
|
+
menuStateStore
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ComputedRef, type MaybeRef, type Ref } from 'vue';
|
|
2
|
+
import type { MenuTrigger } from '../../types/index.js';
|
|
3
|
+
type UseMenuTriggerArgs = {
|
|
4
|
+
instanceId: MaybeRef<string>;
|
|
5
|
+
viewId: string;
|
|
6
|
+
itemId?: string;
|
|
7
|
+
mappedDisabled: ComputedRef<boolean>;
|
|
8
|
+
mappedTrigger: ComputedRef<MenuTrigger[]>;
|
|
9
|
+
elRef: Ref<HTMLElement | undefined>;
|
|
10
|
+
};
|
|
11
|
+
export declare function useMenuTrigger(args: UseMenuTriggerArgs): {
|
|
12
|
+
onMouseenter: () => void;
|
|
13
|
+
onClick: (e: MouseEvent) => void;
|
|
14
|
+
onMouseleave: (e: MouseEvent) => void;
|
|
15
|
+
initialize: () => void;
|
|
16
|
+
destroy: () => void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ref,
|
|
3
|
+
computed,
|
|
4
|
+
watch,
|
|
5
|
+
toValue
|
|
6
|
+
} from "vue";
|
|
7
|
+
import {
|
|
8
|
+
useEventListener,
|
|
9
|
+
useElementBounding,
|
|
10
|
+
useMagicKeys,
|
|
11
|
+
useFocus,
|
|
12
|
+
onKeyStroke
|
|
13
|
+
} from "@vueuse/core";
|
|
14
|
+
import { useMenuView } from "./useMenuView.mjs";
|
|
15
|
+
import { useMenuState } from "./useMenuState.mjs";
|
|
16
|
+
export function useMenuTrigger(args) {
|
|
17
|
+
const { instanceId, viewId, itemId, mappedTrigger, mappedDisabled, elRef } = args;
|
|
18
|
+
let cancelPointermove = void 0;
|
|
19
|
+
const mouseleaveCoordinates = ref(void 0);
|
|
20
|
+
const { getView, selectView, unselectView } = useMenuView(instanceId);
|
|
21
|
+
const view = getView(viewId);
|
|
22
|
+
const { initializeState } = useMenuState(instanceId);
|
|
23
|
+
const state = initializeState();
|
|
24
|
+
const { focused } = useFocus(elRef);
|
|
25
|
+
const isInsideTriangle = ref(false);
|
|
26
|
+
const isInsideTrigger = ref(false);
|
|
27
|
+
const isInsideContent = ref(false);
|
|
28
|
+
const isOutside = computed(() => {
|
|
29
|
+
return !isInsideTrigger.value && !isInsideContent.value && !isInsideTriangle.value;
|
|
30
|
+
});
|
|
31
|
+
const { shift, control } = useMagicKeys();
|
|
32
|
+
function resetState() {
|
|
33
|
+
mouseleaveCoordinates.value = void 0;
|
|
34
|
+
isInsideTriangle.value = false;
|
|
35
|
+
}
|
|
36
|
+
function disableCursor() {
|
|
37
|
+
state.input.disabled = [...state.input.disabled, "pointer"];
|
|
38
|
+
}
|
|
39
|
+
function enableCursor() {
|
|
40
|
+
state.input.disabled = state.input.disabled.filter((x) => x !== "pointer");
|
|
41
|
+
}
|
|
42
|
+
function extendTriangle(vertices, pixelAmount) {
|
|
43
|
+
const centroid = {
|
|
44
|
+
x: (vertices[0].x + vertices[1].x + vertices[2].x) / 3,
|
|
45
|
+
y: (vertices[0].y + vertices[1].y + vertices[2].y) / 3
|
|
46
|
+
};
|
|
47
|
+
function extendPoint(vertex) {
|
|
48
|
+
const dir = {
|
|
49
|
+
x: vertex.x - centroid.x,
|
|
50
|
+
y: vertex.y - centroid.y
|
|
51
|
+
};
|
|
52
|
+
const distance = Math.sqrt(dir.x * dir.x + dir.y * dir.y);
|
|
53
|
+
const unitDir = {
|
|
54
|
+
x: dir.x / distance,
|
|
55
|
+
y: dir.y / distance
|
|
56
|
+
};
|
|
57
|
+
const scaledDir = {
|
|
58
|
+
x: unitDir.x * pixelAmount,
|
|
59
|
+
y: unitDir.y * pixelAmount
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
x: vertex.x + scaledDir.x,
|
|
63
|
+
y: vertex.y + scaledDir.y
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return [
|
|
67
|
+
extendPoint(vertices[0]),
|
|
68
|
+
extendPoint(vertices[1]),
|
|
69
|
+
extendPoint(vertices[2])
|
|
70
|
+
];
|
|
71
|
+
}
|
|
72
|
+
function isPointInTriangle(args2) {
|
|
73
|
+
const { p, a, b, c } = args2;
|
|
74
|
+
const v0 = { x: c.x - a.x, y: c.y - a.y };
|
|
75
|
+
const v1 = { x: b.x - a.x, y: b.y - a.y };
|
|
76
|
+
const v2 = { x: p.x - a.x, y: p.y - a.y };
|
|
77
|
+
const dot00 = v0.x * v0.x + v0.y * v0.y;
|
|
78
|
+
const dot01 = v0.x * v1.x + v0.y * v1.y;
|
|
79
|
+
const dot02 = v0.x * v2.x + v0.y * v2.y;
|
|
80
|
+
const dot11 = v1.x * v1.x + v1.y * v1.y;
|
|
81
|
+
const dot12 = v1.x * v2.x + v1.y * v2.y;
|
|
82
|
+
const invDenom = 1 / (dot00 * dot11 - dot01 * dot01);
|
|
83
|
+
const u = (dot11 * dot02 - dot01 * dot12) * invDenom;
|
|
84
|
+
const v = (dot00 * dot12 - dot01 * dot02) * invDenom;
|
|
85
|
+
return u >= 0 && v >= 0 && u + v <= 1;
|
|
86
|
+
}
|
|
87
|
+
function isPointInRectangle(args2) {
|
|
88
|
+
const { p, top, left, bottom, right } = args2;
|
|
89
|
+
return p.x >= left && p.x <= right && p.y >= top && p.y <= bottom;
|
|
90
|
+
}
|
|
91
|
+
async function onPointermove(e) {
|
|
92
|
+
if (!mouseleaveCoordinates.value || !view?.children.content) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const mouseCoordinates = { x: e.clientX, y: e.clientY };
|
|
96
|
+
const { top, left, bottom, right } = useElementBounding(
|
|
97
|
+
view.children.content
|
|
98
|
+
);
|
|
99
|
+
const {
|
|
100
|
+
top: topTrigger,
|
|
101
|
+
left: leftTrigger,
|
|
102
|
+
bottom: bottomTrigger,
|
|
103
|
+
right: rightTrigger
|
|
104
|
+
} = useElementBounding(elRef);
|
|
105
|
+
const rightDistance = Math.abs(right.value - mouseleaveCoordinates.value.x);
|
|
106
|
+
const leftDistance = Math.abs(left.value - mouseleaveCoordinates.value.x);
|
|
107
|
+
const mappedX = rightDistance < leftDistance ? right : left;
|
|
108
|
+
const [a, b, c] = extendTriangle(
|
|
109
|
+
[
|
|
110
|
+
mouseleaveCoordinates.value,
|
|
111
|
+
{ x: mappedX.value, y: top.value },
|
|
112
|
+
{ x: mappedX.value, y: bottom.value }
|
|
113
|
+
],
|
|
114
|
+
16
|
|
115
|
+
);
|
|
116
|
+
isInsideTriangle.value = isPointInTriangle({
|
|
117
|
+
p: mouseCoordinates,
|
|
118
|
+
a,
|
|
119
|
+
b,
|
|
120
|
+
c
|
|
121
|
+
});
|
|
122
|
+
isInsideContent.value = isPointInRectangle({
|
|
123
|
+
p: mouseCoordinates,
|
|
124
|
+
top: top.value,
|
|
125
|
+
left: left.value,
|
|
126
|
+
bottom: bottom.value,
|
|
127
|
+
right: right.value
|
|
128
|
+
});
|
|
129
|
+
isInsideTrigger.value = isPointInRectangle({
|
|
130
|
+
p: mouseCoordinates,
|
|
131
|
+
top: topTrigger.value,
|
|
132
|
+
left: leftTrigger.value,
|
|
133
|
+
bottom: bottomTrigger.value,
|
|
134
|
+
right: rightTrigger.value
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function onRightClick(e) {
|
|
138
|
+
switch (e.button) {
|
|
139
|
+
case 2:
|
|
140
|
+
selectView(viewId);
|
|
141
|
+
state.active = true;
|
|
142
|
+
if (view) {
|
|
143
|
+
view.click = { x: e.clientX, y: e.clientY };
|
|
144
|
+
}
|
|
145
|
+
if (!itemId) {
|
|
146
|
+
state.input.view = viewId;
|
|
147
|
+
}
|
|
148
|
+
break;
|
|
149
|
+
default:
|
|
150
|
+
state.active = false;
|
|
151
|
+
unselectView(viewId);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function onEnter(e) {
|
|
155
|
+
if (focused.value && !mappedDisabled.value && !view?.active) {
|
|
156
|
+
e.preventDefault();
|
|
157
|
+
e.stopPropagation();
|
|
158
|
+
state.active = true;
|
|
159
|
+
state.input.type = "keyboard";
|
|
160
|
+
state.input.view = viewId;
|
|
161
|
+
selectView(viewId);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function onMouseenter() {
|
|
165
|
+
cancelPointermove?.();
|
|
166
|
+
resetState();
|
|
167
|
+
if (mappedTrigger.value.includes("mouseenter") && view && viewId && state.active && !mappedDisabled.value) {
|
|
168
|
+
selectView(viewId);
|
|
169
|
+
if (!itemId) {
|
|
170
|
+
state.input.view = viewId;
|
|
171
|
+
}
|
|
172
|
+
if (itemId) {
|
|
173
|
+
disableCursor();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function onClick(e) {
|
|
178
|
+
if (mappedTrigger.value.includes("click") && !mappedDisabled.value && e.button === 0 && viewId) {
|
|
179
|
+
switch (true) {
|
|
180
|
+
case !state.active:
|
|
181
|
+
state.active = true;
|
|
182
|
+
selectView(viewId);
|
|
183
|
+
if (!itemId) {
|
|
184
|
+
state.input.view = viewId;
|
|
185
|
+
}
|
|
186
|
+
break;
|
|
187
|
+
case (state.active && !itemId):
|
|
188
|
+
state.active = false;
|
|
189
|
+
unselectView(viewId);
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (mappedTrigger.value.includes("right-click") && viewId) {
|
|
194
|
+
e.preventDefault();
|
|
195
|
+
if (control.value || shift.value) {
|
|
196
|
+
onRightClick(
|
|
197
|
+
new MouseEvent(e.type, {
|
|
198
|
+
...e,
|
|
199
|
+
button: 2,
|
|
200
|
+
clientX: e.clientX,
|
|
201
|
+
clientY: e.clientY
|
|
202
|
+
})
|
|
203
|
+
);
|
|
204
|
+
} else {
|
|
205
|
+
onRightClick(e);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
function onMouseleave(e) {
|
|
210
|
+
if (mappedTrigger.value.includes("mouseleave") && viewId) {
|
|
211
|
+
mouseleaveCoordinates.value = { x: e.clientX, y: e.clientY };
|
|
212
|
+
cancelPointermove = useEventListener("pointermove", onPointermove);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
function initialize() {
|
|
216
|
+
watch(
|
|
217
|
+
() => view?.active,
|
|
218
|
+
async (value) => {
|
|
219
|
+
if (value) {
|
|
220
|
+
await new Promise((resolve) => requestAnimationFrame(resolve));
|
|
221
|
+
toValue(elRef)?.blur();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
);
|
|
225
|
+
watch(isInsideTriangle, async (value, oldValue) => {
|
|
226
|
+
if (value && !oldValue) {
|
|
227
|
+
disableCursor();
|
|
228
|
+
} else if (!value && oldValue) {
|
|
229
|
+
enableCursor();
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
watch(isInsideContent, (value, oldValue) => {
|
|
233
|
+
if (value && !oldValue) {
|
|
234
|
+
cancelPointermove?.();
|
|
235
|
+
resetState();
|
|
236
|
+
enableCursor();
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
watch(isOutside, (value, oldValue) => {
|
|
240
|
+
if (!cancelPointermove) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (value && !oldValue) {
|
|
244
|
+
unselectView(viewId);
|
|
245
|
+
cancelPointermove();
|
|
246
|
+
enableCursor();
|
|
247
|
+
resetState();
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
onKeyStroke("Enter", onEnter);
|
|
251
|
+
}
|
|
252
|
+
function destroy() {
|
|
253
|
+
cancelPointermove?.();
|
|
254
|
+
}
|
|
255
|
+
return {
|
|
256
|
+
onMouseenter,
|
|
257
|
+
onClick,
|
|
258
|
+
onMouseleave,
|
|
259
|
+
initialize,
|
|
260
|
+
destroy
|
|
261
|
+
};
|
|
262
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function useMenuUtils() {
|
|
2
|
+
function arraysAreEqual(a, b) {
|
|
3
|
+
if (a.length !== b.length) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
for (let i = 0; i < a.length; i++) {
|
|
7
|
+
if (a[i] !== b[i]) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
arraysAreEqual
|
|
15
|
+
};
|
|
16
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type MaybeRef } from 'vue';
|
|
2
|
+
import type { MenuView } from '../../types/index.js';
|
|
3
|
+
type FindViewArgs = Pick<MenuView, 'id' | 'parent'>;
|
|
4
|
+
export declare function useMenuView(instanceId: MaybeRef<string>): {
|
|
5
|
+
currentView: import("vue").ComputedRef<MenuView>;
|
|
6
|
+
initializeView: (args: FindViewArgs) => MenuView;
|
|
7
|
+
deleteView: (id: string) => void;
|
|
8
|
+
getView: (id: string) => MenuView | undefined;
|
|
9
|
+
getRelativeViewIndex: (id: string) => number;
|
|
10
|
+
getNextView: (id: string) => MenuView;
|
|
11
|
+
getPreviousView: (id: string) => MenuView;
|
|
12
|
+
getTopLevelView: () => MenuView | undefined;
|
|
13
|
+
getNestedView: (itemId: string) => MenuView | undefined;
|
|
14
|
+
getParentView: (id: string) => MenuView | undefined;
|
|
15
|
+
selectView: (id: string) => void;
|
|
16
|
+
unselectView: (id: string) => void;
|
|
17
|
+
unselectNonTreeViews: (id: string) => void;
|
|
18
|
+
unselectAllViews: () => void;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { reactive, computed, toValue } from "vue";
|
|
2
|
+
import { useMenuState } from "./useMenuState.mjs";
|
|
3
|
+
export function useMenuView(instanceId) {
|
|
4
|
+
const { initializeState } = useMenuState(instanceId);
|
|
5
|
+
const state = initializeState();
|
|
6
|
+
const currentView = computed(
|
|
7
|
+
() => state.views.filter((view) => view.active).reduce(
|
|
8
|
+
(a, b) => a.parent.views.length >= b.parent.views.length ? a : b
|
|
9
|
+
)
|
|
10
|
+
);
|
|
11
|
+
function createView(args) {
|
|
12
|
+
const { id, parent } = args;
|
|
13
|
+
if (parent.views.length === 0) {
|
|
14
|
+
parent.views.push(toValue(instanceId));
|
|
15
|
+
}
|
|
16
|
+
const view = {
|
|
17
|
+
id,
|
|
18
|
+
parent,
|
|
19
|
+
children: {
|
|
20
|
+
trigger: void 0,
|
|
21
|
+
content: void 0
|
|
22
|
+
},
|
|
23
|
+
active: false,
|
|
24
|
+
items: []
|
|
25
|
+
};
|
|
26
|
+
return reactive(view);
|
|
27
|
+
}
|
|
28
|
+
function addView(args) {
|
|
29
|
+
const view = createView(args);
|
|
30
|
+
state.views = [...state.views, view];
|
|
31
|
+
return view;
|
|
32
|
+
}
|
|
33
|
+
function initializeView(args) {
|
|
34
|
+
const { id } = args;
|
|
35
|
+
let instance = getView(id);
|
|
36
|
+
if (!instance)
|
|
37
|
+
instance = addView(args);
|
|
38
|
+
return instance;
|
|
39
|
+
}
|
|
40
|
+
function deleteView(id) {
|
|
41
|
+
state.views = state.views?.filter((view) => view.id !== id);
|
|
42
|
+
}
|
|
43
|
+
function getView(id) {
|
|
44
|
+
return state.views?.find((view) => {
|
|
45
|
+
return view.id === id;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function getRelativeViewIndex(id) {
|
|
49
|
+
const view = getView(id);
|
|
50
|
+
const nestingLevel = view?.parent.views.length;
|
|
51
|
+
return state.views?.filter((view2) => view2.parent.views.length === nestingLevel).findIndex((view2) => view2.id === id);
|
|
52
|
+
}
|
|
53
|
+
function getNextView(id) {
|
|
54
|
+
const index = state.views?.findIndex((view) => view.id === id);
|
|
55
|
+
return state.views?.[index + 1];
|
|
56
|
+
}
|
|
57
|
+
function getPreviousView(id) {
|
|
58
|
+
const index = state.views?.findIndex((view) => view.id === id);
|
|
59
|
+
return state.views?.[index - 1];
|
|
60
|
+
}
|
|
61
|
+
function getTopLevelView() {
|
|
62
|
+
return state.views?.find((view) => view.active && !view.parent.item);
|
|
63
|
+
}
|
|
64
|
+
function getNestedView(itemId) {
|
|
65
|
+
return state.views?.find((view) => view.parent.item === itemId);
|
|
66
|
+
}
|
|
67
|
+
function getParentView(id) {
|
|
68
|
+
const view = getView(id);
|
|
69
|
+
const parentId = view?.parent.views[view.parent.views.length - 1];
|
|
70
|
+
return getView(parentId ?? "");
|
|
71
|
+
}
|
|
72
|
+
function getNonTreeViews(id) {
|
|
73
|
+
const currentView2 = getView(id);
|
|
74
|
+
return state.views?.filter(
|
|
75
|
+
(view) => !currentView2?.parent.views.includes(view.id) && view.id !== id
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
function selectView(id) {
|
|
79
|
+
const instance = getView(id);
|
|
80
|
+
if (instance) {
|
|
81
|
+
instance.active = true;
|
|
82
|
+
unselectNonTreeViews(id);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function unselectView(id) {
|
|
86
|
+
const instance = getView(id);
|
|
87
|
+
if (instance) {
|
|
88
|
+
instance.active = false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function unselectNonTreeViews(id) {
|
|
92
|
+
const nonTreeViews = getNonTreeViews(id);
|
|
93
|
+
nonTreeViews.forEach((view) => view.active = false);
|
|
94
|
+
}
|
|
95
|
+
function unselectAllViews() {
|
|
96
|
+
state.views?.forEach((view) => {
|
|
97
|
+
view.active = false;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
currentView,
|
|
102
|
+
initializeView,
|
|
103
|
+
deleteView,
|
|
104
|
+
getView,
|
|
105
|
+
getRelativeViewIndex,
|
|
106
|
+
getNextView,
|
|
107
|
+
getPreviousView,
|
|
108
|
+
getTopLevelView,
|
|
109
|
+
getNestedView,
|
|
110
|
+
getParentView,
|
|
111
|
+
selectView,
|
|
112
|
+
unselectView,
|
|
113
|
+
unselectNonTreeViews,
|
|
114
|
+
unselectAllViews
|
|
115
|
+
};
|
|
116
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { InjectionKey, MaybeRef } from 'vue';
|
|
2
|
+
declare const MagicMenuInstanceId: InjectionKey<MaybeRef<string>>;
|
|
3
|
+
declare const MagicMenuParentTree: InjectionKey<string[]>;
|
|
4
|
+
declare const MagicMenuViewId: InjectionKey<string>;
|
|
5
|
+
declare const MagicMenuViewActive: InjectionKey<boolean>;
|
|
6
|
+
declare const MagicMenuContentId: InjectionKey<string>;
|
|
7
|
+
declare const MagicMenuItemId: InjectionKey<string>;
|
|
8
|
+
declare const MagicMenuItemActive: InjectionKey<boolean>;
|
|
9
|
+
export { MagicMenuInstanceId, MagicMenuParentTree, MagicMenuViewId, MagicMenuViewActive, MagicMenuContentId, MagicMenuItemId, MagicMenuItemActive, };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const MagicMenuInstanceId = Symbol();
|
|
2
|
+
const MagicMenuParentTree = Symbol();
|
|
3
|
+
const MagicMenuViewId = Symbol();
|
|
4
|
+
const MagicMenuViewActive = Symbol();
|
|
5
|
+
const MagicMenuContentId = Symbol();
|
|
6
|
+
const MagicMenuItemId = Symbol();
|
|
7
|
+
const MagicMenuItemActive = Symbol();
|
|
8
|
+
export {
|
|
9
|
+
MagicMenuInstanceId,
|
|
10
|
+
MagicMenuParentTree,
|
|
11
|
+
MagicMenuViewId,
|
|
12
|
+
MagicMenuViewActive,
|
|
13
|
+
MagicMenuContentId,
|
|
14
|
+
MagicMenuItemId,
|
|
15
|
+
MagicMenuItemActive
|
|
16
|
+
};
|