@wix/site-ui 1.185.0 → 1.186.0

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 (47) hide show
  1. package/dist/1763.js +836 -0
  2. package/dist/2205.js +26 -0
  3. package/dist/2445.js +470 -0
  4. package/dist/285.js +1 -1
  5. package/dist/3485.js +4 -3
  6. package/dist/4863.js +61 -0
  7. package/dist/{4388.js → 487.js} +5 -57
  8. package/dist/5992.js +5 -471
  9. package/dist/6046.js +2 -26
  10. package/dist/6089.js +6 -3
  11. package/dist/6270.js +5 -3
  12. package/dist/6535.js +2 -1
  13. package/dist/6588.js +2 -1
  14. package/dist/6882.js +8 -4
  15. package/dist/6917.js +55 -0
  16. package/dist/7871.js +1 -1
  17. package/dist/8052.js +2 -1
  18. package/dist/8106.js +3 -2
  19. package/dist/8171.js +1 -1
  20. package/dist/8750.js +3 -2
  21. package/dist/8960.js +1 -1
  22. package/dist/904.js +1 -1
  23. package/dist/9352.js +2 -2
  24. package/dist/{880.js → 9369.js} +2 -60
  25. package/dist/Accordion/index.js +1 -1
  26. package/dist/Avatar/index.js +2 -1
  27. package/dist/Checkbox/index.js +2 -1
  28. package/dist/Collapsible/index.js +1 -1
  29. package/dist/Combobox/index.js +3 -2
  30. package/dist/ContextMenu/index.js +2 -2
  31. package/dist/Drawer/index.js +10 -836
  32. package/dist/Field/index.js +2 -1
  33. package/dist/Menu/index.js +3 -2
  34. package/dist/NavigationMenu/index.js +6 -3
  35. package/dist/Popover/index.js +5 -3
  36. package/dist/PreviewCard/index.js +5 -3
  37. package/dist/Radio/index.js +2 -1
  38. package/dist/Select/index.js +6 -3
  39. package/dist/Tabs/index.js +2 -1
  40. package/dist/Toast/index.css +111 -0
  41. package/dist/Toast/index.d.ts +846 -0
  42. package/dist/Toast/index.js +1204 -0
  43. package/dist/Tooltip/index.js +5 -3
  44. package/dist/index.d.ts +501 -0
  45. package/dist/index.js +1 -0
  46. package/package.json +2 -2
  47. /package/dist/{5992.js.LICENSE.txt → 2445.js.LICENSE.txt} +0 -0
@@ -1,26 +1,29 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import clsx from "clsx";
3
- import { BASE_UI_SWIPE_IGNORE_SELECTOR, popupStateMapping, popupStateMapping_CommonPopupDataAttributes } from "../4388.js";
4
- import { transitionStatusMapping, stateAttributesMapping_TransitionStatusDataAttributes, useOpenChangeComplete } from "../880.js";
3
+ import { popupStateMapping, popupStateMapping_CommonPopupDataAttributes } from "../6917.js";
4
+ import { transitionStatusMapping, stateAttributesMapping_TransitionStatusDataAttributes, useOpenChangeComplete } from "../9369.js";
5
5
  import { IsDrawerContext, DialogClose_DialogClose, useDialogPortalContext, useDialogRootContext, DialogTitle_DialogTitle, DialogTrigger_DialogTrigger, DialogDescription_DialogDescription, DialogHandle, createDialogHandle, DialogViewport_DialogViewport, DialogPortal_DialogPortal } from "../6270.js";
6
6
  import { EMPTY_OBJECT, mergeProps, useRenderElement, esm_formatErrorMessage } from "../8272.js";
7
7
  import { useIsoLayoutEffect, SafeReact } from "../6499.js";
8
8
  import { clamp } from "../3296.js";
9
9
  import { useStableCallback } from "../7541.js";
10
10
  import { ownerDocument } from "../9829.js";
11
- import { error as error_error } from "../4026.js";
11
+ import { error } from "../4026.js";
12
12
  import { FOCUSABLE_POPUP_PROPS, useTriggerRegistration } from "../8106.js";
13
13
  import { COMPOSITE_KEYS } from "../1500.js";
14
14
  import { FloatingFocusManager } from "../3485.js";
15
- import { getWindow, getComputedStyle as floating_ui_utils_dom_getComputedStyle, isElement, isHTMLElement } from "../3829.js";
16
- import { getTarget, contains, activeElement } from "../4549.js";
17
15
  import { useTimeout } from "../42.js";
18
- import { useBaseUiId, useId } from "../6046.js";
16
+ import { useBaseUiId } from "../6046.js";
17
+ import { getElementTransform, useSwipeDismiss, findScrollableTouchTarget, getDisplacement, getElementAtPoint } from "../1763.js";
19
18
  import { createChangeEventDetails } from "../4768.js";
20
19
  import { useAnimationFrame } from "../8996.js";
20
+ import { getWindow, isElement } from "../3829.js";
21
+ import { getTarget, contains, activeElement } from "../4549.js";
21
22
  import { addEventListener } from "../4723.js";
23
+ import { BASE_UI_SWIPE_IGNORE_SELECTOR } from "../487.js";
22
24
  import { useControlled } from "../8527.js";
23
25
  import { DialogRoot } from "../3020.js";
26
+ import { useId } from "../2205.js";
24
27
  import { isAndroid } from "../8971.js";
25
28
  import { closeWatcher as reason_parts_closeWatcher } from "../2418.js";
26
29
  import * as __rspack_external_react from "react";
@@ -426,7 +429,7 @@ const DrawerPopup_DrawerPopup = /*#__PURE__*/ __rspack_external_react.forwardRef
426
429
  if (swipe) return;
427
430
  const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';
428
431
  const message = "<Drawer.Popup> expected to be rendered within <Drawer.Viewport>. Omitting the viewport disables drawer swipe handling and touch scroll locking. Wrap <Drawer.Popup> in <Drawer.Viewport>.";
429
- error_error(`${message}${ownerStackMessage}`);
432
+ error(`${message}${ownerStackMessage}`);
430
433
  }, [
431
434
  swipe
432
435
  ]);
@@ -606,835 +609,6 @@ const DrawerPopup_DrawerPopup = /*#__PURE__*/ __rspack_external_react.forwardRef
606
609
  });
607
610
  });
608
611
  if ("production" !== process.env.NODE_ENV) DrawerPopup_DrawerPopup.displayName = "DrawerPopup";
609
- function isScrollable(element, axis) {
610
- const style = floating_ui_utils_dom_getComputedStyle(element);
611
- if ('vertical' === axis) {
612
- const overflowY = style.overflowY;
613
- return ('auto' === overflowY || 'scroll' === overflowY) && element.scrollHeight > element.clientHeight;
614
- }
615
- const overflowX = style.overflowX;
616
- return ('auto' === overflowX || 'scroll' === overflowX) && element.scrollWidth > element.clientWidth;
617
- }
618
- function hasScrollableAncestor(target, root, axes) {
619
- let node = target;
620
- while(node && node !== root){
621
- for (const axis of axes)if (isScrollable(node, axis)) return true;
622
- node = node.parentElement;
623
- }
624
- return false;
625
- }
626
- function findScrollableTouchTarget(target, root, axis = 'vertical') {
627
- let node = isHTMLElement(target) ? target : null;
628
- while(node && node !== root){
629
- if (isScrollable(node, axis)) return node;
630
- node = node.parentElement;
631
- }
632
- return isScrollable(root, axis) ? root : null;
633
- }
634
- function getElementAtPoint(doc, x, y) {
635
- return 'function' == typeof doc?.elementFromPoint ? doc.elementFromPoint(x, y) : null;
636
- }
637
- const DEFAULT_SWIPE_THRESHOLD = 40;
638
- const REVERSE_CANCEL_THRESHOLD = 10;
639
- const MIN_DRAG_THRESHOLD = 1;
640
- const MIN_VELOCITY_DURATION_MS = 50;
641
- const MIN_RELEASE_VELOCITY_DURATION_MS = 16;
642
- const MAX_RELEASE_VELOCITY_AGE_MS = 80;
643
- const DEFAULT_IGNORE_SELECTOR = 'button,a,input,select,textarea,label,[role="button"]';
644
- function getDisplacement(direction, deltaX, deltaY) {
645
- switch(direction){
646
- case 'up':
647
- return -deltaY;
648
- case 'down':
649
- return deltaY;
650
- case 'left':
651
- return -deltaX;
652
- case 'right':
653
- return deltaX;
654
- default:
655
- return 0;
656
- }
657
- }
658
- function getElementTransform(element) {
659
- const computedStyle = getWindow(element).getComputedStyle(element);
660
- const transform = computedStyle.transform;
661
- let translateX = 0;
662
- let translateY = 0;
663
- let scale = 1;
664
- if (transform && 'none' !== transform) {
665
- const matrix = transform.match(/matrix(?:3d)?\(([^)]+)\)/);
666
- if (matrix) {
667
- const values = matrix[1].split(', ').map(parseFloat);
668
- if (6 === values.length) {
669
- translateX = values[4];
670
- translateY = values[5];
671
- scale = Math.sqrt(values[0] * values[0] + values[1] * values[1]);
672
- } else if (16 === values.length) {
673
- translateX = values[12];
674
- translateY = values[13];
675
- scale = values[0];
676
- }
677
- }
678
- }
679
- return {
680
- x: translateX,
681
- y: translateY,
682
- scale
683
- };
684
- }
685
- function getValidTimeStamp(timeStamp) {
686
- return Number.isFinite(timeStamp) && timeStamp > 0 ? timeStamp : null;
687
- }
688
- function hasPrimaryMouseButton(buttons) {
689
- return buttons % 2 === 1;
690
- }
691
- function safelyChangePointerCapture(element, pointerId, method) {
692
- const pointerCaptureMethod = element[method];
693
- if ('function' != typeof pointerCaptureMethod) return;
694
- try {
695
- pointerCaptureMethod.call(element, pointerId);
696
- } catch (error) {
697
- if (error && 'object' == typeof error && 'name' in error && 'NotFoundError' === error.name) return;
698
- throw error;
699
- }
700
- }
701
- function useSwipeDismiss(options) {
702
- const { enabled, directions, elementRef, movementCssVars, canStart, ignoreSelectorWhenTouch = true, ignoreScrollableAncestors = false, swipeThreshold: swipeThresholdProp, onDismiss, onProgress, onCancel, onSwipeStart, onRelease, onSwipingChange, trackDrag = true } = options;
703
- const ignoreSelector = DEFAULT_IGNORE_SELECTOR;
704
- const primaryDirection = 1 === directions.length ? directions[0] : void 0;
705
- const swipeThresholdDefault = Math.max(0, 'number' == typeof swipeThresholdProp ? swipeThresholdProp : DEFAULT_SWIPE_THRESHOLD);
706
- const allowLeft = directions.includes('left');
707
- const allowRight = directions.includes('right');
708
- const allowUp = directions.includes('up');
709
- const allowDown = directions.includes('down');
710
- const hasHorizontal = allowLeft || allowRight;
711
- const hasVertical = allowUp || allowDown;
712
- const scrollAxes = __rspack_external_react.useMemo(()=>{
713
- const axes = [];
714
- if (hasVertical) axes.push('vertical');
715
- if (hasHorizontal) axes.push('horizontal');
716
- return axes;
717
- }, [
718
- hasHorizontal,
719
- hasVertical
720
- ]);
721
- const [currentSwipeDirection, setCurrentSwipeDirection] = __rspack_external_react.useState(void 0);
722
- const [isSwiping, setIsSwiping] = __rspack_external_react.useState(false);
723
- const [isRealSwipe, setIsRealSwipe] = __rspack_external_react.useState(false);
724
- const [dragDismissed, setDragDismissed] = __rspack_external_react.useState(false);
725
- const [dragOffset, setDragOffset] = __rspack_external_react.useState({
726
- x: 0,
727
- y: 0
728
- });
729
- const [initialTransform, setInitialTransform] = __rspack_external_react.useState({
730
- x: 0,
731
- y: 0,
732
- scale: 1
733
- });
734
- const [lockedDirection, setLockedDirection] = __rspack_external_react.useState(null);
735
- const dragStartPosRef = __rspack_external_react.useRef({
736
- x: 0,
737
- y: 0
738
- });
739
- const dragOffsetRef = __rspack_external_react.useRef({
740
- x: 0,
741
- y: 0
742
- });
743
- const lastMovePosRef = __rspack_external_react.useRef(null);
744
- const initialTransformRef = __rspack_external_react.useRef({
745
- x: 0,
746
- y: 0,
747
- scale: 1
748
- });
749
- const intendedSwipeDirectionRef = __rspack_external_react.useRef(void 0);
750
- const maxSwipeDisplacementRef = __rspack_external_react.useRef(0);
751
- const cancelledSwipeRef = __rspack_external_react.useRef(false);
752
- const swipeCancelBaselineRef = __rspack_external_react.useRef({
753
- x: 0,
754
- y: 0
755
- });
756
- const isFirstPointerMoveRef = __rspack_external_react.useRef(false);
757
- const pendingSwipeRef = __rspack_external_react.useRef(false);
758
- const pendingSwipeStartPosRef = __rspack_external_react.useRef(null);
759
- const swipeFromScrollableRef = __rspack_external_react.useRef(false);
760
- const sawPrimaryButtonsOnMoveRef = __rspack_external_react.useRef(false);
761
- const elementSizeRef = __rspack_external_react.useRef({
762
- width: 0,
763
- height: 0
764
- });
765
- const swipeProgressRef = __rspack_external_react.useRef(0);
766
- const swipeThresholdRef = __rspack_external_react.useRef(swipeThresholdDefault);
767
- const swipeStartTimeRef = __rspack_external_react.useRef(null);
768
- const lastDragSampleRef = __rspack_external_react.useRef(null);
769
- const lastDragVelocityRef = __rspack_external_react.useRef({
770
- x: 0,
771
- y: 0
772
- });
773
- const lastProgressDetailsRef = __rspack_external_react.useRef(null);
774
- const isSwipingRef = __rspack_external_react.useRef(false);
775
- const setSwiping = useStableCallback((nextSwiping)=>{
776
- if (isSwipingRef.current === nextSwiping) return;
777
- isSwipingRef.current = nextSwiping;
778
- setIsSwiping(nextSwiping);
779
- onSwipingChange?.(nextSwiping);
780
- });
781
- function resolveSwipeThreshold(direction) {
782
- if (!direction) return;
783
- if ('function' != typeof swipeThresholdProp) {
784
- swipeThresholdRef.current = swipeThresholdDefault;
785
- return;
786
- }
787
- const element = elementRef.current;
788
- if (!element) return;
789
- const value = swipeThresholdProp({
790
- element,
791
- direction
792
- });
793
- swipeThresholdRef.current = Math.max(0, value);
794
- }
795
- const updateSwipeProgress = useStableCallback((progress, details)=>{
796
- const nextProgress = Number.isFinite(progress) ? clamp(progress, 0, 1) : 0;
797
- const progressChanged = nextProgress !== swipeProgressRef.current;
798
- let detailsChanged = false;
799
- if (details) {
800
- const lastDetails = lastProgressDetailsRef.current;
801
- detailsChanged = !lastDetails || lastDetails.deltaX !== details.deltaX || lastDetails.deltaY !== details.deltaY || lastDetails.direction !== details.direction;
802
- }
803
- if (!progressChanged && !detailsChanged) return;
804
- swipeProgressRef.current = nextProgress;
805
- if (details) lastProgressDetailsRef.current = details;
806
- else if (progressChanged) lastProgressDetailsRef.current = null;
807
- onProgress?.(nextProgress, details);
808
- });
809
- function recordDragSample(offset, timeStamp) {
810
- if (null === timeStamp) return;
811
- const lastSample = lastDragSampleRef.current;
812
- if (lastSample && timeStamp > lastSample.time) {
813
- const durationMs = Math.max(timeStamp - lastSample.time, MIN_RELEASE_VELOCITY_DURATION_MS);
814
- lastDragVelocityRef.current = {
815
- x: (offset.x - lastSample.x) / durationMs,
816
- y: (offset.y - lastSample.y) / durationMs
817
- };
818
- }
819
- lastDragSampleRef.current = {
820
- x: offset.x,
821
- y: offset.y,
822
- time: timeStamp
823
- };
824
- }
825
- const reset = __rspack_external_react.useCallback(()=>{
826
- setCurrentSwipeDirection(void 0);
827
- setSwiping(false);
828
- setIsRealSwipe(false);
829
- setDragDismissed(false);
830
- setDragOffset({
831
- x: 0,
832
- y: 0
833
- });
834
- setInitialTransform({
835
- x: 0,
836
- y: 0,
837
- scale: 1
838
- });
839
- setLockedDirection(null);
840
- updateSwipeProgress(0);
841
- swipeThresholdRef.current = swipeThresholdDefault;
842
- dragStartPosRef.current = {
843
- x: 0,
844
- y: 0
845
- };
846
- dragOffsetRef.current = {
847
- x: 0,
848
- y: 0
849
- };
850
- initialTransformRef.current = {
851
- x: 0,
852
- y: 0,
853
- scale: 1
854
- };
855
- intendedSwipeDirectionRef.current = void 0;
856
- maxSwipeDisplacementRef.current = 0;
857
- cancelledSwipeRef.current = false;
858
- swipeCancelBaselineRef.current = {
859
- x: 0,
860
- y: 0
861
- };
862
- isFirstPointerMoveRef.current = false;
863
- lastMovePosRef.current = null;
864
- pendingSwipeRef.current = false;
865
- pendingSwipeStartPosRef.current = null;
866
- swipeFromScrollableRef.current = false;
867
- sawPrimaryButtonsOnMoveRef.current = false;
868
- elementSizeRef.current = {
869
- width: 0,
870
- height: 0
871
- };
872
- swipeStartTimeRef.current = null;
873
- lastDragSampleRef.current = null;
874
- lastDragVelocityRef.current = {
875
- x: 0,
876
- y: 0
877
- };
878
- lastProgressDetailsRef.current = null;
879
- }, [
880
- setSwiping,
881
- swipeThresholdDefault,
882
- updateSwipeProgress
883
- ]);
884
- __rspack_external_react.useEffect(()=>{
885
- if ('function' != typeof swipeThresholdProp) swipeThresholdRef.current = swipeThresholdDefault;
886
- }, [
887
- swipeThresholdDefault,
888
- swipeThresholdProp
889
- ]);
890
- function getPrimaryPointerPosition(event) {
891
- if ('touches' in event) {
892
- const touch = event.touches[0];
893
- return touch ? {
894
- x: touch.clientX,
895
- y: touch.clientY
896
- } : null;
897
- }
898
- return {
899
- x: event.clientX,
900
- y: event.clientY
901
- };
902
- }
903
- function isTouchLikeEvent(event) {
904
- if ('touches' in event) return true;
905
- return 'touch' === event.pointerType;
906
- }
907
- function getTargetAtPoint(position, nativeEvent) {
908
- const doc = ownerDocument(elementRef.current);
909
- const elementAtPoint = getElementAtPoint(doc, position.x, position.y);
910
- const target = elementAtPoint ?? getTarget(nativeEvent);
911
- return target;
912
- }
913
- function findGestureScrollableTouchTarget(target, root) {
914
- if (hasHorizontal && !hasVertical) return findScrollableTouchTarget(target, root, 'horizontal');
915
- if (hasVertical && !hasHorizontal) return findScrollableTouchTarget(target, root, 'vertical');
916
- return findScrollableTouchTarget(target, root, 'vertical') ?? findScrollableTouchTarget(target, root, 'horizontal');
917
- }
918
- function startSwipeAtPosition(event, position, startOptions) {
919
- swipeFromScrollableRef.current = false;
920
- const touchLike = isTouchLikeEvent(event);
921
- const target = getTargetAtPoint(position, event.nativeEvent);
922
- const doc = ownerDocument(elementRef.current);
923
- const body = doc.body;
924
- const scrollableTarget = touchLike && body ? findGestureScrollableTouchTarget(target, body) : null;
925
- const ignoreScrollableTarget = startOptions?.ignoreScrollableTarget ?? false;
926
- if (scrollableTarget && !ignoreScrollableTarget) return false;
927
- swipeFromScrollableRef.current = Boolean(scrollableTarget && ignoreScrollableTarget);
928
- const isInteractiveElement = target ? target.closest(ignoreSelector) : false;
929
- if (isInteractiveElement && (!touchLike || ignoreSelectorWhenTouch)) return false;
930
- const element = elementRef.current;
931
- if (ignoreScrollableAncestors && element && target && scrollAxes.length > 0) {
932
- const ignoreAncestors = startOptions?.ignoreScrollableAncestors ?? false;
933
- if (!ignoreAncestors && hasScrollableAncestor(target, element, scrollAxes)) return false;
934
- }
935
- cancelledSwipeRef.current = false;
936
- intendedSwipeDirectionRef.current = void 0;
937
- maxSwipeDisplacementRef.current = 0;
938
- dragStartPosRef.current = position;
939
- swipeStartTimeRef.current = getValidTimeStamp(event.timeStamp);
940
- swipeCancelBaselineRef.current = position;
941
- lastMovePosRef.current = position;
942
- if (element) {
943
- elementSizeRef.current = {
944
- width: element.offsetWidth,
945
- height: element.offsetHeight
946
- };
947
- resolveSwipeThreshold(primaryDirection);
948
- const transform = getElementTransform(element);
949
- initialTransformRef.current = transform;
950
- dragOffsetRef.current = {
951
- x: transform.x,
952
- y: transform.y
953
- };
954
- setInitialTransform(transform);
955
- setDragOffset({
956
- x: transform.x,
957
- y: transform.y
958
- });
959
- recordDragSample({
960
- x: transform.x,
961
- y: transform.y
962
- }, swipeStartTimeRef.current);
963
- if (!('touches' in event)) safelyChangePointerCapture(element, event.pointerId, 'setPointerCapture');
964
- }
965
- onSwipeStart?.(event.nativeEvent);
966
- setSwiping(true);
967
- setIsRealSwipe(false);
968
- setLockedDirection(null);
969
- isFirstPointerMoveRef.current = true;
970
- updateSwipeProgress(0);
971
- return true;
972
- }
973
- function resetPendingSwipeState() {
974
- clearPendingSwipeStartState();
975
- swipeFromScrollableRef.current = false;
976
- lastMovePosRef.current = null;
977
- }
978
- function clearPendingSwipeStartState() {
979
- pendingSwipeRef.current = false;
980
- pendingSwipeStartPosRef.current = null;
981
- }
982
- function cancelSwipeInteraction(event) {
983
- resetPendingSwipeState();
984
- if (!isSwipingRef.current) return;
985
- setSwiping(false);
986
- setIsRealSwipe(false);
987
- setLockedDirection(null);
988
- const resolvedInitialTransform = trackDrag ? initialTransform : initialTransformRef.current;
989
- dragOffsetRef.current = {
990
- x: resolvedInitialTransform.x,
991
- y: resolvedInitialTransform.y
992
- };
993
- setDragOffset({
994
- x: resolvedInitialTransform.x,
995
- y: resolvedInitialTransform.y
996
- });
997
- setCurrentSwipeDirection(void 0);
998
- sawPrimaryButtonsOnMoveRef.current = false;
999
- const element = elementRef.current;
1000
- if (element) safelyChangePointerCapture(element, event.pointerId, 'releasePointerCapture');
1001
- updateSwipeProgress(0, {
1002
- deltaX: 0,
1003
- deltaY: 0,
1004
- direction: void 0
1005
- });
1006
- onCancel?.(event.nativeEvent);
1007
- }
1008
- function applyDirectionalDamping(deltaX, deltaY) {
1009
- const exponent = (value)=>value >= 0 ? value ** 0.5 : -(Math.abs(value) ** 0.5);
1010
- const dampAxis = (delta, allowNegative, allowPositive)=>{
1011
- if (!allowNegative && delta < 0) return exponent(delta);
1012
- if (!allowPositive && delta > 0) return exponent(delta);
1013
- return delta;
1014
- };
1015
- const newDeltaX = hasHorizontal ? dampAxis(deltaX, allowLeft, allowRight) : exponent(deltaX);
1016
- const newDeltaY = hasVertical ? dampAxis(deltaY, allowUp, allowDown) : exponent(deltaY);
1017
- return {
1018
- x: newDeltaX,
1019
- y: newDeltaY
1020
- };
1021
- }
1022
- function canSwipeFromScrollEdgeOnPendingMove(scrollTarget, deltaX, deltaY) {
1023
- const absDeltaX = Math.abs(deltaX);
1024
- const absDeltaY = Math.abs(deltaY);
1025
- const useVerticalAxis = hasVertical && 0 !== deltaY && (!hasHorizontal || absDeltaY >= absDeltaX);
1026
- if (useVerticalAxis) {
1027
- const maxScrollTop = Math.max(0, scrollTarget.scrollHeight - scrollTarget.clientHeight);
1028
- const atTop = scrollTarget.scrollTop <= 0;
1029
- const atBottom = scrollTarget.scrollTop >= maxScrollTop;
1030
- const movingDown = deltaY > 0;
1031
- const movingUp = deltaY < 0;
1032
- const canSwipeDown = movingDown && atTop && allowDown;
1033
- const canSwipeUp = movingUp && atBottom && allowUp;
1034
- return canSwipeDown || canSwipeUp;
1035
- }
1036
- const useHorizontalAxis = hasHorizontal && 0 !== deltaX && (!hasVertical || absDeltaX > absDeltaY);
1037
- if (useHorizontalAxis) {
1038
- const maxScrollLeft = Math.max(0, scrollTarget.scrollWidth - scrollTarget.clientWidth);
1039
- const atLeft = scrollTarget.scrollLeft <= 0;
1040
- const atRight = scrollTarget.scrollLeft >= maxScrollLeft;
1041
- const movingRight = deltaX > 0;
1042
- const movingLeft = deltaX < 0;
1043
- const canSwipeRight = movingRight && atLeft && allowRight;
1044
- const canSwipeLeft = movingLeft && atRight && allowLeft;
1045
- return canSwipeRight || canSwipeLeft;
1046
- }
1047
- return null;
1048
- }
1049
- const handleStart = useStableCallback((event)=>{
1050
- if (!enabled) return;
1051
- if (event.defaultPrevented || event.nativeEvent.defaultPrevented) return;
1052
- if (!('touches' in event) && 0 !== event.button) return;
1053
- const startPos = getPrimaryPointerPosition(event);
1054
- if (!startPos) return;
1055
- pendingSwipeRef.current = true;
1056
- pendingSwipeStartPosRef.current = startPos;
1057
- swipeFromScrollableRef.current = false;
1058
- sawPrimaryButtonsOnMoveRef.current = false;
1059
- const allowedToStart = canStart ? canStart(startPos, {
1060
- nativeEvent: event.nativeEvent,
1061
- direction: primaryDirection
1062
- }) : true;
1063
- if (!allowedToStart) return;
1064
- if (startSwipeAtPosition(event, startPos)) clearPendingSwipeStartState();
1065
- });
1066
- function handleMoveCore(event, position, movement) {
1067
- if (!enabled || !isSwipingRef.current) return;
1068
- const target = getTarget(event.nativeEvent);
1069
- if (isTouchLikeEvent(event) && !swipeFromScrollableRef.current) {
1070
- const boundaryElement = event.currentTarget;
1071
- if (findGestureScrollableTouchTarget(target, boundaryElement)) return;
1072
- }
1073
- if (!('touches' in event)) event.preventDefault();
1074
- if (isFirstPointerMoveRef.current) {
1075
- dragStartPosRef.current = position;
1076
- const moveTime = getValidTimeStamp(event.timeStamp);
1077
- if (null !== moveTime) swipeStartTimeRef.current = moveTime;
1078
- isFirstPointerMoveRef.current = false;
1079
- }
1080
- const clientX = position.x;
1081
- const clientY = position.y;
1082
- const movementX = movement.x;
1083
- const movementY = movement.y;
1084
- if (movementY < 0 && clientY > swipeCancelBaselineRef.current.y || movementY > 0 && clientY < swipeCancelBaselineRef.current.y) swipeCancelBaselineRef.current = {
1085
- x: swipeCancelBaselineRef.current.x,
1086
- y: clientY
1087
- };
1088
- if (movementX < 0 && clientX > swipeCancelBaselineRef.current.x || movementX > 0 && clientX < swipeCancelBaselineRef.current.x) swipeCancelBaselineRef.current = {
1089
- x: clientX,
1090
- y: swipeCancelBaselineRef.current.y
1091
- };
1092
- const deltaX = clientX - dragStartPosRef.current.x;
1093
- const deltaY = clientY - dragStartPosRef.current.y;
1094
- const cancelDeltaY = clientY - swipeCancelBaselineRef.current.y;
1095
- const cancelDeltaX = clientX - swipeCancelBaselineRef.current.x;
1096
- if (!isRealSwipe) {
1097
- const movementDistance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
1098
- if (movementDistance >= MIN_DRAG_THRESHOLD) {
1099
- setIsRealSwipe(true);
1100
- if (null === lockedDirection) {
1101
- if (hasHorizontal && hasVertical) {
1102
- const absX = Math.abs(deltaX);
1103
- const absY = Math.abs(deltaY);
1104
- setLockedDirection(absX > absY ? 'horizontal' : 'vertical');
1105
- }
1106
- }
1107
- }
1108
- }
1109
- let candidate;
1110
- if (intendedSwipeDirectionRef.current) {
1111
- const direction = intendedSwipeDirectionRef.current;
1112
- const currentDisplacement = getDisplacement(direction, cancelDeltaX, cancelDeltaY);
1113
- if (currentDisplacement > swipeThresholdRef.current) {
1114
- cancelledSwipeRef.current = false;
1115
- setCurrentSwipeDirection(direction);
1116
- } else if (!(allowLeft && allowRight) && !(allowUp && allowDown) && maxSwipeDisplacementRef.current - currentDisplacement >= REVERSE_CANCEL_THRESHOLD) cancelledSwipeRef.current = true;
1117
- } else {
1118
- if ('vertical' === lockedDirection) {
1119
- if (deltaY > 0) candidate = 'down';
1120
- else if (deltaY < 0) candidate = 'up';
1121
- } else if ('horizontal' === lockedDirection) {
1122
- if (deltaX > 0) candidate = 'right';
1123
- else if (deltaX < 0) candidate = 'left';
1124
- } else candidate = Math.abs(deltaX) >= Math.abs(deltaY) ? deltaX > 0 ? 'right' : 'left' : deltaY > 0 ? 'down' : 'up';
1125
- if (candidate) {
1126
- const isAllowed = 'left' === candidate && allowLeft || 'right' === candidate && allowRight || 'up' === candidate && allowUp || 'down' === candidate && allowDown;
1127
- if (isAllowed) {
1128
- intendedSwipeDirectionRef.current = candidate;
1129
- maxSwipeDisplacementRef.current = getDisplacement(candidate, deltaX, deltaY);
1130
- setCurrentSwipeDirection(candidate);
1131
- resolveSwipeThreshold(candidate);
1132
- }
1133
- }
1134
- }
1135
- const dampedDelta = applyDirectionalDamping(deltaX, deltaY);
1136
- let newOffsetX = initialTransformRef.current.x;
1137
- let newOffsetY = initialTransformRef.current.y;
1138
- if ('horizontal' === lockedDirection) {
1139
- if (hasHorizontal) newOffsetX += dampedDelta.x;
1140
- } else if ('vertical' === lockedDirection) {
1141
- if (hasVertical) newOffsetY += dampedDelta.y;
1142
- } else {
1143
- if (hasHorizontal) newOffsetX += dampedDelta.x;
1144
- if (hasVertical) newOffsetY += dampedDelta.y;
1145
- }
1146
- dragOffsetRef.current = {
1147
- x: newOffsetX,
1148
- y: newOffsetY
1149
- };
1150
- if (trackDrag) setDragOffset({
1151
- x: newOffsetX,
1152
- y: newOffsetY
1153
- });
1154
- recordDragSample({
1155
- x: newOffsetX,
1156
- y: newOffsetY
1157
- }, getValidTimeStamp(event.timeStamp));
1158
- const dragDeltaX = newOffsetX - initialTransformRef.current.x;
1159
- const dragDeltaY = newOffsetY - initialTransformRef.current.y;
1160
- const swipeDirectionDetails = intendedSwipeDirectionRef.current;
1161
- const progressDirection = primaryDirection ?? intendedSwipeDirectionRef.current;
1162
- if (!progressDirection) return void updateSwipeProgress(0, {
1163
- deltaX: dragDeltaX,
1164
- deltaY: dragDeltaY,
1165
- direction: swipeDirectionDetails
1166
- });
1167
- const size = 'left' === progressDirection || 'right' === progressDirection ? elementSizeRef.current.width : elementSizeRef.current.height;
1168
- const scale = initialTransformRef.current.scale || 1;
1169
- if (size <= 0 || scale <= 0) return void updateSwipeProgress(0, {
1170
- deltaX: dragDeltaX,
1171
- deltaY: dragDeltaY,
1172
- direction: swipeDirectionDetails
1173
- });
1174
- const progressDisplacement = getDisplacement(progressDirection, newOffsetX - initialTransformRef.current.x, newOffsetY - initialTransformRef.current.y);
1175
- if (progressDisplacement <= 0) return void updateSwipeProgress(0, {
1176
- deltaX: dragDeltaX,
1177
- deltaY: dragDeltaY,
1178
- direction: swipeDirectionDetails
1179
- });
1180
- updateSwipeProgress(progressDisplacement / (size * scale), {
1181
- deltaX: dragDeltaX,
1182
- deltaY: dragDeltaY,
1183
- direction: swipeDirectionDetails
1184
- });
1185
- }
1186
- const handleMove = useStableCallback((event)=>{
1187
- const currentPos = getPrimaryPointerPosition(event);
1188
- if (!currentPos) return;
1189
- if (!('touches' in event)) {
1190
- const hasPrimaryButton = hasPrimaryMouseButton(event.buttons);
1191
- if (hasPrimaryButton) sawPrimaryButtonsOnMoveRef.current = true;
1192
- const lostPrimaryButtonDuringSwipe = 0 === event.buttons && sawPrimaryButtonsOnMoveRef.current;
1193
- if (0 !== event.buttons && !hasPrimaryButton || lostPrimaryButtonDuringSwipe) return void cancelSwipeInteraction(event);
1194
- }
1195
- if (!isSwiping && pendingSwipeRef.current) {
1196
- if (!isTouchLikeEvent(event) && (event.defaultPrevented || event.nativeEvent.defaultPrevented)) return void resetPendingSwipeState();
1197
- const allowedToStart = canStart ? canStart(currentPos, {
1198
- nativeEvent: event.nativeEvent,
1199
- direction: primaryDirection
1200
- }) : true;
1201
- if (allowedToStart) {
1202
- const pendingStartPos = pendingSwipeStartPosRef.current;
1203
- let ignoreScrollableOnStart = false;
1204
- if (isTouchLikeEvent(event)) {
1205
- const element = elementRef.current;
1206
- if (pendingStartPos && element) {
1207
- const target = getTargetAtPoint(currentPos, event.nativeEvent);
1208
- const doc = ownerDocument(element);
1209
- const body = doc.body;
1210
- const scrollTarget = body ? findGestureScrollableTouchTarget(target, body) : null;
1211
- if (scrollTarget && (contains(element, scrollTarget) || contains(scrollTarget, element))) {
1212
- const deltaX = currentPos.x - pendingStartPos.x;
1213
- const deltaY = currentPos.y - pendingStartPos.y;
1214
- const canSwipeFromEdge = canSwipeFromScrollEdgeOnPendingMove(scrollTarget, deltaX, deltaY);
1215
- if (false === canSwipeFromEdge) return;
1216
- if (true === canSwipeFromEdge) ignoreScrollableOnStart = true;
1217
- }
1218
- }
1219
- }
1220
- const started = startSwipeAtPosition(event, currentPos, {
1221
- ignoreScrollableTarget: ignoreScrollableOnStart,
1222
- ignoreScrollableAncestors: ignoreScrollableOnStart
1223
- });
1224
- if (started) if (pendingStartPos && ignoreScrollableOnStart) {
1225
- clearPendingSwipeStartState();
1226
- dragStartPosRef.current = pendingStartPos;
1227
- swipeCancelBaselineRef.current = pendingStartPos;
1228
- lastMovePosRef.current = pendingStartPos;
1229
- isFirstPointerMoveRef.current = false;
1230
- } else {
1231
- clearPendingSwipeStartState();
1232
- swipeFromScrollableRef.current = false;
1233
- }
1234
- }
1235
- }
1236
- const previousPos = lastMovePosRef.current;
1237
- const movement = null === previousPos ? {
1238
- x: 0,
1239
- y: 0
1240
- } : {
1241
- x: currentPos.x - previousPos.x,
1242
- y: currentPos.y - previousPos.y
1243
- };
1244
- lastMovePosRef.current = currentPos;
1245
- handleMoveCore(event, currentPos, movement);
1246
- });
1247
- const handleEnd = useStableCallback((event)=>{
1248
- if (!enabled) return;
1249
- const resolvedDragOffset = dragOffsetRef.current;
1250
- const resolvedInitialTransform = initialTransformRef.current;
1251
- const releaseDeltaX = resolvedDragOffset.x - resolvedInitialTransform.x;
1252
- const releaseDeltaY = resolvedDragOffset.y - resolvedInitialTransform.y;
1253
- const progressDetails = {
1254
- deltaX: releaseDeltaX,
1255
- deltaY: releaseDeltaY,
1256
- direction: currentSwipeDirection ?? intendedSwipeDirectionRef.current
1257
- };
1258
- if (!isSwipingRef.current) {
1259
- resetPendingSwipeState();
1260
- updateSwipeProgress(0, progressDetails);
1261
- return;
1262
- }
1263
- setSwiping(false);
1264
- setIsRealSwipe(false);
1265
- setLockedDirection(null);
1266
- resetPendingSwipeState();
1267
- sawPrimaryButtonsOnMoveRef.current = false;
1268
- const element = elementRef.current;
1269
- if (element) {
1270
- if (!('touches' in event)) safelyChangePointerCapture(element, event.pointerId, 'releasePointerCapture');
1271
- }
1272
- const deltaX = releaseDeltaX;
1273
- const deltaY = releaseDeltaY;
1274
- const startTime = swipeStartTimeRef.current;
1275
- const endTime = getValidTimeStamp(event.timeStamp);
1276
- const durationMs = null !== startTime && null !== endTime && endTime > startTime ? endTime - startTime : 0;
1277
- const velocityDurationMs = durationMs > 0 ? Math.max(durationMs, MIN_VELOCITY_DURATION_MS) : 0;
1278
- const velocityX = velocityDurationMs > 0 ? deltaX / velocityDurationMs : 0;
1279
- const velocityY = velocityDurationMs > 0 ? deltaY / velocityDurationMs : 0;
1280
- let releaseVelocityX = lastDragVelocityRef.current.x;
1281
- let releaseVelocityY = lastDragVelocityRef.current.y;
1282
- const lastSample = lastDragSampleRef.current;
1283
- if (lastSample && null !== endTime && endTime >= lastSample.time) {
1284
- const ageMs = endTime - lastSample.time;
1285
- if (ageMs <= MAX_RELEASE_VELOCITY_AGE_MS) {
1286
- const sampleDurationMs = Math.max(ageMs, MIN_RELEASE_VELOCITY_DURATION_MS);
1287
- const deltaFromLastSampleX = resolvedDragOffset.x - lastSample.x;
1288
- const deltaFromLastSampleY = resolvedDragOffset.y - lastSample.y;
1289
- const sampleVelocityX = deltaFromLastSampleX / sampleDurationMs;
1290
- const sampleVelocityY = deltaFromLastSampleY / sampleDurationMs;
1291
- if (0 !== sampleVelocityX) releaseVelocityX = sampleVelocityX;
1292
- if (0 !== sampleVelocityY) releaseVelocityY = sampleVelocityY;
1293
- } else {
1294
- releaseVelocityX = 0;
1295
- releaseVelocityY = 0;
1296
- }
1297
- }
1298
- const releaseDecision = onRelease?.({
1299
- event: event.nativeEvent,
1300
- direction: currentSwipeDirection ?? intendedSwipeDirectionRef.current,
1301
- deltaX,
1302
- deltaY,
1303
- velocityX,
1304
- velocityY,
1305
- releaseVelocityX,
1306
- releaseVelocityY
1307
- });
1308
- const hasReleaseDecision = 'boolean' == typeof releaseDecision;
1309
- if (cancelledSwipeRef.current && !hasReleaseDecision) {
1310
- dragOffsetRef.current = {
1311
- x: resolvedInitialTransform.x,
1312
- y: resolvedInitialTransform.y
1313
- };
1314
- setDragOffset({
1315
- x: resolvedInitialTransform.x,
1316
- y: resolvedInitialTransform.y
1317
- });
1318
- setCurrentSwipeDirection(void 0);
1319
- updateSwipeProgress(0, progressDetails);
1320
- return;
1321
- }
1322
- let shouldClose = false;
1323
- let dismissDirection;
1324
- if (hasReleaseDecision) {
1325
- shouldClose = releaseDecision;
1326
- dismissDirection = currentSwipeDirection ?? intendedSwipeDirectionRef.current ?? primaryDirection;
1327
- } else for (const direction of directions){
1328
- switch(direction){
1329
- case 'right':
1330
- if (deltaX > swipeThresholdRef.current) {
1331
- shouldClose = true;
1332
- dismissDirection = 'right';
1333
- }
1334
- break;
1335
- case 'left':
1336
- if (deltaX < -swipeThresholdRef.current) {
1337
- shouldClose = true;
1338
- dismissDirection = 'left';
1339
- }
1340
- break;
1341
- case 'down':
1342
- if (deltaY > swipeThresholdRef.current) {
1343
- shouldClose = true;
1344
- dismissDirection = 'down';
1345
- }
1346
- break;
1347
- case 'up':
1348
- if (deltaY < -swipeThresholdRef.current) {
1349
- shouldClose = true;
1350
- dismissDirection = 'up';
1351
- }
1352
- break;
1353
- default:
1354
- break;
1355
- }
1356
- if (shouldClose) break;
1357
- }
1358
- if (shouldClose && dismissDirection) {
1359
- setCurrentSwipeDirection(dismissDirection);
1360
- setDragDismissed(true);
1361
- onDismiss?.(event.nativeEvent, {
1362
- direction: dismissDirection
1363
- });
1364
- } else {
1365
- dragOffsetRef.current = {
1366
- x: resolvedInitialTransform.x,
1367
- y: resolvedInitialTransform.y
1368
- };
1369
- setDragOffset({
1370
- x: resolvedInitialTransform.x,
1371
- y: resolvedInitialTransform.y
1372
- });
1373
- setCurrentSwipeDirection(void 0);
1374
- updateSwipeProgress(0, progressDetails);
1375
- }
1376
- });
1377
- const getDragStyles = __rspack_external_react.useCallback(()=>{
1378
- const resolvedDragOffset = trackDrag ? dragOffset : dragOffsetRef.current;
1379
- const resolvedInitialTransform = trackDrag ? initialTransform : initialTransformRef.current;
1380
- if (!isSwiping && resolvedDragOffset.x === resolvedInitialTransform.x && resolvedDragOffset.y === resolvedInitialTransform.y && !dragDismissed) return {
1381
- [movementCssVars.x]: '0px',
1382
- [movementCssVars.y]: '0px'
1383
- };
1384
- const deltaX = resolvedDragOffset.x - resolvedInitialTransform.x;
1385
- const deltaY = resolvedDragOffset.y - resolvedInitialTransform.y;
1386
- return {
1387
- transition: isSwiping ? 'none' : void 0,
1388
- transform: isSwiping ? `translateX(${resolvedDragOffset.x}px) translateY(${resolvedDragOffset.y}px) scale(${resolvedInitialTransform.scale})` : void 0,
1389
- [movementCssVars.x]: `${deltaX}px`,
1390
- [movementCssVars.y]: `${deltaY}px`
1391
- };
1392
- }, [
1393
- dragDismissed,
1394
- dragOffset,
1395
- initialTransform,
1396
- isSwiping,
1397
- movementCssVars,
1398
- trackDrag
1399
- ]);
1400
- const getPointerProps = __rspack_external_react.useCallback(()=>{
1401
- if (!enabled) return {};
1402
- return {
1403
- onPointerDown: handleStart,
1404
- onPointerMove: handleMove,
1405
- onPointerUp: handleEnd,
1406
- onPointerCancel: handleEnd
1407
- };
1408
- }, [
1409
- enabled,
1410
- handleEnd,
1411
- handleMove,
1412
- handleStart
1413
- ]);
1414
- const getTouchProps = __rspack_external_react.useCallback(()=>{
1415
- if (!enabled) return {};
1416
- return {
1417
- onTouchStart: handleStart,
1418
- onTouchMove: handleMove,
1419
- onTouchEnd: handleEnd,
1420
- onTouchCancel: handleEnd
1421
- };
1422
- }, [
1423
- enabled,
1424
- handleEnd,
1425
- handleMove,
1426
- handleStart
1427
- ]);
1428
- return {
1429
- swiping: isSwiping,
1430
- swipeDirection: currentSwipeDirection,
1431
- dragDismissed,
1432
- getPointerProps,
1433
- getTouchProps,
1434
- getDragStyles,
1435
- reset
1436
- };
1437
- }
1438
612
  let DrawerSwipeAreaDataAttributes_DrawerSwipeAreaDataAttributes = function(DrawerSwipeAreaDataAttributes) {
1439
613
  DrawerSwipeAreaDataAttributes[DrawerSwipeAreaDataAttributes["open"] = popupStateMapping_CommonPopupDataAttributes.open] = "open";
1440
614
  DrawerSwipeAreaDataAttributes[DrawerSwipeAreaDataAttributes["closed"] = popupStateMapping_CommonPopupDataAttributes.closed] = "closed";