@razorpay/blade 10.19.0 → 10.19.1

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.
@@ -37522,9 +37522,8 @@ var TourPopover = function TourPopover(_ref) {
37522
37522
  var click = useClick(context, {
37523
37523
  enabled: !isControlled
37524
37524
  });
37525
- var dismiss = useDismiss(context);
37526
37525
  var role = useRole(context);
37527
- var _useInteractions = useInteractions([click, dismiss, role]),
37526
+ var _useInteractions = useInteractions([click, role]),
37528
37527
  getFloatingProps = _useInteractions.getFloatingProps;
37529
37528
  var contextValue = React__default.useMemo(function () {
37530
37529
  return {
@@ -37600,17 +37599,21 @@ function useDelayedState(initialState, delay) {
37600
37599
  var _React$useState = React__default.useState(initialState),
37601
37600
  _React$useState2 = _slicedToArray(_React$useState, 2),
37602
37601
  delayedState = _React$useState2[0],
37603
- setDelayedState = _React$useState2[1];
37602
+ _setDelayedState = _React$useState2[1];
37604
37603
  var timeoutRef = React__default.useRef(undefined);
37605
37604
  React__default.useEffect(function () {
37606
37605
  timeoutRef.current = window.setTimeout(function () {
37607
- setDelayedState(initialState);
37606
+ _setDelayedState(initialState);
37608
37607
  }, delay);
37609
37608
  return function () {
37610
37609
  window.clearTimeout(timeoutRef.current);
37611
37610
  };
37612
37611
  }, [delay, initialState]);
37613
- return delayedState;
37612
+ var setDelayedState = React__default.useCallback(function (newState) {
37613
+ _setDelayedState(newState);
37614
+ window.clearTimeout(timeoutRef.current);
37615
+ }, []);
37616
+ return [delayedState, setDelayedState];
37614
37617
  }
37615
37618
 
37616
37619
  /**
@@ -37874,10 +37877,19 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
37874
37877
  setSize = _useState4[1];
37875
37878
 
37876
37879
  // delayed state is used to let the transition finish before reacting to the state changes
37877
- var delayedActiveStep = useDelayedState(activeStep, transitionDelay);
37878
- var delayedSize = useDelayedState(size, transitionDelay);
37880
+ var _useDelayedState = useDelayedState(activeStep, transitionDelay),
37881
+ _useDelayedState2 = _slicedToArray(_useDelayedState, 1),
37882
+ delayedActiveStep = _useDelayedState2[0];
37883
+ var _useDelayedState3 = useDelayedState(size, transitionDelay),
37884
+ _useDelayedState4 = _slicedToArray(_useDelayedState3, 2),
37885
+ delayedSize = _useDelayedState4[0],
37886
+ setDelayedSize = _useDelayedState4[1];
37879
37887
  // keep track of when we are transitioning between steps
37880
37888
  var isTransitioning = useIsTransitioningBetweenSteps(activeStep, transitionDelay);
37889
+ var _useState5 = useState(false),
37890
+ _useState6 = _slicedToArray(_useState5, 2),
37891
+ isScrolling = _useState6[0],
37892
+ setIsScrolling = _useState6[1];
37881
37893
  var currentStepRef = refIdMap.get((_steps$activeStep = steps[activeStep]) === null || _steps$activeStep === void 0 ? void 0 : _steps$activeStep.name);
37882
37894
  var intersection = useIntersectionObserver(currentStepRef, {
37883
37895
  threshold: 0.5
@@ -37924,6 +37936,7 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
37924
37936
  }, []);
37925
37937
  var updateMaskSize = useCallback(function () {
37926
37938
  var _steps$activeStep2;
37939
+ var shouldSkipDelay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
37927
37940
  var ref = refIdMap.get((_steps$activeStep2 = steps[activeStep]) === null || _steps$activeStep2 === void 0 ? void 0 : _steps$activeStep2.name);
37928
37941
  if (!(ref !== null && ref !== void 0 && ref.current)) return;
37929
37942
  var rect = ref.current.getBoundingClientRect();
@@ -37933,7 +37946,15 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
37933
37946
  width: rect.width,
37934
37947
  height: rect.height
37935
37948
  });
37936
- }, [activeStep, refIdMap, steps]);
37949
+ if (shouldSkipDelay) {
37950
+ setDelayedSize({
37951
+ x: rect.x,
37952
+ y: rect.y,
37953
+ width: rect.width,
37954
+ height: rect.height
37955
+ });
37956
+ }
37957
+ }, [activeStep, refIdMap, setDelayedSize, steps]);
37937
37958
  var scrollToStep = useCallback(function () {
37938
37959
  var _steps$delayedActiveS;
37939
37960
  var ref = refIdMap.get((_steps$delayedActiveS = steps[delayedActiveStep]) === null || _steps$delayedActiveS === void 0 ? void 0 : _steps$delayedActiveS.name);
@@ -37941,36 +37962,42 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
37941
37962
 
37942
37963
  // If the element is already in view, don't scroll
37943
37964
  if (intersection !== null && intersection !== void 0 && intersection.isIntersecting) return;
37965
+ setIsScrolling(true);
37944
37966
  smoothScroll(ref.current, {
37945
37967
  behavior: 'smooth',
37946
37968
  block: 'center',
37947
37969
  inline: 'center'
37948
37970
  }).then(function () {
37949
- updateMaskSize();
37971
+ // wait for the scroll to finish before updating the mask size
37972
+ // We also don't want to delay the size update since its already delayed by the scroll
37973
+ updateMaskSize(true);
37950
37974
  })["finally"](function () {
37951
- // do nothing
37975
+ setIsScrolling(false);
37952
37976
  });
37953
37977
  }, [delayedActiveStep, refIdMap, steps, updateMaskSize, intersection === null || intersection === void 0 ? void 0 : intersection.isIntersecting]);
37954
37978
 
37955
37979
  // Update the size of the mask when the active step changes
37956
37980
  useIsomorphicLayoutEffect(function () {
37957
37981
  updateMaskSize();
37958
- }, [isOpen, activeStep, refIdMap, steps, updateMaskSize]);
37982
+ }, [activeStep, updateMaskSize]);
37959
37983
 
37960
37984
  // Scroll into view when the active step changes
37961
37985
  useIsomorphicLayoutEffect(function () {
37986
+ // We need to wait for the transition to finish before scrolling
37987
+ // Otherwise the browser sometimes interrupts the scroll
37988
+ var scrollDelay = 100;
37962
37989
  setTimeout(function () {
37963
37990
  if (!isOpen) return;
37964
37991
  if (isTransitioning) return;
37965
37992
  scrollToStep();
37966
- }, transitionDelay);
37993
+ }, scrollDelay);
37967
37994
  }, [isOpen, scrollToStep, isTransitioning]);
37968
- useLockBodyScroll(isOpen);
37969
37995
 
37970
37996
  // reset the mask size when the tour is closed
37971
- React__default.useEffect(function () {
37997
+ useIsomorphicLayoutEffect(function () {
37972
37998
  if (isOpen) {
37973
- updateMaskSize();
37999
+ // on initial mount, we don't want to delay the size update
38000
+ updateMaskSize(true);
37974
38001
  onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange({
37975
38002
  isOpen: isOpen
37976
38003
  });
@@ -37985,6 +38012,7 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
37985
38012
  }
37986
38013
  // eslint-disable-next-line react-hooks/exhaustive-deps
37987
38014
  }, [isOpen]);
38015
+ useLockBodyScroll(isOpen);
37988
38016
  var contextValue = useMemo(function () {
37989
38017
  return {
37990
38018
  attachStep: attachStep,
@@ -37995,7 +38023,7 @@ var SpotlightPopoverTour = function SpotlightPopoverTour(_ref) {
37995
38023
  value: contextValue,
37996
38024
  children: [/*#__PURE__*/jsx$1(FloatingPortal, {
37997
38025
  children: isOpen ? /*#__PURE__*/jsx$1(SpotlightPopoverTourMask, {
37998
- isTransitioning: isTransitioning,
38026
+ isTransitioning: isTransitioning || isScrolling,
37999
38027
  padding: theme.spacing[4],
38000
38028
  size: delayedSize
38001
38029
  }) : null