@maas/vue-equipment 1.0.0-beta.1 → 1.0.0-beta.10

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 (163) hide show
  1. package/README.md +2 -2
  2. package/dist/composables/index.d.ts +5 -5
  3. package/dist/composables/index.js +23 -13
  4. package/dist/composables/index.js.map +1 -1
  5. package/dist/nuxt/module.json +1 -1
  6. package/dist/nuxt/module.mjs +9 -2
  7. package/dist/plugins/.turbo/turbo-lint.log +1 -9
  8. package/dist/plugins/MagicAccordion/demo/data/footer.json +1 -1
  9. package/dist/plugins/MagicAccordion/src/components/MagicAccordionContent.vue.d.ts +33 -22
  10. package/dist/plugins/MagicAccordion/src/components/MagicAccordionProvider.vue +2 -2
  11. package/dist/plugins/MagicAccordion/src/components/MagicAccordionProvider.vue.d.ts +12 -21
  12. package/dist/plugins/MagicAccordion/src/components/MagicAccordionTrigger.vue +15 -13
  13. package/dist/plugins/MagicAccordion/src/components/MagicAccordionTrigger.vue.d.ts +23 -59
  14. package/dist/plugins/MagicAccordion/src/components/MagicAccordionView.vue +2 -1
  15. package/dist/plugins/MagicAccordion/src/components/MagicAccordionView.vue.d.ts +17 -22
  16. package/dist/plugins/MagicAccordion/src/composables/private/useAccordionTrigger.d.ts +1 -1
  17. package/dist/plugins/MagicAccordion/src/symbols/index.d.ts +2 -2
  18. package/dist/plugins/MagicCommand/src/components/MagicCommandContent.vue +11 -4
  19. package/dist/plugins/MagicCommand/src/components/MagicCommandContent.vue.d.ts +24 -13
  20. package/dist/plugins/MagicCommand/src/components/MagicCommandDrawer.vue.d.ts +12 -21
  21. package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue +0 -4
  22. package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue.d.ts +29 -28
  23. package/dist/plugins/MagicCommand/src/components/MagicCommandModal.vue.d.ts +12 -21
  24. package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue +5 -7
  25. package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue.d.ts +12 -58
  26. package/dist/plugins/MagicCommand/src/components/MagicCommandRenderer.vue +7 -7
  27. package/dist/plugins/MagicCommand/src/components/MagicCommandTrigger.vue +7 -6
  28. package/dist/plugins/MagicCommand/src/components/MagicCommandTrigger.vue.d.ts +25 -60
  29. package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue +2 -2
  30. package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue.d.ts +15 -22
  31. package/dist/plugins/MagicCommand/src/composables/private/useCommandScroll.d.ts +2 -2
  32. package/dist/plugins/MagicCommand/src/composables/private/useCommandState.mjs +1 -1
  33. package/dist/plugins/MagicCommand/src/composables/private/useCommandTrigger.d.ts +1 -1
  34. package/dist/plugins/MagicCommand/src/symbols/index.d.ts +4 -4
  35. package/dist/plugins/MagicCommand/src/types/index.d.ts +1 -1
  36. package/dist/plugins/MagicCookie/src/components/MagicCookieItem.vue.d.ts +13 -22
  37. package/dist/plugins/MagicCookie/src/components/MagicCookieProvider.vue.d.ts +9 -21
  38. package/dist/plugins/MagicCookie/src/components/MagicCookieView.vue.d.ts +21 -12
  39. package/dist/plugins/MagicCookie/src/symbols/index.d.ts +2 -2
  40. package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue +18 -24
  41. package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue.d.ts +94 -23
  42. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.d.ts +2 -2
  43. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.mjs +9 -5
  44. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableScrollLock.mjs +34 -14
  45. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.d.ts +6 -4
  46. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.mjs +54 -19
  47. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.mjs +4 -4
  48. package/dist/plugins/MagicDraggable/src/types/index.d.ts +1 -1
  49. package/dist/plugins/MagicDraggable/src/utils/defaultOptions.mjs +1 -1
  50. package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +33 -24
  51. package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue.d.ts +165 -24
  52. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDOM.mjs +34 -14
  53. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.d.ts +2 -2
  54. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +3 -3
  55. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerGuards.d.ts +1 -1
  56. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerGuards.mjs +28 -10
  57. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerProgress.d.ts +2 -2
  58. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.d.ts +3 -3
  59. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.mjs +16 -14
  60. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerWheel.d.ts +1 -1
  61. package/dist/plugins/MagicMarquee/src/components/MagicMarquee.vue +15 -15
  62. package/dist/plugins/MagicMarquee/src/components/MagicMarquee.vue.d.ts +14 -25
  63. package/dist/plugins/MagicMarquee/src/composables/private/useMarqueeApi.d.ts +1 -1
  64. package/dist/plugins/MagicMarquee/src/composables/private/useMarqueeApi.mjs +8 -2
  65. package/dist/plugins/MagicMenu/src/components/MagicMenuChannel.vue +4 -5
  66. package/dist/plugins/MagicMenu/src/components/MagicMenuChannel.vue.d.ts +18 -21
  67. package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue +3 -6
  68. package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue.d.ts +41 -24
  69. package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue +5 -7
  70. package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue.d.ts +40 -25
  71. package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue +3 -14
  72. package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue.d.ts +31 -28
  73. package/dist/plugins/MagicMenu/src/components/MagicMenuProvider.vue +19 -8
  74. package/dist/plugins/MagicMenu/src/components/MagicMenuProvider.vue.d.ts +12 -58
  75. package/dist/plugins/MagicMenu/src/components/MagicMenuRemote.vue +28 -38
  76. package/dist/plugins/MagicMenu/src/components/MagicMenuRemote.vue.d.ts +19 -23
  77. package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue +29 -19
  78. package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue.d.ts +27 -60
  79. package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue +2 -2
  80. package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue.d.ts +15 -22
  81. package/dist/plugins/MagicMenu/src/composables/private/useMenuCallback.mjs +1 -1
  82. package/dist/plugins/MagicMenu/src/composables/private/useMenuChannel.mjs +15 -5
  83. package/dist/plugins/MagicMenu/src/composables/private/useMenuCursor.d.ts +3 -3
  84. package/dist/plugins/MagicMenu/src/composables/private/useMenuCursor.mjs +4 -4
  85. package/dist/plugins/MagicMenu/src/composables/private/useMenuDOM.mjs +35 -15
  86. package/dist/plugins/MagicMenu/src/composables/private/useMenuTrigger.d.ts +1 -1
  87. package/dist/plugins/MagicMenu/src/composables/private/useMenuView.mjs +18 -6
  88. package/dist/plugins/MagicMenu/src/symbols/index.d.ts +4 -4
  89. package/dist/plugins/MagicMenu/src/utils/modeDelayDefaults.d.ts +2 -2
  90. package/dist/plugins/MagicMenu/src/utils/modeDelayDefaults.mjs +2 -2
  91. package/dist/plugins/MagicModal/src/components/MagicModal.vue +9 -9
  92. package/dist/plugins/MagicModal/src/components/MagicModal.vue.d.ts +44 -22
  93. package/dist/plugins/MagicModal/src/composables/private/useModalDOM.mjs +34 -14
  94. package/dist/plugins/MagicNoise/src/components/MagicNoise.vue +14 -14
  95. package/dist/plugins/MagicNoise/src/components/MagicNoise.vue.d.ts +1 -10
  96. package/dist/plugins/MagicNoise/src/composables/private/useNoiseApi.d.ts +3 -3
  97. package/dist/plugins/MagicNoise/src/composables/private/useNoiseApi.mjs +2 -2
  98. package/dist/plugins/MagicPie/index.d.ts +7 -0
  99. package/dist/plugins/MagicPie/index.mjs +8 -0
  100. package/dist/plugins/MagicPie/nuxt.d.ts +2 -0
  101. package/dist/plugins/MagicPie/nuxt.mjs +23 -0
  102. package/dist/plugins/MagicPie/src/components/MagicPie.vue +202 -0
  103. package/dist/plugins/MagicPie/src/components/MagicPie.vue.d.ts +7 -0
  104. package/dist/plugins/MagicPie/src/composables/private/usePieState.d.ts +6 -0
  105. package/dist/plugins/MagicPie/src/composables/private/usePieState.mjs +33 -0
  106. package/dist/plugins/MagicPie/src/composables/useMagicPie.d.ts +13 -0
  107. package/dist/plugins/MagicPie/src/composables/useMagicPie.mjs +43 -0
  108. package/dist/plugins/MagicPie/src/types/index.d.ts +9 -0
  109. package/dist/plugins/MagicPie/src/types/index.mjs +0 -0
  110. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudio.vue +14 -8
  111. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue +32 -38
  112. package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue.d.ts +27 -26
  113. package/dist/plugins/MagicPlayer/src/components/MagicPlayerDisplayTime.vue.d.ts +1 -10
  114. package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue +19 -8
  115. package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue.d.ts +1 -10
  116. package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue +2 -2
  117. package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue.d.ts +29 -14
  118. package/dist/plugins/MagicPlayer/src/components/MagicPlayerPoster.vue.d.ts +13 -11
  119. package/dist/plugins/MagicPlayer/src/components/MagicPlayerProvider.vue +3 -4
  120. package/dist/plugins/MagicPlayer/src/components/MagicPlayerProvider.vue.d.ts +23 -23
  121. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideo.vue +3 -4
  122. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue +24 -25
  123. package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue.d.ts +61 -33
  124. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerAudioApi.d.ts +2 -2
  125. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerAudioApi.mjs +3 -3
  126. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerControlsApi.d.ts +10 -10
  127. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerControlsApi.mjs +15 -9
  128. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.d.ts +13 -13
  129. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.mjs +18 -11
  130. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.d.ts +3 -3
  131. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.mjs +3 -3
  132. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerVideoApi.d.ts +6 -6
  133. package/dist/plugins/MagicPlayer/src/composables/private/usePlayerVideoApi.mjs +4 -4
  134. package/dist/plugins/MagicPlayer/src/composables/useMagicPlayer.d.ts +20 -20
  135. package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue +17 -8
  136. package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue.d.ts +9 -23
  137. package/dist/plugins/MagicScroll/src/components/MagicScrollMotion.vue +11 -11
  138. package/dist/plugins/MagicScroll/src/components/MagicScrollMotion.vue.d.ts +9 -23
  139. package/dist/plugins/MagicScroll/src/components/MagicScrollProvider.vue.d.ts +45 -37
  140. package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue +18 -10
  141. package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue.d.ts +13 -24
  142. package/dist/plugins/MagicScroll/src/composables/private/useCollisionDetection.d.ts +2 -2
  143. package/dist/plugins/MagicScroll/src/composables/private/useCollisionDetection.mjs +3 -3
  144. package/dist/plugins/MagicScroll/src/composables/private/useScrollApi.mjs +14 -4
  145. package/dist/plugins/MagicScroll/src/symbols/index.d.ts +1 -1
  146. package/dist/plugins/MagicToast/src/components/MagicToastProvider.vue +23 -29
  147. package/dist/plugins/MagicToast/src/components/MagicToastProvider.vue.d.ts +1 -10
  148. package/dist/plugins/MagicToast/src/components/MagicToastView.vue +8 -11
  149. package/dist/plugins/MagicToast/src/components/MagicToastView.vue.d.ts +24 -23
  150. package/dist/plugins/MagicToast/src/composables/private/useToastCallback.d.ts +2 -2
  151. package/dist/plugins/MagicToast/src/composables/private/useToastCallback.mjs +5 -5
  152. package/dist/plugins/MagicToast/src/composables/private/useToastDrag.mjs +22 -22
  153. package/dist/plugins/MagicToast/src/composables/private/useToastScrollLock.mjs +33 -15
  154. package/dist/plugins/MagicToast/src/composables/useMagicToast.d.ts +1 -0
  155. package/dist/plugins/MagicToast/src/composables/useMagicToast.mjs +10 -2
  156. package/dist/plugins/MagicToast/src/types/index.d.ts +1 -1
  157. package/dist/plugins/MagicToast/src/utils/defaultOptions.mjs +1 -1
  158. package/dist/plugins/index.d.ts +1 -0
  159. package/dist/plugins/index.mjs +1 -0
  160. package/dist/utils/index.d.ts +9 -4
  161. package/dist/utils/index.js +39 -3
  162. package/dist/utils/index.js.map +1 -1
  163. package/package.json +16 -7
@@ -1,5 +1,5 @@
1
1
  import {
2
- ref,
2
+ shallowRef,
3
3
  computed,
4
4
  toValue,
5
5
  nextTick,
@@ -58,8 +58,8 @@ export function useDraggableDrag(args) {
58
58
  let cancelPointerup = void 0;
59
59
  let cancelPointermove = void 0;
60
60
  let cancelTouchend = void 0;
61
- const momentumThresholdReached = ref(false);
62
- const distanceThresholdReached = ref(false);
61
+ const momentumThresholdReached = shallowRef(false);
62
+ const distanceThresholdReached = shallowRef(false);
63
63
  const style = computed(
64
64
  () => `transform: translate3d(${draggedX.value}px, ${draggedY.value}px, 0)`
65
65
  );
@@ -89,8 +89,10 @@ export function useDraggableDrag(args) {
89
89
  wrapperRect,
90
90
  animation,
91
91
  snapPoints,
92
+ draggedX,
92
93
  draggedY,
93
- draggedX
94
+ lastDraggedX,
95
+ lastDraggedY
94
96
  });
95
97
  const emitter = useMagicEmitter();
96
98
  const {
@@ -329,10 +331,10 @@ export function useDraggableDrag(args) {
329
331
  function onPointerdown(e) {
330
332
  const scrollLockValue = toValue(scrollLock);
331
333
  if (scrollLockValue) {
332
- lockScroll();
333
334
  if (typeof scrollLockValue === "object" && scrollLockValue.padding) {
334
335
  addScrollLockPadding();
335
336
  }
337
+ lockScroll();
336
338
  }
337
339
  if (dragging.value) {
338
340
  return;
@@ -398,6 +400,7 @@ export function useDraggableDrag(args) {
398
400
  if (activeSnapPoint.value) {
399
401
  await snapTo({ snapPoint: activeSnapPoint.value, interpolate: false });
400
402
  snapPointsMap.trigger();
403
+ mappedSnapPoints.trigger();
401
404
  }
402
405
  }, 100)();
403
406
  });
@@ -407,6 +410,7 @@ export function useDraggableDrag(args) {
407
410
  if (activeSnapPoint.value) {
408
411
  await snapTo({ snapPoint: activeSnapPoint.value, interpolate: false });
409
412
  snapPointsMap.trigger();
413
+ mappedSnapPoints.trigger();
410
414
  }
411
415
  }, 100)();
412
416
  });
@@ -1,7 +1,11 @@
1
- import { ref } from "vue";
1
+ import { shallowRef, ref } from "vue";
2
2
  import { useScrollLock } from "@vueuse/core";
3
- import { matchClass } from "@maas/vue-equipment/utils";
4
- const scrollLock = typeof window !== "undefined" ? useScrollLock(document?.documentElement) : ref(false);
3
+ import {
4
+ matchClass,
5
+ scrollbarWidth,
6
+ scrollbarGutterSupport
7
+ } from "@maas/vue-equipment/utils";
8
+ const scrollLock = typeof window !== "undefined" ? useScrollLock(document?.documentElement) : shallowRef(false);
5
9
  export function useDraggableScrollLock() {
6
10
  const positionFixedElements = ref([]);
7
11
  function lockScroll() {
@@ -13,24 +17,40 @@ export function useDraggableScrollLock() {
13
17
  function addScrollLockPadding() {
14
18
  if (typeof window === "undefined") return;
15
19
  const exclude = new RegExp(/magic-draggable/);
16
- const scrollbarWidth = window.innerWidth - document.body.offsetWidth;
17
- document.body.style.setProperty("--scrollbar-width", `${scrollbarWidth}px`);
18
- document.body.style.paddingRight = "var(--scrollbar-width)";
20
+ document.body.style.setProperty(
21
+ "--scrollbar-width",
22
+ `${scrollbarWidth()}px`
23
+ );
19
24
  positionFixedElements.value = [
20
25
  ...document.body.getElementsByTagName("*")
21
26
  ].filter(
22
- (x) => getComputedStyle(x, null).getPropertyValue("position") === "fixed" && !matchClass(x, exclude)
23
- );
24
- positionFixedElements.value.forEach(
25
- (elem) => elem.style.paddingRight = "var(--scrollbar-width)"
27
+ (x) => getComputedStyle(x, null).getPropertyValue("position") === "fixed" && getComputedStyle(x, null).getPropertyValue("right") === "0px" && !matchClass(x, exclude)
26
28
  );
29
+ switch (scrollbarGutterSupport()) {
30
+ case true:
31
+ document.documentElement.style.scrollbarGutter = "stable";
32
+ positionFixedElements.value.forEach((elem) => {
33
+ elem.style.scrollbarGutter = "stable";
34
+ elem.style.overflow = "auto";
35
+ });
36
+ break;
37
+ case false:
38
+ document.body.style.paddingRight = "var(--scrollbar-width)";
39
+ positionFixedElements.value.forEach(
40
+ (elem) => elem.style.paddingRight = "var(--scrollbar-width)"
41
+ );
42
+ break;
43
+ }
27
44
  }
28
45
  function removeScrollLockPadding() {
29
- document.body.style.paddingRight = "";
46
+ document.documentElement.style.scrollbarGutter = "";
30
47
  document.body.style.removeProperty("--scrollbar-width");
31
- positionFixedElements.value.forEach(
32
- (elem) => elem.style.paddingRight = ""
33
- );
48
+ document.body.style.paddingRight = "";
49
+ positionFixedElements.value.forEach((elem) => {
50
+ elem.style.paddingRight = "";
51
+ elem.style.scrollbarGutter = "";
52
+ elem.style.overflow = "";
53
+ });
34
54
  }
35
55
  return {
36
56
  lockScroll,
@@ -4,8 +4,10 @@ type UseDraggableSnapArgs = {
4
4
  id: MaybeRef<string>;
5
5
  elRect: Ref<DOMRect | undefined>;
6
6
  wrapperRect: Ref<DOMRect | undefined>;
7
- draggedY: Ref<number>;
8
7
  draggedX: Ref<number>;
8
+ draggedY: Ref<number>;
9
+ lastDraggedX: Ref<number>;
10
+ lastDraggedY: Ref<number>;
9
11
  animation: MaybeRef<DraggableDefaultOptions['animation']>;
10
12
  snapPoints: MaybeRef<DraggableDefaultOptions['snapPoints']>;
11
13
  };
@@ -22,13 +24,13 @@ type SnapToArgs = {
22
24
  };
23
25
  export declare function useDraggableSnap(args: UseDraggableSnapArgs): {
24
26
  mappedSnapPoints: import("@vueuse/core").ComputedRefWithControl<Coordinates[]>;
25
- activeSnapPoint: Ref<("center" | "top-left" | "top-center" | "top-right" | "center-left" | "center-right" | "bottom-left" | "bottom-center" | "bottom-right") | ["center" | "top-left" | "top-center" | "top-right" | "center-left" | "center-right" | "bottom-left" | "bottom-center" | "bottom-right", offset?: {
27
+ activeSnapPoint: Ref<("center" | "right" | "left" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | ["center" | "right" | "left" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right", offset?: {
26
28
  x?: number | undefined;
27
29
  y?: number | undefined;
28
- } | undefined] | undefined, "center" | "top-left" | "top-center" | "top-right" | "center-left" | "center-right" | "bottom-left" | "bottom-center" | "bottom-right" | ["center" | "top-left" | "top-center" | "top-right" | "center-left" | "center-right" | "bottom-left" | "bottom-center" | "bottom-right", offset?: {
30
+ } | undefined] | undefined, "center" | "right" | "left" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ["center" | "right" | "left" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right", offset?: {
29
31
  x?: number;
30
32
  y?: number;
31
- } | undefined] | ["center" | "top-left" | "top-center" | "top-right" | "center-left" | "center-right" | "bottom-left" | "bottom-center" | "bottom-right", offset?: {
33
+ } | undefined] | ["center" | "right" | "left" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right", offset?: {
32
34
  x?: number | undefined;
33
35
  y?: number | undefined;
34
36
  } | undefined] | undefined>;
@@ -4,7 +4,19 @@ import { interpolate } from "@maas/vue-equipment/utils";
4
4
  import { useMagicEmitter } from "@maas/vue-equipment/plugins";
5
5
  import { defu } from "defu";
6
6
  export function useDraggableSnap(args) {
7
- const { id, draggedY, draggedX, elRect, wrapperRect, animation, snapPoints } = args;
7
+ const {
8
+ id,
9
+ draggedX,
10
+ draggedY,
11
+ lastDraggedX,
12
+ lastDraggedY,
13
+ elRect,
14
+ wrapperRect,
15
+ animation,
16
+ snapPoints
17
+ } = args;
18
+ const interpolationIdX = ref(void 0);
19
+ const interpolationIdY = ref(void 0);
8
20
  const activeSnapPoint = ref(void 0);
9
21
  const mappedSnapPoints = computedWithControl(
10
22
  () => toValue(wrapperRect),
@@ -18,17 +30,14 @@ export function useDraggableSnap(args) {
18
30
  const snapPointsMap = computedWithControl(
19
31
  () => toValue(snapPoints),
20
32
  () => {
21
- const mapped = toValue(snapPoints).reduce(
22
- (acc, current) => {
23
- const key = mapSnapPoint(current);
24
- if (key) {
25
- const mappedKey = `x${key.x}y${key.y}`;
26
- acc[mappedKey] = current;
27
- }
28
- return acc;
29
- },
30
- {}
31
- );
33
+ const mapped = toValue(snapPoints).reduce((acc, current) => {
34
+ const key = mapSnapPoint(current);
35
+ if (key) {
36
+ const mappedKey = `x${key.x}y${key.y}`;
37
+ acc[mappedKey] = current;
38
+ }
39
+ return acc;
40
+ }, {});
32
41
  return mapped;
33
42
  }
34
43
  );
@@ -51,7 +60,7 @@ export function useDraggableSnap(args) {
51
60
  x: mappedOffset.x,
52
61
  y: mappedOffset.y
53
62
  };
54
- case "top-center":
63
+ case "top":
55
64
  return {
56
65
  x: wrapperRect.value.width / 2 + mappedOffset.x - elRect.value.width / 2,
57
66
  y: mappedOffset.y
@@ -61,7 +70,7 @@ export function useDraggableSnap(args) {
61
70
  x: wrapperRect.value.width - mappedOffset.x - elRect.value.width,
62
71
  y: mappedOffset.y
63
72
  };
64
- case "center-left":
73
+ case "left":
65
74
  return {
66
75
  x: mappedOffset.x,
67
76
  y: wrapperRect.value.height / 2 + mappedOffset.y - elRect.value.height / 2
@@ -71,7 +80,7 @@ export function useDraggableSnap(args) {
71
80
  x: wrapperRect.value.width / 2 - elRect.value.width / 2 + mappedOffset.x,
72
81
  y: wrapperRect.value.height / 2 - elRect.value.height / 2 + mappedOffset.y
73
82
  };
74
- case "center-right":
83
+ case "right":
75
84
  return {
76
85
  x: wrapperRect.value.width - mappedOffset.x - elRect.value.width,
77
86
  y: wrapperRect.value.height / 2 + mappedOffset.y - elRect.value.height / 2
@@ -81,7 +90,7 @@ export function useDraggableSnap(args) {
81
90
  x: mappedOffset.x,
82
91
  y: wrapperRect.value.height + mappedOffset.y - elRect.value.height
83
92
  };
84
- case "bottom-center":
93
+ case "bottom":
85
94
  return {
86
95
  x: wrapperRect.value.width / 2 + mappedOffset.x - elRect.value.width / 2,
87
96
  y: wrapperRect.value.height - mappedOffset.y - elRect.value.height
@@ -93,6 +102,14 @@ export function useDraggableSnap(args) {
93
102
  };
94
103
  }
95
104
  }
105
+ function cancelInterpolation() {
106
+ if (interpolationIdY.value) {
107
+ cancelAnimationFrame(interpolationIdY.value);
108
+ }
109
+ if (interpolationIdX.value) {
110
+ cancelAnimationFrame(interpolationIdX.value);
111
+ }
112
+ }
96
113
  function interpolateDragged(args2) {
97
114
  const {
98
115
  x,
@@ -102,19 +119,27 @@ export function useDraggableSnap(args) {
102
119
  } = args2;
103
120
  const snapPoint = snapPointsMap.value[`x${x}y${y}`];
104
121
  emitter.emit("beforeSnap", { id: toValue(id), snapPoint });
105
- interpolate({
122
+ cancelInterpolation();
123
+ interpolationIdY.value = interpolate({
106
124
  from: draggedY.value,
107
125
  to: y,
108
126
  duration,
109
127
  easing,
110
- callback: (value) => {
128
+ callback(value) {
111
129
  draggedY.value = value;
112
130
  if (y > x && draggedY.value === y) {
113
131
  emitter.emit("afterSnap", { id: toValue(id), snapPoint });
114
132
  }
133
+ if (draggedY.value === y) {
134
+ lastDraggedX.value = draggedX.value;
135
+ lastDraggedY.value = draggedY.value;
136
+ }
137
+ },
138
+ interpolationIdCallback(id2) {
139
+ interpolationIdY.value = id2;
115
140
  }
116
141
  });
117
- interpolate({
142
+ interpolationIdX.value = interpolate({
118
143
  from: draggedX.value,
119
144
  to: x,
120
145
  duration,
@@ -124,6 +149,13 @@ export function useDraggableSnap(args) {
124
149
  if (x >= y && draggedX.value === x) {
125
150
  emitter.emit("afterSnap", { id: toValue(id), snapPoint });
126
151
  }
152
+ if (draggedX.value === x) {
153
+ lastDraggedX.value = draggedX.value;
154
+ lastDraggedY.value = draggedY.value;
155
+ }
156
+ },
157
+ interpolationIdCallback(id2) {
158
+ interpolationIdX.value = id2;
127
159
  }
128
160
  });
129
161
  }
@@ -139,8 +171,11 @@ export function useDraggableSnap(args) {
139
171
  duration
140
172
  });
141
173
  } else {
174
+ cancelInterpolation();
142
175
  draggedX.value = mappedSnapPoint.x;
143
176
  draggedY.value = mappedSnapPoint.y;
177
+ lastDraggedX.value = draggedX.value;
178
+ lastDraggedY.value = draggedY.value;
144
179
  }
145
180
  }
146
181
  activeSnapPoint.value = snapPoint;
@@ -1,5 +1,5 @@
1
1
  import { ref, reactive, toValue } from "vue";
2
- const drawerStateStore = ref([]);
2
+ const draggableStateStore = ref([]);
3
3
  export function useDraggableState(id) {
4
4
  function createState(id2) {
5
5
  const state = {
@@ -22,18 +22,18 @@ export function useDraggableState(id) {
22
22
  }
23
23
  function addState(id2) {
24
24
  const state = createState(id2);
25
- drawerStateStore.value = [...drawerStateStore.value, state];
25
+ draggableStateStore.value = [...draggableStateStore.value, state];
26
26
  return state;
27
27
  }
28
28
  function initializeState() {
29
- let state = drawerStateStore.value.find((entry) => {
29
+ let state = draggableStateStore.value.find((entry) => {
30
30
  return entry.id === id;
31
31
  });
32
32
  if (!state) state = addState(toValue(id));
33
33
  return state;
34
34
  }
35
35
  function deleteState() {
36
- drawerStateStore.value = drawerStateStore.value.filter(
36
+ draggableStateStore.value = draggableStateStore.value.filter(
37
37
  (x) => x.id !== id
38
38
  );
39
39
  }
@@ -1,5 +1,5 @@
1
1
  import type { RequireAll } from '@maas/vue-equipment/utils';
2
- type Position = 'top-left' | 'top-center' | 'top-right' | 'center-left' | 'center' | 'center-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
2
+ type Position = 'top-left' | 'top' | 'top-right' | 'left' | 'center' | 'right' | 'bottom-left' | 'bottom' | 'bottom-right';
3
3
  export type Coordinates = {
4
4
  x: number;
5
5
  y: number;
@@ -16,7 +16,7 @@ const defaultOptions = {
16
16
  }
17
17
  },
18
18
  initial: {
19
- snapPoint: "center"
19
+ snapPoint: "top-left"
20
20
  },
21
21
  disabled: false
22
22
  };
@@ -1,14 +1,19 @@
1
1
  <script>
2
2
  import { defineComponent as _defineComponent } from "vue";
3
3
  import { unref as _unref, renderSlot as _renderSlot, vShow as _vShow, withModifiers as _withModifiers, createElementVNode as _createElementVNode, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, resolveDynamicComponent as _resolveDynamicComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, mergeProps as _mergeProps, Teleport as _Teleport } from "vue";
4
- const _hoisted_1 = ["id", "data-dragging", "data-wheeling", "data-disabled", "data-position"];
5
- const _hoisted_2 = { class: "magic-drawer__content" };
6
- const _hoisted_3 = {
4
+ const _hoisted_1 = ["data-id", "data-dragging", "data-wheeling", "data-disabled", "data-position"];
5
+ const _hoisted_2 = {
6
+ ref: "wrapper",
7
+ class: "magic-drawer__wrapper"
8
+ };
9
+ const _hoisted_3 = { class: "magic-drawer__content" };
10
+ const _hoisted_4 = {
7
11
  key: 0,
8
12
  class: "magic-drawer__overlay"
9
13
  };
10
14
  import {
11
- ref,
15
+ useTemplateRef,
16
+ shallowRef,
12
17
  watch,
13
18
  computed,
14
19
  nextTick,
@@ -56,9 +61,9 @@ export default /* @__PURE__ */ _defineComponent({
56
61
  }
57
62
  });
58
63
  const mappedOptions = customDefu(__props.options, defaultOptions);
59
- const elRef = ref(void 0);
60
- const drawerRef = ref(void 0);
61
- const wrapperRef = ref(void 0);
64
+ const elRef = useTemplateRef("el");
65
+ const drawerRef = useTemplateRef("drawer");
66
+ const wrapperRef = useTemplateRef("wrapper");
62
67
  const {
63
68
  trapFocus,
64
69
  releaseFocus,
@@ -71,7 +76,7 @@ export default /* @__PURE__ */ _defineComponent({
71
76
  focusTrap: mappedOptions.focusTrap
72
77
  });
73
78
  const { isActive, open, close } = useMagicDrawer(__props.id);
74
- const overshoot = ref(0);
79
+ const overshoot = shallowRef(0);
75
80
  const {
76
81
  position,
77
82
  snapPoints,
@@ -109,9 +114,9 @@ export default /* @__PURE__ */ _defineComponent({
109
114
  const { initializeState, deleteState } = useDrawerState(__props.id);
110
115
  const state = initializeState();
111
116
  const { dragging, wheeling } = toRefs(state);
112
- const innerActive = ref(false);
113
- const wrapperActive = ref(false);
114
- const wasActive = ref(false);
117
+ const innerActive = shallowRef(false);
118
+ const wrapperActive = shallowRef(false);
119
+ const wasActive = shallowRef(false);
115
120
  const {
116
121
  onBeforeEnter,
117
122
  onEnter,
@@ -250,10 +255,9 @@ export default /* @__PURE__ */ _defineComponent({
250
255
  disabled: _unref(mappedOptions).teleport?.disabled
251
256
  }, [
252
257
  _createElementVNode("div", _mergeProps({
253
- id: toValue(_ctx.id),
254
- ref_key: "drawerRef",
255
- ref: drawerRef,
258
+ ref: "drawer",
256
259
  class: "magic-drawer",
260
+ "data-id": toValue(_ctx.id),
257
261
  "data-dragging": _unref(dragging),
258
262
  "data-wheeling": _unref(wheeling),
259
263
  "data-disabled": disabled.value,
@@ -285,11 +289,7 @@ export default /* @__PURE__ */ _defineComponent({
285
289
  }, 8, ["name"])) : _createCommentVNode("v-if", true),
286
290
  _createElementVNode(
287
291
  "div",
288
- {
289
- ref_key: "wrapperRef",
290
- ref: wrapperRef,
291
- class: "magic-drawer__wrapper"
292
- },
292
+ _hoisted_2,
293
293
  [
294
294
  _createVNode(_Transition, {
295
295
  name: contentTransition.value,
@@ -304,11 +304,10 @@ export default /* @__PURE__ */ _defineComponent({
304
304
  default: _withCtx(() => [
305
305
  _withDirectives(_createElementVNode(
306
306
  "div",
307
- _hoisted_2,
307
+ _hoisted_3,
308
308
  [
309
309
  (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(mappedOptions).tag), {
310
- ref_key: "elRef",
311
- ref: elRef,
310
+ ref: "el",
312
311
  class: "magic-drawer__drag",
313
312
  style: _normalizeStyle(_unref(style)),
314
313
  onPointerdown: guardedPointerdown,
@@ -316,7 +315,7 @@ export default /* @__PURE__ */ _defineComponent({
316
315
  }, {
317
316
  default: _withCtx(() => [
318
317
  _renderSlot(_ctx.$slots, "default"),
319
- _unref(hasDragged) ? (_openBlock(), _createElementBlock("div", _hoisted_3)) : _createCommentVNode("v-if", true)
318
+ _unref(hasDragged) ? (_openBlock(), _createElementBlock("div", _hoisted_4)) : _createCommentVNode("v-if", true)
320
319
  ]),
321
320
  _: 3
322
321
  /* FORWARDED */
@@ -345,7 +344,9 @@ export default /* @__PURE__ */ _defineComponent({
345
344
  <style>
346
345
  :root {
347
346
  --magic-drawer-height: 75svh;
347
+ --magic-drawer-max-height: none;
348
348
  --magic-drawer-width: 100%;
349
+ --magic-drawer-max-width: none;
349
350
  --magic-drawer-justify-content: center;
350
351
  --magic-drawer-align-items: flex-end;
351
352
  --magic-drawer-enter-animation: slide-btt-in 300ms ease;
@@ -433,18 +434,26 @@ export default /* @__PURE__ */ _defineComponent({
433
434
 
434
435
  .magic-drawer__wrapper {
435
436
  height: var(--magic-drawer-height);
437
+ max-height: calc(
438
+ var(--magic-drawer-max-height) + var(--magic-drawer-drag-overshoot-y)
439
+ );
436
440
  width: var(--magic-drawer-width);
441
+ max-width: calc(
442
+ var(--magic-drawer-max-width) + var(--magic-drawer-drag-overshoot-x)
443
+ );
437
444
  transform: translate(
438
445
  var(--magic-drawer-drag-overshoot-x),
439
446
  var(--magic-drawer-drag-overshoot-y)
440
447
  );
441
448
  pointer-events: none;
449
+ display: flex;
450
+ min-height: 0;
442
451
  }
443
452
 
444
453
  .magic-drawer__content {
445
454
  width: 100%;
446
- height: 100%;
447
455
  max-height: 100%;
456
+ height: var(--magic-drawer-content-height, 100%);
448
457
  position: relative;
449
458
  }
450
459